diff --git a/.github/workflows/e2e_test.yml b/.github/workflows/e2e_test.yml new file mode 100644 index 00000000..1fd2affb --- /dev/null +++ b/.github/workflows/e2e_test.yml @@ -0,0 +1,22 @@ +name: Run E2E Tests + +on: [pull_request] + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Run E2E Tests + env: + NAME: ${{ secrets.NAME }} + PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} + WALLET_DATA: ${{ secrets.WALLET_DATA }} + run: npm run test:dry-run && npm run test:e2e diff --git a/README.md b/README.md index cafd2585..ea817715 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,35 @@ Currently, the SDK is intended for use on testnet for quick bootstrapping of cry - [Platform API Documentation](https://docs.cdp.coinbase.com/platform-apis/docs/welcome) +## Requirements + +The Coinbase server-side SDK requires Node.js version 18 or higher and npm version 9.7.2 or higher. To view your currently installed versions of Node.js, run the following from the command-line: + +```bash +node -v +npm -v +``` + +We recommend installing and managing Node.js and npm versions with `nvm`. See [Installing and Updating](https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating) in the `nvm` README for instructions on how to install `nvm`. + +Once `nvm` has been installed, you can install and use the latest versions of Node.js and npm by running the following commands: + +```bash +nvm install node # "node" is an alias for the latest version +nvm use node +``` + ## Installation -### In Your Node.js Project +Optional: Initialize the npm + +This command initializes a new npm project with default settings and configures it to use ES modules by setting the type field to "module" in the package.json file. +```bash +npm init -y; npm pkg set type="module" +``` + +#### You can import the SDK as follows ```bash npm install @coinbase/coinbase-sdk ``` @@ -29,42 +54,64 @@ or yarn install @coinbase/coinbase-sdk ``` -### In the ts-node REPL +## Usage -After running `npx ts-node` to start the REPL, you can import the SDK as follows: +### Initialization -```typescript -import { Coinbase } from "@coinbase/coinbase-sdk"; -``` +#### You can import the SDK as follows: -### Requirements +CommonJs: -- Node.js 18 or higher +```javascript +const { Coinbase } = require("@coinbase/coinbase-sdk"); +``` -## Usage +ES modules: -### Initialization +```typescript +import { Coinbase } from "@coinbase/coinbase-sdk"; +``` To start, [create a CDP API Key](https://portal.cdp.coinbase.com/access/api). Then, initialize the Platform SDK by passing your API Key name and API Key's private key via the `Coinbase` constructor: ```typescript const apiKeyName = "Copy your API Key name here."; -const apiKeyPrivateKey = "Copy your API Key's private key here."; +const privateKey = "Copy your API Key's private key here."; -const coinbase = new Coinbase(apiKeyName, apiKeyPrivateKey); +const coinbase = new Coinbase({ apiKeyName: apiKeyName, privateKey: privateKey }); +``` + +If you are using a CDP Server-Signer to manage your private keys, enable it with the constuctor option: +```typescript +const coinbase = new Coinbase({ apiKeyName: apiKeyName, privateKey: apiKeyPrivateKey, useServerSigner: true }) ``` Another way to initialize the SDK is by sourcing the API key from the json file that contains your API key, downloaded from CDP portal. ```typescript -const coinbase = Coinbase.configureFromJson("path/to/your/api-key.json"); +const coinbase = Coinbase.configureFromJson({ filePath: "path/to/your/api-key.json" }); ``` This will allow you to authenticate with the Platform APIs and get access to the default `User`. +CommonJs: + +```javascript +const { Coinbase } = require("@coinbase/coinbase-sdk"); +const coinbase = Coinbase.configureFromJson("path/to/your/api-key.json"); +coinbase.getDefaultUser().then(user => { + console.log(user); +}); +``` + +Or using ES modules and async/await: + ```typescript +import { Coinbase } from "@coinbase/coinbase-sdk"; +const coinbase = Coinbase.configureFromJson("path/to/your/api-key.json"); const user = await coinbase.getDefaultUser(); +console.log(user); ``` ### Wallets, Addresses, and Transfers @@ -118,16 +165,16 @@ In order to persist the data for the Wallet, you will need to implement a store await store(data); ``` -For convenience during testing, we provide a `saveWallet` method that stores the Wallet data in your local file system. This is an insecure method of storing wallet seeds and should only be used for development purposes. +For convenience during testing, we provide a `saveSeed` method that stores the wallet's seed in your local file system. This is an insecure method of storing wallet seeds and should only be used for development purposes. ```typescript -user.saveWallet(wallet); +wallet.saveSeed(wallet); ``` -To encrypt the saved data, set encrypt to true. Note that your CDP API key also serves as the encryption key for the data persisted locally. To re-instantiate wallets with encrypted data, ensure that your SDK is configured with the same API key when invoking `saveWallet` and `loadWallets`. +To encrypt the saved data, set encrypt to true. Note that your CDP API key also serves as the encryption key for the data persisted locally. To re-instantiate wallets with encrypted data, ensure that your SDK is configured with the same API key when invoking `saveSeed` and `loadSeed`. ```typescript -user.saveWallet(wallet, true); +wallet.saveSeed(wallet, true); ``` The below code demonstrates how to re-instantiate a Wallet from the data export. @@ -137,12 +184,12 @@ The below code demonstrates how to re-instantiate a Wallet from the data export. const importedWallet = await user.importWallet(data); ``` -To import Wallets that were persisted to your local file system using `saveWallet`, use the below code. +To import Wallets that were persisted to your local file system using `saveSeed`, use the below code. ```typescript // The Wallet can be re-instantiated using the exported data. -const wallets = await user.loadWallets(); -const reinitWallet = wallets[wallet.getId()]; +const w = await user.getWallet(w.getId()); +w.loadSeed(filePath); ``` ## Development @@ -192,13 +239,10 @@ To run a specific test, run (for example): ```bash npx jest ./src/coinbase/tests/wallet_test.ts ``` - -### REPL - -The repository is equipped with a REPL to allow developers to play with the SDK. To start it, run: +To run e2e tests, run: ```bash -npx ts-node +npm run test:dry-run && NAME="placeholder" PRIVATE_KEY="placeholder" WALLET_DATA="placeholder" && npm run test:e2e ``` ### Generating Documentation diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index d462774e..6f1a5fd7 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index ccf5d4ad..27f27369 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/client_api.AddressesApi.html b/docs/classes/client_api.AddressesApi.html index b986f42a..7e0c6f0f 100644 --- a/docs/classes/client_api.AddressesApi.html +++ b/docs/classes/client_api.AddressesApi.html @@ -1,6 +1,6 @@ AddressesApi | @coinbase/coinbase-sdk

AddressesApi - object-oriented interface

Export

AddressesApi

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Implements

Constructors

Properties

axios: AxiosInstance = globalAxios
basePath: string = BASE_PATH
configuration: undefined | Configuration

Methods

  • Create a new address scoped to the wallet.

    +

Constructors

Properties

axios: AxiosInstance = globalAxios
basePath: string = BASE_PATH
configuration: undefined | Configuration

Methods

  • Create a new address scoped to the wallet.

    Parameters

    • walletId: string

      The ID of the wallet to create the address in.

    • Optional createAddressRequest: CreateAddressRequest
    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<Address, any>>

    Summary

    Create a new address

    Throws

    Memberof

    AddressesApi

    -
  • Get address

    Parameters

    • walletId: string

      The ID of the wallet the address belongs to.

    • addressId: string

      The onchain address of the address that is being fetched.

    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<Address, any>>

    Summary

    Get address by onchain address

    Throws

    Memberof

    AddressesApi

    -
  • Get address balance

    Parameters

    • walletId: string

      The ID of the wallet to fetch the balance for

    • addressId: string

      The onchain address of the address that is being fetched.

    • assetId: string

      The symbol of the asset to fetch the balance for

    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<Balance, any>>

    Summary

    Get address balance for asset

    Throws

    Memberof

    AddressesApi

    -
  • Get address balances

    Parameters

    • walletId: string

      The ID of the wallet to fetch the balances for

    • addressId: string

      The onchain address of the address that is being fetched.

    • Optional page: string

      A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<AddressBalanceList, any>>

    Summary

    Get all balances for address

    Throws

    Memberof

    AddressesApi

    -
  • List addresses in the wallet.

    Parameters

    • walletId: string

      The ID of the wallet whose addresses to fetch

    • Optional limit: number

      A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

    • Optional page: string

      A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<AddressList, any>>

    Summary

    List addresses in a wallet.

    Throws

    Memberof

    AddressesApi

    -
  • Request faucet funds to be sent to onchain address.

    Parameters

    • walletId: string

      The ID of the wallet the address belongs to.

    • addressId: string

      The onchain address of the address that is being fetched.

    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<FaucetTransaction, any>>

    Summary

    Request faucet funds for onchain address.

    Throws

    Memberof

    AddressesApi

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/client_api.ServerSignersApi.html b/docs/classes/client_api.ServerSignersApi.html new file mode 100644 index 00000000..e472ea19 --- /dev/null +++ b/docs/classes/client_api.ServerSignersApi.html @@ -0,0 +1,43 @@ +ServerSignersApi | @coinbase/coinbase-sdk

ServerSignersApi - object-oriented interface

+

Export

ServerSignersApi

+

Hierarchy (view full)

Implements

Constructors

Properties

axios: AxiosInstance = globalAxios
basePath: string = BASE_PATH
configuration: undefined | Configuration

Methods

  • Get a server signer by ID

    +

    Parameters

    • serverSignerId: string

      The ID of the server signer to fetch

      +
    • Optional options: RawAxiosRequestConfig

      Override http request option.

      +

    Returns Promise<AxiosResponse<ServerSigner, any>>

    Summary

    Get a server signer by ID

    +

    Throws

    Memberof

    ServerSignersApi

    +
  • List events for a server signer

    +

    Parameters

    • serverSignerId: string

      The ID of the server signer to fetch events for

      +
    • Optional limit: number

      A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

      +
    • Optional page: string

      A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

      +
    • Optional options: RawAxiosRequestConfig

      Override http request option.

      +

    Returns Promise<AxiosResponse<ServerSignerEventList, any>>

    Summary

    List events for a server signer

    +

    Throws

    Memberof

    ServerSignersApi

    +
\ No newline at end of file diff --git a/docs/classes/client_api.TradesApi.html b/docs/classes/client_api.TradesApi.html new file mode 100644 index 00000000..b0313bb4 --- /dev/null +++ b/docs/classes/client_api.TradesApi.html @@ -0,0 +1,39 @@ +TradesApi | @coinbase/coinbase-sdk

TradesApi - object-oriented interface

+

Export

TradesApi

+

Hierarchy (view full)

Implements

Constructors

Properties

axios: AxiosInstance = globalAxios
basePath: string = BASE_PATH
configuration: undefined | Configuration

Methods

  • Broadcast a trade

    +

    Parameters

    • walletId: string

      The ID of the wallet the address belongs to

      +
    • addressId: string

      The ID of the address the trade belongs to

      +
    • tradeId: string

      The ID of the trade to broadcast

      +
    • broadcastTradeRequest: BroadcastTradeRequest
    • Optional options: RawAxiosRequestConfig

      Override http request option.

      +

    Returns Promise<AxiosResponse<Trade, any>>

    Summary

    Broadcast a trade

    +

    Throws

    Memberof

    TradesApi

    +
  • Create a new trade

    +

    Parameters

    • walletId: string

      The ID of the wallet the source address belongs to

      +
    • addressId: string

      The ID of the address to conduct the trade from

      +
    • createTradeRequest: CreateTradeRequest
    • Optional options: RawAxiosRequestConfig

      Override http request option.

      +

    Returns Promise<AxiosResponse<Trade, any>>

    Summary

    Create a new trade for an address

    +

    Throws

    Memberof

    TradesApi

    +
  • Get a trade by ID

    +

    Parameters

    • walletId: string

      The ID of the wallet the address belongs to

      +
    • addressId: string

      The ID of the address the trade belongs to

      +
    • tradeId: string

      The ID of the trade to fetch

      +
    • Optional options: RawAxiosRequestConfig

      Override http request option.

      +

    Returns Promise<AxiosResponse<Trade, any>>

    Summary

    Get a trade by ID

    +

    Throws

    Memberof

    TradesApi

    +
  • List trades for an address.

    +

    Parameters

    • walletId: string

      The ID of the wallet the address belongs to

      +
    • addressId: string

      The ID of the address to list trades for

      +
    • Optional limit: number

      A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

      +
    • Optional page: string

      A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

      +
    • Optional options: RawAxiosRequestConfig

      Override http request option.

      +

    Returns Promise<AxiosResponse<TradeList, any>>

    Summary

    List trades for an address.

    +

    Throws

    Memberof

    TradesApi

    +
\ No newline at end of file diff --git a/docs/classes/client_api.TransfersApi.html b/docs/classes/client_api.TransfersApi.html index 9a33f457..0dbf8120 100644 --- a/docs/classes/client_api.TransfersApi.html +++ b/docs/classes/client_api.TransfersApi.html @@ -1,6 +1,6 @@ TransfersApi | @coinbase/coinbase-sdk

TransfersApi - object-oriented interface

Export

TransfersApi

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Implements

Constructors

Properties

axios: AxiosInstance = globalAxios
basePath: string = BASE_PATH
configuration: undefined | Configuration

Methods

  • Broadcast a transfer

    +

Constructors

Properties

axios: AxiosInstance = globalAxios
basePath: string = BASE_PATH
configuration: undefined | Configuration

Methods

  • Broadcast a transfer

    Parameters

    • walletId: string

      The ID of the wallet the address belongs to

    • addressId: string

      The ID of the address the transfer belongs to

    • transferId: string

      The ID of the transfer to broadcast

    • broadcastTransferRequest: BroadcastTransferRequest
    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<Transfer, any>>

    Summary

    Broadcast a transfer

    Throws

    Memberof

    TransfersApi

    -
  • Create a new transfer

    Parameters

    • walletId: string

      The ID of the wallet the source address belongs to

    • addressId: string

      The ID of the address to transfer from

    • createTransferRequest: CreateTransferRequest
    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<Transfer, any>>

    Summary

    Create a new transfer for an address

    Throws

    Memberof

    TransfersApi

    -
  • Get a transfer by ID

    Parameters

    • walletId: string

      The ID of the wallet the address belongs to

    • addressId: string

      The ID of the address the transfer belongs to

    • transferId: string

      The ID of the transfer to fetch

    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<Transfer, any>>

    Summary

    Get a transfer by ID

    Throws

    Memberof

    TransfersApi

    -
  • List transfers for an address.

    Parameters

    • walletId: string

      The ID of the wallet the address belongs to

    • addressId: string

      The ID of the address to list transfers for

    • Optional limit: number

      A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

      @@ -36,4 +36,4 @@

      Throws

      Memberof

      TransfersApi

    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<TransferList, any>>

    Summary

    List transfers for an address.

    Throws

    Memberof

    TransfersApi

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/client_api.UsersApi.html b/docs/classes/client_api.UsersApi.html index 318e7f6d..dc9d0772 100644 --- a/docs/classes/client_api.UsersApi.html +++ b/docs/classes/client_api.UsersApi.html @@ -1,12 +1,12 @@ UsersApi | @coinbase/coinbase-sdk

UsersApi - object-oriented interface

Export

UsersApi

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Implements

Constructors

Properties

Methods

Constructors

Properties

axios: AxiosInstance = globalAxios
basePath: string = BASE_PATH
configuration: undefined | Configuration

Methods

  • Get current user

    +

Constructors

Properties

axios: AxiosInstance = globalAxios
basePath: string = BASE_PATH
configuration: undefined | Configuration

Methods

  • Get current user

    Parameters

    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<User, any>>

    Summary

    Get current user

    Throws

    Memberof

    UsersApi

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/client_api.WalletsApi.html b/docs/classes/client_api.WalletsApi.html index f2076eb3..fd952f24 100644 --- a/docs/classes/client_api.WalletsApi.html +++ b/docs/classes/client_api.WalletsApi.html @@ -1,6 +1,6 @@ WalletsApi | @coinbase/coinbase-sdk

WalletsApi - object-oriented interface

Export

WalletsApi

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Implements

Constructors

Properties

axios: AxiosInstance = globalAxios
basePath: string = BASE_PATH
configuration: undefined | Configuration

Methods

  • Create a new wallet scoped to the user.

    +

Constructors

Properties

axios: AxiosInstance = globalAxios
basePath: string = BASE_PATH
configuration: undefined | Configuration

Methods

  • Create a new wallet scoped to the user.

    Parameters

    • Optional createWalletRequest: CreateWalletRequest
    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<Wallet, any>>

    Summary

    Create a new wallet

    Throws

    Memberof

    WalletsApi

    -
  • Get wallet

    Parameters

    • walletId: string

      The ID of the wallet to fetch

    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<Wallet, any>>

    Summary

    Get wallet by ID

    Throws

    Memberof

    WalletsApi

    -
  • Get the aggregated balance of an asset across all of the addresses in the wallet.

    Parameters

    • walletId: string

      The ID of the wallet to fetch the balance for

    • assetId: string

      The symbol of the asset to fetch the balance for

    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<Balance, any>>

    Summary

    Get the balance of an asset in the wallet

    Throws

    Memberof

    WalletsApi

    -
  • List the balances of all of the addresses in the wallet aggregated by asset.

    Parameters

    • walletId: string

      The ID of the wallet to fetch the balances for

    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<AddressBalanceList, any>>

    Summary

    List wallet balances

    Throws

    Memberof

    WalletsApi

    -
  • List wallets belonging to the user.

    Parameters

    • Optional limit: number

      A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

    • Optional page: string

      A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

    • Optional options: RawAxiosRequestConfig

      Override http request option.

    Returns Promise<AxiosResponse<WalletList, any>>

    Summary

    List wallets

    Throws

    Memberof

    WalletsApi

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/client_base.BaseAPI.html b/docs/classes/client_base.BaseAPI.html index db18152b..259d32ee 100644 --- a/docs/classes/client_base.BaseAPI.html +++ b/docs/classes/client_base.BaseAPI.html @@ -1,6 +1,6 @@ BaseAPI | @coinbase/coinbase-sdk

Export

BaseAPI

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Constructors

Properties

axios: AxiosInstance = globalAxios
basePath: string = BASE_PATH
configuration: undefined | Configuration
\ No newline at end of file +

Constructors

Properties

axios: AxiosInstance = globalAxios
basePath: string = BASE_PATH
configuration: undefined | Configuration
\ No newline at end of file diff --git a/docs/classes/client_base.RequiredError.html b/docs/classes/client_base.RequiredError.html index 2a01bce9..1ba869de 100644 --- a/docs/classes/client_base.RequiredError.html +++ b/docs/classes/client_base.RequiredError.html @@ -1,5 +1,5 @@ RequiredError | @coinbase/coinbase-sdk

Export

RequiredError

-

Hierarchy

  • Error
    • RequiredError

Constructors

Hierarchy

  • Error
    • RequiredError

Constructors

Properties

Methods

Constructors

Properties

field: string
message: string
name: string
stack?: string
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Constructors

Properties

field: string
message: string
name: string
stack?: string
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

\ No newline at end of file diff --git a/docs/classes/client_configuration.Configuration.html b/docs/classes/client_configuration.Configuration.html index 180ec1a1..1fdce7b4 100644 --- a/docs/classes/client_configuration.Configuration.html +++ b/docs/classes/client_configuration.Configuration.html @@ -1,4 +1,4 @@ -Configuration | @coinbase/coinbase-sdk

Constructors

constructor +Configuration | @coinbase/coinbase-sdk

Constructors

Properties

Methods

Constructors

Properties

accessToken?: string | Promise<string> | ((name?, scopes?) => string) | ((name?, scopes?) => Promise<string>)

parameter for oauth2 security

+

Constructors

Properties

accessToken?: string | Promise<string> | ((name?, scopes?) => string) | ((name?, scopes?) => Promise<string>)

parameter for oauth2 security

Type declaration

    • (name?, scopes?): string
    • Parameters

      • Optional name: string
      • Optional scopes: string[]

      Returns string

Type declaration

    • (name?, scopes?): Promise<string>
    • Parameters

      • Optional name: string
      • Optional scopes: string[]

      Returns Promise<string>

Param: name

security name

Param: scopes

oauth2 scope

Memberof

Configuration

-
apiKey?: string | Promise<string> | ((name) => string) | ((name) => Promise<string>)

parameter for apiKey security

+
apiKey?: string | Promise<string> | ((name) => string) | ((name) => Promise<string>)

parameter for apiKey security

Type declaration

    • (name): string
    • Parameters

      • name: string

      Returns string

Type declaration

    • (name): Promise<string>
    • Parameters

      • name: string

      Returns Promise<string>

Param: name

security name

Memberof

Configuration

-
baseOptions?: any

base options for axios calls

+
baseOptions?: any

base options for axios calls

Memberof

Configuration

-
basePath?: string

override base path

+
basePath?: string

override base path

Memberof

Configuration

-
formDataCtor?: (new () => any)

The FormData constructor that will be used to create multipart form data +

formDataCtor?: (new () => any)

The FormData constructor that will be used to create multipart form data requests. You can inject this here so that execution environments that do not support the FormData class can still run the generated client.

-

Type declaration

    • new (): any
    • Returns any

password?: string

parameter for basic security

+

Type declaration

    • new (): any
    • Returns any

password?: string

parameter for basic security

Memberof

Configuration

-
serverIndex?: number

override server index

+
serverIndex?: number

override server index

Memberof

Configuration

-
username?: string

parameter for basic security

+
username?: string

parameter for basic security

Memberof

Configuration

-

Methods

Methods

  • Check if the given MIME is a JSON MIME. JSON MIME examples: application/json application/json; charset=UTF8 @@ -36,4 +36,4 @@

    Memberof

    Configuration

    application/vnd.company+json

    Parameters

    • mime: string

      MIME (Multipurpose Internet Mail Extensions)

    Returns boolean

    True if the given MIME is JSON, false otherwise.

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_address.Address.html b/docs/classes/coinbase_address.Address.html index 80c4354f..b3928888 100644 --- a/docs/classes/coinbase_address.Address.html +++ b/docs/classes/coinbase_address.Address.html @@ -1,5 +1,5 @@ Address | @coinbase/coinbase-sdk

A representation of a blockchain address, which is a user-controlled account on a network.

-

Constructors

Constructors

Properties

Methods

createTransfer @@ -15,7 +15,7 @@

Parameters

  • model: Address

    The address model data.

  • Optional key: Wallet

    The ethers.js Wallet the Address uses to sign data.

Returns Address

Throws

If the model or key is empty.

-

Properties

key?: Wallet
model: Address

Methods

  • Transfers the given amount of the given Asset to the given address. Only same-Network Transfers are supported.

    +

Properties

key?: Wallet
model: Address

Methods

  • Transfers the given amount of the given Asset to the given address. Only same-Network Transfers are supported.

    Parameters

    • amount: Amount

      The amount of the Asset to send.

    • assetId: string

      The ID of the Asset to send. For Ether, Coinbase.assets.Eth, Coinbase.assets.Gwei, and Coinbase.assets.Wei supported.

    • destination: Destination

      The destination of the transfer. If a Wallet, sends to the Wallet's default address. If a String, interprets it as the address ID.

      @@ -25,26 +25,26 @@

      Throws

      if the API request to create a Transfer fails.

      Throws

      if the API request to broadcast a Transfer fails.

      Throws

      if the Transfer times out.

      -
  • Returns the balance of the provided asset.

    Parameters

    • assetId: string

      The asset ID.

    Returns Promise<Decimal>

    The balance of the asset.

    -
  • Returns a string representation of the address.

    Returns string

    A string representing the address.

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.APIError.html b/docs/classes/coinbase_api_error.APIError.html index 7f83cb63..4407297b 100644 --- a/docs/classes/coinbase_api_error.APIError.html +++ b/docs/classes/coinbase_api_error.APIError.html @@ -1,5 +1,5 @@ APIError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns APIError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Returns a String representation of the APIError.

    Returns string

    a String representation of the APIError

    -
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.AlreadyExistsError.html b/docs/classes/coinbase_api_error.AlreadyExistsError.html index 006c177d..f71f43b5 100644 --- a/docs/classes/coinbase_api_error.AlreadyExistsError.html +++ b/docs/classes/coinbase_api_error.AlreadyExistsError.html @@ -1,5 +1,5 @@ AlreadyExistsError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns AlreadyExistsError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.FaucetLimitReachedError.html b/docs/classes/coinbase_api_error.FaucetLimitReachedError.html index cd34bd5a..110feebd 100644 --- a/docs/classes/coinbase_api_error.FaucetLimitReachedError.html +++ b/docs/classes/coinbase_api_error.FaucetLimitReachedError.html @@ -1,5 +1,5 @@ FaucetLimitReachedError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns FaucetLimitReachedError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.InvalidAddressError.html b/docs/classes/coinbase_api_error.InvalidAddressError.html index fbf3b4ca..655c3122 100644 --- a/docs/classes/coinbase_api_error.InvalidAddressError.html +++ b/docs/classes/coinbase_api_error.InvalidAddressError.html @@ -1,5 +1,5 @@ InvalidAddressError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidAddressError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.InvalidAddressIDError.html b/docs/classes/coinbase_api_error.InvalidAddressIDError.html index b3eb34ec..c7ffc02d 100644 --- a/docs/classes/coinbase_api_error.InvalidAddressIDError.html +++ b/docs/classes/coinbase_api_error.InvalidAddressIDError.html @@ -1,5 +1,5 @@ InvalidAddressIDError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidAddressIDError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.InvalidAmountError.html b/docs/classes/coinbase_api_error.InvalidAmountError.html index 3ba969dc..f04aa52c 100644 --- a/docs/classes/coinbase_api_error.InvalidAmountError.html +++ b/docs/classes/coinbase_api_error.InvalidAmountError.html @@ -1,5 +1,5 @@ InvalidAmountError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidAmountError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.InvalidAssetIDError.html b/docs/classes/coinbase_api_error.InvalidAssetIDError.html index 17acf877..1dc56419 100644 --- a/docs/classes/coinbase_api_error.InvalidAssetIDError.html +++ b/docs/classes/coinbase_api_error.InvalidAssetIDError.html @@ -1,5 +1,5 @@ InvalidAssetIDError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidAssetIDError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.InvalidDestinationError.html b/docs/classes/coinbase_api_error.InvalidDestinationError.html index e5a8404b..73666fb3 100644 --- a/docs/classes/coinbase_api_error.InvalidDestinationError.html +++ b/docs/classes/coinbase_api_error.InvalidDestinationError.html @@ -1,5 +1,5 @@ InvalidDestinationError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidDestinationError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.InvalidLimitError.html b/docs/classes/coinbase_api_error.InvalidLimitError.html index b77c3cce..c4be0782 100644 --- a/docs/classes/coinbase_api_error.InvalidLimitError.html +++ b/docs/classes/coinbase_api_error.InvalidLimitError.html @@ -1,5 +1,5 @@ InvalidLimitError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidLimitError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.InvalidNetworkIDError.html b/docs/classes/coinbase_api_error.InvalidNetworkIDError.html index fa0814fa..84452d91 100644 --- a/docs/classes/coinbase_api_error.InvalidNetworkIDError.html +++ b/docs/classes/coinbase_api_error.InvalidNetworkIDError.html @@ -1,5 +1,5 @@ InvalidNetworkIDError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidNetworkIDError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.InvalidPageError.html b/docs/classes/coinbase_api_error.InvalidPageError.html index b2818b7d..c7908340 100644 --- a/docs/classes/coinbase_api_error.InvalidPageError.html +++ b/docs/classes/coinbase_api_error.InvalidPageError.html @@ -1,5 +1,5 @@ InvalidPageError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidPageError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.InvalidSignedPayloadError.html b/docs/classes/coinbase_api_error.InvalidSignedPayloadError.html index 69c720f5..254a2731 100644 --- a/docs/classes/coinbase_api_error.InvalidSignedPayloadError.html +++ b/docs/classes/coinbase_api_error.InvalidSignedPayloadError.html @@ -1,5 +1,5 @@ InvalidSignedPayloadError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidSignedPayloadError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.InvalidTransferIDError.html b/docs/classes/coinbase_api_error.InvalidTransferIDError.html index 03083fc1..778d94df 100644 --- a/docs/classes/coinbase_api_error.InvalidTransferIDError.html +++ b/docs/classes/coinbase_api_error.InvalidTransferIDError.html @@ -1,5 +1,5 @@ InvalidTransferIDError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidTransferIDError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.InvalidTransferStatusError.html b/docs/classes/coinbase_api_error.InvalidTransferStatusError.html index 349f73d3..9d9fbfe1 100644 --- a/docs/classes/coinbase_api_error.InvalidTransferStatusError.html +++ b/docs/classes/coinbase_api_error.InvalidTransferStatusError.html @@ -1,5 +1,5 @@ InvalidTransferStatusError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidTransferStatusError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.InvalidWalletError.html b/docs/classes/coinbase_api_error.InvalidWalletError.html index 70f4cf8e..67c6ffaa 100644 --- a/docs/classes/coinbase_api_error.InvalidWalletError.html +++ b/docs/classes/coinbase_api_error.InvalidWalletError.html @@ -1,5 +1,5 @@ InvalidWalletError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidWalletError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.InvalidWalletIDError.html b/docs/classes/coinbase_api_error.InvalidWalletIDError.html index d658edf8..0e78a878 100644 --- a/docs/classes/coinbase_api_error.InvalidWalletIDError.html +++ b/docs/classes/coinbase_api_error.InvalidWalletIDError.html @@ -1,5 +1,5 @@ InvalidWalletIDError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidWalletIDError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.MalformedRequestError.html b/docs/classes/coinbase_api_error.MalformedRequestError.html index 2e173df6..abf66abd 100644 --- a/docs/classes/coinbase_api_error.MalformedRequestError.html +++ b/docs/classes/coinbase_api_error.MalformedRequestError.html @@ -1,5 +1,5 @@ MalformedRequestError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns MalformedRequestError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.NotFoundError.html b/docs/classes/coinbase_api_error.NotFoundError.html index 15d3af39..c9ffea84 100644 --- a/docs/classes/coinbase_api_error.NotFoundError.html +++ b/docs/classes/coinbase_api_error.NotFoundError.html @@ -1,5 +1,5 @@ NotFoundError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns NotFoundError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.ResourceExhaustedError.html b/docs/classes/coinbase_api_error.ResourceExhaustedError.html index e956c76f..91a6f8f9 100644 --- a/docs/classes/coinbase_api_error.ResourceExhaustedError.html +++ b/docs/classes/coinbase_api_error.ResourceExhaustedError.html @@ -1,5 +1,5 @@ ResourceExhaustedError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns ResourceExhaustedError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.UnauthorizedError.html b/docs/classes/coinbase_api_error.UnauthorizedError.html index 53615f4f..b25fbf57 100644 --- a/docs/classes/coinbase_api_error.UnauthorizedError.html +++ b/docs/classes/coinbase_api_error.UnauthorizedError.html @@ -1,5 +1,5 @@ UnauthorizedError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns UnauthorizedError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.UnimplementedError.html b/docs/classes/coinbase_api_error.UnimplementedError.html index 38b7a341..6c4022c7 100644 --- a/docs/classes/coinbase_api_error.UnimplementedError.html +++ b/docs/classes/coinbase_api_error.UnimplementedError.html @@ -1,5 +1,5 @@ UnimplementedError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns UnimplementedError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_api_error.UnsupportedAssetError.html b/docs/classes/coinbase_api_error.UnsupportedAssetError.html index bd567dce..e23787c8 100644 --- a/docs/classes/coinbase_api_error.UnsupportedAssetError.html +++ b/docs/classes/coinbase_api_error.UnsupportedAssetError.html @@ -1,5 +1,5 @@ UnsupportedAssetError | @coinbase/coinbase-sdk

A wrapper for API errors to provide more context.

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

apiCode apiMessage cause? @@ -34,12 +34,12 @@ fromError

Constructors

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns UnsupportedAssetError

Properties

apiCode: null | string
apiMessage: null | string
cause?: Error
code?: string
config?: InternalAxiosRequestConfig<any>
httpCode: null | number
isAxiosError: boolean
message: string
name: string
request?: any
response?: AxiosResponse<unknown, any>
stack?: string
status?: number
toJSON: (() => object)

Type declaration

    • (): object
    • Returns object

ECONNABORTED: "ECONNABORTED" = "ECONNABORTED"
ERR_BAD_OPTION: "ERR_BAD_OPTION" = "ERR_BAD_OPTION"
ERR_BAD_OPTION_VALUE: "ERR_BAD_OPTION_VALUE" = "ERR_BAD_OPTION_VALUE"
ERR_BAD_REQUEST: "ERR_BAD_REQUEST" = "ERR_BAD_REQUEST"
ERR_BAD_RESPONSE: "ERR_BAD_RESPONSE" = "ERR_BAD_RESPONSE"
ERR_CANCELED: "ERR_CANCELED" = "ERR_CANCELED"
ERR_DEPRECATED: "ERR_DEPRECATED" = "ERR_DEPRECATED"
ERR_FR_TOO_MANY_REDIRECTS: "ERR_FR_TOO_MANY_REDIRECTS" = "ERR_FR_TOO_MANY_REDIRECTS"
ERR_INVALID_URL: "ERR_INVALID_URL" = "ERR_INVALID_URL"
ERR_NETWORK: "ERR_NETWORK" = "ERR_NETWORK"
ERR_NOT_SUPPORT: "ERR_NOT_SUPPORT" = "ERR_NOT_SUPPORT"
ETIMEDOUT: "ETIMEDOUT" = "ETIMEDOUT"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Type Parameters

    • T = unknown
    • D = any

    Parameters

    • error: unknown
    • Optional code: string
    • Optional config: InternalAxiosRequestConfig<D>
    • Optional request: any
    • Optional response: AxiosResponse<T, D>
    • Optional customProps: object

    Returns AxiosError<T, D>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_asset.Asset.html b/docs/classes/coinbase_asset.Asset.html index fb24253b..7f4fc320 100644 --- a/docs/classes/coinbase_asset.Asset.html +++ b/docs/classes/coinbase_asset.Asset.html @@ -1,9 +1,9 @@ Asset | @coinbase/coinbase-sdk

A representation of an Asset.

-

Constructors

Constructors

Methods

Constructors

Methods

  • Converts an amount from the atomic value of the primary denomination of the provided Asset ID to whole units of the specified asset ID.

    Parameters

    • atomicAmount: Decimal

      The amount in atomic units.

    • assetId: string

      The assset ID.

    Returns Decimal

    The amount in whole units of the asset with the specified ID.

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_authenticator.CoinbaseAuthenticator.html b/docs/classes/coinbase_authenticator.CoinbaseAuthenticator.html index 8bcaab8f..8d10f560 100644 --- a/docs/classes/coinbase_authenticator.CoinbaseAuthenticator.html +++ b/docs/classes/coinbase_authenticator.CoinbaseAuthenticator.html @@ -1,5 +1,5 @@ CoinbaseAuthenticator | @coinbase/coinbase-sdk

A class that builds JWTs for authenticating with the Coinbase Platform APIs.

-

Constructors

Constructors

Properties

Methods

authenticateRequest @@ -9,20 +9,20 @@

Constructors

Properties

apiKey: string
privateKey: string

Methods

  • Middleware to intercept requests and add JWT to Authorization header.

    +

Returns CoinbaseAuthenticator

Properties

apiKey: string
privateKey: string

Methods

  • Middleware to intercept requests and add JWT to Authorization header.

    Parameters

    • config: InternalAxiosRequestConfig<any>

      The request configuration.

    • debugging: boolean = false

      Flag to enable debugging.

    Returns Promise<InternalAxiosRequestConfig<any>>

    The request configuration with the Authorization header added.

    Throws

    If JWT could not be built.

    -
  • Builds the JWT for the given API endpoint URL.

    Parameters

    • url: string

      URL of the API endpoint.

    • method: string = "GET"

      HTTP method of the request.

    Returns Promise<string>

    JWT token.

    Throws

    If the private key is not in the correct format.

    -
  • Extracts the PEM key from the given private key string.

    Parameters

    • privateKeyString: string

      The private key string.

    Returns string

    The PEM key.

    Throws

    If the private key string is not in the correct format.

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_balance.Balance.html b/docs/classes/coinbase_balance.Balance.html index c701e28a..59e1316a 100644 --- a/docs/classes/coinbase_balance.Balance.html +++ b/docs/classes/coinbase_balance.Balance.html @@ -1,13 +1,13 @@ Balance | @coinbase/coinbase-sdk

A representation of a balance.

-

Properties

Properties

amount: Decimal
assetId: string

Methods

  • Converts a BalanceModel into a Balance object.

    +

Properties

amount: Decimal
assetId: string

Methods

  • Converts a BalanceModel and asset ID into a Balance object.

    Parameters

    • model: Balance

      The balance model object.

    • assetId: string

      The asset ID.

    Returns Balance

    The Balance object.

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_balance_map.BalanceMap.html b/docs/classes/coinbase_balance_map.BalanceMap.html index a0a6fd0e..1edc7a67 100644 --- a/docs/classes/coinbase_balance_map.BalanceMap.html +++ b/docs/classes/coinbase_balance_map.BalanceMap.html @@ -1,5 +1,5 @@ BalanceMap | @coinbase/coinbase-sdk

A convenience class for storing and manipulating Asset balances in a human-readable format.

-

Hierarchy

  • Map<string, Decimal>
    • BalanceMap

Constructors

Hierarchy

  • Map<string, Decimal>
    • BalanceMap

Constructors

Properties

[toStringTag] size [species] @@ -20,7 +20,7 @@
[species]: MapConstructor

Methods

  • Returns an iterable of entries in the map.

    Returns IterableIterator<[string, Decimal]>

  • Returns void

  • Parameters

    • key: string

    Returns boolean

    true if an element in the Map existed and has been removed, or false if the element does not exist.

    +

Returns void

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_coinbase.Coinbase.html b/docs/classes/coinbase_coinbase.Coinbase.html index cee02274..a214d4de 100644 --- a/docs/classes/coinbase_coinbase.Coinbase.html +++ b/docs/classes/coinbase_coinbase.Coinbase.html @@ -1,34 +1,27 @@ Coinbase | @coinbase/coinbase-sdk

The Coinbase SDK.

-

Constructors

Constructors

  • Initializes the Coinbase SDK.

    -

    Parameters

    • apiKeyName: string

      The API key name.

      -
    • privateKey: string

      The private key associated with the API key.

      -
    • debugging: boolean = false

      If true, logs API requests and responses to the console.

      -
    • basePath: string = BASE_PATH

      The base path for the API.

      -
    • Optional backupFilePath: string

      The path to the file containing the Wallet backup data.

      +

Constructors

Properties

apiClients: ApiClients = {}
apiKeyPrivateKey: string

The CDP API key Private Key.

-

Constant

assets: {
    Eth: string;
    Gwei: string;
    Usdc: string;
    Wei: string;
    Weth: string;
} = ...

The list of supported assets.

-

Type declaration

  • Eth: string
  • Gwei: string
  • Usdc: string
  • Wei: string
  • Weth: string

Constant

backupFilePath: string = "seed.json"

The backup file path for Wallet seeds.

-

Constant

networkList: {
    BaseSepolia: string;
} = ...

The list of supported networks.

-

Type declaration

  • BaseSepolia: string

Constant

Methods

Properties

apiClients: ApiClients = {}
apiKeyPrivateKey: string

The CDP API key Private Key.

+

Constant

assets: {
    Eth: string;
    Gwei: string;
    Usdc: string;
    Wei: string;
    Weth: string;
} = ...

The list of supported assets.

+

Type declaration

  • Eth: string
  • Gwei: string
  • Usdc: string
  • Wei: string
  • Weth: string

Constant

networkList: {
    BaseSepolia: string;
} = ...

The list of supported networks.

+

Type declaration

  • BaseSepolia: string

Constant

useServerSigner: boolean

Whether to use a server signer or not.

+

Constant

Methods

  • Returns User object for the default user.

    Returns Promise<User>

    The default user.

    Throws

    If the request fails.

    -
  • Reads the API key and private key from a JSON file and initializes the Coinbase SDK.

    -

    Parameters

    • filePath: string = "coinbase_cloud_api_key.json"

      The path to the JSON file containing the API key and private key.

      -
    • debugging: boolean = false

      If true, logs API requests and responses to the console.

      -
    • basePath: string = BASE_PATH

      The base path for the API.

      -
    • Optional backupFilePath: string

      The path to the file containing the Wallet backup data.

      +
  • Reads the API key and private key from a JSON file and initializes the Coinbase SDK.

    +

    Parameters

    Returns Coinbase

    A new instance of the Coinbase SDK.

    Throws

    If the file does not exist or the configuration values are missing/invalid.

    Throws

    If the configuration is invalid.

    Throws

    If not able to create JWT token.

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_errors.ArgumentError.html b/docs/classes/coinbase_errors.ArgumentError.html index 0622bb8e..e03a11c5 100644 --- a/docs/classes/coinbase_errors.ArgumentError.html +++ b/docs/classes/coinbase_errors.ArgumentError.html @@ -1,5 +1,5 @@ ArgumentError | @coinbase/coinbase-sdk

ArgumentError is thrown when an argument is invalid.

-

Hierarchy

  • Error
    • ArgumentError

Constructors

Hierarchy

  • Error
    • ArgumentError

Constructors

Properties

message name stack? @@ -9,7 +9,7 @@

Methods

Constructors

Properties

message: string
name: string
stack?: string
DEFAULT_MESSAGE: string = "Argument Error"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns ArgumentError

Properties

message: string
name: string
stack?: string
DEFAULT_MESSAGE: string = "Argument Error"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

\ No newline at end of file diff --git a/docs/classes/coinbase_errors.InternalError.html b/docs/classes/coinbase_errors.InternalError.html index 782b47a1..613e0c40 100644 --- a/docs/classes/coinbase_errors.InternalError.html +++ b/docs/classes/coinbase_errors.InternalError.html @@ -1,5 +1,5 @@ InternalError | @coinbase/coinbase-sdk

InternalError is thrown when there is an internal error in the SDK.

-

Hierarchy

  • Error
    • InternalError

Constructors

Hierarchy

  • Error
    • InternalError

Constructors

Properties

message name stack? @@ -9,7 +9,7 @@

Methods

Constructors

Properties

message: string
name: string
stack?: string
DEFAULT_MESSAGE: string = "Internal Error"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InternalError

Properties

message: string
name: string
stack?: string
DEFAULT_MESSAGE: string = "Internal Error"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

\ No newline at end of file diff --git a/docs/classes/coinbase_errors.InvalidAPIKeyFormat.html b/docs/classes/coinbase_errors.InvalidAPIKeyFormat.html index ba353ea4..b47d04d4 100644 --- a/docs/classes/coinbase_errors.InvalidAPIKeyFormat.html +++ b/docs/classes/coinbase_errors.InvalidAPIKeyFormat.html @@ -1,5 +1,5 @@ InvalidAPIKeyFormat | @coinbase/coinbase-sdk

InvalidaAPIKeyFormat error is thrown when the API key format is invalid.

-

Hierarchy

  • Error
    • InvalidAPIKeyFormat

Constructors

Hierarchy

  • Error
    • InvalidAPIKeyFormat

Constructors

Properties

message name stack? @@ -9,7 +9,7 @@

Methods

Constructors

Properties

message: string
name: string
stack?: string
DEFAULT_MESSAGE: string = "Invalid API key format"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidAPIKeyFormat

Properties

message: string
name: string
stack?: string
DEFAULT_MESSAGE: string = "Invalid API key format"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

\ No newline at end of file diff --git a/docs/classes/coinbase_errors.InvalidConfiguration.html b/docs/classes/coinbase_errors.InvalidConfiguration.html index cab6a948..870df4ec 100644 --- a/docs/classes/coinbase_errors.InvalidConfiguration.html +++ b/docs/classes/coinbase_errors.InvalidConfiguration.html @@ -1,5 +1,5 @@ InvalidConfiguration | @coinbase/coinbase-sdk

InvalidConfiguration error is thrown when apikey/privateKey configuration is invalid.

-

Hierarchy

  • Error
    • InvalidConfiguration

Constructors

Hierarchy

  • Error
    • InvalidConfiguration

Constructors

Properties

message name stack? @@ -9,7 +9,7 @@

Methods

Constructors

Properties

message: string
name: string
stack?: string
DEFAULT_MESSAGE: string = "Invalid configuration"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidConfiguration

Properties

message: string
name: string
stack?: string
DEFAULT_MESSAGE: string = "Invalid configuration"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

\ No newline at end of file diff --git a/docs/classes/coinbase_errors.InvalidUnsignedPayload.html b/docs/classes/coinbase_errors.InvalidUnsignedPayload.html index e478d60f..826973c0 100644 --- a/docs/classes/coinbase_errors.InvalidUnsignedPayload.html +++ b/docs/classes/coinbase_errors.InvalidUnsignedPayload.html @@ -1,5 +1,5 @@ InvalidUnsignedPayload | @coinbase/coinbase-sdk

InvalidUnsignedPayload error is thrown when the unsigned payload is invalid.

-

Hierarchy

  • Error
    • InvalidUnsignedPayload

Constructors

Hierarchy

  • Error
    • InvalidUnsignedPayload

Constructors

Properties

message name stack? @@ -9,7 +9,7 @@

Methods

Constructors

Properties

message: string
name: string
stack?: string
DEFAULT_MESSAGE: string = "Invalid unsigned payload"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Returns InvalidUnsignedPayload

Properties

message: string
name: string
stack?: string
DEFAULT_MESSAGE: string = "Invalid unsigned payload"
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

\ No newline at end of file diff --git a/docs/classes/coinbase_faucet_transaction.FaucetTransaction.html b/docs/classes/coinbase_faucet_transaction.FaucetTransaction.html index 3d219d90..5d20c572 100644 --- a/docs/classes/coinbase_faucet_transaction.FaucetTransaction.html +++ b/docs/classes/coinbase_faucet_transaction.FaucetTransaction.html @@ -1,5 +1,5 @@ FaucetTransaction | @coinbase/coinbase-sdk

Represents a transaction from a faucet.

-

Constructors

Constructors

Properties

Methods

getTransactionHash getTransactionLink @@ -8,10 +8,10 @@ Do not use this method directly - instead, use Address.faucet().

Parameters

Returns FaucetTransaction

Throws

If the model does not exist.

-

Properties

Methods

Properties

Methods

  • Returns the link to the transaction on the blockchain explorer.

    Returns string

    The link to the transaction on the blockchain explorer

    -
  • Returns a string representation of the FaucetTransaction.

    Returns string

    A string representation of the FaucetTransaction.

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_transfer.Transfer.html b/docs/classes/coinbase_transfer.Transfer.html index 581fe7ee..5f567fbe 100644 --- a/docs/classes/coinbase_transfer.Transfer.html +++ b/docs/classes/coinbase_transfer.Transfer.html @@ -1,7 +1,7 @@ Transfer | @coinbase/coinbase-sdk

A representation of a Transfer, which moves an Amount of an Asset from a user-controlled Wallet to another Address. The fee is assumed to be paid in the native Asset of the Network.

-

Properties

Properties

model: Transfer
transaction?: Transaction

Methods

  • Returns the Amount of the Transfer.

    +

Properties

model: Transfer
transaction?: Transaction

Methods

  • Returns the Destination Address ID of the Transfer.

    Returns string

    The Destination Address ID.

    -
  • Returns the From Address ID of the Transfer.

    Returns string

    The From Address ID.

    -
  • Returns the Signed Payload of the Transfer.

    Returns undefined | string

    The Signed Payload as a Hex string, or undefined if not yet available.

    -
  • Returns the Transaction of the Transfer.

    Returns Transaction

    The ethers.js Transaction object.

    Throws

    (InvalidUnsignedPayload) If the Unsigned Payload is invalid.

    -
  • Returns the Transaction Hash of the Transfer.

    Returns undefined | string

    The Transaction Hash as a Hex string, or undefined if not yet available.

    -
  • Returns the link to the Transaction on the blockchain explorer.

    Returns string

    The link to the Transaction on the blockchain explorer.

    -
  • Returns the Unsigned Payload of the Transfer.

    Returns string

    The Unsigned Payload as a Hex string.

    -
  • Reloads the Transfer model with the latest data from the server.

    +

    Returns Promise<void>

    Throws

    if the API request to get a Transfer fails.

    +
  • Sets the Signed Transaction of the Transfer.

    Parameters

    • transaction: Transaction

      The Signed Transaction.

      -

    Returns void

  • Returns a string representation of the Transfer.

    +

Returns void

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_user.User.html b/docs/classes/coinbase_user.User.html index b7505efe..3ee66b51 100644 --- a/docs/classes/coinbase_user.User.html +++ b/docs/classes/coinbase_user.User.html @@ -1,20 +1,17 @@ User | @coinbase/coinbase-sdk

A representation of a User. Users have Wallets, which can hold balances of Assets. Access the default User through Coinbase.defaultUser().

-

Constructors

Constructors

Properties

model: User

Methods

  • Creates a new Wallet belonging to the User.

    +

Returns User

Properties

model: User

Methods

  • Creates a new Wallet belonging to the User.

    Returns Promise<Wallet>

    the new Wallet

    Throws

    • If the request fails.
    • @@ -25,34 +22,18 @@

      Throws

        Throws

        • If address derivation or caching fails.
        -
  • Gets existing seeds if any from the backup file.

    -

    Returns Record<string, SeedData>

    The existing seeds as a JSON object.

    -

    Throws

      -
    • If the backup data is malformed.
    • -
    -
  • Returns the Wallet with the given ID.

    +

    Parameters

    • wallet_id: string

      the ID of the Wallet

      +

    Returns Promise<Wallet>

    the Wallet with the given ID

    +
  • Lists the Wallets belonging to the User.

    Parameters

    • pageSize: number = 10

      The number of Wallets to return per page. Defaults to 10

    • Optional nextPageToken: string

      The token for the next page of Wallets

      -

    Returns Promise<Wallet[]>

    The list of Wallets.

    -
  • Loads all wallets belonging to the User with backup persisted to the local file system.

    -

    Returns Promise<{
        [key: string]: Wallet;
    }>

    the map of walletId's to the Wallet objects.

    -

    Throws

      -
    • If the backup file is not found or the data is malformed.
    • -
    -
  • Saves a Wallet to local file system. Wallet saved this way can be re-instantiated with loadWallets function, -provided the backup file is available. This is an insecure method of storing Wallet seeds and should only be used -for development purposes. If you call saveWallet with Wallets containing the same walletId, the backup will be overwritten during the second attempt. -The default backup file is seeds.json in the root folder. It can be configured by changing Coinbase.backupFilePath.

    -

    Parameters

    • wallet: Wallet

      The Wallet object to save.

      -
    • encrypt: boolean = false

      Whether or not to encrypt the backup persisted to local file system.

      -

    Returns Wallet

    The saved Wallet object.

    -
  • Stores the encryption key for encrypting the backup.

    -

    Returns Buffer

    The encryption key.

    -
  • Returns a string representation of the User.

    +

Returns Promise<{
    nextPageToken: string;
    wallets: Wallet[];
}>

An object containing the Wallets and the token for the next page

+
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/coinbase_wallet.Wallet.html b/docs/classes/coinbase_wallet.Wallet.html index d50c53a1..2166ca5d 100644 --- a/docs/classes/coinbase_wallet.Wallet.html +++ b/docs/classes/coinbase_wallet.Wallet.html @@ -1,7 +1,7 @@ Wallet | @coinbase/coinbase-sdk

A representation of a Wallet. Wallets come with a single default Address, but can expand to have a set of Addresses, each of which can hold a balance of one or more Assets. Wallets can create new Addresses, list their addresses, list their balances, and transfer Assets to other Addresses. Wallets should be created through User.createWallet or User.importWallet.

-

Properties

Properties

addressIndex: number = 0
addressModels: Address[] = []
addressPathPrefix: "m/44'/60'/0'/0" = "m/44'/60'/0'/0"
addresses: Address[] = []
master?: HDKey
model: Wallet
seed?: string
MAX_ADDRESSES: number = 20

Methods

  • Builds a Hash of the registered Addresses.

    +

Properties

addressIndex: number = 0
addressModels: Address[] = []
addressPathPrefix: "m/44'/60'/0'/0" = "m/44'/60'/0'/0"
addresses: Address[] = []
master?: HDKey
model: Wallet
seed?: string
MAX_ADDRESSES: number = 20

Methods

  • Builds a Hash of the registered Addresses.

    Parameters

    • addressModels: Address[]

      The models of the addresses already registered with the Wallet.

    Returns {
        [key: string]: boolean;
    }

    The Hash of registered Addresses

    -
    • [key: string]: boolean
  • Caches an Address on the client-side and increments the address index.

    +
    • [key: string]: boolean
  • Caches an Address on the client-side and increments the address index.

    Parameters

    • address: Address

      The AddressModel to cache.

    • Optional key: Wallet

      The ethers.js Wallet object the address uses for signing data.

    Returns void

    Throws

    If the address is not provided.

    -
  • Returns whether the Wallet has a seed with which to derive keys and sign transactions.

    +
  • Returns whether the Wallet has a seed with which to derive keys and sign transactions.

    Returns boolean

    Whether the Wallet has a seed with which to derive keys and sign transactions.

    -
  • Creates an attestation for the Address currently being created.

    +
  • Creates an attestation for the Address currently being created.

    Parameters

    • key: HDKey

      The key of the Wallet.

    Returns string

    The attestation.

    -
  • Transfers the given amount of the given Asset to the given address. Only same-Network Transfers are supported. +

  • Transfers the given amount of the given Asset to the given address. Only same-Network Transfers are supported. Currently only the default_address is used to source the Transfer.

    Parameters

    • amount: Amount

      The amount of the Asset to send.

    • assetId: string

      The ID of the Asset to send.

      @@ -62,7 +68,7 @@

      Throws

      if the API request to create a Transfer fails.

      Throws

      if the API request to broadcast a Transfer fails.

      Throws

      if the Transfer times out.

      -
  • Derives an already registered Address in the Wallet.

    +
  • Derives an already registered Address in the Wallet.

    Parameters

    • addressMap: {
          [key: string]: boolean;
      }

      The map of registered Address IDs

      • [key: string]: boolean
    • addressModel: Address

      The Address model

    Returns void

    Throws

      @@ -71,44 +77,74 @@

      Throws

      if the Transfer times out.

      Throws

      • If the request fails.
      -
  • Derives the registered Addresses in the Wallet.

    Parameters

    • addresses: Address[]

      The models of the addresses already registered with the

      -

    Returns void

  • Derives a key for an already registered Address in the Wallet.

    +

Returns void

Returns void

\ No newline at end of file +

Returns void

\ No newline at end of file diff --git a/docs/enums/client_api.TransactionType.html b/docs/enums/client_api.TransactionType.html new file mode 100644 index 00000000..6dbf1383 --- /dev/null +++ b/docs/enums/client_api.TransactionType.html @@ -0,0 +1,2 @@ +TransactionType | @coinbase/coinbase-sdk

Export

Enumeration Members

Enumeration Members

Transfer: "transfer"
\ No newline at end of file diff --git a/docs/enums/coinbase_types.ServerSignerStatus.html b/docs/enums/coinbase_types.ServerSignerStatus.html new file mode 100644 index 00000000..6ec9fbbf --- /dev/null +++ b/docs/enums/coinbase_types.ServerSignerStatus.html @@ -0,0 +1,4 @@ +ServerSignerStatus | @coinbase/coinbase-sdk

ServerSigner status type definition.

+

Enumeration Members

Enumeration Members

ACTIVE: "active_seed"
PENDING: "pending_seed_creation"
\ No newline at end of file diff --git a/docs/enums/coinbase_types.TransferStatus.html b/docs/enums/coinbase_types.TransferStatus.html index 5cdac202..b0c1c819 100644 --- a/docs/enums/coinbase_types.TransferStatus.html +++ b/docs/enums/coinbase_types.TransferStatus.html @@ -1,6 +1,6 @@ TransferStatus | @coinbase/coinbase-sdk

Transfer status type definition.

-

Enumeration Members

Enumeration Members

Enumeration Members

BROADCAST: "BROADCAST"
COMPLETE: "COMPLETE"
FAILED: "FAILED"
PENDING: "PENDING"
\ No newline at end of file +

Enumeration Members

BROADCAST: "broadcast"
COMPLETE: "complete"
FAILED: "failed"
PENDING: "pending"
\ No newline at end of file diff --git a/docs/functions/client_api.AddressesApiAxiosParamCreator.html b/docs/functions/client_api.AddressesApiAxiosParamCreator.html index a8031613..870d11ee 100644 --- a/docs/functions/client_api.AddressesApiAxiosParamCreator.html +++ b/docs/functions/client_api.AddressesApiAxiosParamCreator.html @@ -31,4 +31,4 @@

Throws

Export

\ No newline at end of file +

Returns Promise<RequestArgs>

Export

\ No newline at end of file diff --git a/docs/functions/client_api.AddressesApiFactory.html b/docs/functions/client_api.AddressesApiFactory.html index 0c989dd0..e14482e4 100644 --- a/docs/functions/client_api.AddressesApiFactory.html +++ b/docs/functions/client_api.AddressesApiFactory.html @@ -3,32 +3,32 @@

Parameters

Returns AxiosPromise<Address>

Summary

Create a new address

-

Throws

  • getAddress:function
  • getAddress:function
  • getAddressBalance:function
  • getAddressBalance:function
  • listAddressBalances:function
  • listAddressBalances:function
  • listAddresses:function
  • listAddresses:function
  • requestFaucetFunds:function
  • requestFaucetFunds:function
  • Export

    \ No newline at end of file +

    Throws

    Export

    \ No newline at end of file diff --git a/docs/functions/client_api.AddressesApiFp.html b/docs/functions/client_api.AddressesApiFp.html index d40c28e6..8c6525cc 100644 --- a/docs/functions/client_api.AddressesApiFp.html +++ b/docs/functions/client_api.AddressesApiFp.html @@ -3,32 +3,32 @@

    Parameters

    Returns Promise<((axios?, basePath?) => AxiosPromise<Address>)>

    Summary

    Create a new address

    -

    Throws

  • getAddress:function
  • getAddress:function
  • getAddressBalance:function
  • getAddressBalance:function
  • listAddressBalances:function
  • listAddressBalances:function
  • listAddresses:function
  • listAddresses:function
  • requestFaucetFunds:function
  • requestFaucetFunds:function
  • Export

    \ No newline at end of file +

    Throws

    Export

    \ No newline at end of file diff --git a/docs/functions/client_api.ServerSignersApiAxiosParamCreator.html b/docs/functions/client_api.ServerSignersApiAxiosParamCreator.html new file mode 100644 index 00000000..100a6ed6 --- /dev/null +++ b/docs/functions/client_api.ServerSignersApiAxiosParamCreator.html @@ -0,0 +1,26 @@ +ServerSignersApiAxiosParamCreator | @coinbase/coinbase-sdk
    • ServerSignersApi - axios parameter creator

      +

      Parameters

      Returns {
          createServerSigner: ((createServerSignerRequest?, options?) => Promise<RequestArgs>);
          getServerSigner: ((serverSignerId, options?) => Promise<RequestArgs>);
          listServerSignerEvents: ((serverSignerId, limit?, page?, options?) => Promise<RequestArgs>);
          listServerSigners: ((options?) => Promise<RequestArgs>);
          submitServerSignerSeedEventResult: ((serverSignerId, seedCreationEventResult?, options?) => Promise<RequestArgs>);
          submitServerSignerSignatureEventResult: ((serverSignerId, signatureCreationEventResult?, options?) => Promise<RequestArgs>);
      }

      • createServerSigner: ((createServerSignerRequest?, options?) => Promise<RequestArgs>)

        Create a new Server-Signer

        +

        Summary

        Create a new Server-Signer

        +

        Throws

      • getServerSigner: ((serverSignerId, options?) => Promise<RequestArgs>)

        Get a server signer by ID

        +

        Summary

        Get a server signer by ID

        +

        Throws

          • (serverSignerId, options?): Promise<RequestArgs>
          • Parameters

            • serverSignerId: string

              The ID of the server signer to fetch

              +
            • Optional options: RawAxiosRequestConfig = {}

              Override http request option.

              +

            Returns Promise<RequestArgs>

      • listServerSignerEvents: ((serverSignerId, limit?, page?, options?) => Promise<RequestArgs>)

        List events for a server signer

        +

        Summary

        List events for a server signer

        +

        Throws

          • (serverSignerId, limit?, page?, options?): Promise<RequestArgs>
          • Parameters

            • serverSignerId: string

              The ID of the server signer to fetch events for

              +
            • Optional limit: number

              A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

              +
            • Optional page: string

              A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

              +
            • Optional options: RawAxiosRequestConfig = {}

              Override http request option.

              +

            Returns Promise<RequestArgs>

      • listServerSigners: ((options?) => Promise<RequestArgs>)

        List server signers for the current project

        +

        Summary

        List server signers for the current project

        +

        Throws

          • (options?): Promise<RequestArgs>
          • Parameters

            • Optional options: RawAxiosRequestConfig = {}

              Override http request option.

              +

            Returns Promise<RequestArgs>

      • submitServerSignerSeedEventResult: ((serverSignerId, seedCreationEventResult?, options?) => Promise<RequestArgs>)

        Submit the result of a server signer event

        +

        Summary

        Submit the result of a server signer event

        +

        Throws

          • (serverSignerId, seedCreationEventResult?, options?): Promise<RequestArgs>
          • Parameters

            • serverSignerId: string

              The ID of the server signer to submit the event result for

              +
            • Optional seedCreationEventResult: SeedCreationEventResult
            • Optional options: RawAxiosRequestConfig = {}

              Override http request option.

              +

            Returns Promise<RequestArgs>

      • submitServerSignerSignatureEventResult: ((serverSignerId, signatureCreationEventResult?, options?) => Promise<RequestArgs>)

        Submit the result of a server signer event

        +

        Summary

        Submit the result of a server signer event

        +

        Throws

          • (serverSignerId, signatureCreationEventResult?, options?): Promise<RequestArgs>
          • Parameters

            • serverSignerId: string

              The ID of the server signer to submit the event result for

              +
            • Optional signatureCreationEventResult: SignatureCreationEventResult
            • Optional options: RawAxiosRequestConfig = {}

              Override http request option.

              +

            Returns Promise<RequestArgs>

      Export

    \ No newline at end of file diff --git a/docs/functions/client_api.ServerSignersApiFactory.html b/docs/functions/client_api.ServerSignersApiFactory.html new file mode 100644 index 00000000..811d219d --- /dev/null +++ b/docs/functions/client_api.ServerSignersApiFactory.html @@ -0,0 +1,26 @@ +ServerSignersApiFactory | @coinbase/coinbase-sdk
    • ServerSignersApi - factory interface

      +

      Parameters

      • Optional configuration: Configuration
      • Optional basePath: string
      • Optional axios: AxiosInstance

      Returns {
          createServerSigner(createServerSignerRequest?, options?): AxiosPromise<ServerSigner>;
          getServerSigner(serverSignerId, options?): AxiosPromise<ServerSigner>;
          listServerSignerEvents(serverSignerId, limit?, page?, options?): AxiosPromise<ServerSignerEventList>;
          listServerSigners(options?): AxiosPromise<ServerSigner>;
          submitServerSignerSeedEventResult(serverSignerId, seedCreationEventResult?, options?): AxiosPromise<SeedCreationEventResult>;
          submitServerSignerSignatureEventResult(serverSignerId, signatureCreationEventResult?, options?): AxiosPromise<SignatureCreationEventResult>;
      }

      • createServerSigner:function
      • getServerSigner:function
        • Get a server signer by ID

          +

          Parameters

          • serverSignerId: string

            The ID of the server signer to fetch

            +
          • Optional options: any

            Override http request option.

            +

          Returns AxiosPromise<ServerSigner>

          Summary

          Get a server signer by ID

          +

          Throws

      • listServerSignerEvents:function
        • List events for a server signer

          +

          Parameters

          • serverSignerId: string

            The ID of the server signer to fetch events for

            +
          • Optional limit: number

            A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

            +
          • Optional page: string

            A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

            +
          • Optional options: any

            Override http request option.

            +

          Returns AxiosPromise<ServerSignerEventList>

          Summary

          List events for a server signer

          +

          Throws

      • listServerSigners:function
        • List server signers for the current project

          +

          Parameters

          • Optional options: any

            Override http request option.

            +

          Returns AxiosPromise<ServerSigner>

          Summary

          List server signers for the current project

          +

          Throws

      • submitServerSignerSeedEventResult:function
        • Submit the result of a server signer event

          +

          Parameters

          • serverSignerId: string

            The ID of the server signer to submit the event result for

            +
          • Optional seedCreationEventResult: SeedCreationEventResult
          • Optional options: any

            Override http request option.

            +

          Returns AxiosPromise<SeedCreationEventResult>

          Summary

          Submit the result of a server signer event

          +

          Throws

      • submitServerSignerSignatureEventResult:function
        • Submit the result of a server signer event

          +

          Parameters

          • serverSignerId: string

            The ID of the server signer to submit the event result for

            +
          • Optional signatureCreationEventResult: SignatureCreationEventResult
          • Optional options: any

            Override http request option.

            +

          Returns AxiosPromise<SignatureCreationEventResult>

          Summary

          Submit the result of a server signer event

          +

          Throws

      Export

    \ No newline at end of file diff --git a/docs/functions/client_api.ServerSignersApiFp.html b/docs/functions/client_api.ServerSignersApiFp.html new file mode 100644 index 00000000..32c5fd22 --- /dev/null +++ b/docs/functions/client_api.ServerSignersApiFp.html @@ -0,0 +1,26 @@ +ServerSignersApiFp | @coinbase/coinbase-sdk
    • ServerSignersApi - functional programming interface

      +

      Parameters

      Returns {
          createServerSigner(createServerSignerRequest?, options?): Promise<((axios?, basePath?) => AxiosPromise<ServerSigner>)>;
          getServerSigner(serverSignerId, options?): Promise<((axios?, basePath?) => AxiosPromise<ServerSigner>)>;
          listServerSignerEvents(serverSignerId, limit?, page?, options?): Promise<((axios?, basePath?) => AxiosPromise<ServerSignerEventList>)>;
          listServerSigners(options?): Promise<((axios?, basePath?) => AxiosPromise<ServerSigner>)>;
          submitServerSignerSeedEventResult(serverSignerId, seedCreationEventResult?, options?): Promise<((axios?, basePath?) => AxiosPromise<SeedCreationEventResult>)>;
          submitServerSignerSignatureEventResult(serverSignerId, signatureCreationEventResult?, options?): Promise<((axios?, basePath?) => AxiosPromise<SignatureCreationEventResult>)>;
      }

      • createServerSigner:function
        • Create a new Server-Signer

          +

          Parameters

          • Optional createServerSignerRequest: CreateServerSignerRequest
          • Optional options: RawAxiosRequestConfig

            Override http request option.

            +

          Returns Promise<((axios?, basePath?) => AxiosPromise<ServerSigner>)>

          Summary

          Create a new Server-Signer

          +

          Throws

      • getServerSigner:function
        • Get a server signer by ID

          +

          Parameters

          • serverSignerId: string

            The ID of the server signer to fetch

            +
          • Optional options: RawAxiosRequestConfig

            Override http request option.

            +

          Returns Promise<((axios?, basePath?) => AxiosPromise<ServerSigner>)>

          Summary

          Get a server signer by ID

          +

          Throws

      • listServerSignerEvents:function
        • List events for a server signer

          +

          Parameters

          • serverSignerId: string

            The ID of the server signer to fetch events for

            +
          • Optional limit: number

            A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

            +
          • Optional page: string

            A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

            +
          • Optional options: RawAxiosRequestConfig

            Override http request option.

            +

          Returns Promise<((axios?, basePath?) => AxiosPromise<ServerSignerEventList>)>

          Summary

          List events for a server signer

          +

          Throws

      • listServerSigners:function
        • List server signers for the current project

          +

          Parameters

          • Optional options: RawAxiosRequestConfig

            Override http request option.

            +

          Returns Promise<((axios?, basePath?) => AxiosPromise<ServerSigner>)>

          Summary

          List server signers for the current project

          +

          Throws

      • submitServerSignerSeedEventResult:function
        • Submit the result of a server signer event

          +

          Parameters

          • serverSignerId: string

            The ID of the server signer to submit the event result for

            +
          • Optional seedCreationEventResult: SeedCreationEventResult
          • Optional options: RawAxiosRequestConfig

            Override http request option.

            +

          Returns Promise<((axios?, basePath?) => AxiosPromise<SeedCreationEventResult>)>

          Summary

          Submit the result of a server signer event

          +

          Throws

      • submitServerSignerSignatureEventResult:function
        • Submit the result of a server signer event

          +

          Parameters

          • serverSignerId: string

            The ID of the server signer to submit the event result for

            +
          • Optional signatureCreationEventResult: SignatureCreationEventResult
          • Optional options: RawAxiosRequestConfig

            Override http request option.

            +

          Returns Promise<((axios?, basePath?) => AxiosPromise<SignatureCreationEventResult>)>

          Summary

          Submit the result of a server signer event

          +

          Throws

      Export

    \ No newline at end of file diff --git a/docs/functions/client_api.TradesApiAxiosParamCreator.html b/docs/functions/client_api.TradesApiAxiosParamCreator.html new file mode 100644 index 00000000..1771e5b7 --- /dev/null +++ b/docs/functions/client_api.TradesApiAxiosParamCreator.html @@ -0,0 +1,26 @@ +TradesApiAxiosParamCreator | @coinbase/coinbase-sdk
    • TradesApi - axios parameter creator

      +

      Parameters

      Returns {
          broadcastTrade: ((walletId, addressId, tradeId, broadcastTradeRequest, options?) => Promise<RequestArgs>);
          createTrade: ((walletId, addressId, createTradeRequest, options?) => Promise<RequestArgs>);
          getTrade: ((walletId, addressId, tradeId, options?) => Promise<RequestArgs>);
          listTrades: ((walletId, addressId, limit?, page?, options?) => Promise<RequestArgs>);
      }

      • broadcastTrade: ((walletId, addressId, tradeId, broadcastTradeRequest, options?) => Promise<RequestArgs>)

        Broadcast a trade

        +

        Summary

        Broadcast a trade

        +

        Throws

          • (walletId, addressId, tradeId, broadcastTradeRequest, options?): Promise<RequestArgs>
          • Parameters

            • walletId: string

              The ID of the wallet the address belongs to

              +
            • addressId: string

              The ID of the address the trade belongs to

              +
            • tradeId: string

              The ID of the trade to broadcast

              +
            • broadcastTradeRequest: BroadcastTradeRequest
            • Optional options: RawAxiosRequestConfig = {}

              Override http request option.

              +

            Returns Promise<RequestArgs>

      • createTrade: ((walletId, addressId, createTradeRequest, options?) => Promise<RequestArgs>)

        Create a new trade

        +

        Summary

        Create a new trade for an address

        +

        Throws

          • (walletId, addressId, createTradeRequest, options?): Promise<RequestArgs>
          • Parameters

            • walletId: string

              The ID of the wallet the source address belongs to

              +
            • addressId: string

              The ID of the address to conduct the trade from

              +
            • createTradeRequest: CreateTradeRequest
            • Optional options: RawAxiosRequestConfig = {}

              Override http request option.

              +

            Returns Promise<RequestArgs>

      • getTrade: ((walletId, addressId, tradeId, options?) => Promise<RequestArgs>)

        Get a trade by ID

        +

        Summary

        Get a trade by ID

        +

        Throws

          • (walletId, addressId, tradeId, options?): Promise<RequestArgs>
          • Parameters

            • walletId: string

              The ID of the wallet the address belongs to

              +
            • addressId: string

              The ID of the address the trade belongs to

              +
            • tradeId: string

              The ID of the trade to fetch

              +
            • Optional options: RawAxiosRequestConfig = {}

              Override http request option.

              +

            Returns Promise<RequestArgs>

      • listTrades: ((walletId, addressId, limit?, page?, options?) => Promise<RequestArgs>)

        List trades for an address.

        +

        Summary

        List trades for an address.

        +

        Throws

          • (walletId, addressId, limit?, page?, options?): Promise<RequestArgs>
          • Parameters

            • walletId: string

              The ID of the wallet the address belongs to

              +
            • addressId: string

              The ID of the address to list trades for

              +
            • Optional limit: number

              A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

              +
            • Optional page: string

              A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

              +
            • Optional options: RawAxiosRequestConfig = {}

              Override http request option.

              +

            Returns Promise<RequestArgs>

      Export

    \ No newline at end of file diff --git a/docs/functions/client_api.TradesApiFactory.html b/docs/functions/client_api.TradesApiFactory.html new file mode 100644 index 00000000..182e25fd --- /dev/null +++ b/docs/functions/client_api.TradesApiFactory.html @@ -0,0 +1,26 @@ +TradesApiFactory | @coinbase/coinbase-sdk
    • TradesApi - factory interface

      +

      Parameters

      • Optional configuration: Configuration
      • Optional basePath: string
      • Optional axios: AxiosInstance

      Returns {
          broadcastTrade(walletId, addressId, tradeId, broadcastTradeRequest, options?): AxiosPromise<Trade>;
          createTrade(walletId, addressId, createTradeRequest, options?): AxiosPromise<Trade>;
          getTrade(walletId, addressId, tradeId, options?): AxiosPromise<Trade>;
          listTrades(walletId, addressId, limit?, page?, options?): AxiosPromise<TradeList>;
      }

      • broadcastTrade:function
        • Broadcast a trade

          +

          Parameters

          • walletId: string

            The ID of the wallet the address belongs to

            +
          • addressId: string

            The ID of the address the trade belongs to

            +
          • tradeId: string

            The ID of the trade to broadcast

            +
          • broadcastTradeRequest: BroadcastTradeRequest
          • Optional options: any

            Override http request option.

            +

          Returns AxiosPromise<Trade>

          Summary

          Broadcast a trade

          +

          Throws

      • createTrade:function
        • Create a new trade

          +

          Parameters

          • walletId: string

            The ID of the wallet the source address belongs to

            +
          • addressId: string

            The ID of the address to conduct the trade from

            +
          • createTradeRequest: CreateTradeRequest
          • Optional options: any

            Override http request option.

            +

          Returns AxiosPromise<Trade>

          Summary

          Create a new trade for an address

          +

          Throws

      • getTrade:function
        • Get a trade by ID

          +

          Parameters

          • walletId: string

            The ID of the wallet the address belongs to

            +
          • addressId: string

            The ID of the address the trade belongs to

            +
          • tradeId: string

            The ID of the trade to fetch

            +
          • Optional options: any

            Override http request option.

            +

          Returns AxiosPromise<Trade>

          Summary

          Get a trade by ID

          +

          Throws

      • listTrades:function
        • List trades for an address.

          +

          Parameters

          • walletId: string

            The ID of the wallet the address belongs to

            +
          • addressId: string

            The ID of the address to list trades for

            +
          • Optional limit: number

            A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

            +
          • Optional page: string

            A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

            +
          • Optional options: any

            Override http request option.

            +

          Returns AxiosPromise<TradeList>

          Summary

          List trades for an address.

          +

          Throws

      Export

    \ No newline at end of file diff --git a/docs/functions/client_api.TradesApiFp.html b/docs/functions/client_api.TradesApiFp.html new file mode 100644 index 00000000..5f4fa7fa --- /dev/null +++ b/docs/functions/client_api.TradesApiFp.html @@ -0,0 +1,26 @@ +TradesApiFp | @coinbase/coinbase-sdk
    • TradesApi - functional programming interface

      +

      Parameters

      Returns {
          broadcastTrade(walletId, addressId, tradeId, broadcastTradeRequest, options?): Promise<((axios?, basePath?) => AxiosPromise<Trade>)>;
          createTrade(walletId, addressId, createTradeRequest, options?): Promise<((axios?, basePath?) => AxiosPromise<Trade>)>;
          getTrade(walletId, addressId, tradeId, options?): Promise<((axios?, basePath?) => AxiosPromise<Trade>)>;
          listTrades(walletId, addressId, limit?, page?, options?): Promise<((axios?, basePath?) => AxiosPromise<TradeList>)>;
      }

      • broadcastTrade:function
        • Broadcast a trade

          +

          Parameters

          • walletId: string

            The ID of the wallet the address belongs to

            +
          • addressId: string

            The ID of the address the trade belongs to

            +
          • tradeId: string

            The ID of the trade to broadcast

            +
          • broadcastTradeRequest: BroadcastTradeRequest
          • Optional options: RawAxiosRequestConfig

            Override http request option.

            +

          Returns Promise<((axios?, basePath?) => AxiosPromise<Trade>)>

          Summary

          Broadcast a trade

          +

          Throws

      • createTrade:function
        • Create a new trade

          +

          Parameters

          • walletId: string

            The ID of the wallet the source address belongs to

            +
          • addressId: string

            The ID of the address to conduct the trade from

            +
          • createTradeRequest: CreateTradeRequest
          • Optional options: RawAxiosRequestConfig

            Override http request option.

            +

          Returns Promise<((axios?, basePath?) => AxiosPromise<Trade>)>

          Summary

          Create a new trade for an address

          +

          Throws

      • getTrade:function
        • Get a trade by ID

          +

          Parameters

          • walletId: string

            The ID of the wallet the address belongs to

            +
          • addressId: string

            The ID of the address the trade belongs to

            +
          • tradeId: string

            The ID of the trade to fetch

            +
          • Optional options: RawAxiosRequestConfig

            Override http request option.

            +

          Returns Promise<((axios?, basePath?) => AxiosPromise<Trade>)>

          Summary

          Get a trade by ID

          +

          Throws

      • listTrades:function
        • List trades for an address.

          +

          Parameters

          • walletId: string

            The ID of the wallet the address belongs to

            +
          • addressId: string

            The ID of the address to list trades for

            +
          • Optional limit: number

            A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

            +
          • Optional page: string

            A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

            +
          • Optional options: RawAxiosRequestConfig

            Override http request option.

            +

          Returns Promise<((axios?, basePath?) => AxiosPromise<TradeList>)>

          Summary

          List trades for an address.

          +

          Throws

      Export

    \ No newline at end of file diff --git a/docs/functions/client_api.TransfersApiAxiosParamCreator.html b/docs/functions/client_api.TransfersApiAxiosParamCreator.html index 093e19aa..d206305f 100644 --- a/docs/functions/client_api.TransfersApiAxiosParamCreator.html +++ b/docs/functions/client_api.TransfersApiAxiosParamCreator.html @@ -23,4 +23,4 @@

    Throws

    Returns Promise<RequestArgs>

    Export

    \ No newline at end of file +

    Returns Promise<RequestArgs>

    Export

    \ No newline at end of file diff --git a/docs/functions/client_api.TransfersApiFactory.html b/docs/functions/client_api.TransfersApiFactory.html index fac73a09..76e1eed3 100644 --- a/docs/functions/client_api.TransfersApiFactory.html +++ b/docs/functions/client_api.TransfersApiFactory.html @@ -5,22 +5,22 @@
  • transferId: string

    The ID of the transfer to broadcast

  • broadcastTransferRequest: BroadcastTransferRequest
  • Optional options: any

    Override http request option.

  • Returns AxiosPromise<Transfer>

    Summary

    Broadcast a transfer

    -

    Throws

  • createTransfer:function
  • createTransfer:function
  • getTransfer:function
  • getTransfer:function
  • listTransfers:function
  • listTransfers:function
  • Export

    \ No newline at end of file +

    Throws

    Export

    \ No newline at end of file diff --git a/docs/functions/client_api.TransfersApiFp.html b/docs/functions/client_api.TransfersApiFp.html index 7ec8d5b7..225f018b 100644 --- a/docs/functions/client_api.TransfersApiFp.html +++ b/docs/functions/client_api.TransfersApiFp.html @@ -5,22 +5,22 @@
  • transferId: string

    The ID of the transfer to broadcast

  • broadcastTransferRequest: BroadcastTransferRequest
  • Optional options: RawAxiosRequestConfig

    Override http request option.

  • Returns Promise<((axios?, basePath?) => AxiosPromise<Transfer>)>

    Summary

    Broadcast a transfer

    -

    Throws

  • createTransfer:function
  • createTransfer:function
  • getTransfer:function
  • getTransfer:function
  • listTransfers:function
  • listTransfers:function
  • Export

    \ No newline at end of file +

    Throws

    Export

    \ No newline at end of file diff --git a/docs/functions/client_api.UsersApiAxiosParamCreator.html b/docs/functions/client_api.UsersApiAxiosParamCreator.html index cb9101dd..9cca0020 100644 --- a/docs/functions/client_api.UsersApiAxiosParamCreator.html +++ b/docs/functions/client_api.UsersApiAxiosParamCreator.html @@ -2,4 +2,4 @@

    Parameters

    Returns {
        getCurrentUser: ((options?) => Promise<RequestArgs>);
    }

    Export

    \ No newline at end of file +

    Returns Promise<RequestArgs>

    Export

    \ No newline at end of file diff --git a/docs/functions/client_api.UsersApiFactory.html b/docs/functions/client_api.UsersApiFactory.html index 570bfa3a..6a92ca1c 100644 --- a/docs/functions/client_api.UsersApiFactory.html +++ b/docs/functions/client_api.UsersApiFactory.html @@ -2,4 +2,4 @@

    Parameters

    Returns {
        getCurrentUser(options?): AxiosPromise<User>;
    }

    Export

    \ No newline at end of file +

    Throws

    Export

    \ No newline at end of file diff --git a/docs/functions/client_api.UsersApiFp.html b/docs/functions/client_api.UsersApiFp.html index f3844996..7a8583fa 100644 --- a/docs/functions/client_api.UsersApiFp.html +++ b/docs/functions/client_api.UsersApiFp.html @@ -2,4 +2,4 @@

    Parameters

    Returns {
        getCurrentUser(options?): Promise<((axios?, basePath?) => AxiosPromise<User>)>;
    }

    Export

    \ No newline at end of file +

    Throws

    Export

    \ No newline at end of file diff --git a/docs/functions/client_api.WalletsApiAxiosParamCreator.html b/docs/functions/client_api.WalletsApiAxiosParamCreator.html index 1ccb8cfc..bfd7742e 100644 --- a/docs/functions/client_api.WalletsApiAxiosParamCreator.html +++ b/docs/functions/client_api.WalletsApiAxiosParamCreator.html @@ -20,4 +20,4 @@

    Throws

    Export

    \ No newline at end of file +

    Returns Promise<RequestArgs>

    Export

    \ No newline at end of file diff --git a/docs/functions/client_api.WalletsApiFactory.html b/docs/functions/client_api.WalletsApiFactory.html index ba1aa92a..fce9b3a5 100644 --- a/docs/functions/client_api.WalletsApiFactory.html +++ b/docs/functions/client_api.WalletsApiFactory.html @@ -2,22 +2,22 @@

    Parameters

    Returns {
        createWallet(createWalletRequest?, options?): AxiosPromise<Wallet>;
        getWallet(walletId, options?): AxiosPromise<Wallet>;
        getWalletBalance(walletId, assetId, options?): AxiosPromise<Balance>;
        listWalletBalances(walletId, options?): AxiosPromise<AddressBalanceList>;
        listWallets(limit?, page?, options?): AxiosPromise<WalletList>;
    }

    Export

    \ No newline at end of file +

    Throws

    Export

    \ No newline at end of file diff --git a/docs/functions/client_api.WalletsApiFp.html b/docs/functions/client_api.WalletsApiFp.html index b10d1b85..aafaaebb 100644 --- a/docs/functions/client_api.WalletsApiFp.html +++ b/docs/functions/client_api.WalletsApiFp.html @@ -2,22 +2,22 @@

    Parameters

    Returns {
        createWallet(createWalletRequest?, options?): Promise<((axios?, basePath?) => AxiosPromise<Wallet>)>;
        getWallet(walletId, options?): Promise<((axios?, basePath?) => AxiosPromise<Wallet>)>;
        getWalletBalance(walletId, assetId, options?): Promise<((axios?, basePath?) => AxiosPromise<Balance>)>;
        listWalletBalances(walletId, options?): Promise<((axios?, basePath?) => AxiosPromise<AddressBalanceList>)>;
        listWallets(limit?, page?, options?): Promise<((axios?, basePath?) => AxiosPromise<WalletList>)>;
    }

    Export

    \ No newline at end of file +

    Throws

    Export

    \ No newline at end of file diff --git a/docs/functions/client_common.assertParamExists.html b/docs/functions/client_common.assertParamExists.html index 64b95411..bbfe88b7 100644 --- a/docs/functions/client_common.assertParamExists.html +++ b/docs/functions/client_common.assertParamExists.html @@ -1 +1 @@ -assertParamExists | @coinbase/coinbase-sdk
    • Parameters

      • functionName: string
      • paramName: string
      • paramValue: unknown

      Returns void

      Throws

      Export

    \ No newline at end of file +assertParamExists | @coinbase/coinbase-sdk
    • Parameters

      • functionName: string
      • paramName: string
      • paramValue: unknown

      Returns void

      Throws

      Export

    \ No newline at end of file diff --git a/docs/functions/client_common.createRequestFunction.html b/docs/functions/client_common.createRequestFunction.html index 7c1091a7..3b4ad892 100644 --- a/docs/functions/client_common.createRequestFunction.html +++ b/docs/functions/client_common.createRequestFunction.html @@ -1 +1 @@ -createRequestFunction | @coinbase/coinbase-sdk
    • Parameters

      Returns (<T, R>(axios?, basePath?) => Promise<R>)

        • <T, R>(axios?, basePath?): Promise<R>
        • Type Parameters

          • T = unknown
          • R = AxiosResponse<T, any>

          Parameters

          • axios: AxiosInstance = globalAxios
          • basePath: string = BASE_PATH

          Returns Promise<R>

      Export

    \ No newline at end of file +createRequestFunction | @coinbase/coinbase-sdk
    • Parameters

      Returns (<T, R>(axios?, basePath?) => Promise<R>)

        • <T, R>(axios?, basePath?): Promise<R>
        • Type Parameters

          • T = unknown
          • R = AxiosResponse<T, any>

          Parameters

          • axios: AxiosInstance = globalAxios
          • basePath: string = BASE_PATH

          Returns Promise<R>

      Export

    \ No newline at end of file diff --git a/docs/functions/client_common.serializeDataIfNeeded.html b/docs/functions/client_common.serializeDataIfNeeded.html index 31b43037..e26b6304 100644 --- a/docs/functions/client_common.serializeDataIfNeeded.html +++ b/docs/functions/client_common.serializeDataIfNeeded.html @@ -1 +1 @@ -serializeDataIfNeeded | @coinbase/coinbase-sdk
    • Parameters

      • value: any
      • requestOptions: any
      • Optional configuration: Configuration

      Returns any

      Export

    \ No newline at end of file +serializeDataIfNeeded | @coinbase/coinbase-sdk
    • Parameters

      • value: any
      • requestOptions: any
      • Optional configuration: Configuration

      Returns any

      Export

    \ No newline at end of file diff --git a/docs/functions/client_common.setApiKeyToObject.html b/docs/functions/client_common.setApiKeyToObject.html index 4e7dfc5e..a813cfea 100644 --- a/docs/functions/client_common.setApiKeyToObject.html +++ b/docs/functions/client_common.setApiKeyToObject.html @@ -1 +1 @@ -setApiKeyToObject | @coinbase/coinbase-sdk
    • Parameters

      • object: any
      • keyParamName: string
      • Optional configuration: Configuration

      Returns Promise<void>

      Export

    \ No newline at end of file +setApiKeyToObject | @coinbase/coinbase-sdk
    • Parameters

      • object: any
      • keyParamName: string
      • Optional configuration: Configuration

      Returns Promise<void>

      Export

    \ No newline at end of file diff --git a/docs/functions/client_common.setBasicAuthToObject.html b/docs/functions/client_common.setBasicAuthToObject.html index 40eda4fb..f24c8515 100644 --- a/docs/functions/client_common.setBasicAuthToObject.html +++ b/docs/functions/client_common.setBasicAuthToObject.html @@ -1 +1 @@ -setBasicAuthToObject | @coinbase/coinbase-sdk
    \ No newline at end of file +setBasicAuthToObject | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/functions/client_common.setBearerAuthToObject.html b/docs/functions/client_common.setBearerAuthToObject.html index e3caddaf..954b971c 100644 --- a/docs/functions/client_common.setBearerAuthToObject.html +++ b/docs/functions/client_common.setBearerAuthToObject.html @@ -1 +1 @@ -setBearerAuthToObject | @coinbase/coinbase-sdk
    \ No newline at end of file +setBearerAuthToObject | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/functions/client_common.setOAuthToObject.html b/docs/functions/client_common.setOAuthToObject.html index de984d58..d96f2e3f 100644 --- a/docs/functions/client_common.setOAuthToObject.html +++ b/docs/functions/client_common.setOAuthToObject.html @@ -1 +1 @@ -setOAuthToObject | @coinbase/coinbase-sdk
    • Parameters

      • object: any
      • name: string
      • scopes: string[]
      • Optional configuration: Configuration

      Returns Promise<void>

      Export

    \ No newline at end of file +setOAuthToObject | @coinbase/coinbase-sdk
    • Parameters

      • object: any
      • name: string
      • scopes: string[]
      • Optional configuration: Configuration

      Returns Promise<void>

      Export

    \ No newline at end of file diff --git a/docs/functions/client_common.setSearchParams.html b/docs/functions/client_common.setSearchParams.html index 4195b039..e6d2032a 100644 --- a/docs/functions/client_common.setSearchParams.html +++ b/docs/functions/client_common.setSearchParams.html @@ -1 +1 @@ -setSearchParams | @coinbase/coinbase-sdk
    • Parameters

      • url: URL
      • Rest ...objects: any[]

      Returns void

      Export

    \ No newline at end of file +setSearchParams | @coinbase/coinbase-sdk
    • Parameters

      • url: URL
      • Rest ...objects: any[]

      Returns void

      Export

    \ No newline at end of file diff --git a/docs/functions/client_common.toPathString.html b/docs/functions/client_common.toPathString.html index ae41e657..3bda93fc 100644 --- a/docs/functions/client_common.toPathString.html +++ b/docs/functions/client_common.toPathString.html @@ -1 +1 @@ -toPathString | @coinbase/coinbase-sdk
    \ No newline at end of file +toPathString | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/functions/coinbase_tests_utils.createAxiosMock.html b/docs/functions/coinbase_tests_utils.createAxiosMock.html index e3df6f97..9dc32717 100644 --- a/docs/functions/coinbase_tests_utils.createAxiosMock.html +++ b/docs/functions/coinbase_tests_utils.createAxiosMock.html @@ -1,3 +1,3 @@ createAxiosMock | @coinbase/coinbase-sdk
    • Returns an Axios instance with interceptors and configuration for testing.

      Returns AxiosMockType

      The Axios instance, configuration, and base path.

      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/coinbase_tests_utils.generateRandomHash.html b/docs/functions/coinbase_tests_utils.generateRandomHash.html index c7e9b623..d90b61eb 100644 --- a/docs/functions/coinbase_tests_utils.generateRandomHash.html +++ b/docs/functions/coinbase_tests_utils.generateRandomHash.html @@ -1 +1 @@ -generateRandomHash | @coinbase/coinbase-sdk
    \ No newline at end of file +generateRandomHash | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/functions/coinbase_tests_utils.generateWalletFromSeed.html b/docs/functions/coinbase_tests_utils.generateWalletFromSeed.html index eea014e3..6e05ea42 100644 --- a/docs/functions/coinbase_tests_utils.generateWalletFromSeed.html +++ b/docs/functions/coinbase_tests_utils.generateWalletFromSeed.html @@ -1 +1 @@ -generateWalletFromSeed | @coinbase/coinbase-sdk
    • Parameters

      • seed: string
      • count: number = 2

      Returns Record<string, string>

    \ No newline at end of file +generateWalletFromSeed | @coinbase/coinbase-sdk
    • Parameters

      • seed: string
      • count: number = 2

      Returns Record<string, string>

    \ No newline at end of file diff --git a/docs/functions/coinbase_tests_utils.getAddressFromHDKey.html b/docs/functions/coinbase_tests_utils.getAddressFromHDKey.html index 31e4e229..cf294de5 100644 --- a/docs/functions/coinbase_tests_utils.getAddressFromHDKey.html +++ b/docs/functions/coinbase_tests_utils.getAddressFromHDKey.html @@ -1 +1 @@ -getAddressFromHDKey | @coinbase/coinbase-sdk
    \ No newline at end of file +getAddressFromHDKey | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/functions/coinbase_tests_utils.mockFn.html b/docs/functions/coinbase_tests_utils.mockFn.html index eefca92a..fef1fd80 100644 --- a/docs/functions/coinbase_tests_utils.mockFn.html +++ b/docs/functions/coinbase_tests_utils.mockFn.html @@ -1 +1 @@ -mockFn | @coinbase/coinbase-sdk
    \ No newline at end of file +mockFn | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/functions/coinbase_tests_utils.mockReturnRejectedValue.html b/docs/functions/coinbase_tests_utils.mockReturnRejectedValue.html index b4d03e7b..67236fe0 100644 --- a/docs/functions/coinbase_tests_utils.mockReturnRejectedValue.html +++ b/docs/functions/coinbase_tests_utils.mockReturnRejectedValue.html @@ -1 +1 @@ -mockReturnRejectedValue | @coinbase/coinbase-sdk
    \ No newline at end of file +mockReturnRejectedValue | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/functions/coinbase_tests_utils.mockReturnValue.html b/docs/functions/coinbase_tests_utils.mockReturnValue.html index 0b7f9896..7be893f7 100644 --- a/docs/functions/coinbase_tests_utils.mockReturnValue.html +++ b/docs/functions/coinbase_tests_utils.mockReturnValue.html @@ -1 +1 @@ -mockReturnValue | @coinbase/coinbase-sdk
    \ No newline at end of file +mockReturnValue | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/functions/coinbase_tests_utils.newAddressModel.html b/docs/functions/coinbase_tests_utils.newAddressModel.html index 87db073c..74e32c80 100644 --- a/docs/functions/coinbase_tests_utils.newAddressModel.html +++ b/docs/functions/coinbase_tests_utils.newAddressModel.html @@ -1 +1 @@ -newAddressModel | @coinbase/coinbase-sdk
    \ No newline at end of file +newAddressModel | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/functions/coinbase_utils.convertStringToHex.html b/docs/functions/coinbase_utils.convertStringToHex.html index 9601bb36..58e9fb53 100644 --- a/docs/functions/coinbase_utils.convertStringToHex.html +++ b/docs/functions/coinbase_utils.convertStringToHex.html @@ -1,4 +1,4 @@ convertStringToHex | @coinbase/coinbase-sdk
    • Converts a Uint8Array to a hex string.

      Parameters

      • key: Uint8Array

        The key to convert.

      Returns string

      The converted hex string.

      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/coinbase_utils.delay.html b/docs/functions/coinbase_utils.delay.html index 69071412..2f9a511b 100644 --- a/docs/functions/coinbase_utils.delay.html +++ b/docs/functions/coinbase_utils.delay.html @@ -1,4 +1,4 @@ delay | @coinbase/coinbase-sdk
    • Delays the execution of the function by the specified number of seconds.

      Parameters

      • seconds: number

        The number of seconds to delay the execution.

      Returns Promise<void>

      A promise that resolves after the specified number of seconds.

      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/coinbase_utils.destinationToAddressHexString.html b/docs/functions/coinbase_utils.destinationToAddressHexString.html index 3fa112a5..df913a8a 100644 --- a/docs/functions/coinbase_utils.destinationToAddressHexString.html +++ b/docs/functions/coinbase_utils.destinationToAddressHexString.html @@ -2,4 +2,4 @@

    Parameters

    Returns string

    The Address Hex string.

    Throws

    If the Destination is an unsupported type.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/coinbase_utils.logApiResponse.html b/docs/functions/coinbase_utils.logApiResponse.html index 03e9d358..65ca4a13 100644 --- a/docs/functions/coinbase_utils.logApiResponse.html +++ b/docs/functions/coinbase_utils.logApiResponse.html @@ -2,4 +2,4 @@

    Parameters

    Returns AxiosResponse<any, any>

    The Axios response object.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/coinbase_utils.registerAxiosInterceptors.html b/docs/functions/coinbase_utils.registerAxiosInterceptors.html index efe75399..bb228027 100644 --- a/docs/functions/coinbase_utils.registerAxiosInterceptors.html +++ b/docs/functions/coinbase_utils.registerAxiosInterceptors.html @@ -2,4 +2,4 @@

    Parameters

    Returns void

    \ No newline at end of file +

    Returns void

    \ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 90dac2ac..245d7c98 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1 +1 @@ -@coinbase/coinbase-sdk

    @coinbase/coinbase-sdk

    Class Hierarchy

    \ No newline at end of file +@coinbase/coinbase-sdk

    @coinbase/coinbase-sdk

    Class Hierarchy

    \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 87c67523..7ab38900 100644 --- a/docs/index.html +++ b/docs/index.html @@ -21,10 +21,13 @@
  • Node.js 18 or higher
  • Usage

    Initialization

    To start, create a CDP API Key. Then, initialize the Platform SDK by passing your API Key name and API Key's private key via the Coinbase constructor:

    -
    const apiKeyName = "Copy your API Key name here.";

    const apiKeyPrivateKey = "Copy your API Key's private key here.";

    const coinbase = new Coinbase(apiKeyName, apiKeyPrivateKey); +
    const apiKeyName = "Copy your API Key name here.";

    const privatekey = "Copy your API Key's private key here.";

    const coinbase = new Coinbase({ apiKeyName: apiKeyName, privateKey: privateKey }); +
    +

    If you are using a CDP Server-Signer to manage your private keys, enable it with the constuctor option:

    +
    const coinbase = new Coinbase({ apiKeyName: apiKeyName, privateKey: apiKeyPrivateKey, useServerSigner: true })
     

    Another way to initialize the SDK is by sourcing the API key from the json file that contains your API key, downloaded from CDP portal.

    -
    const coinbase = Coinbase.configureFromJson("path/to/your/api-key.json");
    +
    const coinbase = Coinbase.configureFromJson({ filePath: "path/to/your/api-key.json" });
     

    This will allow you to authenticate with the Platform APIs and get access to the default User.

    const user = await coinbase.getDefaultUser();
    diff --git a/docs/interfaces/client_api.Address.html b/docs/interfaces/client_api.Address.html
    index afa9b53a..ca5ed951 100644
    --- a/docs/interfaces/client_api.Address.html
    +++ b/docs/interfaces/client_api.Address.html
    @@ -1,14 +1,14 @@
     Address | @coinbase/coinbase-sdk

    Export

    Address

    -
    interface Address {
        address_id: string;
        network_id: string;
        public_key: string;
        wallet_id: string;
    }

    Properties

    interface Address {
        address_id: string;
        network_id: string;
        public_key: string;
        wallet_id: string;
    }

    Properties

    address_id: string

    The onchain address derived on the server-side.

    Memberof

    Address

    -
    network_id: string

    The ID of the blockchain network

    +
    network_id: string

    The ID of the blockchain network

    Memberof

    Address

    -
    public_key: string

    The public key from which the address is derived.

    +
    public_key: string

    The public key from which the address is derived.

    Memberof

    Address

    -
    wallet_id: string

    The ID of the wallet that owns the address

    +
    wallet_id: string

    The ID of the wallet that owns the address

    Memberof

    Address

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.AddressBalanceList.html b/docs/interfaces/client_api.AddressBalanceList.html index b57810dd..d9982a47 100644 --- a/docs/interfaces/client_api.AddressBalanceList.html +++ b/docs/interfaces/client_api.AddressBalanceList.html @@ -1,13 +1,13 @@ AddressBalanceList | @coinbase/coinbase-sdk

    Export

    AddressBalanceList

    -
    interface AddressBalanceList {
        data: Balance[];
        has_more: boolean;
        next_page: string;
        total_count: number;
    }

    Properties

    interface AddressBalanceList {
        data: Balance[];
        has_more: boolean;
        next_page: string;
        total_count: number;
    }

    Properties

    data: Balance[]

    Memberof

    AddressBalanceList

    -
    has_more: boolean

    True if this list has another page of items after this one that can be fetched.

    +
    has_more: boolean

    True if this list has another page of items after this one that can be fetched.

    Memberof

    AddressBalanceList

    -
    next_page: string

    The page token to be used to fetch the next page.

    +
    next_page: string

    The page token to be used to fetch the next page.

    Memberof

    AddressBalanceList

    -
    total_count: number

    The total number of balances for the wallet.

    +
    total_count: number

    The total number of balances for the wallet.

    Memberof

    AddressBalanceList

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.AddressList.html b/docs/interfaces/client_api.AddressList.html index 8a3ab0b9..899f4607 100644 --- a/docs/interfaces/client_api.AddressList.html +++ b/docs/interfaces/client_api.AddressList.html @@ -1,13 +1,13 @@ AddressList | @coinbase/coinbase-sdk

    Export

    AddressList

    -
    interface AddressList {
        data: Address[];
        has_more: boolean;
        next_page: string;
        total_count: number;
    }

    Properties

    interface AddressList {
        data: Address[];
        has_more: boolean;
        next_page: string;
        total_count: number;
    }

    Properties

    data: Address[]

    Memberof

    AddressList

    -
    has_more: boolean

    True if this list has another page of items after this one that can be fetched.

    +
    has_more: boolean

    True if this list has another page of items after this one that can be fetched.

    Memberof

    AddressList

    -
    next_page: string

    The page token to be used to fetch the next page.

    +
    next_page: string

    The page token to be used to fetch the next page.

    Memberof

    AddressList

    -
    total_count: number

    The total number of addresses for the wallet.

    +
    total_count: number

    The total number of addresses for the wallet.

    Memberof

    AddressList

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.AddressesApiInterface.html b/docs/interfaces/client_api.AddressesApiInterface.html new file mode 100644 index 00000000..b3863b35 --- /dev/null +++ b/docs/interfaces/client_api.AddressesApiInterface.html @@ -0,0 +1,47 @@ +AddressesApiInterface | @coinbase/coinbase-sdk

    AddressesApi - interface

    +

    Export

    AddressesApi

    +
    interface AddressesApiInterface {
        createAddress(walletId, createAddressRequest?, options?): AxiosPromise<Address>;
        getAddress(walletId, addressId, options?): AxiosPromise<Address>;
        getAddressBalance(walletId, addressId, assetId, options?): AxiosPromise<Balance>;
        listAddressBalances(walletId, addressId, page?, options?): AxiosPromise<AddressBalanceList>;
        listAddresses(walletId, limit?, page?, options?): AxiosPromise<AddressList>;
        requestFaucetFunds(walletId, addressId, options?): AxiosPromise<FaucetTransaction>;
    }

    Implemented by

    Methods

    • Create a new address scoped to the wallet.

      +

      Parameters

      • walletId: string

        The ID of the wallet to create the address in.

        +
      • Optional createAddressRequest: CreateAddressRequest
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<Address>

      Summary

      Create a new address

      +

      Throws

      Memberof

      AddressesApiInterface

      +
    • Get address

      +

      Parameters

      • walletId: string

        The ID of the wallet the address belongs to.

        +
      • addressId: string

        The onchain address of the address that is being fetched.

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<Address>

      Summary

      Get address by onchain address

      +

      Throws

      Memberof

      AddressesApiInterface

      +
    • Get address balance

      +

      Parameters

      • walletId: string

        The ID of the wallet to fetch the balance for

        +
      • addressId: string

        The onchain address of the address that is being fetched.

        +
      • assetId: string

        The symbol of the asset to fetch the balance for

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<Balance>

      Summary

      Get address balance for asset

      +

      Throws

      Memberof

      AddressesApiInterface

      +
    • Get address balances

      +

      Parameters

      • walletId: string

        The ID of the wallet to fetch the balances for

        +
      • addressId: string

        The onchain address of the address that is being fetched.

        +
      • Optional page: string

        A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<AddressBalanceList>

      Summary

      Get all balances for address

      +

      Throws

      Memberof

      AddressesApiInterface

      +
    • List addresses in the wallet.

      +

      Parameters

      • walletId: string

        The ID of the wallet whose addresses to fetch

        +
      • Optional limit: number

        A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

        +
      • Optional page: string

        A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<AddressList>

      Summary

      List addresses in a wallet.

      +

      Throws

      Memberof

      AddressesApiInterface

      +
    • Request faucet funds to be sent to onchain address.

      +

      Parameters

      • walletId: string

        The ID of the wallet the address belongs to.

        +
      • addressId: string

        The onchain address of the address that is being fetched.

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<FaucetTransaction>

      Summary

      Request faucet funds for onchain address.

      +

      Throws

      Memberof

      AddressesApiInterface

      +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.Asset.html b/docs/interfaces/client_api.Asset.html index 5a364985..e6f32658 100644 --- a/docs/interfaces/client_api.Asset.html +++ b/docs/interfaces/client_api.Asset.html @@ -1,15 +1,15 @@ Asset | @coinbase/coinbase-sdk

    An asset onchain scoped to a particular network, e.g. ETH on base-sepolia, or the USDC ERC20 Token on ethereum-mainnet.

    Export

    Asset

    -
    interface Asset {
        asset_id: string;
        contract_address?: string;
        decimals?: number;
        network_id: string;
    }

    Properties

    interface Asset {
        asset_id: string;
        contract_address?: string;
        decimals?: number;
        network_id: string;
    }

    Properties

    asset_id: string

    The ID for the asset on the network

    Memberof

    Asset

    -
    contract_address?: string

    The optional contract address for the asset. This will be specified for smart contract-based assets, for example ERC20s.

    +
    contract_address?: string

    The optional contract address for the asset. This will be specified for smart contract-based assets, for example ERC20s.

    Memberof

    Asset

    -
    decimals?: number

    The number of decimals the asset supports. This is used to convert from atomic units to base units.

    +
    decimals?: number

    The number of decimals the asset supports. This is used to convert from atomic units to base units.

    Memberof

    Asset

    -
    network_id: string

    The ID of the blockchain network

    +
    network_id: string

    The ID of the blockchain network

    Memberof

    Asset

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.Balance.html b/docs/interfaces/client_api.Balance.html index eb403b72..aaadaa6e 100644 --- a/docs/interfaces/client_api.Balance.html +++ b/docs/interfaces/client_api.Balance.html @@ -1,8 +1,8 @@ Balance | @coinbase/coinbase-sdk

    The balance of an asset onchain

    Export

    Balance

    -
    interface Balance {
        amount: string;
        asset: Asset;
    }

    Properties

    interface Balance {
        amount: string;
        asset: Asset;
    }

    Properties

    Properties

    amount: string

    The amount in the atomic units of the asset

    Memberof

    Balance

    -
    asset: Asset

    Memberof

    Balance

    -
    \ No newline at end of file +
    asset: Asset

    Memberof

    Balance

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.BroadcastTradeRequest.html b/docs/interfaces/client_api.BroadcastTradeRequest.html new file mode 100644 index 00000000..4847708d --- /dev/null +++ b/docs/interfaces/client_api.BroadcastTradeRequest.html @@ -0,0 +1,5 @@ +BroadcastTradeRequest | @coinbase/coinbase-sdk

    Export

    BroadcastTradeRequest

    +
    interface BroadcastTradeRequest {
        signed_payload: string;
    }

    Properties

    Properties

    signed_payload: string

    The hex-encoded signed payload of the trade

    +

    Memberof

    BroadcastTradeRequest

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.BroadcastTransferRequest.html b/docs/interfaces/client_api.BroadcastTransferRequest.html index fab1adf4..f6ce14e3 100644 --- a/docs/interfaces/client_api.BroadcastTransferRequest.html +++ b/docs/interfaces/client_api.BroadcastTransferRequest.html @@ -1,5 +1,5 @@ BroadcastTransferRequest | @coinbase/coinbase-sdk

    Export

    BroadcastTransferRequest

    -
    interface BroadcastTransferRequest {
        signed_payload: string;
    }

    Properties

    interface BroadcastTransferRequest {
        signed_payload: string;
    }

    Properties

    Properties

    signed_payload: string

    The hex-encoded signed payload of the transfer

    Memberof

    BroadcastTransferRequest

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.CreateAddressRequest.html b/docs/interfaces/client_api.CreateAddressRequest.html index 75bdb213..f4364d2c 100644 --- a/docs/interfaces/client_api.CreateAddressRequest.html +++ b/docs/interfaces/client_api.CreateAddressRequest.html @@ -1,8 +1,8 @@ CreateAddressRequest | @coinbase/coinbase-sdk

    Export

    CreateAddressRequest

    -
    interface CreateAddressRequest {
        attestation: string;
        public_key: string;
    }

    Properties

    Properties

    attestation: string

    An attestation signed by the private key that is associated with the wallet. The attestation will be a hex-encoded signature of a json payload with fields wallet_id and public_key, signed by the private key associated with the public_key set in the request.

    +
    interface CreateAddressRequest {
        attestation?: string;
        public_key?: string;
    }

    Properties

    attestation?: string

    An attestation signed by the private key that is associated with the wallet. The attestation will be a hex-encoded signature of a json payload with fields wallet_id and public_key, signed by the private key associated with the public_key set in the request.

    Memberof

    CreateAddressRequest

    -
    public_key: string

    The public key from which the address will be derived.

    +
    public_key?: string

    The public key from which the address will be derived.

    Memberof

    CreateAddressRequest

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.CreateServerSignerRequest.html b/docs/interfaces/client_api.CreateServerSignerRequest.html new file mode 100644 index 00000000..8a074ea1 --- /dev/null +++ b/docs/interfaces/client_api.CreateServerSignerRequest.html @@ -0,0 +1,8 @@ +CreateServerSignerRequest | @coinbase/coinbase-sdk

    Export

    CreateServerSignerRequest

    +
    interface CreateServerSignerRequest {
        enrollment_data: string;
        server_signer_id: string;
    }

    Properties

    enrollment_data: string

    The enrollment data of the server signer. This will be the base64 encoded server-signer-id.

    +

    Memberof

    CreateServerSignerRequest

    +
    server_signer_id: string

    The ID of the server signer

    +

    Memberof

    CreateServerSignerRequest

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.CreateTradeRequest.html b/docs/interfaces/client_api.CreateTradeRequest.html new file mode 100644 index 00000000..a067ed2f --- /dev/null +++ b/docs/interfaces/client_api.CreateTradeRequest.html @@ -0,0 +1,11 @@ +CreateTradeRequest | @coinbase/coinbase-sdk

    Export

    CreateTradeRequest

    +
    interface CreateTradeRequest {
        amount: string;
        from_asset_id: string;
        to_asset_id: string;
    }

    Properties

    amount: string

    The amount to trade

    +

    Memberof

    CreateTradeRequest

    +
    from_asset_id: string

    The ID of the asset to trade

    +

    Memberof

    CreateTradeRequest

    +
    to_asset_id: string

    The ID of the asset to receive from the trade

    +

    Memberof

    CreateTradeRequest

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.CreateTransferRequest.html b/docs/interfaces/client_api.CreateTransferRequest.html index bdab435a..92a1b96b 100644 --- a/docs/interfaces/client_api.CreateTransferRequest.html +++ b/docs/interfaces/client_api.CreateTransferRequest.html @@ -1,14 +1,14 @@ CreateTransferRequest | @coinbase/coinbase-sdk

    Export

    CreateTransferRequest

    -
    interface CreateTransferRequest {
        amount: string;
        asset_id: string;
        destination: string;
        network_id: string;
    }

    Properties

    interface CreateTransferRequest {
        amount: string;
        asset_id: string;
        destination: string;
        network_id: string;
    }

    Properties

    amount: string

    The amount to transfer

    Memberof

    CreateTransferRequest

    -
    asset_id: string

    The ID of the asset to transfer

    +
    asset_id: string

    The ID of the asset to transfer

    Memberof

    CreateTransferRequest

    -
    destination: string

    The destination address

    +
    destination: string

    The destination address

    Memberof

    CreateTransferRequest

    -
    network_id: string

    The ID of the blockchain network

    +
    network_id: string

    The ID of the blockchain network

    Memberof

    CreateTransferRequest

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.CreateWalletRequest.html b/docs/interfaces/client_api.CreateWalletRequest.html index 93f83b14..356ddd5d 100644 --- a/docs/interfaces/client_api.CreateWalletRequest.html +++ b/docs/interfaces/client_api.CreateWalletRequest.html @@ -1,4 +1,4 @@ CreateWalletRequest | @coinbase/coinbase-sdk

    Export

    CreateWalletRequest

    -
    interface CreateWalletRequest {
        wallet: Wallet;
    }

    Properties

    Properties

    wallet: Wallet

    Memberof

    CreateWalletRequest

    -
    \ No newline at end of file +
    interface CreateWalletRequest {
        wallet: CreateWalletRequestWallet;
    }

    Properties

    Properties

    Memberof

    CreateWalletRequest

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.CreateWalletRequestWallet.html b/docs/interfaces/client_api.CreateWalletRequestWallet.html new file mode 100644 index 00000000..d4d9d6f1 --- /dev/null +++ b/docs/interfaces/client_api.CreateWalletRequestWallet.html @@ -0,0 +1,9 @@ +CreateWalletRequestWallet | @coinbase/coinbase-sdk

    Parameters for configuring a wallet

    +

    Export

    CreateWalletRequestWallet

    +
    interface CreateWalletRequestWallet {
        network_id: string;
        use_server_signer?: boolean;
    }

    Properties

    network_id: string

    The ID of the blockchain network

    +

    Memberof

    CreateWalletRequestWallet

    +
    use_server_signer?: boolean

    Whether the wallet should use the project's server signer or if the addresses in the wallets will belong to a private key the developer manages. Defaults to false.

    +

    Memberof

    CreateWalletRequestWallet

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.FaucetTransaction.html b/docs/interfaces/client_api.FaucetTransaction.html index 6a8bc20b..129aba85 100644 --- a/docs/interfaces/client_api.FaucetTransaction.html +++ b/docs/interfaces/client_api.FaucetTransaction.html @@ -1,5 +1,5 @@ FaucetTransaction | @coinbase/coinbase-sdk

    Export

    FaucetTransaction

    -
    interface FaucetTransaction {
        transaction_hash: string;
    }

    Properties

    interface FaucetTransaction {
        transaction_hash: string;
    }

    Properties

    Properties

    transaction_hash: string

    The transaction hash of the transaction the faucet created.

    Memberof

    FaucetTransaction

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.ModelError.html b/docs/interfaces/client_api.ModelError.html index de5a3df3..a78c9370 100644 --- a/docs/interfaces/client_api.ModelError.html +++ b/docs/interfaces/client_api.ModelError.html @@ -1,9 +1,9 @@ ModelError | @coinbase/coinbase-sdk

    An error response from the Coinbase Developer Platform API

    Export

    ModelError

    -
    interface ModelError {
        code: string;
        message: string;
    }

    Properties

    interface ModelError {
        code: string;
        message: string;
    }

    Properties

    Properties

    code: string

    A short string representing the reported error. Can be use to handle errors programmatically.

    Memberof

    ModelError

    -
    message: string

    A human-readable message providing more details about the error.

    +
    message: string

    A human-readable message providing more details about the error.

    Memberof

    ModelError

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.SeedCreationEvent.html b/docs/interfaces/client_api.SeedCreationEvent.html new file mode 100644 index 00000000..dd5f8985 --- /dev/null +++ b/docs/interfaces/client_api.SeedCreationEvent.html @@ -0,0 +1,9 @@ +SeedCreationEvent | @coinbase/coinbase-sdk

    An event representing a seed creation.

    +

    Export

    SeedCreationEvent

    +
    interface SeedCreationEvent {
        wallet_id: string;
        wallet_user_id: string;
    }

    Properties

    wallet_id: string

    The ID of the wallet that the server-signer should create the seed for

    +

    Memberof

    SeedCreationEvent

    +
    wallet_user_id: string

    The ID of the user that the wallet belongs to

    +

    Memberof

    SeedCreationEvent

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.SeedCreationEventResult.html b/docs/interfaces/client_api.SeedCreationEventResult.html new file mode 100644 index 00000000..00add90f --- /dev/null +++ b/docs/interfaces/client_api.SeedCreationEventResult.html @@ -0,0 +1,15 @@ +SeedCreationEventResult | @coinbase/coinbase-sdk

    The result to a SeedCreationEvent.

    +

    Export

    SeedCreationEventResult

    +
    interface SeedCreationEventResult {
        extended_public_key: string;
        seed_id: string;
        wallet_id: string;
        wallet_user_id: string;
    }

    Properties

    extended_public_key: string

    The extended public key for the first master key derived from seed.

    +

    Memberof

    SeedCreationEventResult

    +
    seed_id: string

    The ID of the seed in Server-Signer used to generate the extended public key.

    +

    Memberof

    SeedCreationEventResult

    +
    wallet_id: string

    The ID of the wallet that the seed was created for

    +

    Memberof

    SeedCreationEventResult

    +
    wallet_user_id: string

    The ID of the user that the wallet belongs to

    +

    Memberof

    SeedCreationEventResult

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.ServerSigner.html b/docs/interfaces/client_api.ServerSigner.html new file mode 100644 index 00000000..9dad7b28 --- /dev/null +++ b/docs/interfaces/client_api.ServerSigner.html @@ -0,0 +1,9 @@ +ServerSigner | @coinbase/coinbase-sdk

    A Server-Signer assigned to sign transactions in a wallet.

    +

    Export

    ServerSigner

    +
    interface ServerSigner {
        server_signer_id: string;
        wallets?: string[];
    }

    Properties

    server_signer_id: string

    The ID of the server-signer

    +

    Memberof

    ServerSigner

    +
    wallets?: string[]

    The IDs of the wallets that the server-signer can sign for

    +

    Memberof

    ServerSigner

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.ServerSignerEvent.html b/docs/interfaces/client_api.ServerSignerEvent.html new file mode 100644 index 00000000..9dce9818 --- /dev/null +++ b/docs/interfaces/client_api.ServerSignerEvent.html @@ -0,0 +1,8 @@ +ServerSignerEvent | @coinbase/coinbase-sdk

    An event that is waiting to be processed by a Server-Signer.

    +

    Export

    ServerSignerEvent

    +
    interface ServerSignerEvent {
        event: ServerSignerEventEvent;
        server_signer_id: string;
    }

    Properties

    Properties

    Memberof

    ServerSignerEvent

    +
    server_signer_id: string

    The ID of the server-signer that the event is for

    +

    Memberof

    ServerSignerEvent

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.ServerSignerEventList.html b/docs/interfaces/client_api.ServerSignerEventList.html new file mode 100644 index 00000000..681b3802 --- /dev/null +++ b/docs/interfaces/client_api.ServerSignerEventList.html @@ -0,0 +1,13 @@ +ServerSignerEventList | @coinbase/coinbase-sdk

    Export

    ServerSignerEventList

    +
    interface ServerSignerEventList {
        data: ServerSignerEvent[];
        has_more: boolean;
        next_page: string;
        total_count: number;
    }

    Properties

    Memberof

    ServerSignerEventList

    +
    has_more: boolean

    True if this list has another page of items after this one that can be fetched.

    +

    Memberof

    ServerSignerEventList

    +
    next_page: string

    The page token to be used to fetch the next page.

    +

    Memberof

    ServerSignerEventList

    +
    total_count: number

    The total number of events for the server signer.

    +

    Memberof

    ServerSignerEventList

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.ServerSignersApiInterface.html b/docs/interfaces/client_api.ServerSignersApiInterface.html new file mode 100644 index 00000000..c71200d6 --- /dev/null +++ b/docs/interfaces/client_api.ServerSignersApiInterface.html @@ -0,0 +1,39 @@ +ServerSignersApiInterface | @coinbase/coinbase-sdk

    ServerSignersApi - interface

    +

    Export

    ServerSignersApi

    +
    interface ServerSignersApiInterface {
        createServerSigner(createServerSignerRequest?, options?): AxiosPromise<ServerSigner>;
        getServerSigner(serverSignerId, options?): AxiosPromise<ServerSigner>;
        listServerSignerEvents(serverSignerId, limit?, page?, options?): AxiosPromise<ServerSignerEventList>;
        listServerSigners(options?): AxiosPromise<ServerSigner>;
        submitServerSignerSeedEventResult(serverSignerId, seedCreationEventResult?, options?): AxiosPromise<SeedCreationEventResult>;
        submitServerSignerSignatureEventResult(serverSignerId, signatureCreationEventResult?, options?): AxiosPromise<SignatureCreationEventResult>;
    }

    Implemented by

    Methods

    • Create a new Server-Signer

      +

      Parameters

      • Optional createServerSignerRequest: CreateServerSignerRequest
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<ServerSigner>

      Summary

      Create a new Server-Signer

      +

      Throws

      Memberof

      ServerSignersApiInterface

      +
    • Get a server signer by ID

      +

      Parameters

      • serverSignerId: string

        The ID of the server signer to fetch

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<ServerSigner>

      Summary

      Get a server signer by ID

      +

      Throws

      Memberof

      ServerSignersApiInterface

      +
    • List events for a server signer

      +

      Parameters

      • serverSignerId: string

        The ID of the server signer to fetch events for

        +
      • Optional limit: number

        A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

        +
      • Optional page: string

        A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<ServerSignerEventList>

      Summary

      List events for a server signer

      +

      Throws

      Memberof

      ServerSignersApiInterface

      +
    • List server signers for the current project

      +

      Parameters

      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<ServerSigner>

      Summary

      List server signers for the current project

      +

      Throws

      Memberof

      ServerSignersApiInterface

      +
    • Submit the result of a server signer event

      +

      Parameters

      • serverSignerId: string

        The ID of the server signer to submit the event result for

        +
      • Optional seedCreationEventResult: SeedCreationEventResult
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<SeedCreationEventResult>

      Summary

      Submit the result of a server signer event

      +

      Throws

      Memberof

      ServerSignersApiInterface

      +
    • Submit the result of a server signer event

      +

      Parameters

      • serverSignerId: string

        The ID of the server signer to submit the event result for

        +
      • Optional signatureCreationEventResult: SignatureCreationEventResult
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<SignatureCreationEventResult>

      Summary

      Submit the result of a server signer event

      +

      Throws

      Memberof

      ServerSignersApiInterface

      +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.SignatureCreationEvent.html b/docs/interfaces/client_api.SignatureCreationEvent.html new file mode 100644 index 00000000..ed1a5653 --- /dev/null +++ b/docs/interfaces/client_api.SignatureCreationEvent.html @@ -0,0 +1,26 @@ +SignatureCreationEvent | @coinbase/coinbase-sdk

    An event representing a signature creation.

    +

    Export

    SignatureCreationEvent

    +
    interface SignatureCreationEvent {
        address_id: string;
        address_index: number;
        seed_id: string;
        signing_payload: string;
        transaction_id: string;
        transaction_type: "transfer";
        wallet_id: string;
        wallet_user_id: string;
    }

    Properties

    address_id: string

    The ID of the address the transfer belongs to

    +

    Memberof

    SignatureCreationEvent

    +
    address_index: number

    The index of the address that the server-signer should sign with

    +

    Memberof

    SignatureCreationEvent

    +
    seed_id: string

    The ID of the seed that the server-signer should create the signature for

    +

    Memberof

    SignatureCreationEvent

    +
    signing_payload: string

    The payload that the server-signer should sign

    +

    Memberof

    SignatureCreationEvent

    +
    transaction_id: string

    The ID of the transaction that the server-signer should sign

    +

    Memberof

    SignatureCreationEvent

    +
    transaction_type: "transfer"

    Memberof

    SignatureCreationEvent

    +
    wallet_id: string

    The ID of the wallet the signature is for

    +

    Memberof

    SignatureCreationEvent

    +
    wallet_user_id: string

    The ID of the user that the wallet belongs to

    +

    Memberof

    SignatureCreationEvent

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.SignatureCreationEventResult.html b/docs/interfaces/client_api.SignatureCreationEventResult.html new file mode 100644 index 00000000..7abe0ba4 --- /dev/null +++ b/docs/interfaces/client_api.SignatureCreationEventResult.html @@ -0,0 +1,20 @@ +SignatureCreationEventResult | @coinbase/coinbase-sdk

    The result to a SignatureCreationEvent.

    +

    Export

    SignatureCreationEventResult

    +
    interface SignatureCreationEventResult {
        address_id: string;
        signature: string;
        transaction_id: string;
        transaction_type: "transfer";
        wallet_id: string;
        wallet_user_id: string;
    }

    Properties

    address_id: string

    The ID of the address the transfer belongs to

    +

    Memberof

    SignatureCreationEventResult

    +
    signature: string

    The signature created by the server-signer.

    +

    Memberof

    SignatureCreationEventResult

    +
    transaction_id: string

    The ID of the transaction that the Server-Signer has signed for

    +

    Memberof

    SignatureCreationEventResult

    +
    transaction_type: "transfer"

    Memberof

    SignatureCreationEventResult

    +
    wallet_id: string

    The ID of the wallet that the event was created for.

    +

    Memberof

    SignatureCreationEventResult

    +
    wallet_user_id: string

    The ID of the user that the wallet belongs to

    +

    Memberof

    SignatureCreationEventResult

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.Trade.html b/docs/interfaces/client_api.Trade.html new file mode 100644 index 00000000..12f11071 --- /dev/null +++ b/docs/interfaces/client_api.Trade.html @@ -0,0 +1,27 @@ +Trade | @coinbase/coinbase-sdk

    A trade of an asset to another asset

    +

    Export

    Trade

    +
    interface Trade {
        address_id: string;
        from_amount: string;
        from_asset: Asset;
        network_id: string;
        to_amount: string;
        to_asset: Asset;
        trade_id: string;
        transaction: Transaction;
        wallet_id: string;
    }

    Properties

    address_id: string

    The onchain address of the sender

    +

    Memberof

    Trade

    +
    from_amount: string

    The amount of the from asset to be traded (in atomic units of the from asset)

    +

    Memberof

    Trade

    +
    from_asset: Asset

    Memberof

    Trade

    +
    network_id: string

    The ID of the blockchain network

    +

    Memberof

    Trade

    +
    to_amount: string

    The amount of the to asset that will be received (in atomic units of the to asset)

    +

    Memberof

    Trade

    +
    to_asset: Asset

    Memberof

    Trade

    +
    trade_id: string

    The ID of the trade

    +

    Memberof

    Trade

    +
    transaction: Transaction

    Memberof

    Trade

    +
    wallet_id: string

    The ID of the wallet that owns the from address

    +

    Memberof

    Trade

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.TradeList.html b/docs/interfaces/client_api.TradeList.html new file mode 100644 index 00000000..c5470b66 --- /dev/null +++ b/docs/interfaces/client_api.TradeList.html @@ -0,0 +1,13 @@ +TradeList | @coinbase/coinbase-sdk

    Export

    TradeList

    +
    interface TradeList {
        data: Trade[];
        has_more: boolean;
        next_page: string;
        total_count: number;
    }

    Properties

    data: Trade[]

    Memberof

    TradeList

    +
    has_more: boolean

    True if this list has another page of items after this one that can be fetched.

    +

    Memberof

    TradeList

    +
    next_page: string

    The page token to be used to fetch the next page.

    +

    Memberof

    TradeList

    +
    total_count: number

    The total number of trades for the address in the wallet.

    +

    Memberof

    TradeList

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.TradesApiInterface.html b/docs/interfaces/client_api.TradesApiInterface.html new file mode 100644 index 00000000..594ea9aa --- /dev/null +++ b/docs/interfaces/client_api.TradesApiInterface.html @@ -0,0 +1,35 @@ +TradesApiInterface | @coinbase/coinbase-sdk

    TradesApi - interface

    +

    Export

    TradesApi

    +
    interface TradesApiInterface {
        broadcastTrade(walletId, addressId, tradeId, broadcastTradeRequest, options?): AxiosPromise<Trade>;
        createTrade(walletId, addressId, createTradeRequest, options?): AxiosPromise<Trade>;
        getTrade(walletId, addressId, tradeId, options?): AxiosPromise<Trade>;
        listTrades(walletId, addressId, limit?, page?, options?): AxiosPromise<TradeList>;
    }

    Implemented by

    Methods

    • Broadcast a trade

      +

      Parameters

      • walletId: string

        The ID of the wallet the address belongs to

        +
      • addressId: string

        The ID of the address the trade belongs to

        +
      • tradeId: string

        The ID of the trade to broadcast

        +
      • broadcastTradeRequest: BroadcastTradeRequest
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<Trade>

      Summary

      Broadcast a trade

      +

      Throws

      Memberof

      TradesApiInterface

      +
    • Create a new trade

      +

      Parameters

      • walletId: string

        The ID of the wallet the source address belongs to

        +
      • addressId: string

        The ID of the address to conduct the trade from

        +
      • createTradeRequest: CreateTradeRequest
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<Trade>

      Summary

      Create a new trade for an address

      +

      Throws

      Memberof

      TradesApiInterface

      +
    • Get a trade by ID

      +

      Parameters

      • walletId: string

        The ID of the wallet the address belongs to

        +
      • addressId: string

        The ID of the address the trade belongs to

        +
      • tradeId: string

        The ID of the trade to fetch

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<Trade>

      Summary

      Get a trade by ID

      +

      Throws

      Memberof

      TradesApiInterface

      +
    • List trades for an address.

      +

      Parameters

      • walletId: string

        The ID of the wallet the address belongs to

        +
      • addressId: string

        The ID of the address to list trades for

        +
      • Optional limit: number

        A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

        +
      • Optional page: string

        A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<TradeList>

      Summary

      List trades for an address.

      +

      Throws

      Memberof

      TradesApiInterface

      +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.Transaction.html b/docs/interfaces/client_api.Transaction.html new file mode 100644 index 00000000..4488bb53 --- /dev/null +++ b/docs/interfaces/client_api.Transaction.html @@ -0,0 +1,21 @@ +Transaction | @coinbase/coinbase-sdk

    An onchain transaction.

    +

    Export

    Transaction

    +
    interface Transaction {
        from_address_id: string;
        network_id: string;
        signed_payload?: string;
        status: TransactionStatusEnum;
        transaction_hash?: string;
        unsigned_payload: string;
    }

    Properties

    from_address_id: string

    The onchain address of the sender

    +

    Memberof

    Transaction

    +
    network_id: string

    The ID of the blockchain network

    +

    Memberof

    Transaction

    +
    signed_payload?: string

    The signed payload of the transaction. This is the payload that has been signed by the sender.

    +

    Memberof

    Transaction

    +

    The status of the transaction

    +

    Memberof

    Transaction

    +
    transaction_hash?: string

    The hash of the transaction

    +

    Memberof

    Transaction

    +
    unsigned_payload: string

    The unsigned payload of the transaction. This is the payload that needs to be signed by the sender.

    +

    Memberof

    Transaction

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.Transfer.html b/docs/interfaces/client_api.Transfer.html index 8aa81d70..3e8c9058 100644 --- a/docs/interfaces/client_api.Transfer.html +++ b/docs/interfaces/client_api.Transfer.html @@ -1,6 +1,6 @@ Transfer | @coinbase/coinbase-sdk

    A transfer of an asset from one address to another

    Export

    Transfer

    -
    interface Transfer {
        address_id: string;
        amount: string;
        asset_id: string;
        destination: string;
        network_id: string;
        signed_payload?: string;
        status: TransferStatusEnum;
        transaction_hash?: string;
        transfer_id: string;
        unsigned_payload: string;
        wallet_id: string;
    }

    Properties

    interface Transfer {
        address_id: string;
        amount: string;
        asset_id: string;
        destination: string;
        network_id: string;
        signed_payload?: string;
        status: TransferStatusEnum;
        transaction_hash?: string;
        transfer_id: string;
        unsigned_payload: string;
        wallet_id: string;
    }

    Properties

    Properties

    address_id: string

    The onchain address of the sender

    Memberof

    Transfer

    -
    amount: string

    The amount in the atomic units of the asset

    +
    amount: string

    The amount in the atomic units of the asset

    Memberof

    Transfer

    -
    asset_id: string

    The ID of the asset being transferred

    +
    asset_id: string

    The ID of the asset being transferred

    Memberof

    Transfer

    -
    destination: string

    The onchain address of the recipient

    +
    destination: string

    The onchain address of the recipient

    Memberof

    Transfer

    -
    network_id: string

    The ID of the blockchain network

    +
    network_id: string

    The ID of the blockchain network

    Memberof

    Transfer

    -
    signed_payload?: string

    The signed payload of the transfer. This is the payload that has been signed by the sender.

    +
    signed_payload?: string

    The signed payload of the transfer. This is the payload that has been signed by the sender.

    Memberof

    Transfer

    -

    The status of the transfer

    +

    The status of the transfer

    Memberof

    Transfer

    -
    transaction_hash?: string

    The hash of the transfer transaction

    +
    transaction_hash?: string

    The hash of the transfer transaction

    Memberof

    Transfer

    -
    transfer_id: string

    The ID of the transfer

    +
    transfer_id: string

    The ID of the transfer

    Memberof

    Transfer

    -
    unsigned_payload: string

    The unsigned payload of the transfer. This is the payload that needs to be signed by the sender.

    +
    unsigned_payload: string

    The unsigned payload of the transfer. This is the payload that needs to be signed by the sender.

    Memberof

    Transfer

    -
    wallet_id: string

    The ID of the wallet that owns the from address

    +
    wallet_id: string

    The ID of the wallet that owns the from address

    Memberof

    Transfer

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.TransferList.html b/docs/interfaces/client_api.TransferList.html index b0c95184..d7ae216d 100644 --- a/docs/interfaces/client_api.TransferList.html +++ b/docs/interfaces/client_api.TransferList.html @@ -1,13 +1,13 @@ TransferList | @coinbase/coinbase-sdk

    Export

    TransferList

    -
    interface TransferList {
        data: Transfer[];
        has_more: boolean;
        next_page: string;
        total_count: number;
    }

    Properties

    interface TransferList {
        data: Transfer[];
        has_more: boolean;
        next_page: string;
        total_count: number;
    }

    Properties

    data: Transfer[]

    Memberof

    TransferList

    -
    has_more: boolean

    True if this list has another page of items after this one that can be fetched.

    +
    has_more: boolean

    True if this list has another page of items after this one that can be fetched.

    Memberof

    TransferList

    -
    next_page: string

    The page token to be used to fetch the next page.

    +
    next_page: string

    The page token to be used to fetch the next page.

    Memberof

    TransferList

    -
    total_count: number

    The total number of transfers for the address in the wallet.

    +
    total_count: number

    The total number of transfers for the address in the wallet.

    Memberof

    TransferList

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.TransfersApiInterface.html b/docs/interfaces/client_api.TransfersApiInterface.html new file mode 100644 index 00000000..c5eb08e9 --- /dev/null +++ b/docs/interfaces/client_api.TransfersApiInterface.html @@ -0,0 +1,35 @@ +TransfersApiInterface | @coinbase/coinbase-sdk

    TransfersApi - interface

    +

    Export

    TransfersApi

    +
    interface TransfersApiInterface {
        broadcastTransfer(walletId, addressId, transferId, broadcastTransferRequest, options?): AxiosPromise<Transfer>;
        createTransfer(walletId, addressId, createTransferRequest, options?): AxiosPromise<Transfer>;
        getTransfer(walletId, addressId, transferId, options?): AxiosPromise<Transfer>;
        listTransfers(walletId, addressId, limit?, page?, options?): AxiosPromise<TransferList>;
    }

    Implemented by

    Methods

    • Broadcast a transfer

      +

      Parameters

      • walletId: string

        The ID of the wallet the address belongs to

        +
      • addressId: string

        The ID of the address the transfer belongs to

        +
      • transferId: string

        The ID of the transfer to broadcast

        +
      • broadcastTransferRequest: BroadcastTransferRequest
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<Transfer>

      Summary

      Broadcast a transfer

      +

      Throws

      Memberof

      TransfersApiInterface

      +
    • Create a new transfer

      +

      Parameters

      • walletId: string

        The ID of the wallet the source address belongs to

        +
      • addressId: string

        The ID of the address to transfer from

        +
      • createTransferRequest: CreateTransferRequest
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<Transfer>

      Summary

      Create a new transfer for an address

      +

      Throws

      Memberof

      TransfersApiInterface

      +
    • Get a transfer by ID

      +

      Parameters

      • walletId: string

        The ID of the wallet the address belongs to

        +
      • addressId: string

        The ID of the address the transfer belongs to

        +
      • transferId: string

        The ID of the transfer to fetch

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<Transfer>

      Summary

      Get a transfer by ID

      +

      Throws

      Memberof

      TransfersApiInterface

      +
    • List transfers for an address.

      +

      Parameters

      • walletId: string

        The ID of the wallet the address belongs to

        +
      • addressId: string

        The ID of the address to list transfers for

        +
      • Optional limit: number

        A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

        +
      • Optional page: string

        A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<TransferList>

      Summary

      List transfers for an address.

      +

      Throws

      Memberof

      TransfersApiInterface

      +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.User.html b/docs/interfaces/client_api.User.html index 46e340a0..eaf92c80 100644 --- a/docs/interfaces/client_api.User.html +++ b/docs/interfaces/client_api.User.html @@ -1,7 +1,7 @@ User | @coinbase/coinbase-sdk

    Export

    User

    -
    interface User {
        display_name?: string;
        id: string;
    }

    Properties

    interface User {
        display_name?: string;
        id: string;
    }

    Properties

    Properties

    display_name?: string

    Memberof

    User

    -
    id: string

    The ID of the user

    +
    id: string

    The ID of the user

    Memberof

    User

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.UsersApiInterface.html b/docs/interfaces/client_api.UsersApiInterface.html new file mode 100644 index 00000000..0f0103dd --- /dev/null +++ b/docs/interfaces/client_api.UsersApiInterface.html @@ -0,0 +1,8 @@ +UsersApiInterface | @coinbase/coinbase-sdk

    UsersApi - interface

    +

    Export

    UsersApi

    +
    interface UsersApiInterface {
        getCurrentUser(options?): AxiosPromise<User>;
    }

    Implemented by

    Methods

    • Get current user

      +

      Parameters

      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<User>

      Summary

      Get current user

      +

      Throws

      Memberof

      UsersApiInterface

      +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.Wallet.html b/docs/interfaces/client_api.Wallet.html index 9c604a59..e2c93fda 100644 --- a/docs/interfaces/client_api.Wallet.html +++ b/docs/interfaces/client_api.Wallet.html @@ -1,10 +1,13 @@ Wallet | @coinbase/coinbase-sdk

    Export

    Wallet

    -
    interface Wallet {
        default_address?: Address;
        id?: string;
        network_id: string;
    }

    Properties

    interface Wallet {
        default_address?: Address;
        id: string;
        network_id: string;
        server_signer_status?: WalletServerSignerStatusEnum;
    }

    Properties

    default_address?: Address

    Memberof

    Wallet

    -
    id?: string

    The server-assigned ID for the wallet.

    +
    id: string

    The server-assigned ID for the wallet.

    Memberof

    Wallet

    -
    network_id: string

    The ID of the blockchain network

    +
    network_id: string

    The ID of the blockchain network

    Memberof

    Wallet

    -
    \ No newline at end of file +
    server_signer_status?: WalletServerSignerStatusEnum

    The status of the Server-Signer for the wallet if present.

    +

    Memberof

    Wallet

    +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.WalletList.html b/docs/interfaces/client_api.WalletList.html index 7dc825f8..4bb28232 100644 --- a/docs/interfaces/client_api.WalletList.html +++ b/docs/interfaces/client_api.WalletList.html @@ -1,14 +1,14 @@ WalletList | @coinbase/coinbase-sdk

    Paginated list of wallets

    Export

    WalletList

    -
    interface WalletList {
        data: Wallet[];
        has_more: boolean;
        next_page: string;
        total_count: number;
    }

    Properties

    interface WalletList {
        data: Wallet[];
        has_more: boolean;
        next_page: string;
        total_count: number;
    }

    Properties

    data: Wallet[]

    Memberof

    WalletList

    -
    has_more: boolean

    True if this list has another page of items after this one that can be fetched.

    +
    has_more: boolean

    True if this list has another page of items after this one that can be fetched.

    Memberof

    WalletList

    -
    next_page: string

    The page token to be used to fetch the next page.

    +
    next_page: string

    The page token to be used to fetch the next page.

    Memberof

    WalletList

    -
    total_count: number

    The total number of wallets

    +
    total_count: number

    The total number of wallets

    Memberof

    WalletList

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/client_api.WalletsApiInterface.html b/docs/interfaces/client_api.WalletsApiInterface.html new file mode 100644 index 00000000..dd3ae7f2 --- /dev/null +++ b/docs/interfaces/client_api.WalletsApiInterface.html @@ -0,0 +1,34 @@ +WalletsApiInterface | @coinbase/coinbase-sdk

    WalletsApi - interface

    +

    Export

    WalletsApi

    +
    interface WalletsApiInterface {
        createWallet(createWalletRequest?, options?): AxiosPromise<Wallet>;
        getWallet(walletId, options?): AxiosPromise<Wallet>;
        getWalletBalance(walletId, assetId, options?): AxiosPromise<Balance>;
        listWalletBalances(walletId, options?): AxiosPromise<AddressBalanceList>;
        listWallets(limit?, page?, options?): AxiosPromise<WalletList>;
    }

    Implemented by

    Methods

    • Create a new wallet scoped to the user.

      +

      Parameters

      • Optional createWalletRequest: CreateWalletRequest
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<Wallet>

      Summary

      Create a new wallet

      +

      Throws

      Memberof

      WalletsApiInterface

      +
    • Get wallet

      +

      Parameters

      • walletId: string

        The ID of the wallet to fetch

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<Wallet>

      Summary

      Get wallet by ID

      +

      Throws

      Memberof

      WalletsApiInterface

      +
    • Get the aggregated balance of an asset across all of the addresses in the wallet.

      +

      Parameters

      • walletId: string

        The ID of the wallet to fetch the balance for

        +
      • assetId: string

        The symbol of the asset to fetch the balance for

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<Balance>

      Summary

      Get the balance of an asset in the wallet

      +

      Throws

      Memberof

      WalletsApiInterface

      +
    • List the balances of all of the addresses in the wallet aggregated by asset.

      +

      Parameters

      • walletId: string

        The ID of the wallet to fetch the balances for

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<AddressBalanceList>

      Summary

      List wallet balances

      +

      Throws

      Memberof

      WalletsApiInterface

      +
    • List wallets belonging to the user.

      +

      Parameters

      • Optional limit: number

        A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

        +
      • Optional page: string

        A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

        +
      • Optional options: RawAxiosRequestConfig

        Override http request option.

        +

      Returns AxiosPromise<WalletList>

      Summary

      List wallets

      +

      Throws

      Memberof

      WalletsApiInterface

      +
    \ No newline at end of file diff --git a/docs/interfaces/client_base.RequestArgs.html b/docs/interfaces/client_base.RequestArgs.html index 2ddc95a7..28524a9e 100644 --- a/docs/interfaces/client_base.RequestArgs.html +++ b/docs/interfaces/client_base.RequestArgs.html @@ -1,4 +1,4 @@ RequestArgs | @coinbase/coinbase-sdk

    Export

    RequestArgs

    -
    interface RequestArgs {
        options: RawAxiosRequestConfig;
        url: string;
    }

    Properties

    interface RequestArgs {
        options: RawAxiosRequestConfig;
        url: string;
    }

    Properties

    Properties

    options: RawAxiosRequestConfig
    url: string
    \ No newline at end of file +

    Properties

    options: RawAxiosRequestConfig
    url: string
    \ No newline at end of file diff --git a/docs/interfaces/client_configuration.ConfigurationParameters.html b/docs/interfaces/client_configuration.ConfigurationParameters.html index 93b6db2f..76ed8d39 100644 --- a/docs/interfaces/client_configuration.ConfigurationParameters.html +++ b/docs/interfaces/client_configuration.ConfigurationParameters.html @@ -5,7 +5,7 @@

    NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). https://openapi-generator.tech Do not edit the class manually.

    -
    interface ConfigurationParameters {
        accessToken?: string | Promise<string> | ((name?, scopes?) => string) | ((name?, scopes?) => Promise<string>);
        apiKey?: string | Promise<string> | ((name) => string) | ((name) => Promise<string>);
        baseOptions?: any;
        basePath?: string;
        formDataCtor?: (new () => any);
        password?: string;
        serverIndex?: number;
        username?: string;
    }

    Properties

    interface ConfigurationParameters {
        accessToken?: string | Promise<string> | ((name?, scopes?) => string) | ((name?, scopes?) => Promise<string>);
        apiKey?: string | Promise<string> | ((name) => string) | ((name) => Promise<string>);
        baseOptions?: any;
        basePath?: string;
        formDataCtor?: (new () => any);
        password?: string;
        serverIndex?: number;
        username?: string;
    }

    Properties

    accessToken?: string | Promise<string> | ((name?, scopes?) => string) | ((name?, scopes?) => Promise<string>)

    Type declaration

      • (name?, scopes?): string
      • Parameters

        • Optional name: string
        • Optional scopes: string[]

        Returns string

    Type declaration

      • (name?, scopes?): Promise<string>
      • Parameters

        • Optional name: string
        • Optional scopes: string[]

        Returns Promise<string>

    apiKey?: string | Promise<string> | ((name) => string) | ((name) => Promise<string>)

    Type declaration

      • (name): string
      • Parameters

        • name: string

        Returns string

    Type declaration

      • (name): Promise<string>
      • Parameters

        • name: string

        Returns Promise<string>

    baseOptions?: any
    basePath?: string
    formDataCtor?: (new () => any)

    Type declaration

      • new (): any
      • Returns any

    password?: string
    serverIndex?: number
    username?: string
    \ No newline at end of file +

    Properties

    accessToken?: string | Promise<string> | ((name?, scopes?) => string) | ((name?, scopes?) => Promise<string>)

    Type declaration

      • (name?, scopes?): string
      • Parameters

        • Optional name: string
        • Optional scopes: string[]

        Returns string

    Type declaration

      • (name?, scopes?): Promise<string>
      • Parameters

        • Optional name: string
        • Optional scopes: string[]

        Returns Promise<string>

    apiKey?: string | Promise<string> | ((name) => string) | ((name) => Promise<string>)

    Type declaration

      • (name): string
      • Parameters

        • name: string

        Returns string

    Type declaration

      • (name): Promise<string>
      • Parameters

        • name: string

        Returns Promise<string>

    baseOptions?: any
    basePath?: string
    formDataCtor?: (new () => any)

    Type declaration

      • new (): any
      • Returns any

    password?: string
    serverIndex?: number
    username?: string
    \ No newline at end of file diff --git a/docs/modules/client.html b/docs/modules/client.html index 8812e97d..6e695efa 100644 --- a/docs/modules/client.html +++ b/docs/modules/client.html @@ -1,20 +1,48 @@ -client | @coinbase/coinbase-sdk

    References

    Address +client | @coinbase/coinbase-sdk

    References

    Re-exports Address
    Re-exports AddressBalanceList
    Re-exports AddressList
    Re-exports AddressesApi
    Re-exports AddressesApiAxiosParamCreator
    Re-exports AddressesApiFactory
    Re-exports AddressesApiFp
    Re-exports Asset
    Re-exports Balance
    Re-exports BroadcastTransferRequest
    Re-exports Configuration
    Re-exports ConfigurationParameters
    Re-exports CreateAddressRequest
    Re-exports CreateTransferRequest
    Re-exports CreateWalletRequest
    Re-exports FaucetTransaction
    Re-exports ModelError
    Re-exports Transfer
    Re-exports TransferList
    Re-exports TransferStatusEnum
    Re-exports TransfersApi
    Re-exports TransfersApiAxiosParamCreator
    Re-exports TransfersApiFactory
    Re-exports TransfersApiFp
    Re-exports User
    Re-exports UsersApi
    Re-exports UsersApiAxiosParamCreator
    Re-exports UsersApiFactory
    Re-exports UsersApiFp
    Re-exports Wallet
    Re-exports WalletList
    Re-exports WalletsApi
    Re-exports WalletsApiAxiosParamCreator
    Re-exports WalletsApiFactory
    Re-exports WalletsApiFp
    \ No newline at end of file +WalletsApiInterface +

    References

    Re-exports Address
    Re-exports AddressBalanceList
    Re-exports AddressList
    Re-exports AddressesApi
    Re-exports AddressesApiAxiosParamCreator
    Re-exports AddressesApiFactory
    Re-exports AddressesApiFp
    Re-exports AddressesApiInterface
    Re-exports Asset
    Re-exports Balance
    Re-exports BroadcastTradeRequest
    Re-exports BroadcastTransferRequest
    Re-exports Configuration
    Re-exports ConfigurationParameters
    Re-exports CreateAddressRequest
    Re-exports CreateServerSignerRequest
    Re-exports CreateTradeRequest
    Re-exports CreateTransferRequest
    Re-exports CreateWalletRequest
    Re-exports CreateWalletRequestWallet
    Re-exports FaucetTransaction
    Re-exports ModelError
    Re-exports SeedCreationEvent
    Re-exports SeedCreationEventResult
    Re-exports ServerSigner
    Re-exports ServerSignerEvent
    Re-exports ServerSignerEventEvent
    Re-exports ServerSignerEventList
    Re-exports ServerSignersApi
    Re-exports ServerSignersApiAxiosParamCreator
    Re-exports ServerSignersApiFactory
    Re-exports ServerSignersApiFp
    Re-exports ServerSignersApiInterface
    Re-exports SignatureCreationEvent
    Re-exports SignatureCreationEventResult
    Re-exports Trade
    Re-exports TradeList
    Re-exports TradesApi
    Re-exports TradesApiAxiosParamCreator
    Re-exports TradesApiFactory
    Re-exports TradesApiFp
    Re-exports TradesApiInterface
    Re-exports Transaction
    Re-exports TransactionStatusEnum
    Re-exports TransactionType
    Re-exports Transfer
    Re-exports TransferList
    Re-exports TransferStatusEnum
    Re-exports TransfersApi
    Re-exports TransfersApiAxiosParamCreator
    Re-exports TransfersApiFactory
    Re-exports TransfersApiFp
    Re-exports TransfersApiInterface
    Re-exports User
    Re-exports UsersApi
    Re-exports UsersApiAxiosParamCreator
    Re-exports UsersApiFactory
    Re-exports UsersApiFp
    Re-exports UsersApiInterface
    Re-exports Wallet
    Re-exports WalletList
    Re-exports WalletServerSignerStatusEnum
    Re-exports WalletsApi
    Re-exports WalletsApiAxiosParamCreator
    Re-exports WalletsApiFactory
    Re-exports WalletsApiFp
    Re-exports WalletsApiInterface
    \ No newline at end of file diff --git a/docs/modules/client_api.html b/docs/modules/client_api.html index 4ba1eb98..0123bc0e 100644 --- a/docs/modules/client_api.html +++ b/docs/modules/client_api.html @@ -1,28 +1,62 @@ -client/api | @coinbase/coinbase-sdk

    Index

    Classes

    AddressesApi +client/api | @coinbase/coinbase-sdk

    Index

    Enumerations

    Classes

    Interfaces

    Type Aliases

    Variables

    Type Aliases

    Variables

    Functions

    AddressesApiAxiosParamCreator AddressesApiFactory AddressesApiFp +ServerSignersApiAxiosParamCreator +ServerSignersApiFactory +ServerSignersApiFp +TradesApiAxiosParamCreator +TradesApiFactory +TradesApiFp TransfersApiAxiosParamCreator TransfersApiFactory TransfersApiFp diff --git a/docs/modules/client_base.html b/docs/modules/client_base.html index 1c6ad41b..1d2bf5a5 100644 --- a/docs/modules/client_base.html +++ b/docs/modules/client_base.html @@ -1,4 +1,4 @@ -client/base | @coinbase/coinbase-sdk

    Index

    Classes

    BaseAPI +client/base | @coinbase/coinbase-sdk

    Index

    Classes

    Interfaces

    Variables

    BASE_PATH diff --git a/docs/modules/client_common.html b/docs/modules/client_common.html index b1b3a5b3..d7b1b3ca 100644 --- a/docs/modules/client_common.html +++ b/docs/modules/client_common.html @@ -1,4 +1,4 @@ -client/common | @coinbase/coinbase-sdk

    Index

    Variables

    DUMMY_BASE_URL +client/common | @coinbase/coinbase-sdk

    Index

    Variables

    Functions

    assertParamExists createRequestFunction serializeDataIfNeeded diff --git a/docs/modules/client_configuration.html b/docs/modules/client_configuration.html index 263f2e00..1e8169f1 100644 --- a/docs/modules/client_configuration.html +++ b/docs/modules/client_configuration.html @@ -1,3 +1,3 @@ -client/configuration | @coinbase/coinbase-sdk

    Index

    Classes

    Configuration +client/configuration | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase.html b/docs/modules/coinbase.html index fa754290..066c2d37 100644 --- a/docs/modules/coinbase.html +++ b/docs/modules/coinbase.html @@ -1,2 +1,2 @@ -coinbase | @coinbase/coinbase-sdk

    References

    Coinbase +coinbase | @coinbase/coinbase-sdk

    References

    References

    Re-exports Coinbase
    \ No newline at end of file diff --git a/docs/modules/coinbase_address.html b/docs/modules/coinbase_address.html index d587cf91..6b3693d3 100644 --- a/docs/modules/coinbase_address.html +++ b/docs/modules/coinbase_address.html @@ -1,2 +1,2 @@ -coinbase/address | @coinbase/coinbase-sdk

    Index

    Classes

    Address +coinbase/address | @coinbase/coinbase-sdk

    Index

    Classes

    \ No newline at end of file diff --git a/docs/modules/coinbase_api_error.html b/docs/modules/coinbase_api_error.html index cd3dc168..0e53ae71 100644 --- a/docs/modules/coinbase_api_error.html +++ b/docs/modules/coinbase_api_error.html @@ -1,4 +1,4 @@ -coinbase/api_error | @coinbase/coinbase-sdk

    Index

    Classes

    APIError +coinbase/api_error | @coinbase/coinbase-sdk

    Index

    Classes

    APIError AlreadyExistsError FaucetLimitReachedError InvalidAddressError diff --git a/docs/modules/coinbase_asset.html b/docs/modules/coinbase_asset.html index 632f28da..ddbaf1a6 100644 --- a/docs/modules/coinbase_asset.html +++ b/docs/modules/coinbase_asset.html @@ -1,2 +1,2 @@ -coinbase/asset | @coinbase/coinbase-sdk

    Index

    Classes

    Asset +coinbase/asset | @coinbase/coinbase-sdk

    Index

    Classes

    \ No newline at end of file diff --git a/docs/modules/coinbase_authenticator.html b/docs/modules/coinbase_authenticator.html index caa5f7c9..a61646a9 100644 --- a/docs/modules/coinbase_authenticator.html +++ b/docs/modules/coinbase_authenticator.html @@ -1,2 +1,2 @@ -coinbase/authenticator | @coinbase/coinbase-sdk

    Index

    Classes

    CoinbaseAuthenticator +coinbase/authenticator | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_balance.html b/docs/modules/coinbase_balance.html index f4ed371e..0533551f 100644 --- a/docs/modules/coinbase_balance.html +++ b/docs/modules/coinbase_balance.html @@ -1,2 +1,2 @@ -coinbase/balance | @coinbase/coinbase-sdk

    Index

    Classes

    Balance +coinbase/balance | @coinbase/coinbase-sdk

    Index

    Classes

    \ No newline at end of file diff --git a/docs/modules/coinbase_balance_map.html b/docs/modules/coinbase_balance_map.html index 13925799..2fbfc431 100644 --- a/docs/modules/coinbase_balance_map.html +++ b/docs/modules/coinbase_balance_map.html @@ -1,2 +1,2 @@ -coinbase/balance_map | @coinbase/coinbase-sdk

    Index

    Classes

    BalanceMap +coinbase/balance_map | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_coinbase.html b/docs/modules/coinbase_coinbase.html index 1bc7d5ff..5a681b4e 100644 --- a/docs/modules/coinbase_coinbase.html +++ b/docs/modules/coinbase_coinbase.html @@ -1,2 +1,2 @@ -coinbase/coinbase | @coinbase/coinbase-sdk

    Index

    Classes

    Coinbase +coinbase/coinbase | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_constants.html b/docs/modules/coinbase_constants.html index a225af7c..49c2ceaa 100644 --- a/docs/modules/coinbase_constants.html +++ b/docs/modules/coinbase_constants.html @@ -1,4 +1,4 @@ -coinbase/constants | @coinbase/coinbase-sdk

    Index

    Variables

    ATOMIC_UNITS_PER_USDC +coinbase/constants | @coinbase/coinbase-sdk

    Index

    Variables

    ATOMIC_UNITS_PER_USDC GWEI_PER_ETHER WEI_PER_ETHER WEI_PER_GWEI diff --git a/docs/modules/coinbase_errors.html b/docs/modules/coinbase_errors.html index ec101816..ff521ee0 100644 --- a/docs/modules/coinbase_errors.html +++ b/docs/modules/coinbase_errors.html @@ -1,4 +1,4 @@ -coinbase/errors | @coinbase/coinbase-sdk

    Index

    Classes

    ArgumentError +coinbase/errors | @coinbase/coinbase-sdk

    Index

    Classes

    ArgumentError InternalError InvalidAPIKeyFormat InvalidConfiguration diff --git a/docs/modules/coinbase_faucet_transaction.html b/docs/modules/coinbase_faucet_transaction.html index dc2c8384..fd0c942a 100644 --- a/docs/modules/coinbase_faucet_transaction.html +++ b/docs/modules/coinbase_faucet_transaction.html @@ -1,2 +1,2 @@ -coinbase/faucet_transaction | @coinbase/coinbase-sdk

    Module coinbase/faucet_transaction

    Index

    Classes

    FaucetTransaction +coinbase/faucet_transaction | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_tests_address_test.html b/docs/modules/coinbase_tests_address_test.html index f3862ce4..5bace8f8 100644 --- a/docs/modules/coinbase_tests_address_test.html +++ b/docs/modules/coinbase_tests_address_test.html @@ -1 +1 @@ -coinbase/tests/address_test | @coinbase/coinbase-sdk
    \ No newline at end of file +coinbase/tests/address_test | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_tests_authenticator_test.html b/docs/modules/coinbase_tests_authenticator_test.html index f3b5bbdc..39848e07 100644 --- a/docs/modules/coinbase_tests_authenticator_test.html +++ b/docs/modules/coinbase_tests_authenticator_test.html @@ -1 +1 @@ -coinbase/tests/authenticator_test | @coinbase/coinbase-sdk
    \ No newline at end of file +coinbase/tests/authenticator_test | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_tests_balance_map_test.html b/docs/modules/coinbase_tests_balance_map_test.html index a575a36c..92cb9d34 100644 --- a/docs/modules/coinbase_tests_balance_map_test.html +++ b/docs/modules/coinbase_tests_balance_map_test.html @@ -1 +1 @@ -coinbase/tests/balance_map_test | @coinbase/coinbase-sdk
    \ No newline at end of file +coinbase/tests/balance_map_test | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_tests_balance_test.html b/docs/modules/coinbase_tests_balance_test.html index b4c5765f..b207de36 100644 --- a/docs/modules/coinbase_tests_balance_test.html +++ b/docs/modules/coinbase_tests_balance_test.html @@ -1 +1 @@ -coinbase/tests/balance_test | @coinbase/coinbase-sdk
    \ No newline at end of file +coinbase/tests/balance_test | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_tests_coinbase_test.html b/docs/modules/coinbase_tests_coinbase_test.html index e8204b07..1dbf4b5e 100644 --- a/docs/modules/coinbase_tests_coinbase_test.html +++ b/docs/modules/coinbase_tests_coinbase_test.html @@ -1 +1 @@ -coinbase/tests/coinbase_test | @coinbase/coinbase-sdk
    \ No newline at end of file +coinbase/tests/coinbase_test | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_tests_faucet_transaction_test.html b/docs/modules/coinbase_tests_faucet_transaction_test.html index 2ac8a05c..5c5ea7ac 100644 --- a/docs/modules/coinbase_tests_faucet_transaction_test.html +++ b/docs/modules/coinbase_tests_faucet_transaction_test.html @@ -1 +1 @@ -coinbase/tests/faucet_transaction_test | @coinbase/coinbase-sdk
    \ No newline at end of file +coinbase/tests/faucet_transaction_test | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_tests_transfer_test.html b/docs/modules/coinbase_tests_transfer_test.html index c2d3d3e7..94a3b67b 100644 --- a/docs/modules/coinbase_tests_transfer_test.html +++ b/docs/modules/coinbase_tests_transfer_test.html @@ -1 +1 @@ -coinbase/tests/transfer_test | @coinbase/coinbase-sdk
    \ No newline at end of file +coinbase/tests/transfer_test | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_tests_user_test.html b/docs/modules/coinbase_tests_user_test.html index 7e95ad14..b7d8f052 100644 --- a/docs/modules/coinbase_tests_user_test.html +++ b/docs/modules/coinbase_tests_user_test.html @@ -1 +1 @@ -coinbase/tests/user_test | @coinbase/coinbase-sdk
    \ No newline at end of file +coinbase/tests/user_test | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_tests_utils.html b/docs/modules/coinbase_tests_utils.html index d516df1b..80661a21 100644 --- a/docs/modules/coinbase_tests_utils.html +++ b/docs/modules/coinbase_tests_utils.html @@ -1,4 +1,4 @@ -coinbase/tests/utils | @coinbase/coinbase-sdk

    Index

    Variables

    VALID_ADDRESS_BALANCE_LIST +coinbase/tests/utils | @coinbase/coinbase-sdk

    Index

    Variables

    VALID_ADDRESS_BALANCE_LIST VALID_ADDRESS_MODEL VALID_BALANCE_MODEL VALID_TRANSFER_MODEL diff --git a/docs/modules/coinbase_tests_wallet_test.html b/docs/modules/coinbase_tests_wallet_test.html index 7f9ae100..1b0c8ef6 100644 --- a/docs/modules/coinbase_tests_wallet_test.html +++ b/docs/modules/coinbase_tests_wallet_test.html @@ -1 +1 @@ -coinbase/tests/wallet_test | @coinbase/coinbase-sdk
    \ No newline at end of file +coinbase/tests/wallet_test | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_transfer.html b/docs/modules/coinbase_transfer.html index cb1a61b4..e23c086e 100644 --- a/docs/modules/coinbase_transfer.html +++ b/docs/modules/coinbase_transfer.html @@ -1,2 +1,2 @@ -coinbase/transfer | @coinbase/coinbase-sdk

    Index

    Classes

    Transfer +coinbase/transfer | @coinbase/coinbase-sdk
    \ No newline at end of file diff --git a/docs/modules/coinbase_types.html b/docs/modules/coinbase_types.html index 74c32e16..5eced311 100644 --- a/docs/modules/coinbase_types.html +++ b/docs/modules/coinbase_types.html @@ -1,7 +1,10 @@ -coinbase/types | @coinbase/coinbase-sdk

    Index

    Enumerations

    TransferStatus +coinbase/types | @coinbase/coinbase-sdk

    Index

    Enumerations

    Type Aliases

    AddressAPIClient Amount ApiClients +CoinbaseConfigureFromJsonOptions +CoinbaseOptions Destination SeedData TransferAPIClient diff --git a/docs/modules/coinbase_user.html b/docs/modules/coinbase_user.html index 48120f0a..b204e2dc 100644 --- a/docs/modules/coinbase_user.html +++ b/docs/modules/coinbase_user.html @@ -1,2 +1,2 @@ -coinbase/user | @coinbase/coinbase-sdk

    Index

    Classes

    User +coinbase/user | @coinbase/coinbase-sdk

    Index

    Classes

    \ No newline at end of file diff --git a/docs/modules/coinbase_utils.html b/docs/modules/coinbase_utils.html index 14ec07a6..5869418e 100644 --- a/docs/modules/coinbase_utils.html +++ b/docs/modules/coinbase_utils.html @@ -1,4 +1,4 @@ -coinbase/utils | @coinbase/coinbase-sdk

    Index

    Functions

    convertStringToHex +coinbase/utils | @coinbase/coinbase-sdk

    Index

    Functions

    convertStringToHex delay destinationToAddressHexString logApiResponse diff --git a/docs/modules/coinbase_wallet.html b/docs/modules/coinbase_wallet.html index 174144a3..56b25bfa 100644 --- a/docs/modules/coinbase_wallet.html +++ b/docs/modules/coinbase_wallet.html @@ -1,2 +1,2 @@ -coinbase/wallet | @coinbase/coinbase-sdk

    Index

    Classes

    Wallet +coinbase/wallet | @coinbase/coinbase-sdk

    Index

    Classes

    \ No newline at end of file diff --git a/docs/modules/index.html b/docs/modules/index.html new file mode 100644 index 00000000..ecee1e8c --- /dev/null +++ b/docs/modules/index.html @@ -0,0 +1,2 @@ +index | @coinbase/coinbase-sdk

    References

    References

    Re-exports Coinbase
    \ No newline at end of file diff --git a/docs/types/client_api.ServerSignerEventEvent.html b/docs/types/client_api.ServerSignerEventEvent.html new file mode 100644 index 00000000..6690efc1 --- /dev/null +++ b/docs/types/client_api.ServerSignerEventEvent.html @@ -0,0 +1 @@ +ServerSignerEventEvent | @coinbase/coinbase-sdk
    ServerSignerEventEvent: SeedCreationEvent | SignatureCreationEvent

    Export

    \ No newline at end of file diff --git a/docs/types/client_api.TransactionStatusEnum.html b/docs/types/client_api.TransactionStatusEnum.html new file mode 100644 index 00000000..c24b9602 --- /dev/null +++ b/docs/types/client_api.TransactionStatusEnum.html @@ -0,0 +1 @@ +TransactionStatusEnum | @coinbase/coinbase-sdk
    TransactionStatusEnum: typeof TransactionStatusEnum[keyof typeof TransactionStatusEnum]
    \ No newline at end of file diff --git a/docs/types/client_api.TransferStatusEnum.html b/docs/types/client_api.TransferStatusEnum.html index d7c55dda..a6ef235f 100644 --- a/docs/types/client_api.TransferStatusEnum.html +++ b/docs/types/client_api.TransferStatusEnum.html @@ -1 +1 @@ -TransferStatusEnum | @coinbase/coinbase-sdk
    TransferStatusEnum: typeof TransferStatusEnum[keyof typeof TransferStatusEnum]
    \ No newline at end of file +TransferStatusEnum | @coinbase/coinbase-sdk
    TransferStatusEnum: typeof TransferStatusEnum[keyof typeof TransferStatusEnum]
    \ No newline at end of file diff --git a/docs/types/client_api.WalletServerSignerStatusEnum.html b/docs/types/client_api.WalletServerSignerStatusEnum.html new file mode 100644 index 00000000..6522303f --- /dev/null +++ b/docs/types/client_api.WalletServerSignerStatusEnum.html @@ -0,0 +1 @@ +WalletServerSignerStatusEnum | @coinbase/coinbase-sdk
    WalletServerSignerStatusEnum: typeof WalletServerSignerStatusEnum[keyof typeof WalletServerSignerStatusEnum]
    \ No newline at end of file diff --git a/docs/types/coinbase_types.AddressAPIClient.html b/docs/types/coinbase_types.AddressAPIClient.html index 77b35a15..b9c61a11 100644 --- a/docs/types/coinbase_types.AddressAPIClient.html +++ b/docs/types/coinbase_types.AddressAPIClient.html @@ -1,30 +1,30 @@ AddressAPIClient | @coinbase/coinbase-sdk
    AddressAPIClient: {
        createAddress(walletId, createAddressRequest?, options?): AxiosPromise<Address>;
        getAddress(walletId, addressId, options?): AxiosPromise<Address>;
        getAddressBalance(walletId, addressId, assetId, options?): AxiosPromise<Balance>;
        listAddressBalances(walletId, addressId, page?, options?): AxiosPromise<AddressBalanceList>;
        listAddresses(walletId, limit?, page?, options?): AxiosPromise<AddressList>;
        requestFaucetFunds(walletId, addressId): Promise<{
            data: {
                transaction_hash: string;
            };
        }>;
    }

    AddressAPI client type definition.

    -

    Type declaration

    • createAddress:function
    • getAddress:function
      • Get address by onchain address.

        +

        Type declaration

        • createAddress:function
        • getAddress:function
          • Get address by onchain address.

            Parameters

            • walletId: string

              The ID of the wallet the address belongs to.

            • addressId: string

              The onchain address of the address that is being fetched.

            • Optional options: AxiosRequestConfig<any>

              Axios request options.

            Returns AxiosPromise<Address>

            Throws

            If the request fails.

            -
        • getAddressBalance:function
        • getAddressBalance:function
          • Get address balance

            Parameters

            • walletId: string

              The ID of the wallet to fetch the balance for.

            • addressId: string

              The onchain address of the address that is being fetched.

            • assetId: string

              The symbol of the asset to fetch the balance for.

            • Optional options: AxiosRequestConfig<any>

              Axios request options.

              -

            Returns AxiosPromise<Balance>

            Throws

        • listAddressBalances:function
          • Lists address balances

            +

        Returns AxiosPromise<Balance>

        Throws

    • listAddressBalances:function
      • Lists address balances

        Parameters

        • walletId: string

          The ID of the wallet to fetch the balances for.

        • addressId: string

          The onchain address of the address that is being fetched.

        • Optional page: string

          A cursor for pagination across multiple pages of results. Do not include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

        • Optional options: AxiosRequestConfig<any>

          Override http request option.

          -

        Returns AxiosPromise<AddressBalanceList>

        Throws

    • listAddresses:function
      • Lists addresses.

        +

    Returns AxiosPromise<AddressBalanceList>

    Throws

  • listAddresses:function
    • Lists addresses.

      Parameters

      • walletId: string

        The ID of the wallet the addresses belong to.

      • Optional limit: number

        The maximum number of addresses to return.

      • Optional page: string

        A cursor for pagination across multiple pages of results. Do not include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

      • Optional options: AxiosRequestConfig<any>

        Override http request option.

      Returns AxiosPromise<AddressList>

      Throws

      If the request fails.

      -
  • requestFaucetFunds:function
    • Requests faucet funds for the address.

      +
  • requestFaucetFunds:function
    • Requests faucet funds for the address.

      Parameters

      • walletId: string

        The wallet ID.

      • addressId: string

        The address ID.

      Returns Promise<{
          data: {
              transaction_hash: string;
          };
      }>

      The transaction hash.

      Throws

      If the request fails.

      -
  • \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/coinbase_types.Amount.html b/docs/types/coinbase_types.Amount.html index 88f08b4a..67b5aed6 100644 --- a/docs/types/coinbase_types.Amount.html +++ b/docs/types/coinbase_types.Amount.html @@ -1,2 +1,2 @@ Amount | @coinbase/coinbase-sdk
    Amount: number | bigint | Decimal

    Amount type definition.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/coinbase_types.ApiClients.html b/docs/types/coinbase_types.ApiClients.html index dccb0a04..947bb07e 100644 --- a/docs/types/coinbase_types.ApiClients.html +++ b/docs/types/coinbase_types.ApiClients.html @@ -1,3 +1,3 @@ -ApiClients | @coinbase/coinbase-sdk
    ApiClients: {
        address?: AddressAPIClient;
        baseSepoliaProvider?: ethers.Provider;
        transfer?: TransferAPIClient;
        user?: UserAPIClient;
        wallet?: WalletAPIClient;
    }

    API clients type definition for the Coinbase SDK. +ApiClients | @coinbase/coinbase-sdk

    ApiClients: {
        address?: AddressAPIClient;
        transfer?: TransferAPIClient;
        user?: UserAPIClient;
        wallet?: WalletAPIClient;
    }

    API clients type definition for the Coinbase SDK. Represents the set of API clients available in the SDK.

    -

    Type declaration

    \ No newline at end of file +

    Type declaration

    \ No newline at end of file diff --git a/docs/types/coinbase_types.CoinbaseConfigureFromJsonOptions.html b/docs/types/coinbase_types.CoinbaseConfigureFromJsonOptions.html new file mode 100644 index 00000000..62e771c8 --- /dev/null +++ b/docs/types/coinbase_types.CoinbaseConfigureFromJsonOptions.html @@ -0,0 +1,6 @@ +CoinbaseConfigureFromJsonOptions | @coinbase/coinbase-sdk
    CoinbaseConfigureFromJsonOptions: {
        basePath?: string;
        debugging?: boolean;
        filePath: string;
        useServerSigner?: boolean;
    }

    CoinbaseConfigureFromJsonOptions type definition.

    +

    Type declaration

    • Optional basePath?: string

      The base path for the API.

      +
    • Optional debugging?: boolean

      If true, logs API requests and responses to the console.

      +
    • filePath: string

      The path to the JSON file containing the API key and private key.

      +
    • Optional useServerSigner?: boolean

      Whether to use a Server-Signer or not.

      +
    \ No newline at end of file diff --git a/docs/types/coinbase_types.CoinbaseOptions.html b/docs/types/coinbase_types.CoinbaseOptions.html new file mode 100644 index 00000000..cf050fa1 --- /dev/null +++ b/docs/types/coinbase_types.CoinbaseOptions.html @@ -0,0 +1,7 @@ +CoinbaseOptions | @coinbase/coinbase-sdk
    CoinbaseOptions: {
        apiKeyName?: string;
        basePath?: string;
        debugging?: boolean;
        privateKey?: string;
        useServerSigner?: boolean;
    }

    CoinbaseOptions type definition.

    +

    Type declaration

    • Optional apiKeyName?: string

      The API key name.

      +
    • Optional basePath?: string

      The base path for the API.

      +
    • Optional debugging?: boolean

      If true, logs API requests and responses to the console.

      +
    • Optional privateKey?: string

      The private key associated with the API key.

      +
    • Optional useServerSigner?: boolean

      Whether to use a Server-Signer or not.

      +
    \ No newline at end of file diff --git a/docs/types/coinbase_types.Destination.html b/docs/types/coinbase_types.Destination.html index 7d23903b..e3561210 100644 --- a/docs/types/coinbase_types.Destination.html +++ b/docs/types/coinbase_types.Destination.html @@ -1,2 +1,2 @@ Destination | @coinbase/coinbase-sdk
    Destination: string | Address | Wallet

    Destination type definition.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/coinbase_types.SeedData.html b/docs/types/coinbase_types.SeedData.html index 4c2a9c15..2be890d8 100644 --- a/docs/types/coinbase_types.SeedData.html +++ b/docs/types/coinbase_types.SeedData.html @@ -1,2 +1,2 @@ SeedData | @coinbase/coinbase-sdk
    SeedData: {
        authTag: string;
        encrypted: boolean;
        iv: string;
        seed: string;
    }

    The Seed Data type definition.

    -

    Type declaration

    • authTag: string
    • encrypted: boolean
    • iv: string
    • seed: string
    \ No newline at end of file +

    Type declaration

    • authTag: string
    • encrypted: boolean
    • iv: string
    • seed: string
    \ No newline at end of file diff --git a/docs/types/coinbase_types.TransferAPIClient.html b/docs/types/coinbase_types.TransferAPIClient.html index cd2d7d69..3e0cca79 100644 --- a/docs/types/coinbase_types.TransferAPIClient.html +++ b/docs/types/coinbase_types.TransferAPIClient.html @@ -9,7 +9,7 @@
  • A promise resolving to the Transfer model.
  • Throws

    If the request fails.

    -
  • createTransfer:function
  • createTransfer:function
    • Creates a Transfer.

      Parameters

      • walletId: string

        The ID of the wallet the address belongs to.

      • addressId: string

        The ID of the address the transfer belongs to.

      • createTransferRequest: CreateTransferRequest

        The request body.

        @@ -18,7 +18,7 @@
      • A promise resolving to the Transfer model.

      Throws

      If the request fails.

      -
  • getTransfer:function
  • getTransfer:function
    • Retrieves a Transfer.

      Parameters

      • walletId: string

        The ID of the wallet the address belongs to.

      • addressId: string

        The ID of the address the transfer belongs to.

      • transferId: string

        The ID of the transfer to retrieve.

        @@ -27,7 +27,7 @@
      • A promise resolving to the Transfer model.

      Throws

      If the request fails.

      -
  • listTransfers:function
  • listTransfers:function
    • Lists Transfers.

      Parameters

      • walletId: string

        The ID of the wallet the address belongs to.

      • addressId: string

        The ID of the address the transfers belong to.

      • Optional limit: number

        The maximum number of transfers to return.

        @@ -37,4 +37,4 @@
      • A promise resolving to the Transfer list.

      Throws

      If the request fails.

      -
  • \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/coinbase_types.UserAPIClient.html b/docs/types/coinbase_types.UserAPIClient.html index 61cc3aa1..5d50af4d 100644 --- a/docs/types/coinbase_types.UserAPIClient.html +++ b/docs/types/coinbase_types.UserAPIClient.html @@ -5,4 +5,4 @@
  • A promise resolvindg to the User model.
  • Throws

    If the request fails.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/coinbase_types.WalletAPIClient.html b/docs/types/coinbase_types.WalletAPIClient.html index fc5d9ffc..d8c49986 100644 --- a/docs/types/coinbase_types.WalletAPIClient.html +++ b/docs/types/coinbase_types.WalletAPIClient.html @@ -12,20 +12,20 @@
  • Optional options: RawAxiosRequestConfig

    Override http request option.

  • Returns AxiosPromise<Balance>

    Throws

    If the required parameter is not provided.

    Throws

    If the request fails.

    -
  • listWalletBalances:function
  • listWalletBalances:function
    • List the balances of all of the addresses in the wallet aggregated by asset.

      Parameters

      • walletId: string

        The ID of the wallet to fetch the balances for.

      • Optional options: RawAxiosRequestConfig

        Override http request option.

      Returns AxiosPromise<AddressBalanceList>

      Throws

      If the required parameter is not provided.

      Throws

      If the request fails.

      -
    • List the balances of all of the addresses in the wallet aggregated by asset.

      +
    • List the balances of all of the addresses in the wallet aggregated by asset.

      Parameters

      • walletId: string

        The ID of the wallet to fetch the balances for.

      • Optional options: RawAxiosRequestConfig

        Override http request option.

      Returns AxiosPromise<AddressBalanceList>

      Throws

      If the required parameter is not provided.

      Throws

      If the request fails.

      -
  • listWallets:function
  • listWallets:function
    • List wallets belonging to the user.

      Parameters

      • Optional limit: number

        A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

      • Optional page: string

        A cursor for pagination across multiple pages of results. Don&#39;t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.

      • Optional options: RawAxiosRequestConfig

        Override http request option.

      Returns AxiosPromise<WalletList>

      Throws

      If the request fails.

      Throws

      If the required parameter is not provided.

      -
  • \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/coinbase_types.WalletData.html b/docs/types/coinbase_types.WalletData.html index e38d9ac7..de480031 100644 --- a/docs/types/coinbase_types.WalletData.html +++ b/docs/types/coinbase_types.WalletData.html @@ -1,3 +1,3 @@ WalletData | @coinbase/coinbase-sdk
    WalletData: {
        seed: string;
        walletId: string;
    }

    The Wallet Data type definition. The data required to recreate a Wallet.

    -

    Type declaration

    • seed: string
    • walletId: string
    \ No newline at end of file +

    Type declaration

    • seed: string
    • walletId: string
    \ No newline at end of file diff --git a/docs/variables/client_api.TransactionStatusEnum-1.html b/docs/variables/client_api.TransactionStatusEnum-1.html new file mode 100644 index 00000000..0ad44ff2 --- /dev/null +++ b/docs/variables/client_api.TransactionStatusEnum-1.html @@ -0,0 +1 @@ +TransactionStatusEnum | @coinbase/coinbase-sdk

    Variable TransactionStatusEnumConst

    TransactionStatusEnum: {
        Broadcast: "broadcast";
        Complete: "complete";
        Failed: "failed";
        Pending: "pending";
    } = ...

    Type declaration

    • Readonly Broadcast: "broadcast"
    • Readonly Complete: "complete"
    • Readonly Failed: "failed"
    • Readonly Pending: "pending"
    \ No newline at end of file diff --git a/docs/variables/client_api.TransferStatusEnum-1.html b/docs/variables/client_api.TransferStatusEnum-1.html index a9216403..9a906b59 100644 --- a/docs/variables/client_api.TransferStatusEnum-1.html +++ b/docs/variables/client_api.TransferStatusEnum-1.html @@ -1 +1 @@ -TransferStatusEnum | @coinbase/coinbase-sdk
    TransferStatusEnum: {
        Broadcast: "broadcast";
        Complete: "complete";
        Failed: "failed";
        Pending: "pending";
    } = ...

    Type declaration

    • Readonly Broadcast: "broadcast"
    • Readonly Complete: "complete"
    • Readonly Failed: "failed"
    • Readonly Pending: "pending"
    \ No newline at end of file +TransferStatusEnum | @coinbase/coinbase-sdk
    TransferStatusEnum: {
        Broadcast: "broadcast";
        Complete: "complete";
        Failed: "failed";
        Pending: "pending";
    } = ...

    Type declaration

    • Readonly Broadcast: "broadcast"
    • Readonly Complete: "complete"
    • Readonly Failed: "failed"
    • Readonly Pending: "pending"
    \ No newline at end of file diff --git a/docs/variables/client_api.WalletServerSignerStatusEnum-1.html b/docs/variables/client_api.WalletServerSignerStatusEnum-1.html new file mode 100644 index 00000000..257d417e --- /dev/null +++ b/docs/variables/client_api.WalletServerSignerStatusEnum-1.html @@ -0,0 +1 @@ +WalletServerSignerStatusEnum | @coinbase/coinbase-sdk

    Variable WalletServerSignerStatusEnumConst

    WalletServerSignerStatusEnum: {
        ActiveSeed: "active_seed";
        PendingSeedCreation: "pending_seed_creation";
    } = ...

    Type declaration

    • Readonly ActiveSeed: "active_seed"
    • Readonly PendingSeedCreation: "pending_seed_creation"
    \ No newline at end of file diff --git a/docs/variables/client_base.BASE_PATH.html b/docs/variables/client_base.BASE_PATH.html index 0548cb7e..3609e83d 100644 --- a/docs/variables/client_base.BASE_PATH.html +++ b/docs/variables/client_base.BASE_PATH.html @@ -1 +1 @@ -BASE_PATH | @coinbase/coinbase-sdk
    BASE_PATH: string = ...
    \ No newline at end of file +BASE_PATH | @coinbase/coinbase-sdk
    BASE_PATH: string = ...
    \ No newline at end of file diff --git a/docs/variables/client_base.COLLECTION_FORMATS.html b/docs/variables/client_base.COLLECTION_FORMATS.html index 8acc148f..809a5679 100644 --- a/docs/variables/client_base.COLLECTION_FORMATS.html +++ b/docs/variables/client_base.COLLECTION_FORMATS.html @@ -1 +1 @@ -COLLECTION_FORMATS | @coinbase/coinbase-sdk
    COLLECTION_FORMATS: {
        csv: string;
        pipes: string;
        ssv: string;
        tsv: string;
    } = ...

    Type declaration

    • csv: string
    • pipes: string
    • ssv: string
    • tsv: string

    Export

    \ No newline at end of file +COLLECTION_FORMATS | @coinbase/coinbase-sdk
    COLLECTION_FORMATS: {
        csv: string;
        pipes: string;
        ssv: string;
        tsv: string;
    } = ...

    Type declaration

    • csv: string
    • pipes: string
    • ssv: string
    • tsv: string

    Export

    \ No newline at end of file diff --git a/docs/variables/client_base.operationServerMap.html b/docs/variables/client_base.operationServerMap.html index 26c4179b..63f1c9b9 100644 --- a/docs/variables/client_base.operationServerMap.html +++ b/docs/variables/client_base.operationServerMap.html @@ -1 +1 @@ -operationServerMap | @coinbase/coinbase-sdk
    operationServerMap: ServerMap = {}

    Export

    \ No newline at end of file +operationServerMap | @coinbase/coinbase-sdk
    operationServerMap: ServerMap = {}

    Export

    \ No newline at end of file diff --git a/docs/variables/client_common.DUMMY_BASE_URL.html b/docs/variables/client_common.DUMMY_BASE_URL.html index af6946ec..55864616 100644 --- a/docs/variables/client_common.DUMMY_BASE_URL.html +++ b/docs/variables/client_common.DUMMY_BASE_URL.html @@ -1 +1 @@ -DUMMY_BASE_URL | @coinbase/coinbase-sdk
    DUMMY_BASE_URL: "https://example.com" = "https://example.com"

    Export

    \ No newline at end of file +DUMMY_BASE_URL | @coinbase/coinbase-sdk
    DUMMY_BASE_URL: "https://example.com" = "https://example.com"

    Export

    \ No newline at end of file diff --git a/docs/variables/coinbase_constants.ATOMIC_UNITS_PER_USDC.html b/docs/variables/coinbase_constants.ATOMIC_UNITS_PER_USDC.html index 4bd4272f..a396ad4f 100644 --- a/docs/variables/coinbase_constants.ATOMIC_UNITS_PER_USDC.html +++ b/docs/variables/coinbase_constants.ATOMIC_UNITS_PER_USDC.html @@ -1 +1 @@ -ATOMIC_UNITS_PER_USDC | @coinbase/coinbase-sdk
    ATOMIC_UNITS_PER_USDC: Decimal = ...
    \ No newline at end of file +ATOMIC_UNITS_PER_USDC | @coinbase/coinbase-sdk
    ATOMIC_UNITS_PER_USDC: Decimal = ...
    \ No newline at end of file diff --git a/docs/variables/coinbase_constants.GWEI_PER_ETHER.html b/docs/variables/coinbase_constants.GWEI_PER_ETHER.html index c92db97a..ad5f39ef 100644 --- a/docs/variables/coinbase_constants.GWEI_PER_ETHER.html +++ b/docs/variables/coinbase_constants.GWEI_PER_ETHER.html @@ -1 +1 @@ -GWEI_PER_ETHER | @coinbase/coinbase-sdk
    GWEI_PER_ETHER: Decimal = ...
    \ No newline at end of file +GWEI_PER_ETHER | @coinbase/coinbase-sdk
    GWEI_PER_ETHER: Decimal = ...
    \ No newline at end of file diff --git a/docs/variables/coinbase_constants.WEI_PER_ETHER.html b/docs/variables/coinbase_constants.WEI_PER_ETHER.html index 94f0abc6..7d750a4f 100644 --- a/docs/variables/coinbase_constants.WEI_PER_ETHER.html +++ b/docs/variables/coinbase_constants.WEI_PER_ETHER.html @@ -1 +1 @@ -WEI_PER_ETHER | @coinbase/coinbase-sdk
    WEI_PER_ETHER: Decimal = ...
    \ No newline at end of file +WEI_PER_ETHER | @coinbase/coinbase-sdk
    WEI_PER_ETHER: Decimal = ...
    \ No newline at end of file diff --git a/docs/variables/coinbase_constants.WEI_PER_GWEI.html b/docs/variables/coinbase_constants.WEI_PER_GWEI.html index b972a211..37f35644 100644 --- a/docs/variables/coinbase_constants.WEI_PER_GWEI.html +++ b/docs/variables/coinbase_constants.WEI_PER_GWEI.html @@ -1 +1 @@ -WEI_PER_GWEI | @coinbase/coinbase-sdk
    WEI_PER_GWEI: Decimal = ...
    \ No newline at end of file +WEI_PER_GWEI | @coinbase/coinbase-sdk
    WEI_PER_GWEI: Decimal = ...
    \ No newline at end of file diff --git a/docs/variables/coinbase_tests_utils.VALID_ADDRESS_BALANCE_LIST.html b/docs/variables/coinbase_tests_utils.VALID_ADDRESS_BALANCE_LIST.html index 3722376d..4b2ccc43 100644 --- a/docs/variables/coinbase_tests_utils.VALID_ADDRESS_BALANCE_LIST.html +++ b/docs/variables/coinbase_tests_utils.VALID_ADDRESS_BALANCE_LIST.html @@ -1 +1 @@ -VALID_ADDRESS_BALANCE_LIST | @coinbase/coinbase-sdk
    VALID_ADDRESS_BALANCE_LIST: AddressBalanceList = ...
    \ No newline at end of file +VALID_ADDRESS_BALANCE_LIST | @coinbase/coinbase-sdk
    VALID_ADDRESS_BALANCE_LIST: AddressBalanceList = ...
    \ No newline at end of file diff --git a/docs/variables/coinbase_tests_utils.VALID_ADDRESS_MODEL.html b/docs/variables/coinbase_tests_utils.VALID_ADDRESS_MODEL.html index 2571c860..ce8d6e0c 100644 --- a/docs/variables/coinbase_tests_utils.VALID_ADDRESS_MODEL.html +++ b/docs/variables/coinbase_tests_utils.VALID_ADDRESS_MODEL.html @@ -1 +1 @@ -VALID_ADDRESS_MODEL | @coinbase/coinbase-sdk
    VALID_ADDRESS_MODEL: Address = ...
    \ No newline at end of file +VALID_ADDRESS_MODEL | @coinbase/coinbase-sdk
    VALID_ADDRESS_MODEL: Address = ...
    \ No newline at end of file diff --git a/docs/variables/coinbase_tests_utils.VALID_BALANCE_MODEL.html b/docs/variables/coinbase_tests_utils.VALID_BALANCE_MODEL.html index bc3d72bb..648f2c72 100644 --- a/docs/variables/coinbase_tests_utils.VALID_BALANCE_MODEL.html +++ b/docs/variables/coinbase_tests_utils.VALID_BALANCE_MODEL.html @@ -1 +1 @@ -VALID_BALANCE_MODEL | @coinbase/coinbase-sdk
    VALID_BALANCE_MODEL: Balance = ...
    \ No newline at end of file +VALID_BALANCE_MODEL | @coinbase/coinbase-sdk
    VALID_BALANCE_MODEL: Balance = ...
    \ No newline at end of file diff --git a/docs/variables/coinbase_tests_utils.VALID_TRANSFER_MODEL.html b/docs/variables/coinbase_tests_utils.VALID_TRANSFER_MODEL.html index 23d60160..bd8f53fd 100644 --- a/docs/variables/coinbase_tests_utils.VALID_TRANSFER_MODEL.html +++ b/docs/variables/coinbase_tests_utils.VALID_TRANSFER_MODEL.html @@ -1 +1 @@ -VALID_TRANSFER_MODEL | @coinbase/coinbase-sdk
    VALID_TRANSFER_MODEL: Transfer = ...
    \ No newline at end of file +VALID_TRANSFER_MODEL | @coinbase/coinbase-sdk
    VALID_TRANSFER_MODEL: Transfer = ...
    \ No newline at end of file diff --git a/docs/variables/coinbase_tests_utils.VALID_WALLET_MODEL.html b/docs/variables/coinbase_tests_utils.VALID_WALLET_MODEL.html index 48939cb9..0d0e3f0a 100644 --- a/docs/variables/coinbase_tests_utils.VALID_WALLET_MODEL.html +++ b/docs/variables/coinbase_tests_utils.VALID_WALLET_MODEL.html @@ -1 +1 @@ -VALID_WALLET_MODEL | @coinbase/coinbase-sdk
    VALID_WALLET_MODEL: Wallet = ...
    \ No newline at end of file +VALID_WALLET_MODEL | @coinbase/coinbase-sdk
    VALID_WALLET_MODEL: Wallet = ...
    \ No newline at end of file diff --git a/docs/variables/coinbase_tests_utils.addressesApiMock.html b/docs/variables/coinbase_tests_utils.addressesApiMock.html index 8e373c3e..c0dcee05 100644 --- a/docs/variables/coinbase_tests_utils.addressesApiMock.html +++ b/docs/variables/coinbase_tests_utils.addressesApiMock.html @@ -1 +1 @@ -addressesApiMock | @coinbase/coinbase-sdk
    addressesApiMock: {
        createAddress: Mock<any, any, any>;
        getAddress: Mock<any, any, any>;
        getAddressBalance: Mock<any, any, any>;
        listAddressBalances: Mock<any, any, any>;
        listAddresses: Mock<any, any, any>;
        requestFaucetFunds: Mock<any, any, any>;
    } = ...

    Type declaration

    • createAddress: Mock<any, any, any>
    • getAddress: Mock<any, any, any>
    • getAddressBalance: Mock<any, any, any>
    • listAddressBalances: Mock<any, any, any>
    • listAddresses: Mock<any, any, any>
    • requestFaucetFunds: Mock<any, any, any>
    \ No newline at end of file +addressesApiMock | @coinbase/coinbase-sdk
    addressesApiMock: {
        createAddress: Mock<any, any, any>;
        getAddress: Mock<any, any, any>;
        getAddressBalance: Mock<any, any, any>;
        listAddressBalances: Mock<any, any, any>;
        listAddresses: Mock<any, any, any>;
        requestFaucetFunds: Mock<any, any, any>;
    } = ...

    Type declaration

    • createAddress: Mock<any, any, any>
    • getAddress: Mock<any, any, any>
    • getAddressBalance: Mock<any, any, any>
    • listAddressBalances: Mock<any, any, any>
    • listAddresses: Mock<any, any, any>
    • requestFaucetFunds: Mock<any, any, any>
    \ No newline at end of file diff --git a/docs/variables/coinbase_tests_utils.transferId.html b/docs/variables/coinbase_tests_utils.transferId.html index e0a96b44..7f9a5e0d 100644 --- a/docs/variables/coinbase_tests_utils.transferId.html +++ b/docs/variables/coinbase_tests_utils.transferId.html @@ -1 +1 @@ -transferId | @coinbase/coinbase-sdk
    transferId: `${string}-${string}-${string}-${string}-${string}` = ...
    \ No newline at end of file +transferId | @coinbase/coinbase-sdk
    transferId: `${string}-${string}-${string}-${string}-${string}` = ...
    \ No newline at end of file diff --git a/docs/variables/coinbase_tests_utils.transfersApiMock.html b/docs/variables/coinbase_tests_utils.transfersApiMock.html index 04ec2a62..82f486c0 100644 --- a/docs/variables/coinbase_tests_utils.transfersApiMock.html +++ b/docs/variables/coinbase_tests_utils.transfersApiMock.html @@ -1 +1 @@ -transfersApiMock | @coinbase/coinbase-sdk
    transfersApiMock: {
        broadcastTransfer: Mock<any, any, any>;
        createTransfer: Mock<any, any, any>;
        getTransfer: Mock<any, any, any>;
        listTransfers: Mock<any, any, any>;
    } = ...

    Type declaration

    • broadcastTransfer: Mock<any, any, any>
    • createTransfer: Mock<any, any, any>
    • getTransfer: Mock<any, any, any>
    • listTransfers: Mock<any, any, any>
    \ No newline at end of file +transfersApiMock | @coinbase/coinbase-sdk
    transfersApiMock: {
        broadcastTransfer: Mock<any, any, any>;
        createTransfer: Mock<any, any, any>;
        getTransfer: Mock<any, any, any>;
        listTransfers: Mock<any, any, any>;
    } = ...

    Type declaration

    • broadcastTransfer: Mock<any, any, any>
    • createTransfer: Mock<any, any, any>
    • getTransfer: Mock<any, any, any>
    • listTransfers: Mock<any, any, any>
    \ No newline at end of file diff --git a/docs/variables/coinbase_tests_utils.usersApiMock.html b/docs/variables/coinbase_tests_utils.usersApiMock.html index 18ec8e08..b244cc2b 100644 --- a/docs/variables/coinbase_tests_utils.usersApiMock.html +++ b/docs/variables/coinbase_tests_utils.usersApiMock.html @@ -1 +1 @@ -usersApiMock | @coinbase/coinbase-sdk
    usersApiMock: {
        getCurrentUser: Mock<any, any, any>;
    } = ...

    Type declaration

    • getCurrentUser: Mock<any, any, any>
    \ No newline at end of file +usersApiMock | @coinbase/coinbase-sdk
    usersApiMock: {
        getCurrentUser: Mock<any, any, any>;
    } = ...

    Type declaration

    • getCurrentUser: Mock<any, any, any>
    \ No newline at end of file diff --git a/docs/variables/coinbase_tests_utils.walletId.html b/docs/variables/coinbase_tests_utils.walletId.html index 8ccf512f..af596a2f 100644 --- a/docs/variables/coinbase_tests_utils.walletId.html +++ b/docs/variables/coinbase_tests_utils.walletId.html @@ -1 +1 @@ -walletId | @coinbase/coinbase-sdk
    walletId: `${string}-${string}-${string}-${string}-${string}` = ...
    \ No newline at end of file +walletId | @coinbase/coinbase-sdk
    walletId: `${string}-${string}-${string}-${string}-${string}` = ...
    \ No newline at end of file diff --git a/docs/variables/coinbase_tests_utils.walletsApiMock.html b/docs/variables/coinbase_tests_utils.walletsApiMock.html index 6dc47c7a..cd36729f 100644 --- a/docs/variables/coinbase_tests_utils.walletsApiMock.html +++ b/docs/variables/coinbase_tests_utils.walletsApiMock.html @@ -1 +1 @@ -walletsApiMock | @coinbase/coinbase-sdk
    walletsApiMock: {
        createWallet: Mock<any, any, any>;
        getWallet: Mock<any, any, any>;
        getWalletBalance: Mock<any, any, any>;
        listWalletBalances: Mock<any, any, any>;
        listWallets: Mock<any, any, any>;
    } = ...

    Type declaration

    • createWallet: Mock<any, any, any>
    • getWallet: Mock<any, any, any>
    • getWalletBalance: Mock<any, any, any>
    • listWalletBalances: Mock<any, any, any>
    • listWallets: Mock<any, any, any>
    \ No newline at end of file +walletsApiMock | @coinbase/coinbase-sdk
    walletsApiMock: {
        createWallet: Mock<any, any, any>;
        getWallet: Mock<any, any, any>;
        getWalletBalance: Mock<any, any, any>;
        listWalletBalances: Mock<any, any, any>;
        listWallets: Mock<any, any, any>;
    } = ...

    Type declaration

    • createWallet: Mock<any, any, any>
    • getWallet: Mock<any, any, any>
    • getWalletBalance: Mock<any, any, any>
    • listWalletBalances: Mock<any, any, any>
    • listWallets: Mock<any, any, any>
    \ No newline at end of file diff --git a/package.json b/package.json index cc916826..68e87a2e 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "license": "ISC", "description": "Coinbase Platform SDK", "repository": "https://github.com/coinbase/coinbase-sdk-nodejs", - "version": "0.0.4", + "version": "0.0.6", "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { @@ -13,7 +13,9 @@ "format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"", "format-check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\"", "check": "tsc --noEmit", - "test": "npx jest --no-cache", + "test": "npx jest --no-cache --testMatch=**/*_test.ts", + "test:dry-run": "npm install && npm ci && npm publish --dry-run", + "test:e2e": "npx jest --no-cache --testMatch=**/e2e.ts", "clean": "rm -rf dist/*", "build": "tsc", "prepack": "tsc", @@ -28,6 +30,7 @@ "bip32": "^4.0.0", "bip39": "^3.1.0", "decimal.js": "^10.4.3", + "dotenv": "^16.4.5", "ethers": "^6.12.1", "node-jose": "^2.2.0", "secp256k1": "^5.0.0" @@ -69,7 +72,6 @@ "text" ], "verbose": true, - "testRegex": ".test.ts$", "maxWorkers": 1 } } diff --git a/src/client/api.ts b/src/client/api.ts index 3986d439..93f5bc40 100644 --- a/src/client/api.ts +++ b/src/client/api.ts @@ -176,6 +176,19 @@ export interface Balance { */ asset: Asset; } +/** + * + * @export + * @interface BroadcastTradeRequest + */ +export interface BroadcastTradeRequest { + /** + * The hex-encoded signed payload of the trade + * @type {string} + * @memberof BroadcastTradeRequest + */ + signed_payload: string; +} /** * * @export @@ -200,13 +213,57 @@ export interface CreateAddressRequest { * @type {string} * @memberof CreateAddressRequest */ - public_key: string; + public_key?: string; /** * An attestation signed by the private key that is associated with the wallet. The attestation will be a hex-encoded signature of a json payload with fields `wallet_id` and `public_key`, signed by the private key associated with the public_key set in the request. * @type {string} * @memberof CreateAddressRequest */ - attestation: string; + attestation?: string; +} +/** + * + * @export + * @interface CreateServerSignerRequest + */ +export interface CreateServerSignerRequest { + /** + * The ID of the server signer + * @type {string} + * @memberof CreateServerSignerRequest + */ + server_signer_id: string; + /** + * The enrollment data of the server signer. This will be the base64 encoded server-signer-id. + * @type {string} + * @memberof CreateServerSignerRequest + */ + enrollment_data: string; +} +/** + * + * @export + * @interface CreateTradeRequest + */ +export interface CreateTradeRequest { + /** + * The amount to trade + * @type {string} + * @memberof CreateTradeRequest + */ + amount: string; + /** + * The ID of the asset to trade + * @type {string} + * @memberof CreateTradeRequest + */ + from_asset_id: string; + /** + * The ID of the asset to receive from the trade + * @type {string} + * @memberof CreateTradeRequest + */ + to_asset_id: string; } /** * @@ -247,10 +304,29 @@ export interface CreateTransferRequest { export interface CreateWalletRequest { /** * - * @type {Wallet} + * @type {CreateWalletRequestWallet} * @memberof CreateWalletRequest */ - wallet: Wallet; + wallet: CreateWalletRequestWallet; +} +/** + * Parameters for configuring a wallet + * @export + * @interface CreateWalletRequestWallet + */ +export interface CreateWalletRequestWallet { + /** + * The ID of the blockchain network + * @type {string} + * @memberof CreateWalletRequestWallet + */ + network_id: string; + /** + * Whether the wallet should use the project\'s server signer or if the addresses in the wallets will belong to a private key the developer manages. Defaults to false. + * @type {boolean} + * @memberof CreateWalletRequestWallet + */ + use_server_signer?: boolean; } /** * @@ -285,237 +361,1457 @@ export interface ModelError { message: string; } /** - * A transfer of an asset from one address to another + * An event representing a seed creation. * @export - * @interface Transfer + * @interface SeedCreationEvent */ -export interface Transfer { - /** - * The ID of the blockchain network - * @type {string} - * @memberof Transfer - */ - network_id: string; +export interface SeedCreationEvent { /** - * The ID of the wallet that owns the from address + * The ID of the wallet that the server-signer should create the seed for * @type {string} - * @memberof Transfer + * @memberof SeedCreationEvent */ wallet_id: string; /** - * The onchain address of the sender + * The ID of the user that the wallet belongs to * @type {string} - * @memberof Transfer + * @memberof SeedCreationEvent */ - address_id: string; + wallet_user_id: string; +} +/** + * The result to a SeedCreationEvent. + * @export + * @interface SeedCreationEventResult + */ +export interface SeedCreationEventResult { /** - * The onchain address of the recipient + * The ID of the wallet that the seed was created for * @type {string} - * @memberof Transfer + * @memberof SeedCreationEventResult */ - destination: string; + wallet_id: string; /** - * The amount in the atomic units of the asset + * The ID of the user that the wallet belongs to * @type {string} - * @memberof Transfer + * @memberof SeedCreationEventResult */ - amount: string; + wallet_user_id: string; /** - * The ID of the asset being transferred + * The extended public key for the first master key derived from seed. * @type {string} - * @memberof Transfer + * @memberof SeedCreationEventResult */ - asset_id: string; + extended_public_key: string; /** - * The ID of the transfer + * The ID of the seed in Server-Signer used to generate the extended public key. * @type {string} - * @memberof Transfer + * @memberof SeedCreationEventResult */ - transfer_id: string; + seed_id: string; +} +/** + * A Server-Signer assigned to sign transactions in a wallet. + * @export + * @interface ServerSigner + */ +export interface ServerSigner { /** - * The unsigned payload of the transfer. This is the payload that needs to be signed by the sender. + * The ID of the server-signer * @type {string} - * @memberof Transfer + * @memberof ServerSigner */ - unsigned_payload: string; + server_signer_id: string; /** - * The signed payload of the transfer. This is the payload that has been signed by the sender. - * @type {string} - * @memberof Transfer + * The IDs of the wallets that the server-signer can sign for + * @type {Array} + * @memberof ServerSigner */ - signed_payload?: string; + wallets?: Array; +} +/** + * An event that is waiting to be processed by a Server-Signer. + * @export + * @interface ServerSignerEvent + */ +export interface ServerSignerEvent { /** - * The hash of the transfer transaction + * The ID of the server-signer that the event is for * @type {string} - * @memberof Transfer + * @memberof ServerSignerEvent */ - transaction_hash?: string; + server_signer_id: string; /** - * The status of the transfer - * @type {string} - * @memberof Transfer + * + * @type {ServerSignerEventEvent} + * @memberof ServerSignerEvent */ - status: TransferStatusEnum; + event: ServerSignerEventEvent; } - -export const TransferStatusEnum = { - Pending: "pending", - Broadcast: "broadcast", - Complete: "complete", - Failed: "failed", -} as const; - -export type TransferStatusEnum = (typeof TransferStatusEnum)[keyof typeof TransferStatusEnum]; +/** + * @type ServerSignerEventEvent + * @export + */ +export type ServerSignerEventEvent = SeedCreationEvent | SignatureCreationEvent; /** * * @export - * @interface TransferList + * @interface ServerSignerEventList */ -export interface TransferList { +export interface ServerSignerEventList { /** * - * @type {Array} - * @memberof TransferList + * @type {Array} + * @memberof ServerSignerEventList */ - data: Array; + data: Array; /** * True if this list has another page of items after this one that can be fetched. * @type {boolean} - * @memberof TransferList + * @memberof ServerSignerEventList */ has_more: boolean; /** * The page token to be used to fetch the next page. * @type {string} - * @memberof TransferList + * @memberof ServerSignerEventList */ next_page: string; /** - * The total number of transfers for the address in the wallet. + * The total number of events for the server signer. * @type {number} - * @memberof TransferList + * @memberof ServerSignerEventList */ total_count: number; } /** - * + * An event representing a signature creation. * @export - * @interface User + * @interface SignatureCreationEvent */ -export interface User { +export interface SignatureCreationEvent { /** - * The ID of the user + * The ID of the seed that the server-signer should create the signature for * @type {string} - * @memberof User + * @memberof SignatureCreationEvent */ - id: string; + seed_id: string; + /** + * The ID of the wallet the signature is for + * @type {string} + * @memberof SignatureCreationEvent + */ + wallet_id: string; + /** + * The ID of the user that the wallet belongs to + * @type {string} + * @memberof SignatureCreationEvent + */ + wallet_user_id: string; + /** + * The ID of the address the transfer belongs to + * @type {string} + * @memberof SignatureCreationEvent + */ + address_id: string; + /** + * The index of the address that the server-signer should sign with + * @type {number} + * @memberof SignatureCreationEvent + */ + address_index: number; + /** + * The payload that the server-signer should sign + * @type {string} + * @memberof SignatureCreationEvent + */ + signing_payload: string; /** * + * @type {TransactionType} + * @memberof SignatureCreationEvent + */ + transaction_type: TransactionType; + /** + * The ID of the transaction that the server-signer should sign * @type {string} - * @memberof User + * @memberof SignatureCreationEvent */ - display_name?: string; + transaction_id: string; } + /** - * + * The result to a SignatureCreationEvent. * @export - * @interface Wallet + * @interface SignatureCreationEventResult */ -export interface Wallet { +export interface SignatureCreationEventResult { /** - * The server-assigned ID for the wallet. + * The ID of the wallet that the event was created for. * @type {string} - * @memberof Wallet + * @memberof SignatureCreationEventResult + */ + wallet_id: string; + /** + * The ID of the user that the wallet belongs to + * @type {string} + * @memberof SignatureCreationEventResult */ - id?: string; + wallet_user_id: string; + /** + * The ID of the address the transfer belongs to + * @type {string} + * @memberof SignatureCreationEventResult + */ + address_id: string; + /** + * + * @type {TransactionType} + * @memberof SignatureCreationEventResult + */ + transaction_type: TransactionType; + /** + * The ID of the transaction that the Server-Signer has signed for + * @type {string} + * @memberof SignatureCreationEventResult + */ + transaction_id: string; + /** + * The signature created by the server-signer. + * @type {string} + * @memberof SignatureCreationEventResult + */ + signature: string; +} + +/** + * A trade of an asset to another asset + * @export + * @interface Trade + */ +export interface Trade { /** * The ID of the blockchain network * @type {string} - * @memberof Wallet + * @memberof Trade */ network_id: string; + /** + * The ID of the wallet that owns the from address + * @type {string} + * @memberof Trade + */ + wallet_id: string; + /** + * The onchain address of the sender + * @type {string} + * @memberof Trade + */ + address_id: string; + /** + * The ID of the trade + * @type {string} + * @memberof Trade + */ + trade_id: string; + /** + * The amount of the from asset to be traded (in atomic units of the from asset) + * @type {string} + * @memberof Trade + */ + from_amount: string; /** * - * @type {Address} - * @memberof Wallet + * @type {Asset} + * @memberof Trade */ - default_address?: Address; + from_asset: Asset; + /** + * The amount of the to asset that will be received (in atomic units of the to asset) + * @type {string} + * @memberof Trade + */ + to_amount: string; + /** + * + * @type {Asset} + * @memberof Trade + */ + to_asset: Asset; + /** + * + * @type {Transaction} + * @memberof Trade + */ + transaction: Transaction; } /** - * Paginated list of wallets + * * @export - * @interface WalletList + * @interface TradeList */ -export interface WalletList { +export interface TradeList { /** * - * @type {Array} - * @memberof WalletList + * @type {Array} + * @memberof TradeList */ - data: Array; + data: Array; /** * True if this list has another page of items after this one that can be fetched. * @type {boolean} - * @memberof WalletList + * @memberof TradeList */ has_more: boolean; /** * The page token to be used to fetch the next page. * @type {string} - * @memberof WalletList + * @memberof TradeList */ next_page: string; /** - * The total number of wallets + * The total number of trades for the address in the wallet. * @type {number} - * @memberof WalletList + * @memberof TradeList */ total_count: number; } - /** - * AddressesApi - axios parameter creator + * An onchain transaction. * @export + * @interface Transaction */ -export const AddressesApiAxiosParamCreator = function (configuration?: Configuration) { - return { - /** - * Create a new address scoped to the wallet. - * @summary Create a new address - * @param {string} walletId The ID of the wallet to create the address in. - * @param {CreateAddressRequest} [createAddressRequest] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - createAddress: async ( - walletId: string, - createAddressRequest?: CreateAddressRequest, - options: RawAxiosRequestConfig = {}, - ): Promise => { - // verify required parameter 'walletId' is not null or undefined - assertParamExists("createAddress", "walletId", walletId); - const localVarPath = `/v1/wallets/{wallet_id}/addresses`.replace( - `{${"wallet_id"}}`, - encodeURIComponent(String(walletId)), - ); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - - const localVarRequestOptions = { - method: "POST", - ...baseOptions, - ...options, - }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - localVarHeaderParameter["Content-Type"] = "application/json"; - +export interface Transaction { + /** + * The ID of the blockchain network + * @type {string} + * @memberof Transaction + */ + network_id: string; + /** + * The onchain address of the sender + * @type {string} + * @memberof Transaction + */ + from_address_id: string; + /** + * The unsigned payload of the transaction. This is the payload that needs to be signed by the sender. + * @type {string} + * @memberof Transaction + */ + unsigned_payload: string; + /** + * The signed payload of the transaction. This is the payload that has been signed by the sender. + * @type {string} + * @memberof Transaction + */ + signed_payload?: string; + /** + * The hash of the transaction + * @type {string} + * @memberof Transaction + */ + transaction_hash?: string; + /** + * The status of the transaction + * @type {string} + * @memberof Transaction + */ + status: TransactionStatusEnum; +} + +export const TransactionStatusEnum = { + Pending: "pending", + Broadcast: "broadcast", + Complete: "complete", + Failed: "failed", +} as const; + +export type TransactionStatusEnum = + (typeof TransactionStatusEnum)[keyof typeof TransactionStatusEnum]; + +/** + * + * @export + * @enum {string} + */ + +export const TransactionType = { + Transfer: "transfer", +} as const; + +export type TransactionType = (typeof TransactionType)[keyof typeof TransactionType]; + +/** + * A transfer of an asset from one address to another + * @export + * @interface Transfer + */ +export interface Transfer { + /** + * The ID of the blockchain network + * @type {string} + * @memberof Transfer + */ + network_id: string; + /** + * The ID of the wallet that owns the from address + * @type {string} + * @memberof Transfer + */ + wallet_id: string; + /** + * The onchain address of the sender + * @type {string} + * @memberof Transfer + */ + address_id: string; + /** + * The onchain address of the recipient + * @type {string} + * @memberof Transfer + */ + destination: string; + /** + * The amount in the atomic units of the asset + * @type {string} + * @memberof Transfer + */ + amount: string; + /** + * The ID of the asset being transferred + * @type {string} + * @memberof Transfer + */ + asset_id: string; + /** + * The ID of the transfer + * @type {string} + * @memberof Transfer + */ + transfer_id: string; + /** + * The unsigned payload of the transfer. This is the payload that needs to be signed by the sender. + * @type {string} + * @memberof Transfer + */ + unsigned_payload: string; + /** + * The signed payload of the transfer. This is the payload that has been signed by the sender. + * @type {string} + * @memberof Transfer + */ + signed_payload?: string; + /** + * The hash of the transfer transaction + * @type {string} + * @memberof Transfer + */ + transaction_hash?: string; + /** + * The status of the transfer + * @type {string} + * @memberof Transfer + */ + status: TransferStatusEnum; +} + +export const TransferStatusEnum = { + Pending: "pending", + Broadcast: "broadcast", + Complete: "complete", + Failed: "failed", +} as const; + +export type TransferStatusEnum = (typeof TransferStatusEnum)[keyof typeof TransferStatusEnum]; + +/** + * + * @export + * @interface TransferList + */ +export interface TransferList { + /** + * + * @type {Array} + * @memberof TransferList + */ + data: Array; + /** + * True if this list has another page of items after this one that can be fetched. + * @type {boolean} + * @memberof TransferList + */ + has_more: boolean; + /** + * The page token to be used to fetch the next page. + * @type {string} + * @memberof TransferList + */ + next_page: string; + /** + * The total number of transfers for the address in the wallet. + * @type {number} + * @memberof TransferList + */ + total_count: number; +} +/** + * + * @export + * @interface User + */ +export interface User { + /** + * The ID of the user + * @type {string} + * @memberof User + */ + id: string; + /** + * + * @type {string} + * @memberof User + */ + display_name?: string; +} +/** + * + * @export + * @interface Wallet + */ +export interface Wallet { + /** + * The server-assigned ID for the wallet. + * @type {string} + * @memberof Wallet + */ + id: string; + /** + * The ID of the blockchain network + * @type {string} + * @memberof Wallet + */ + network_id: string; + /** + * + * @type {Address} + * @memberof Wallet + */ + default_address?: Address; + /** + * The status of the Server-Signer for the wallet if present. + * @type {string} + * @memberof Wallet + */ + server_signer_status?: WalletServerSignerStatusEnum; +} + +export const WalletServerSignerStatusEnum = { + PendingSeedCreation: "pending_seed_creation", + ActiveSeed: "active_seed", +} as const; + +export type WalletServerSignerStatusEnum = + (typeof WalletServerSignerStatusEnum)[keyof typeof WalletServerSignerStatusEnum]; + +/** + * Paginated list of wallets + * @export + * @interface WalletList + */ +export interface WalletList { + /** + * + * @type {Array} + * @memberof WalletList + */ + data: Array; + /** + * True if this list has another page of items after this one that can be fetched. + * @type {boolean} + * @memberof WalletList + */ + has_more: boolean; + /** + * The page token to be used to fetch the next page. + * @type {string} + * @memberof WalletList + */ + next_page: string; + /** + * The total number of wallets + * @type {number} + * @memberof WalletList + */ + total_count: number; +} + +/** + * AddressesApi - axios parameter creator + * @export + */ +export const AddressesApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * Create a new address scoped to the wallet. + * @summary Create a new address + * @param {string} walletId The ID of the wallet to create the address in. + * @param {CreateAddressRequest} [createAddressRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createAddress: async ( + walletId: string, + createAddressRequest?: CreateAddressRequest, + options: RawAxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'walletId' is not null or undefined + assertParamExists("createAddress", "walletId", walletId); + const localVarPath = `/v1/wallets/{wallet_id}/addresses`.replace( + `{${"wallet_id"}}`, + encodeURIComponent(String(walletId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + localVarHeaderParameter["Content-Type"] = "application/json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + localVarRequestOptions.data = serializeDataIfNeeded( + createAddressRequest, + localVarRequestOptions, + configuration, + ); + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Get address + * @summary Get address by onchain address + * @param {string} walletId The ID of the wallet the address belongs to. + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getAddress: async ( + walletId: string, + addressId: string, + options: RawAxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'walletId' is not null or undefined + assertParamExists("getAddress", "walletId", walletId); + // verify required parameter 'addressId' is not null or undefined + assertParamExists("getAddress", "addressId", addressId); + const localVarPath = `/v1/wallets/{wallet_id}/addresses/{address_id}` + .replace(`{${"wallet_id"}}`, encodeURIComponent(String(walletId))) + .replace(`{${"address_id"}}`, encodeURIComponent(String(addressId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Get address balance + * @summary Get address balance for asset + * @param {string} walletId The ID of the wallet to fetch the balance for + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {string} assetId The symbol of the asset to fetch the balance for + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getAddressBalance: async ( + walletId: string, + addressId: string, + assetId: string, + options: RawAxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'walletId' is not null or undefined + assertParamExists("getAddressBalance", "walletId", walletId); + // verify required parameter 'addressId' is not null or undefined + assertParamExists("getAddressBalance", "addressId", addressId); + // verify required parameter 'assetId' is not null or undefined + assertParamExists("getAddressBalance", "assetId", assetId); + const localVarPath = `/v1/wallets/{wallet_id}/addresses/{address_id}/balances/{asset_id}` + .replace(`{${"wallet_id"}}`, encodeURIComponent(String(walletId))) + .replace(`{${"address_id"}}`, encodeURIComponent(String(addressId))) + .replace(`{${"asset_id"}}`, encodeURIComponent(String(assetId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Get address balances + * @summary Get all balances for address + * @param {string} walletId The ID of the wallet to fetch the balances for + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listAddressBalances: async ( + walletId: string, + addressId: string, + page?: string, + options: RawAxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'walletId' is not null or undefined + assertParamExists("listAddressBalances", "walletId", walletId); + // verify required parameter 'addressId' is not null or undefined + assertParamExists("listAddressBalances", "addressId", addressId); + const localVarPath = `/v1/wallets/{wallet_id}/addresses/{address_id}/balances` + .replace(`{${"wallet_id"}}`, encodeURIComponent(String(walletId))) + .replace(`{${"address_id"}}`, encodeURIComponent(String(addressId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (page !== undefined) { + localVarQueryParameter["page"] = page; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * List addresses in the wallet. + * @summary List addresses in a wallet. + * @param {string} walletId The ID of the wallet whose addresses to fetch + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listAddresses: async ( + walletId: string, + limit?: number, + page?: string, + options: RawAxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'walletId' is not null or undefined + assertParamExists("listAddresses", "walletId", walletId); + const localVarPath = `/v1/wallets/{wallet_id}/addresses`.replace( + `{${"wallet_id"}}`, + encodeURIComponent(String(walletId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (limit !== undefined) { + localVarQueryParameter["limit"] = limit; + } + + if (page !== undefined) { + localVarQueryParameter["page"] = page; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Request faucet funds to be sent to onchain address. + * @summary Request faucet funds for onchain address. + * @param {string} walletId The ID of the wallet the address belongs to. + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + requestFaucetFunds: async ( + walletId: string, + addressId: string, + options: RawAxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'walletId' is not null or undefined + assertParamExists("requestFaucetFunds", "walletId", walletId); + // verify required parameter 'addressId' is not null or undefined + assertParamExists("requestFaucetFunds", "addressId", addressId); + const localVarPath = `/v1/wallets/{wallet_id}/addresses/{address_id}/faucet` + .replace(`{${"wallet_id"}}`, encodeURIComponent(String(walletId))) + .replace(`{${"address_id"}}`, encodeURIComponent(String(addressId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + }; +}; + +/** + * AddressesApi - functional programming interface + * @export + */ +export const AddressesApiFp = function (configuration?: Configuration) { + const localVarAxiosParamCreator = AddressesApiAxiosParamCreator(configuration); + return { + /** + * Create a new address scoped to the wallet. + * @summary Create a new address + * @param {string} walletId The ID of the wallet to create the address in. + * @param {CreateAddressRequest} [createAddressRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createAddress( + walletId: string, + createAddressRequest?: CreateAddressRequest, + options?: RawAxiosRequestConfig, + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise
    > { + const localVarAxiosArgs = await localVarAxiosParamCreator.createAddress( + walletId, + createAddressRequest, + options, + ); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = + operationServerMap["AddressesApi.createAddress"]?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration, + )(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Get address + * @summary Get address by onchain address + * @param {string} walletId The ID of the wallet the address belongs to. + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getAddress( + walletId: string, + addressId: string, + options?: RawAxiosRequestConfig, + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise
    > { + const localVarAxiosArgs = await localVarAxiosParamCreator.getAddress( + walletId, + addressId, + options, + ); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = + operationServerMap["AddressesApi.getAddress"]?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration, + )(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Get address balance + * @summary Get address balance for asset + * @param {string} walletId The ID of the wallet to fetch the balance for + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {string} assetId The symbol of the asset to fetch the balance for + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getAddressBalance( + walletId: string, + addressId: string, + assetId: string, + options?: RawAxiosRequestConfig, + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getAddressBalance( + walletId, + addressId, + assetId, + options, + ); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = + operationServerMap["AddressesApi.getAddressBalance"]?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration, + )(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Get address balances + * @summary Get all balances for address + * @param {string} walletId The ID of the wallet to fetch the balances for + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listAddressBalances( + walletId: string, + addressId: string, + page?: string, + options?: RawAxiosRequestConfig, + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listAddressBalances( + walletId, + addressId, + page, + options, + ); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = + operationServerMap["AddressesApi.listAddressBalances"]?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration, + )(axios, localVarOperationServerBasePath || basePath); + }, + /** + * List addresses in the wallet. + * @summary List addresses in a wallet. + * @param {string} walletId The ID of the wallet whose addresses to fetch + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listAddresses( + walletId: string, + limit?: number, + page?: string, + options?: RawAxiosRequestConfig, + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listAddresses( + walletId, + limit, + page, + options, + ); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = + operationServerMap["AddressesApi.listAddresses"]?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration, + )(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Request faucet funds to be sent to onchain address. + * @summary Request faucet funds for onchain address. + * @param {string} walletId The ID of the wallet the address belongs to. + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async requestFaucetFunds( + walletId: string, + addressId: string, + options?: RawAxiosRequestConfig, + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.requestFaucetFunds( + walletId, + addressId, + options, + ); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = + operationServerMap["AddressesApi.requestFaucetFunds"]?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration, + )(axios, localVarOperationServerBasePath || basePath); + }, + }; +}; + +/** + * AddressesApi - factory interface + * @export + */ +export const AddressesApiFactory = function ( + configuration?: Configuration, + basePath?: string, + axios?: AxiosInstance, +) { + const localVarFp = AddressesApiFp(configuration); + return { + /** + * Create a new address scoped to the wallet. + * @summary Create a new address + * @param {string} walletId The ID of the wallet to create the address in. + * @param {CreateAddressRequest} [createAddressRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createAddress( + walletId: string, + createAddressRequest?: CreateAddressRequest, + options?: any, + ): AxiosPromise
    { + return localVarFp + .createAddress(walletId, createAddressRequest, options) + .then(request => request(axios, basePath)); + }, + /** + * Get address + * @summary Get address by onchain address + * @param {string} walletId The ID of the wallet the address belongs to. + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getAddress(walletId: string, addressId: string, options?: any): AxiosPromise
    { + return localVarFp + .getAddress(walletId, addressId, options) + .then(request => request(axios, basePath)); + }, + /** + * Get address balance + * @summary Get address balance for asset + * @param {string} walletId The ID of the wallet to fetch the balance for + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {string} assetId The symbol of the asset to fetch the balance for + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getAddressBalance( + walletId: string, + addressId: string, + assetId: string, + options?: any, + ): AxiosPromise { + return localVarFp + .getAddressBalance(walletId, addressId, assetId, options) + .then(request => request(axios, basePath)); + }, + /** + * Get address balances + * @summary Get all balances for address + * @param {string} walletId The ID of the wallet to fetch the balances for + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listAddressBalances( + walletId: string, + addressId: string, + page?: string, + options?: any, + ): AxiosPromise { + return localVarFp + .listAddressBalances(walletId, addressId, page, options) + .then(request => request(axios, basePath)); + }, + /** + * List addresses in the wallet. + * @summary List addresses in a wallet. + * @param {string} walletId The ID of the wallet whose addresses to fetch + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listAddresses( + walletId: string, + limit?: number, + page?: string, + options?: any, + ): AxiosPromise { + return localVarFp + .listAddresses(walletId, limit, page, options) + .then(request => request(axios, basePath)); + }, + /** + * Request faucet funds to be sent to onchain address. + * @summary Request faucet funds for onchain address. + * @param {string} walletId The ID of the wallet the address belongs to. + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + requestFaucetFunds( + walletId: string, + addressId: string, + options?: any, + ): AxiosPromise { + return localVarFp + .requestFaucetFunds(walletId, addressId, options) + .then(request => request(axios, basePath)); + }, + }; +}; + +/** + * AddressesApi - interface + * @export + * @interface AddressesApi + */ +export interface AddressesApiInterface { + /** + * Create a new address scoped to the wallet. + * @summary Create a new address + * @param {string} walletId The ID of the wallet to create the address in. + * @param {CreateAddressRequest} [createAddressRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AddressesApiInterface + */ + createAddress( + walletId: string, + createAddressRequest?: CreateAddressRequest, + options?: RawAxiosRequestConfig, + ): AxiosPromise
    ; + + /** + * Get address + * @summary Get address by onchain address + * @param {string} walletId The ID of the wallet the address belongs to. + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AddressesApiInterface + */ + getAddress( + walletId: string, + addressId: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise
    ; + + /** + * Get address balance + * @summary Get address balance for asset + * @param {string} walletId The ID of the wallet to fetch the balance for + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {string} assetId The symbol of the asset to fetch the balance for + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AddressesApiInterface + */ + getAddressBalance( + walletId: string, + addressId: string, + assetId: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise; + + /** + * Get address balances + * @summary Get all balances for address + * @param {string} walletId The ID of the wallet to fetch the balances for + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AddressesApiInterface + */ + listAddressBalances( + walletId: string, + addressId: string, + page?: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise; + + /** + * List addresses in the wallet. + * @summary List addresses in a wallet. + * @param {string} walletId The ID of the wallet whose addresses to fetch + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AddressesApiInterface + */ + listAddresses( + walletId: string, + limit?: number, + page?: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise; + + /** + * Request faucet funds to be sent to onchain address. + * @summary Request faucet funds for onchain address. + * @param {string} walletId The ID of the wallet the address belongs to. + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AddressesApiInterface + */ + requestFaucetFunds( + walletId: string, + addressId: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise; +} + +/** + * AddressesApi - object-oriented interface + * @export + * @class AddressesApi + * @extends {BaseAPI} + */ +export class AddressesApi extends BaseAPI implements AddressesApiInterface { + /** + * Create a new address scoped to the wallet. + * @summary Create a new address + * @param {string} walletId The ID of the wallet to create the address in. + * @param {CreateAddressRequest} [createAddressRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AddressesApi + */ + public createAddress( + walletId: string, + createAddressRequest?: CreateAddressRequest, + options?: RawAxiosRequestConfig, + ) { + return AddressesApiFp(this.configuration) + .createAddress(walletId, createAddressRequest, options) + .then(request => request(this.axios, this.basePath)); + } + + /** + * Get address + * @summary Get address by onchain address + * @param {string} walletId The ID of the wallet the address belongs to. + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AddressesApi + */ + public getAddress(walletId: string, addressId: string, options?: RawAxiosRequestConfig) { + return AddressesApiFp(this.configuration) + .getAddress(walletId, addressId, options) + .then(request => request(this.axios, this.basePath)); + } + + /** + * Get address balance + * @summary Get address balance for asset + * @param {string} walletId The ID of the wallet to fetch the balance for + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {string} assetId The symbol of the asset to fetch the balance for + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AddressesApi + */ + public getAddressBalance( + walletId: string, + addressId: string, + assetId: string, + options?: RawAxiosRequestConfig, + ) { + return AddressesApiFp(this.configuration) + .getAddressBalance(walletId, addressId, assetId, options) + .then(request => request(this.axios, this.basePath)); + } + + /** + * Get address balances + * @summary Get all balances for address + * @param {string} walletId The ID of the wallet to fetch the balances for + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AddressesApi + */ + public listAddressBalances( + walletId: string, + addressId: string, + page?: string, + options?: RawAxiosRequestConfig, + ) { + return AddressesApiFp(this.configuration) + .listAddressBalances(walletId, addressId, page, options) + .then(request => request(this.axios, this.basePath)); + } + + /** + * List addresses in the wallet. + * @summary List addresses in a wallet. + * @param {string} walletId The ID of the wallet whose addresses to fetch + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AddressesApi + */ + public listAddresses( + walletId: string, + limit?: number, + page?: string, + options?: RawAxiosRequestConfig, + ) { + return AddressesApiFp(this.configuration) + .listAddresses(walletId, limit, page, options) + .then(request => request(this.axios, this.basePath)); + } + + /** + * Request faucet funds to be sent to onchain address. + * @summary Request faucet funds for onchain address. + * @param {string} walletId The ID of the wallet the address belongs to. + * @param {string} addressId The onchain address of the address that is being fetched. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AddressesApi + */ + public requestFaucetFunds(walletId: string, addressId: string, options?: RawAxiosRequestConfig) { + return AddressesApiFp(this.configuration) + .requestFaucetFunds(walletId, addressId, options) + .then(request => request(this.axios, this.basePath)); + } +} + +/** + * ServerSignersApi - axios parameter creator + * @export + */ +export const ServerSignersApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * Create a new Server-Signer + * @summary Create a new Server-Signer + * @param {CreateServerSignerRequest} [createServerSignerRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createServerSigner: async ( + createServerSignerRequest?: CreateServerSignerRequest, + options: RawAxiosRequestConfig = {}, + ): Promise => { + const localVarPath = `/v1/server_signers`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + localVarHeaderParameter["Content-Type"] = "application/json"; + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = { @@ -524,89 +1820,774 @@ export const AddressesApiAxiosParamCreator = function (configuration?: Configura ...options.headers, }; localVarRequestOptions.data = serializeDataIfNeeded( - createAddressRequest, + createServerSignerRequest, + localVarRequestOptions, + configuration, + ); + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Get a server signer by ID + * @summary Get a server signer by ID + * @param {string} serverSignerId The ID of the server signer to fetch + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getServerSigner: async ( + serverSignerId: string, + options: RawAxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'serverSignerId' is not null or undefined + assertParamExists("getServerSigner", "serverSignerId", serverSignerId); + const localVarPath = `/v1/server_signers/{server_signer_id}`.replace( + `{${"server_signer_id"}}`, + encodeURIComponent(String(serverSignerId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * List events for a server signer + * @summary List events for a server signer + * @param {string} serverSignerId The ID of the server signer to fetch events for + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listServerSignerEvents: async ( + serverSignerId: string, + limit?: number, + page?: string, + options: RawAxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'serverSignerId' is not null or undefined + assertParamExists("listServerSignerEvents", "serverSignerId", serverSignerId); + const localVarPath = `/v1/server_signers/{server_signer_id}/events`.replace( + `{${"server_signer_id"}}`, + encodeURIComponent(String(serverSignerId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (limit !== undefined) { + localVarQueryParameter["limit"] = limit; + } + + if (page !== undefined) { + localVarQueryParameter["page"] = page; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * List server signers for the current project + * @summary List server signers for the current project + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listServerSigners: async (options: RawAxiosRequestConfig = {}): Promise => { + const localVarPath = `/v1/server_signers`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Submit the result of a server signer event + * @summary Submit the result of a server signer event + * @param {string} serverSignerId The ID of the server signer to submit the event result for + * @param {SeedCreationEventResult} [seedCreationEventResult] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + submitServerSignerSeedEventResult: async ( + serverSignerId: string, + seedCreationEventResult?: SeedCreationEventResult, + options: RawAxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'serverSignerId' is not null or undefined + assertParamExists("submitServerSignerSeedEventResult", "serverSignerId", serverSignerId); + const localVarPath = `/v1/server_signers/{server_signer_id}/seed_event_result`.replace( + `{${"server_signer_id"}}`, + encodeURIComponent(String(serverSignerId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + localVarHeaderParameter["Content-Type"] = "application/json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + localVarRequestOptions.data = serializeDataIfNeeded( + seedCreationEventResult, + localVarRequestOptions, + configuration, + ); + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Submit the result of a server signer event + * @summary Submit the result of a server signer event + * @param {string} serverSignerId The ID of the server signer to submit the event result for + * @param {SignatureCreationEventResult} [signatureCreationEventResult] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + submitServerSignerSignatureEventResult: async ( + serverSignerId: string, + signatureCreationEventResult?: SignatureCreationEventResult, + options: RawAxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'serverSignerId' is not null or undefined + assertParamExists("submitServerSignerSignatureEventResult", "serverSignerId", serverSignerId); + const localVarPath = `/v1/server_signers/{server_signer_id}/signature_event_result`.replace( + `{${"server_signer_id"}}`, + encodeURIComponent(String(serverSignerId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + localVarHeaderParameter["Content-Type"] = "application/json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + localVarRequestOptions.data = serializeDataIfNeeded( + signatureCreationEventResult, localVarRequestOptions, configuration, ); - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + }; +}; + +/** + * ServerSignersApi - functional programming interface + * @export + */ +export const ServerSignersApiFp = function (configuration?: Configuration) { + const localVarAxiosParamCreator = ServerSignersApiAxiosParamCreator(configuration); + return { + /** + * Create a new Server-Signer + * @summary Create a new Server-Signer + * @param {CreateServerSignerRequest} [createServerSignerRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createServerSigner( + createServerSignerRequest?: CreateServerSignerRequest, + options?: RawAxiosRequestConfig, + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createServerSigner( + createServerSignerRequest, + options, + ); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = + operationServerMap["ServerSignersApi.createServerSigner"]?.[localVarOperationServerIndex] + ?.url; + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration, + )(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Get a server signer by ID + * @summary Get a server signer by ID + * @param {string} serverSignerId The ID of the server signer to fetch + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getServerSigner( + serverSignerId: string, + options?: RawAxiosRequestConfig, + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getServerSigner( + serverSignerId, + options, + ); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = + operationServerMap["ServerSignersApi.getServerSigner"]?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration, + )(axios, localVarOperationServerBasePath || basePath); + }, + /** + * List events for a server signer + * @summary List events for a server signer + * @param {string} serverSignerId The ID of the server signer to fetch events for + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listServerSignerEvents( + serverSignerId: string, + limit?: number, + page?: string, + options?: RawAxiosRequestConfig, + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listServerSignerEvents( + serverSignerId, + limit, + page, + options, + ); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = + operationServerMap["ServerSignersApi.listServerSignerEvents"]?.[ + localVarOperationServerIndex + ]?.url; + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration, + )(axios, localVarOperationServerBasePath || basePath); + }, + /** + * List server signers for the current project + * @summary List server signers for the current project + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listServerSigners( + options?: RawAxiosRequestConfig, + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listServerSigners(options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = + operationServerMap["ServerSignersApi.listServerSigners"]?.[localVarOperationServerIndex] + ?.url; + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration, + )(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Submit the result of a server signer event + * @summary Submit the result of a server signer event + * @param {string} serverSignerId The ID of the server signer to submit the event result for + * @param {SeedCreationEventResult} [seedCreationEventResult] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async submitServerSignerSeedEventResult( + serverSignerId: string, + seedCreationEventResult?: SeedCreationEventResult, + options?: RawAxiosRequestConfig, + ): Promise< + (axios?: AxiosInstance, basePath?: string) => AxiosPromise + > { + const localVarAxiosArgs = await localVarAxiosParamCreator.submitServerSignerSeedEventResult( + serverSignerId, + seedCreationEventResult, + options, + ); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = + operationServerMap["ServerSignersApi.submitServerSignerSeedEventResult"]?.[ + localVarOperationServerIndex + ]?.url; + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration, + )(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Submit the result of a server signer event + * @summary Submit the result of a server signer event + * @param {string} serverSignerId The ID of the server signer to submit the event result for + * @param {SignatureCreationEventResult} [signatureCreationEventResult] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async submitServerSignerSignatureEventResult( + serverSignerId: string, + signatureCreationEventResult?: SignatureCreationEventResult, + options?: RawAxiosRequestConfig, + ): Promise< + (axios?: AxiosInstance, basePath?: string) => AxiosPromise + > { + const localVarAxiosArgs = + await localVarAxiosParamCreator.submitServerSignerSignatureEventResult( + serverSignerId, + signatureCreationEventResult, + options, + ); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = + operationServerMap["ServerSignersApi.submitServerSignerSignatureEventResult"]?.[ + localVarOperationServerIndex + ]?.url; + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration, + )(axios, localVarOperationServerBasePath || basePath); + }, + }; +}; + +/** + * ServerSignersApi - factory interface + * @export + */ +export const ServerSignersApiFactory = function ( + configuration?: Configuration, + basePath?: string, + axios?: AxiosInstance, +) { + const localVarFp = ServerSignersApiFp(configuration); + return { + /** + * Create a new Server-Signer + * @summary Create a new Server-Signer + * @param {CreateServerSignerRequest} [createServerSignerRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createServerSigner( + createServerSignerRequest?: CreateServerSignerRequest, + options?: any, + ): AxiosPromise { + return localVarFp + .createServerSigner(createServerSignerRequest, options) + .then(request => request(axios, basePath)); }, /** - * Get address - * @summary Get address by onchain address - * @param {string} walletId The ID of the wallet the address belongs to. - * @param {string} addressId The onchain address of the address that is being fetched. + * Get a server signer by ID + * @summary Get a server signer by ID + * @param {string} serverSignerId The ID of the server signer to fetch * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getAddress: async ( - walletId: string, - addressId: string, - options: RawAxiosRequestConfig = {}, - ): Promise => { - // verify required parameter 'walletId' is not null or undefined - assertParamExists("getAddress", "walletId", walletId); - // verify required parameter 'addressId' is not null or undefined - assertParamExists("getAddress", "addressId", addressId); - const localVarPath = `/v1/wallets/{wallet_id}/addresses/{address_id}` - .replace(`{${"wallet_id"}}`, encodeURIComponent(String(walletId))) - .replace(`{${"address_id"}}`, encodeURIComponent(String(addressId))); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } + getServerSigner(serverSignerId: string, options?: any): AxiosPromise { + return localVarFp + .getServerSigner(serverSignerId, options) + .then(request => request(axios, basePath)); + }, + /** + * List events for a server signer + * @summary List events for a server signer + * @param {string} serverSignerId The ID of the server signer to fetch events for + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listServerSignerEvents( + serverSignerId: string, + limit?: number, + page?: string, + options?: any, + ): AxiosPromise { + return localVarFp + .listServerSignerEvents(serverSignerId, limit, page, options) + .then(request => request(axios, basePath)); + }, + /** + * List server signers for the current project + * @summary List server signers for the current project + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listServerSigners(options?: any): AxiosPromise { + return localVarFp.listServerSigners(options).then(request => request(axios, basePath)); + }, + /** + * Submit the result of a server signer event + * @summary Submit the result of a server signer event + * @param {string} serverSignerId The ID of the server signer to submit the event result for + * @param {SeedCreationEventResult} [seedCreationEventResult] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + submitServerSignerSeedEventResult( + serverSignerId: string, + seedCreationEventResult?: SeedCreationEventResult, + options?: any, + ): AxiosPromise { + return localVarFp + .submitServerSignerSeedEventResult(serverSignerId, seedCreationEventResult, options) + .then(request => request(axios, basePath)); + }, + /** + * Submit the result of a server signer event + * @summary Submit the result of a server signer event + * @param {string} serverSignerId The ID of the server signer to submit the event result for + * @param {SignatureCreationEventResult} [signatureCreationEventResult] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + submitServerSignerSignatureEventResult( + serverSignerId: string, + signatureCreationEventResult?: SignatureCreationEventResult, + options?: any, + ): AxiosPromise { + return localVarFp + .submitServerSignerSignatureEventResult( + serverSignerId, + signatureCreationEventResult, + options, + ) + .then(request => request(axios, basePath)); + }, + }; +}; - const localVarRequestOptions = { - method: "GET", - ...baseOptions, - ...options, - }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; +/** + * ServerSignersApi - interface + * @export + * @interface ServerSignersApi + */ +export interface ServerSignersApiInterface { + /** + * Create a new Server-Signer + * @summary Create a new Server-Signer + * @param {CreateServerSignerRequest} [createServerSignerRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ServerSignersApiInterface + */ + createServerSigner( + createServerSignerRequest?: CreateServerSignerRequest, + options?: RawAxiosRequestConfig, + ): AxiosPromise; - setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; + /** + * Get a server signer by ID + * @summary Get a server signer by ID + * @param {string} serverSignerId The ID of the server signer to fetch + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ServerSignersApiInterface + */ + getServerSigner( + serverSignerId: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise; - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; - }, + /** + * List events for a server signer + * @summary List events for a server signer + * @param {string} serverSignerId The ID of the server signer to fetch events for + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ServerSignersApiInterface + */ + listServerSignerEvents( + serverSignerId: string, + limit?: number, + page?: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise; + + /** + * List server signers for the current project + * @summary List server signers for the current project + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ServerSignersApiInterface + */ + listServerSigners(options?: RawAxiosRequestConfig): AxiosPromise; + + /** + * Submit the result of a server signer event + * @summary Submit the result of a server signer event + * @param {string} serverSignerId The ID of the server signer to submit the event result for + * @param {SeedCreationEventResult} [seedCreationEventResult] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ServerSignersApiInterface + */ + submitServerSignerSeedEventResult( + serverSignerId: string, + seedCreationEventResult?: SeedCreationEventResult, + options?: RawAxiosRequestConfig, + ): AxiosPromise; + + /** + * Submit the result of a server signer event + * @summary Submit the result of a server signer event + * @param {string} serverSignerId The ID of the server signer to submit the event result for + * @param {SignatureCreationEventResult} [signatureCreationEventResult] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ServerSignersApiInterface + */ + submitServerSignerSignatureEventResult( + serverSignerId: string, + signatureCreationEventResult?: SignatureCreationEventResult, + options?: RawAxiosRequestConfig, + ): AxiosPromise; +} + +/** + * ServerSignersApi - object-oriented interface + * @export + * @class ServerSignersApi + * @extends {BaseAPI} + */ +export class ServerSignersApi extends BaseAPI implements ServerSignersApiInterface { + /** + * Create a new Server-Signer + * @summary Create a new Server-Signer + * @param {CreateServerSignerRequest} [createServerSignerRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ServerSignersApi + */ + public createServerSigner( + createServerSignerRequest?: CreateServerSignerRequest, + options?: RawAxiosRequestConfig, + ) { + return ServerSignersApiFp(this.configuration) + .createServerSigner(createServerSignerRequest, options) + .then(request => request(this.axios, this.basePath)); + } + + /** + * Get a server signer by ID + * @summary Get a server signer by ID + * @param {string} serverSignerId The ID of the server signer to fetch + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ServerSignersApi + */ + public getServerSigner(serverSignerId: string, options?: RawAxiosRequestConfig) { + return ServerSignersApiFp(this.configuration) + .getServerSigner(serverSignerId, options) + .then(request => request(this.axios, this.basePath)); + } + + /** + * List events for a server signer + * @summary List events for a server signer + * @param {string} serverSignerId The ID of the server signer to fetch events for + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ServerSignersApi + */ + public listServerSignerEvents( + serverSignerId: string, + limit?: number, + page?: string, + options?: RawAxiosRequestConfig, + ) { + return ServerSignersApiFp(this.configuration) + .listServerSignerEvents(serverSignerId, limit, page, options) + .then(request => request(this.axios, this.basePath)); + } + + /** + * List server signers for the current project + * @summary List server signers for the current project + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ServerSignersApi + */ + public listServerSigners(options?: RawAxiosRequestConfig) { + return ServerSignersApiFp(this.configuration) + .listServerSigners(options) + .then(request => request(this.axios, this.basePath)); + } + + /** + * Submit the result of a server signer event + * @summary Submit the result of a server signer event + * @param {string} serverSignerId The ID of the server signer to submit the event result for + * @param {SeedCreationEventResult} [seedCreationEventResult] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ServerSignersApi + */ + public submitServerSignerSeedEventResult( + serverSignerId: string, + seedCreationEventResult?: SeedCreationEventResult, + options?: RawAxiosRequestConfig, + ) { + return ServerSignersApiFp(this.configuration) + .submitServerSignerSeedEventResult(serverSignerId, seedCreationEventResult, options) + .then(request => request(this.axios, this.basePath)); + } + + /** + * Submit the result of a server signer event + * @summary Submit the result of a server signer event + * @param {string} serverSignerId The ID of the server signer to submit the event result for + * @param {SignatureCreationEventResult} [signatureCreationEventResult] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ServerSignersApi + */ + public submitServerSignerSignatureEventResult( + serverSignerId: string, + signatureCreationEventResult?: SignatureCreationEventResult, + options?: RawAxiosRequestConfig, + ) { + return ServerSignersApiFp(this.configuration) + .submitServerSignerSignatureEventResult(serverSignerId, signatureCreationEventResult, options) + .then(request => request(this.axios, this.basePath)); + } +} + +/** + * TradesApi - axios parameter creator + * @export + */ +export const TradesApiAxiosParamCreator = function (configuration?: Configuration) { + return { /** - * Get address balance - * @summary Get address balance for asset - * @param {string} walletId The ID of the wallet to fetch the balance for - * @param {string} addressId The onchain address of the address that is being fetched. - * @param {string} assetId The symbol of the asset to fetch the balance for + * Broadcast a trade + * @summary Broadcast a trade + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address the trade belongs to + * @param {string} tradeId The ID of the trade to broadcast + * @param {BroadcastTradeRequest} broadcastTradeRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getAddressBalance: async ( + broadcastTrade: async ( walletId: string, addressId: string, - assetId: string, - options: RawAxiosRequestConfig = {}, - ): Promise => { - // verify required parameter 'walletId' is not null or undefined - assertParamExists("getAddressBalance", "walletId", walletId); - // verify required parameter 'addressId' is not null or undefined - assertParamExists("getAddressBalance", "addressId", addressId); - // verify required parameter 'assetId' is not null or undefined - assertParamExists("getAddressBalance", "assetId", assetId); - const localVarPath = `/v1/wallets/{wallet_id}/addresses/{address_id}/balances/{asset_id}` - .replace(`{${"wallet_id"}}`, encodeURIComponent(String(walletId))) - .replace(`{${"address_id"}}`, encodeURIComponent(String(addressId))) - .replace(`{${"asset_id"}}`, encodeURIComponent(String(assetId))); + tradeId: string, + broadcastTradeRequest: BroadcastTradeRequest, + options: RawAxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'walletId' is not null or undefined + assertParamExists("broadcastTrade", "walletId", walletId); + // verify required parameter 'addressId' is not null or undefined + assertParamExists("broadcastTrade", "addressId", addressId); + // verify required parameter 'tradeId' is not null or undefined + assertParamExists("broadcastTrade", "tradeId", tradeId); + // verify required parameter 'broadcastTradeRequest' is not null or undefined + assertParamExists("broadcastTrade", "broadcastTradeRequest", broadcastTradeRequest); + const localVarPath = + `/v1/wallets/{wallet_id}/addresses/{address_id}/trades/{trade_id}/broadcast` + .replace(`{${"wallet_id"}}`, encodeURIComponent(String(walletId))) + .replace(`{${"address_id"}}`, encodeURIComponent(String(addressId))) + .replace(`{${"trade_id"}}`, encodeURIComponent(String(tradeId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -614,14 +2595,12 @@ export const AddressesApiAxiosParamCreator = function (configuration?: Configura baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "GET", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + localVarHeaderParameter["Content-Type"] = "application/json"; + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = { @@ -629,6 +2608,11 @@ export const AddressesApiAxiosParamCreator = function (configuration?: Configura ...headersFromBaseOptions, ...options.headers, }; + localVarRequestOptions.data = serializeDataIfNeeded( + broadcastTradeRequest, + localVarRequestOptions, + configuration, + ); return { url: toPathString(localVarUrlObj), @@ -636,25 +2620,27 @@ export const AddressesApiAxiosParamCreator = function (configuration?: Configura }; }, /** - * Get address balances - * @summary Get all balances for address - * @param {string} walletId The ID of the wallet to fetch the balances for - * @param {string} addressId The onchain address of the address that is being fetched. - * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * Create a new trade + * @summary Create a new trade for an address + * @param {string} walletId The ID of the wallet the source address belongs to + * @param {string} addressId The ID of the address to conduct the trade from + * @param {CreateTradeRequest} createTradeRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listAddressBalances: async ( + createTrade: async ( walletId: string, addressId: string, - page?: string, + createTradeRequest: CreateTradeRequest, options: RawAxiosRequestConfig = {}, ): Promise => { // verify required parameter 'walletId' is not null or undefined - assertParamExists("listAddressBalances", "walletId", walletId); + assertParamExists("createTrade", "walletId", walletId); // verify required parameter 'addressId' is not null or undefined - assertParamExists("listAddressBalances", "addressId", addressId); - const localVarPath = `/v1/wallets/{wallet_id}/addresses/{address_id}/balances` + assertParamExists("createTrade", "addressId", addressId); + // verify required parameter 'createTradeRequest' is not null or undefined + assertParamExists("createTrade", "createTradeRequest", createTradeRequest); + const localVarPath = `/v1/wallets/{wallet_id}/addresses/{address_id}/trades` .replace(`{${"wallet_id"}}`, encodeURIComponent(String(walletId))) .replace(`{${"address_id"}}`, encodeURIComponent(String(addressId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. @@ -664,17 +2650,11 @@ export const AddressesApiAxiosParamCreator = function (configuration?: Configura baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "GET", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - if (page !== undefined) { - localVarQueryParameter["page"] = page; - } + localVarHeaderParameter["Content-Type"] = "application/json"; setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; @@ -683,6 +2663,11 @@ export const AddressesApiAxiosParamCreator = function (configuration?: Configura ...headersFromBaseOptions, ...options.headers, }; + localVarRequestOptions.data = serializeDataIfNeeded( + createTradeRequest, + localVarRequestOptions, + configuration, + ); return { url: toPathString(localVarUrlObj), @@ -690,26 +2675,30 @@ export const AddressesApiAxiosParamCreator = function (configuration?: Configura }; }, /** - * List addresses in the wallet. - * @summary List addresses in a wallet. - * @param {string} walletId The ID of the wallet whose addresses to fetch - * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. - * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * Get a trade by ID + * @summary Get a trade by ID + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address the trade belongs to + * @param {string} tradeId The ID of the trade to fetch * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listAddresses: async ( + getTrade: async ( walletId: string, - limit?: number, - page?: string, + addressId: string, + tradeId: string, options: RawAxiosRequestConfig = {}, ): Promise => { // verify required parameter 'walletId' is not null or undefined - assertParamExists("listAddresses", "walletId", walletId); - const localVarPath = `/v1/wallets/{wallet_id}/addresses`.replace( - `{${"wallet_id"}}`, - encodeURIComponent(String(walletId)), - ); + assertParamExists("getTrade", "walletId", walletId); + // verify required parameter 'addressId' is not null or undefined + assertParamExists("getTrade", "addressId", addressId); + // verify required parameter 'tradeId' is not null or undefined + assertParamExists("getTrade", "tradeId", tradeId); + const localVarPath = `/v1/wallets/{wallet_id}/addresses/{address_id}/trades/{trade_id}` + .replace(`{${"wallet_id"}}`, encodeURIComponent(String(walletId))) + .replace(`{${"address_id"}}`, encodeURIComponent(String(addressId))) + .replace(`{${"trade_id"}}`, encodeURIComponent(String(tradeId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -717,22 +2706,10 @@ export const AddressesApiAxiosParamCreator = function (configuration?: Configura baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "GET", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - if (limit !== undefined) { - localVarQueryParameter["limit"] = limit; - } - - if (page !== undefined) { - localVarQueryParameter["page"] = page; - } - setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = { @@ -747,23 +2724,27 @@ export const AddressesApiAxiosParamCreator = function (configuration?: Configura }; }, /** - * Request faucet funds to be sent to onchain address. - * @summary Request faucet funds for onchain address. - * @param {string} walletId The ID of the wallet the address belongs to. - * @param {string} addressId The onchain address of the address that is being fetched. + * List trades for an address. + * @summary List trades for an address. + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address to list trades for + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - requestFaucetFunds: async ( + listTrades: async ( walletId: string, addressId: string, + limit?: number, + page?: string, options: RawAxiosRequestConfig = {}, ): Promise => { // verify required parameter 'walletId' is not null or undefined - assertParamExists("requestFaucetFunds", "walletId", walletId); + assertParamExists("listTrades", "walletId", walletId); // verify required parameter 'addressId' is not null or undefined - assertParamExists("requestFaucetFunds", "addressId", addressId); - const localVarPath = `/v1/wallets/{wallet_id}/addresses/{address_id}/faucet` + assertParamExists("listTrades", "addressId", addressId); + const localVarPath = `/v1/wallets/{wallet_id}/addresses/{address_id}/trades` .replace(`{${"wallet_id"}}`, encodeURIComponent(String(walletId))) .replace(`{${"address_id"}}`, encodeURIComponent(String(addressId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. @@ -773,14 +2754,18 @@ export const AddressesApiAxiosParamCreator = function (configuration?: Configura baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "POST", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + if (limit !== undefined) { + localVarQueryParameter["limit"] = limit; + } + + if (page !== undefined) { + localVarQueryParameter["page"] = page; + } + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = { @@ -798,62 +2783,39 @@ export const AddressesApiAxiosParamCreator = function (configuration?: Configura }; /** - * AddressesApi - functional programming interface + * TradesApi - functional programming interface * @export */ -export const AddressesApiFp = function (configuration?: Configuration) { - const localVarAxiosParamCreator = AddressesApiAxiosParamCreator(configuration); +export const TradesApiFp = function (configuration?: Configuration) { + const localVarAxiosParamCreator = TradesApiAxiosParamCreator(configuration); return { /** - * Create a new address scoped to the wallet. - * @summary Create a new address - * @param {string} walletId The ID of the wallet to create the address in. - * @param {CreateAddressRequest} [createAddressRequest] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async createAddress( - walletId: string, - createAddressRequest?: CreateAddressRequest, - options?: RawAxiosRequestConfig, - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise
    > { - const localVarAxiosArgs = await localVarAxiosParamCreator.createAddress( - walletId, - createAddressRequest, - options, - ); - const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = - operationServerMap["AddressesApi.createAddress"]?.[localVarOperationServerIndex]?.url; - return (axios, basePath) => - createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration, - )(axios, localVarOperationServerBasePath || basePath); - }, - /** - * Get address - * @summary Get address by onchain address - * @param {string} walletId The ID of the wallet the address belongs to. - * @param {string} addressId The onchain address of the address that is being fetched. + * Broadcast a trade + * @summary Broadcast a trade + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address the trade belongs to + * @param {string} tradeId The ID of the trade to broadcast + * @param {BroadcastTradeRequest} broadcastTradeRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async getAddress( + async broadcastTrade( walletId: string, addressId: string, + tradeId: string, + broadcastTradeRequest: BroadcastTradeRequest, options?: RawAxiosRequestConfig, - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise
    > { - const localVarAxiosArgs = await localVarAxiosParamCreator.getAddress( + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.broadcastTrade( walletId, addressId, + tradeId, + broadcastTradeRequest, options, ); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; const localVarOperationServerBasePath = - operationServerMap["AddressesApi.getAddress"]?.[localVarOperationServerIndex]?.url; + operationServerMap["TradesApi.broadcastTrade"]?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction( localVarAxiosArgs, @@ -863,29 +2825,29 @@ export const AddressesApiFp = function (configuration?: Configuration) { )(axios, localVarOperationServerBasePath || basePath); }, /** - * Get address balance - * @summary Get address balance for asset - * @param {string} walletId The ID of the wallet to fetch the balance for - * @param {string} addressId The onchain address of the address that is being fetched. - * @param {string} assetId The symbol of the asset to fetch the balance for + * Create a new trade + * @summary Create a new trade for an address + * @param {string} walletId The ID of the wallet the source address belongs to + * @param {string} addressId The ID of the address to conduct the trade from + * @param {CreateTradeRequest} createTradeRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async getAddressBalance( + async createTrade( walletId: string, addressId: string, - assetId: string, + createTradeRequest: CreateTradeRequest, options?: RawAxiosRequestConfig, - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.getAddressBalance( + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createTrade( walletId, addressId, - assetId, + createTradeRequest, options, ); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; const localVarOperationServerBasePath = - operationServerMap["AddressesApi.getAddressBalance"]?.[localVarOperationServerIndex]?.url; + operationServerMap["TradesApi.createTrade"]?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction( localVarAxiosArgs, @@ -895,29 +2857,29 @@ export const AddressesApiFp = function (configuration?: Configuration) { )(axios, localVarOperationServerBasePath || basePath); }, /** - * Get address balances - * @summary Get all balances for address - * @param {string} walletId The ID of the wallet to fetch the balances for - * @param {string} addressId The onchain address of the address that is being fetched. - * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * Get a trade by ID + * @summary Get a trade by ID + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address the trade belongs to + * @param {string} tradeId The ID of the trade to fetch * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listAddressBalances( + async getTrade( walletId: string, addressId: string, - page?: string, + tradeId: string, options?: RawAxiosRequestConfig, - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listAddressBalances( + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getTrade( walletId, addressId, - page, + tradeId, options, ); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; const localVarOperationServerBasePath = - operationServerMap["AddressesApi.listAddressBalances"]?.[localVarOperationServerIndex]?.url; + operationServerMap["TradesApi.getTrade"]?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction( localVarAxiosArgs, @@ -927,58 +2889,32 @@ export const AddressesApiFp = function (configuration?: Configuration) { )(axios, localVarOperationServerBasePath || basePath); }, /** - * List addresses in the wallet. - * @summary List addresses in a wallet. - * @param {string} walletId The ID of the wallet whose addresses to fetch + * List trades for an address. + * @summary List trades for an address. + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address to list trades for * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listAddresses( + async listTrades( walletId: string, + addressId: string, limit?: number, page?: string, options?: RawAxiosRequestConfig, - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listAddresses( + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listTrades( walletId, + addressId, limit, page, options, ); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; const localVarOperationServerBasePath = - operationServerMap["AddressesApi.listAddresses"]?.[localVarOperationServerIndex]?.url; - return (axios, basePath) => - createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration, - )(axios, localVarOperationServerBasePath || basePath); - }, - /** - * Request faucet funds to be sent to onchain address. - * @summary Request faucet funds for onchain address. - * @param {string} walletId The ID of the wallet the address belongs to. - * @param {string} addressId The onchain address of the address that is being fetched. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async requestFaucetFunds( - walletId: string, - addressId: string, - options?: RawAxiosRequestConfig, - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.requestFaucetFunds( - walletId, - addressId, - options, - ); - const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = - operationServerMap["AddressesApi.requestFaucetFunds"]?.[localVarOperationServerIndex]?.url; + operationServerMap["TradesApi.listTrades"]?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction( localVarAxiosArgs, @@ -991,239 +2927,270 @@ export const AddressesApiFp = function (configuration?: Configuration) { }; /** - * AddressesApi - factory interface + * TradesApi - factory interface * @export */ -export const AddressesApiFactory = function ( +export const TradesApiFactory = function ( configuration?: Configuration, basePath?: string, axios?: AxiosInstance, ) { - const localVarFp = AddressesApiFp(configuration); + const localVarFp = TradesApiFp(configuration); return { /** - * Create a new address scoped to the wallet. - * @summary Create a new address - * @param {string} walletId The ID of the wallet to create the address in. - * @param {CreateAddressRequest} [createAddressRequest] + * Broadcast a trade + * @summary Broadcast a trade + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address the trade belongs to + * @param {string} tradeId The ID of the trade to broadcast + * @param {BroadcastTradeRequest} broadcastTradeRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - createAddress( + broadcastTrade( walletId: string, - createAddressRequest?: CreateAddressRequest, + addressId: string, + tradeId: string, + broadcastTradeRequest: BroadcastTradeRequest, options?: any, - ): AxiosPromise
    { - return localVarFp - .createAddress(walletId, createAddressRequest, options) - .then(request => request(axios, basePath)); - }, - /** - * Get address - * @summary Get address by onchain address - * @param {string} walletId The ID of the wallet the address belongs to. - * @param {string} addressId The onchain address of the address that is being fetched. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - getAddress(walletId: string, addressId: string, options?: any): AxiosPromise
    { + ): AxiosPromise { return localVarFp - .getAddress(walletId, addressId, options) + .broadcastTrade(walletId, addressId, tradeId, broadcastTradeRequest, options) .then(request => request(axios, basePath)); }, /** - * Get address balance - * @summary Get address balance for asset - * @param {string} walletId The ID of the wallet to fetch the balance for - * @param {string} addressId The onchain address of the address that is being fetched. - * @param {string} assetId The symbol of the asset to fetch the balance for + * Create a new trade + * @summary Create a new trade for an address + * @param {string} walletId The ID of the wallet the source address belongs to + * @param {string} addressId The ID of the address to conduct the trade from + * @param {CreateTradeRequest} createTradeRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getAddressBalance( + createTrade( walletId: string, addressId: string, - assetId: string, + createTradeRequest: CreateTradeRequest, options?: any, - ): AxiosPromise { + ): AxiosPromise { return localVarFp - .getAddressBalance(walletId, addressId, assetId, options) + .createTrade(walletId, addressId, createTradeRequest, options) .then(request => request(axios, basePath)); }, /** - * Get address balances - * @summary Get all balances for address - * @param {string} walletId The ID of the wallet to fetch the balances for - * @param {string} addressId The onchain address of the address that is being fetched. - * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * Get a trade by ID + * @summary Get a trade by ID + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address the trade belongs to + * @param {string} tradeId The ID of the trade to fetch * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listAddressBalances( + getTrade( walletId: string, addressId: string, - page?: string, + tradeId: string, options?: any, - ): AxiosPromise { + ): AxiosPromise { return localVarFp - .listAddressBalances(walletId, addressId, page, options) + .getTrade(walletId, addressId, tradeId, options) .then(request => request(axios, basePath)); }, /** - * List addresses in the wallet. - * @summary List addresses in a wallet. - * @param {string} walletId The ID of the wallet whose addresses to fetch + * List trades for an address. + * @summary List trades for an address. + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address to list trades for * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. - * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - listAddresses( - walletId: string, - limit?: number, - page?: string, - options?: any, - ): AxiosPromise { - return localVarFp - .listAddresses(walletId, limit, page, options) - .then(request => request(axios, basePath)); - }, - /** - * Request faucet funds to be sent to onchain address. - * @summary Request faucet funds for onchain address. - * @param {string} walletId The ID of the wallet the address belongs to. - * @param {string} addressId The onchain address of the address that is being fetched. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - requestFaucetFunds( + listTrades( walletId: string, addressId: string, + limit?: number, + page?: string, options?: any, - ): AxiosPromise { + ): AxiosPromise { return localVarFp - .requestFaucetFunds(walletId, addressId, options) + .listTrades(walletId, addressId, limit, page, options) .then(request => request(axios, basePath)); }, }; }; /** - * AddressesApi - object-oriented interface + * TradesApi - interface * @export - * @class AddressesApi - * @extends {BaseAPI} + * @interface TradesApi */ -export class AddressesApi extends BaseAPI { +export interface TradesApiInterface { /** - * Create a new address scoped to the wallet. - * @summary Create a new address - * @param {string} walletId The ID of the wallet to create the address in. - * @param {CreateAddressRequest} [createAddressRequest] + * Broadcast a trade + * @summary Broadcast a trade + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address the trade belongs to + * @param {string} tradeId The ID of the trade to broadcast + * @param {BroadcastTradeRequest} broadcastTradeRequest * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AddressesApi + * @memberof TradesApiInterface */ - public createAddress( + broadcastTrade( walletId: string, - createAddressRequest?: CreateAddressRequest, + addressId: string, + tradeId: string, + broadcastTradeRequest: BroadcastTradeRequest, options?: RawAxiosRequestConfig, - ) { - return AddressesApiFp(this.configuration) - .createAddress(walletId, createAddressRequest, options) - .then(request => request(this.axios, this.basePath)); - } + ): AxiosPromise; /** - * Get address - * @summary Get address by onchain address - * @param {string} walletId The ID of the wallet the address belongs to. - * @param {string} addressId The onchain address of the address that is being fetched. + * Create a new trade + * @summary Create a new trade for an address + * @param {string} walletId The ID of the wallet the source address belongs to + * @param {string} addressId The ID of the address to conduct the trade from + * @param {CreateTradeRequest} createTradeRequest * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AddressesApi + * @memberof TradesApiInterface */ - public getAddress(walletId: string, addressId: string, options?: RawAxiosRequestConfig) { - return AddressesApiFp(this.configuration) - .getAddress(walletId, addressId, options) - .then(request => request(this.axios, this.basePath)); - } + createTrade( + walletId: string, + addressId: string, + createTradeRequest: CreateTradeRequest, + options?: RawAxiosRequestConfig, + ): AxiosPromise; /** - * Get address balance - * @summary Get address balance for asset - * @param {string} walletId The ID of the wallet to fetch the balance for - * @param {string} addressId The onchain address of the address that is being fetched. - * @param {string} assetId The symbol of the asset to fetch the balance for + * Get a trade by ID + * @summary Get a trade by ID + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address the trade belongs to + * @param {string} tradeId The ID of the trade to fetch * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AddressesApi + * @memberof TradesApiInterface */ - public getAddressBalance( + getTrade( walletId: string, addressId: string, - assetId: string, + tradeId: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise; + + /** + * List trades for an address. + * @summary List trades for an address. + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address to list trades for + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof TradesApiInterface + */ + listTrades( + walletId: string, + addressId: string, + limit?: number, + page?: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise; +} + +/** + * TradesApi - object-oriented interface + * @export + * @class TradesApi + * @extends {BaseAPI} + */ +export class TradesApi extends BaseAPI implements TradesApiInterface { + /** + * Broadcast a trade + * @summary Broadcast a trade + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address the trade belongs to + * @param {string} tradeId The ID of the trade to broadcast + * @param {BroadcastTradeRequest} broadcastTradeRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof TradesApi + */ + public broadcastTrade( + walletId: string, + addressId: string, + tradeId: string, + broadcastTradeRequest: BroadcastTradeRequest, options?: RawAxiosRequestConfig, ) { - return AddressesApiFp(this.configuration) - .getAddressBalance(walletId, addressId, assetId, options) + return TradesApiFp(this.configuration) + .broadcastTrade(walletId, addressId, tradeId, broadcastTradeRequest, options) .then(request => request(this.axios, this.basePath)); } /** - * Get address balances - * @summary Get all balances for address - * @param {string} walletId The ID of the wallet to fetch the balances for - * @param {string} addressId The onchain address of the address that is being fetched. - * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * Create a new trade + * @summary Create a new trade for an address + * @param {string} walletId The ID of the wallet the source address belongs to + * @param {string} addressId The ID of the address to conduct the trade from + * @param {CreateTradeRequest} createTradeRequest * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AddressesApi + * @memberof TradesApi */ - public listAddressBalances( + public createTrade( walletId: string, addressId: string, - page?: string, + createTradeRequest: CreateTradeRequest, options?: RawAxiosRequestConfig, ) { - return AddressesApiFp(this.configuration) - .listAddressBalances(walletId, addressId, page, options) + return TradesApiFp(this.configuration) + .createTrade(walletId, addressId, createTradeRequest, options) .then(request => request(this.axios, this.basePath)); } /** - * List addresses in the wallet. - * @summary List addresses in a wallet. - * @param {string} walletId The ID of the wallet whose addresses to fetch - * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. - * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * Get a trade by ID + * @summary Get a trade by ID + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address the trade belongs to + * @param {string} tradeId The ID of the trade to fetch * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AddressesApi + * @memberof TradesApi */ - public listAddresses( + public getTrade( walletId: string, - limit?: number, - page?: string, + addressId: string, + tradeId: string, options?: RawAxiosRequestConfig, ) { - return AddressesApiFp(this.configuration) - .listAddresses(walletId, limit, page, options) + return TradesApiFp(this.configuration) + .getTrade(walletId, addressId, tradeId, options) .then(request => request(this.axios, this.basePath)); } /** - * Request faucet funds to be sent to onchain address. - * @summary Request faucet funds for onchain address. - * @param {string} walletId The ID of the wallet the address belongs to. - * @param {string} addressId The onchain address of the address that is being fetched. + * List trades for an address. + * @summary List trades for an address. + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address to list trades for + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AddressesApi + * @memberof TradesApi */ - public requestFaucetFunds(walletId: string, addressId: string, options?: RawAxiosRequestConfig) { - return AddressesApiFp(this.configuration) - .requestFaucetFunds(walletId, addressId, options) + public listTrades( + walletId: string, + addressId: string, + limit?: number, + page?: string, + options?: RawAxiosRequestConfig, + ) { + return TradesApiFp(this.configuration) + .listTrades(walletId, addressId, limit, page, options) .then(request => request(this.axios, this.basePath)); } } @@ -1271,11 +3238,7 @@ export const TransfersApiAxiosParamCreator = function (configuration?: Configura baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "POST", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -1330,11 +3293,7 @@ export const TransfersApiAxiosParamCreator = function (configuration?: Configura baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "POST", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -1390,11 +3349,7 @@ export const TransfersApiAxiosParamCreator = function (configuration?: Configura baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "GET", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -1442,11 +3397,7 @@ export const TransfersApiAxiosParamCreator = function (configuration?: Configura baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "GET", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -1712,13 +3663,92 @@ export const TransfersApiFactory = function ( }; }; +/** + * TransfersApi - interface + * @export + * @interface TransfersApi + */ +export interface TransfersApiInterface { + /** + * Broadcast a transfer + * @summary Broadcast a transfer + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address the transfer belongs to + * @param {string} transferId The ID of the transfer to broadcast + * @param {BroadcastTransferRequest} broadcastTransferRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof TransfersApiInterface + */ + broadcastTransfer( + walletId: string, + addressId: string, + transferId: string, + broadcastTransferRequest: BroadcastTransferRequest, + options?: RawAxiosRequestConfig, + ): AxiosPromise; + + /** + * Create a new transfer + * @summary Create a new transfer for an address + * @param {string} walletId The ID of the wallet the source address belongs to + * @param {string} addressId The ID of the address to transfer from + * @param {CreateTransferRequest} createTransferRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof TransfersApiInterface + */ + createTransfer( + walletId: string, + addressId: string, + createTransferRequest: CreateTransferRequest, + options?: RawAxiosRequestConfig, + ): AxiosPromise; + + /** + * Get a transfer by ID + * @summary Get a transfer by ID + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address the transfer belongs to + * @param {string} transferId The ID of the transfer to fetch + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof TransfersApiInterface + */ + getTransfer( + walletId: string, + addressId: string, + transferId: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise; + + /** + * List transfers for an address. + * @summary List transfers for an address. + * @param {string} walletId The ID of the wallet the address belongs to + * @param {string} addressId The ID of the address to list transfers for + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof TransfersApiInterface + */ + listTransfers( + walletId: string, + addressId: string, + limit?: number, + page?: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise; +} + /** * TransfersApi - object-oriented interface * @export * @class TransfersApi * @extends {BaseAPI} */ -export class TransfersApi extends BaseAPI { +export class TransfersApi extends BaseAPI implements TransfersApiInterface { /** * Broadcast a transfer * @summary Broadcast a transfer @@ -1829,11 +3859,7 @@ export const UsersApiAxiosParamCreator = function (configuration?: Configuration baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "GET", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -1907,13 +3933,29 @@ export const UsersApiFactory = function ( }; }; +/** + * UsersApi - interface + * @export + * @interface UsersApi + */ +export interface UsersApiInterface { + /** + * Get current user + * @summary Get current user + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof UsersApiInterface + */ + getCurrentUser(options?: RawAxiosRequestConfig): AxiosPromise; +} + /** * UsersApi - object-oriented interface * @export * @class UsersApi * @extends {BaseAPI} */ -export class UsersApi extends BaseAPI { +export class UsersApi extends BaseAPI implements UsersApiInterface { /** * Get current user * @summary Get current user @@ -1953,11 +3995,7 @@ export const WalletsApiAxiosParamCreator = function (configuration?: Configurati baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "POST", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -2005,11 +4043,7 @@ export const WalletsApiAxiosParamCreator = function (configuration?: Configurati baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "GET", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -2053,11 +4087,7 @@ export const WalletsApiAxiosParamCreator = function (configuration?: Configurati baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "GET", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -2098,11 +4128,7 @@ export const WalletsApiAxiosParamCreator = function (configuration?: Configurati baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "GET", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -2140,11 +4166,7 @@ export const WalletsApiAxiosParamCreator = function (configuration?: Configurati baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: "GET", - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -2383,13 +4405,86 @@ export const WalletsApiFactory = function ( }; }; +/** + * WalletsApi - interface + * @export + * @interface WalletsApi + */ +export interface WalletsApiInterface { + /** + * Create a new wallet scoped to the user. + * @summary Create a new wallet + * @param {CreateWalletRequest} [createWalletRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof WalletsApiInterface + */ + createWallet( + createWalletRequest?: CreateWalletRequest, + options?: RawAxiosRequestConfig, + ): AxiosPromise; + + /** + * Get wallet + * @summary Get wallet by ID + * @param {string} walletId The ID of the wallet to fetch + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof WalletsApiInterface + */ + getWallet(walletId: string, options?: RawAxiosRequestConfig): AxiosPromise; + + /** + * Get the aggregated balance of an asset across all of the addresses in the wallet. + * @summary Get the balance of an asset in the wallet + * @param {string} walletId The ID of the wallet to fetch the balance for + * @param {string} assetId The symbol of the asset to fetch the balance for + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof WalletsApiInterface + */ + getWalletBalance( + walletId: string, + assetId: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise; + + /** + * List the balances of all of the addresses in the wallet aggregated by asset. + * @summary List wallet balances + * @param {string} walletId The ID of the wallet to fetch the balances for + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof WalletsApiInterface + */ + listWalletBalances( + walletId: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise; + + /** + * List wallets belonging to the user. + * @summary List wallets + * @param {number} [limit] A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + * @param {string} [page] A cursor for pagination across multiple pages of results. Don\'t include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof WalletsApiInterface + */ + listWallets( + limit?: number, + page?: string, + options?: RawAxiosRequestConfig, + ): AxiosPromise; +} + /** * WalletsApi - object-oriented interface * @export * @class WalletsApi * @extends {BaseAPI} */ -export class WalletsApi extends BaseAPI { +export class WalletsApi extends BaseAPI implements WalletsApiInterface { /** * Create a new wallet scoped to the user. * @summary Create a new wallet diff --git a/src/client/common.ts b/src/client/common.ts index dafa34a3..33f7c8af 100644 --- a/src/client/common.ts +++ b/src/client/common.ts @@ -65,10 +65,7 @@ export const setApiKeyToObject = async function ( */ export const setBasicAuthToObject = function (object: any, configuration?: Configuration) { if (configuration && (configuration.username || configuration.password)) { - object["auth"] = { - username: configuration.username, - password: configuration.password, - }; + object["auth"] = { username: configuration.username, password: configuration.password }; } }; diff --git a/src/coinbase/address.ts b/src/coinbase/address.ts index 827ef542..e336e573 100644 --- a/src/coinbase/address.ts +++ b/src/coinbase/address.ts @@ -120,10 +120,21 @@ export class Address { * @returns {Decimal} The balance of the asset. */ async getBalance(assetId: string): Promise { + const normalizedAssetId = ((): string => { + switch (assetId) { + case Coinbase.assets.Gwei: + return Coinbase.assets.Eth; + case Coinbase.assets.Wei: + return Coinbase.assets.Eth; + default: + return assetId; + } + })(); + const response = await Coinbase.apiClients.address!.getAddressBalance( this.model.wallet_id, this.model.address_id, - assetId, + normalizedAssetId, ); if (!response.data) { @@ -162,7 +173,7 @@ export class Address { intervalSeconds = 0.2, timeoutSeconds = 10, ): Promise { - if (!this.key) { + if (!Coinbase.useServerSigner && !this.key) { throw new InternalError("Cannot transfer from address without private key loaded"); } let normalizedAmount = new Decimal(amount.toString()); @@ -198,6 +209,7 @@ export class Address { const normalizedAssetId = ((): string => { switch (assetId) { case Coinbase.assets.Gwei: + return Coinbase.assets.Eth; case Coinbase.assets.Wei: return Coinbase.assets.Eth; default: @@ -218,29 +230,33 @@ export class Address { createTransferRequest, ); - const transfer = Transfer.fromModel(response.data); - const transaction = transfer.getTransaction(); - let signedPayload = await this.key.signTransaction(transaction); - signedPayload = signedPayload.slice(2); + let transfer = Transfer.fromModel(response.data); - const broadcastTransferRequest = { - signed_payload: signedPayload, - }; + if (!Coinbase.useServerSigner) { + const transaction = transfer.getTransaction(); + let signedPayload = await this.key!.signTransaction(transaction); + signedPayload = signedPayload.slice(2); - response = await Coinbase.apiClients.transfer!.broadcastTransfer( - this.getWalletId(), - this.getId(), - transfer.getId(), - broadcastTransferRequest, - ); + const broadcastTransferRequest = { + signed_payload: signedPayload, + }; + + response = await Coinbase.apiClients.transfer!.broadcastTransfer( + this.getWalletId(), + this.getId(), + transfer.getId(), + broadcastTransferRequest, + ); - const updatedTransfer = Transfer.fromModel(response.data); + transfer = Transfer.fromModel(response.data); + } const startTime = Date.now(); while (Date.now() - startTime < timeoutSeconds * 1000) { - const status = await updatedTransfer.getStatus(); + await transfer.reload(); + const status = transfer.getStatus(); if (status === TransferStatus.COMPLETE || status === TransferStatus.FAILED) { - return updatedTransfer; + return transfer; } await delay(intervalSeconds); } diff --git a/src/coinbase/authenticator.ts b/src/coinbase/authenticator.ts index d512bd08..fee96025 100644 --- a/src/coinbase/authenticator.ts +++ b/src/coinbase/authenticator.ts @@ -77,7 +77,7 @@ export class CoinbaseAuthenticator { const uri = `${method} ${urlObject.host}${urlObject.pathname}`; const claims = { sub: this.apiKey, - iss: "coinbase-cloud", + iss: "cdp", aud: ["cdp_service"], nbf: Math.floor(Date.now() / 1000), exp: Math.floor(Date.now() / 1000) + 60, // +1 minute diff --git a/src/coinbase/coinbase.ts b/src/coinbase/coinbase.ts index 520d73d9..48b2009b 100644 --- a/src/coinbase/coinbase.ts +++ b/src/coinbase/coinbase.ts @@ -7,14 +7,14 @@ import { AddressesApiFactory, WalletsApiFactory, } from "../client"; -import { ethers } from "ethers"; import { BASE_PATH } from "./../client/base"; import { Configuration } from "./../client/configuration"; import { CoinbaseAuthenticator } from "./authenticator"; import { InternalError, InvalidAPIKeyFormat, InvalidConfiguration } from "./errors"; -import { ApiClients } from "./types"; +import { ApiClients, CoinbaseConfigureFromJsonOptions, CoinbaseOptions } from "./types"; import { User } from "./user"; import { logApiResponse, registerAxiosInterceptors } from "./utils"; +import * as os from "os"; /** * The Coinbase SDK. @@ -45,38 +45,39 @@ export class Coinbase { static apiClients: ApiClients = {}; /** - * The backup file path for Wallet seeds. + * The CDP API key Private Key. * * @constant */ - static backupFilePath: string = "seed.json"; + static apiKeyPrivateKey: string; /** - * The CDP API key Private Key. + * Whether to use a server signer or not. * * @constant */ - static apiKeyPrivateKey: string; + static useServerSigner: boolean; /** * Initializes the Coinbase SDK. * * @class - * @param apiKeyName - The API key name. - * @param privateKey - The private key associated with the API key. - * @param debugging - If true, logs API requests and responses to the console. - * @param basePath - The base path for the API. - * @param backupFilePath - The path to the file containing the Wallet backup data. + * @param options - The constructor options. + * @param options.apiKeyName - The API key name. + * @param options.privateKey - The private key associated with the API key. + * @param options.useServerSigner - Whether to use a Server-Signer or not. + * @param options.debugging - If true, logs API requests and responses to the console. + * @param options.basePath - The base path for the API. * @throws {InternalError} If the configuration is invalid. * @throws {InvalidAPIKeyFormat} If not able to create JWT token. */ - constructor( - apiKeyName: string, - privateKey: string, + constructor({ + apiKeyName = "", + privateKey = "", + useServerSigner = false, debugging = false, - basePath: string = BASE_PATH, - backupFilePath?: string, - ) { + basePath = BASE_PATH, + }: CoinbaseOptions) { if (apiKeyName === "") { throw new InternalError("Invalid configuration: apiKeyName is empty"); } @@ -94,35 +95,35 @@ export class Coinbase { response => logApiResponse(response, debugging), ); - Coinbase.apiClients.user = UsersApiFactory(config, BASE_PATH, axiosInstance); - Coinbase.apiClients.wallet = WalletsApiFactory(config, BASE_PATH, axiosInstance); - Coinbase.apiClients.address = AddressesApiFactory(config, BASE_PATH, axiosInstance); - Coinbase.apiClients.transfer = TransfersApiFactory(config, BASE_PATH, axiosInstance); - Coinbase.apiClients.baseSepoliaProvider = new ethers.JsonRpcProvider( - "https://sepolia.base.org", - ); - Coinbase.backupFilePath = backupFilePath ? backupFilePath : Coinbase.backupFilePath; + Coinbase.apiClients.user = UsersApiFactory(config, basePath, axiosInstance); + Coinbase.apiClients.wallet = WalletsApiFactory(config, basePath, axiosInstance); + Coinbase.apiClients.address = AddressesApiFactory(config, basePath, axiosInstance); + Coinbase.apiClients.transfer = TransfersApiFactory(config, basePath, axiosInstance); Coinbase.apiKeyPrivateKey = privateKey; + Coinbase.useServerSigner = useServerSigner; } /** * Reads the API key and private key from a JSON file and initializes the Coinbase SDK. * - * @param filePath - The path to the JSON file containing the API key and private key. - * @param debugging - If true, logs API requests and responses to the console. - * @param basePath - The base path for the API. - * @param backupFilePath - The path to the file containing the Wallet backup data. + * @param options - The configuration options. + * @param options.filePath - The path to the JSON file containing the API key and private key. + * @param options.useServerSigner - Whether to use a Server-Signer or not. + * @param options.debugging - If true, logs API requests and responses to the console. + * @param options.basePath - The base path for the API. * @returns A new instance of the Coinbase SDK. * @throws {InvalidAPIKeyFormat} If the file does not exist or the configuration values are missing/invalid. * @throws {InvalidConfiguration} If the configuration is invalid. * @throws {InvalidAPIKeyFormat} If not able to create JWT token. */ - static configureFromJson( - filePath: string = "coinbase_cloud_api_key.json", - debugging: boolean = false, - basePath: string = BASE_PATH, - backupFilePath?: string, - ): Coinbase { + static configureFromJson({ + filePath = "coinbase_cloud_api_key.json", + useServerSigner = false, + debugging = false, + basePath = BASE_PATH, + }: CoinbaseConfigureFromJsonOptions): Coinbase { + filePath = filePath.startsWith("~") ? filePath.replace("~", os.homedir()) : filePath; + if (!fs.existsSync(filePath)) { throw new InvalidConfiguration(`Invalid configuration: file not found at ${filePath}`); } @@ -133,7 +134,13 @@ export class Coinbase { throw new InvalidAPIKeyFormat("Invalid configuration: missing configuration values"); } - return new Coinbase(config.name, config.privateKey, debugging, basePath, backupFilePath); + return new Coinbase({ + apiKeyName: config.name, + privateKey: config.privateKey, + useServerSigner: useServerSigner, + debugging: debugging, + basePath: basePath, + }); } catch (e) { if (e instanceof SyntaxError) { throw new InvalidAPIKeyFormat("Not able to parse the configuration file"); diff --git a/src/coinbase/tests/address_test.ts b/src/coinbase/tests/address_test.ts index d47f5878..5b68d051 100644 --- a/src/coinbase/tests/address_test.ts +++ b/src/coinbase/tests/address_test.ts @@ -20,6 +20,7 @@ import { } from "./utils"; import { ArgumentError } from "../errors"; import { Transfer } from "../transfer"; +import { TransferStatus } from "../types"; // Test suite for Address class describe("Address", () => { @@ -100,7 +101,7 @@ describe("Address", () => { expect(Coinbase.apiClients.address!.getAddressBalance).toHaveBeenCalledWith( address.getWalletId(), address.getId(), - assetId, + Coinbase.assets.Eth, ); expect(Coinbase.apiClients.address!.getAddressBalance).toHaveBeenCalledTimes(1); }); @@ -113,7 +114,7 @@ describe("Address", () => { expect(Coinbase.apiClients.address!.getAddressBalance).toHaveBeenCalledWith( address.getWalletId(), address.getId(), - assetId, + Coinbase.assets.Eth, ); expect(Coinbase.apiClients.address!.getAddressBalance).toHaveBeenCalledTimes(1); }); @@ -184,13 +185,6 @@ describe("Address", () => { let weiAmount, destination, intervalSeconds, timeoutSeconds; let walletId, id; - const mockProvider = new ethers.JsonRpcProvider( - "https://sepolia.base.org", - ) as jest.Mocked; - mockProvider.getTransaction = jest.fn(); - mockProvider.getTransactionReceipt = jest.fn(); - Coinbase.apiClients.baseSepoliaProvider = mockProvider; - beforeEach(() => { weiAmount = new Decimal("500000000000000000"); destination = new Address(VALID_ADDRESS_MODEL, key as unknown as ethers.Wallet); @@ -219,14 +213,12 @@ describe("Address", () => { transaction_hash: "0x6c087c1676e8269dd81e0777244584d0cbfd39b6997b3477242a008fa9349e11", ...VALID_TRANSFER_MODEL, }); - mockProvider.getTransaction.mockResolvedValueOnce({ - blockHash: "0xdeadbeef", - } as ethers.TransactionResponse); - mockProvider.getTransactionReceipt.mockResolvedValueOnce({ - status: 1, - } as ethers.TransactionReceipt); - - const transfer = await address.createTransfer( + Coinbase.apiClients.transfer!.getTransfer = mockReturnValue({ + ...VALID_TRANSFER_MODEL, + status: TransferStatus.COMPLETE, + }); + + await address.createTransfer( weiAmount, Coinbase.assets.Wei, destination, @@ -236,6 +228,7 @@ describe("Address", () => { expect(Coinbase.apiClients.transfer!.createTransfer).toHaveBeenCalledTimes(1); expect(Coinbase.apiClients.transfer!.broadcastTransfer).toHaveBeenCalledTimes(1); + expect(Coinbase.apiClients.transfer!.getTransfer).toHaveBeenCalledTimes(1); }); it("should throw an APIError if the createTransfer API call fails", async () => { @@ -288,6 +281,10 @@ describe("Address", () => { transaction_hash: "0x6c087c1676e8269dd81e0777244584d0cbfd39b6997b3477242a008fa9349e11", ...VALID_TRANSFER_MODEL, }); + Coinbase.apiClients.transfer!.getTransfer = mockReturnValue({ + ...VALID_TRANSFER_MODEL, + status: TransferStatus.BROADCAST, + }); intervalSeconds = 0.000002; timeoutSeconds = 0.000002; @@ -315,6 +312,26 @@ describe("Address", () => { ).rejects.toThrow(ArgumentError); }); + it("should successfully create and complete a transfer when using server signer", async () => { + Coinbase.useServerSigner = true; + Coinbase.apiClients.transfer!.createTransfer = mockReturnValue(VALID_TRANSFER_MODEL); + Coinbase.apiClients.transfer!.getTransfer = mockReturnValue({ + ...VALID_TRANSFER_MODEL, + status: TransferStatus.COMPLETE, + }); + + await address.createTransfer( + weiAmount, + Coinbase.assets.Wei, + destination, + intervalSeconds, + timeoutSeconds, + ); + + expect(Coinbase.apiClients.transfer!.createTransfer).toHaveBeenCalledTimes(1); + expect(Coinbase.apiClients.transfer!.getTransfer).toHaveBeenCalledTimes(1); + }); + afterEach(() => { jest.restoreAllMocks(); }); diff --git a/src/coinbase/tests/coinbase_test.ts b/src/coinbase/tests/coinbase_test.ts index d6f75010..a92ef25b 100644 --- a/src/coinbase/tests/coinbase_test.ts +++ b/src/coinbase/tests/coinbase_test.ts @@ -1,3 +1,5 @@ +import * as os from "os"; +import * as fs from "fs"; import { randomUUID } from "crypto"; import { APIError } from "../api_error"; import { Coinbase } from "../coinbase"; @@ -11,44 +13,63 @@ import { walletsApiMock, } from "./utils"; import { ethers } from "ethers"; +import path from "path"; const PATH_PREFIX = "./src/coinbase/tests/config"; describe("Coinbase tests", () => { it("should throw an error if the API key name or private key is empty", () => { - expect(() => new Coinbase("", "test")).toThrow("Invalid configuration: apiKeyName is empty"); - expect(() => new Coinbase("test", "")).toThrow("Invalid configuration: privateKey is empty"); + expect(() => new Coinbase({ privateKey: "test" })).toThrow( + "Invalid configuration: apiKeyName is empty", + ); + expect(() => new Coinbase({ apiKeyName: "test" })).toThrow( + "Invalid configuration: privateKey is empty", + ); }); it("should throw an error if the file does not exist", () => { - expect(() => Coinbase.configureFromJson(`${PATH_PREFIX}/does-not-exist.json`)).toThrow( + expect(() => + Coinbase.configureFromJson({ filePath: `${PATH_PREFIX}/does-not-exist.json` }), + ).toThrow( "Invalid configuration: file not found at ./src/coinbase/tests/config/does-not-exist.json", ); }); it("should initialize the Coinbase SDK from a JSON file", () => { - const cbInstance = Coinbase.configureFromJson(`${PATH_PREFIX}/coinbase_cloud_api_key.json`); + const cbInstance = Coinbase.configureFromJson({ + filePath: `${PATH_PREFIX}/coinbase_cloud_api_key.json`, + }); expect(cbInstance).toBeInstanceOf(Coinbase); }); it("should throw an error if there is an issue reading the file or parsing the JSON data", () => { - expect(() => Coinbase.configureFromJson(`${PATH_PREFIX}/invalid.json`)).toThrow( + expect(() => Coinbase.configureFromJson({ filePath: `${PATH_PREFIX}/invalid.json` })).toThrow( "Invalid configuration: missing configuration values", ); }); it("should throw an error if the JSON file is not parseable", () => { - expect(() => Coinbase.configureFromJson(`${PATH_PREFIX}/not_parseable.json`)).toThrow( - "Not able to parse the configuration file", - ); + expect(() => + Coinbase.configureFromJson({ filePath: `${PATH_PREFIX}/not_parseable.json` }), + ).toThrow("Not able to parse the configuration file"); + }); + + it("should expand the tilde to the home directory", () => { + const configuration = fs.readFileSync(`${PATH_PREFIX}/coinbase_cloud_api_key.json`, "utf8"); + const homeDir = os.homedir(); + const relativePath = "~/test_config.json"; + const expandedPath = path.join(homeDir, "test_config.json"); + fs.writeFileSync(expandedPath, configuration, "utf8"); + const cbInstance = Coinbase.configureFromJson({ filePath: relativePath }); + expect(cbInstance).toBeInstanceOf(Coinbase); + fs.unlinkSync(expandedPath); }); describe("should able to interact with the API", () => { let user, walletId, publicKey, addressId, transactionHash; - const cbInstance = Coinbase.configureFromJson( - `${PATH_PREFIX}/coinbase_cloud_api_key.json`, - true, - ); + const cbInstance = Coinbase.configureFromJson({ + filePath: `${PATH_PREFIX}/coinbase_cloud_api_key.json`, + }); beforeAll(async () => { Coinbase.apiClients = { @@ -96,7 +117,9 @@ describe("Coinbase tests", () => { }); it("should raise an error if the user is not found", async () => { - const cbInstance = Coinbase.configureFromJson(`${PATH_PREFIX}/coinbase_cloud_api_key.json`); + const cbInstance = Coinbase.configureFromJson({ + filePath: `${PATH_PREFIX}/coinbase_cloud_api_key.json`, + }); Coinbase.apiClients.user!.getCurrentUser = mockReturnRejectedValue( new APIError("User not found"), ); diff --git a/src/coinbase/tests/e2e.ts b/src/coinbase/tests/e2e.ts new file mode 100644 index 00000000..ab748929 --- /dev/null +++ b/src/coinbase/tests/e2e.ts @@ -0,0 +1,112 @@ +import fs from "fs"; +import dotenv from "dotenv"; +import { Coinbase } from "../coinbase"; +import { TransferStatus } from "../types"; + +describe("Coinbase SDK E2E Test", () => { + let coinbase: Coinbase; + beforeAll(() => { + dotenv.config(); + }); + + beforeEach(() => { + coinbase = new Coinbase({ + apiKeyName: process.env.NAME, + privateKey: process.env.PRIVATE_KEY, + }); + }); + + it("should be able to access environment variables", () => { + expect(process.env.NAME).toBeDefined(); + expect(process.env.PRIVATE_KEY).toBeDefined(); + }); + + it("should have created a dist folder for NPM", () => { + expect(fs.existsSync("./dist")).toBe(true); + expect(fs.existsSync("./dist/index.js")).toBe(true); + expect(fs.existsSync("./dist/client/index.js")).toBe(true); + expect(fs.existsSync("./dist/coinbase/coinbase.js")).toBe(true); + }); + + it("should be able to interact with the Coinbase SDK", async () => { + console.log("Fetching default user..."); + const user = await coinbase.getDefaultUser(); + expect(user.getId()).toBeDefined(); + console.log(`Fetched default user with ID: ${user.getId()}`); + + console.log("Creating new wallet..."); + const wallet = await user.createWallet(); + expect(wallet?.getId()).toBeDefined(); + console.log( + `Created new wallet with ID: ${wallet.getId()}, default address: ${wallet.getDefaultAddress()}`, + ); + + console.log("Importing wallet with balance..."); + const seedFile = JSON.parse(process.env.WALLET_DATA || ""); + const walletId = Object.keys(seedFile)[0]; + const seed = seedFile[walletId].seed; + + const userWallet = await user.importWallet({ seed, walletId }); + expect(userWallet).toBeDefined(); + expect(userWallet.getId()).toBe(walletId); + console.log( + `Imported wallet with ID: ${userWallet.getId()}, default address: ${userWallet.getDefaultAddress()}`, + ); + await userWallet.saveSeed("test_seed.json"); + + try { + await userWallet.faucet(); + } catch { + console.log("Faucet request failed. Skipping..."); + } + console.log("Listing wallet addresses..."); + const addresses = userWallet.listAddresses(); + expect(addresses.length).toBeGreaterThan(0); + console.log(`Listed addresses: ${userWallet.listAddresses().join(", ")}`); + + console.log("Fetching wallet balances..."); + const balances = await userWallet.listBalances(); + expect(Array.from([...balances.keys()]).length).toBeGreaterThan(0); + console.log(`Fetched balances: ${balances.toString()}`); + + console.log("Exporting wallet..."); + const exportedWallet = await wallet.export(); + expect(exportedWallet.walletId).toBeDefined(); + expect(exportedWallet.seed).toBeDefined(); + + console.log("Saving seed to file..."); + await wallet.saveSeed("test_seed.json"); + expect(fs.existsSync("test_seed.json")).toBe(true); + console.log("Saved seed to test_seed.json"); + + const unhydratedWallet = await user.getWallet(walletId); + expect(unhydratedWallet.canSign()).toBe(false); + await unhydratedWallet.loadSeed("test_seed.json"); + expect(unhydratedWallet.canSign()).toBe(true); + expect(unhydratedWallet.getId()).toBe(walletId); + + console.log("Transfering 1 Gwei from default address to second address..."); + const transfer = await unhydratedWallet.createTransfer(1, Coinbase.assets.Gwei, wallet); + expect(await transfer.getStatus()).toBe(TransferStatus.COMPLETE); + console.log(`Transferred 1 Gwei from ${unhydratedWallet} to ${wallet}`); + + console.log("Fetching updated balances..."); + const firstBalance = await unhydratedWallet.listBalances(); + const secondBalance = await wallet.listBalances(); + expect(firstBalance.get(Coinbase.assets.Eth)).not.toEqual("0"); + expect(secondBalance.get(Coinbase.assets.Eth)).not.toEqual("0"); + console.log(`First address balances: ${firstBalance}`); + console.log(`Second address balances: ${secondBalance}`); + + const savedSeed = JSON.parse(fs.readFileSync("test_seed.json", "utf-8")); + fs.unlinkSync("test_seed.json"); + + expect(exportedWallet.seed.length).toBe(64); + expect(savedSeed[exportedWallet.walletId]).toEqual({ + seed: exportedWallet.seed, + encrypted: false, + authTag: "", + iv: "", + }); + }, 60000); +}); diff --git a/src/coinbase/tests/transfer_test.ts b/src/coinbase/tests/transfer_test.ts index 333811f2..8197e01d 100644 --- a/src/coinbase/tests/transfer_test.ts +++ b/src/coinbase/tests/transfer_test.ts @@ -5,7 +5,7 @@ import { TransferStatus } from "../types"; import { Transfer } from "../transfer"; import { Coinbase } from "../coinbase"; import { WEI_PER_ETHER } from "../constants"; -import { VALID_TRANSFER_MODEL } from "./utils"; +import { VALID_TRANSFER_MODEL, mockReturnValue, transfersApiMock } from "./utils"; const amount = new Decimal(ethers.parseUnits("100", 18).toString()); const ethAmount = amount.div(WEI_PER_ETHER); @@ -16,20 +16,13 @@ const signedPayload = const transactionHash = "0x6c087c1676e8269dd81e0777244584d0cbfd39b6997b3477242a008fa9349e11"; -const mockProvider = new ethers.JsonRpcProvider( - "https://sepolia.base.org", -) as jest.Mocked; -mockProvider.getTransaction = jest.fn(); -mockProvider.getTransactionReceipt = jest.fn(); -Coinbase.apiClients.baseSepoliaProvider = mockProvider; - describe("Transfer Class", () => { let transferModel: TransferModel; let transfer: Transfer; beforeEach(() => { + Coinbase.apiClients.transfer = transfersApiMock; transferModel = VALID_TRANSFER_MODEL; - transfer = Transfer.fromModel(transferModel); }); @@ -138,52 +131,67 @@ describe("Transfer Class", () => { describe("getStatus", () => { it("should return PENDING when the transaction has not been created", async () => { - const status = await transfer.getStatus(); + const status = transfer.getStatus(); expect(status).toEqual(TransferStatus.PENDING); }); it("should return PENDING when the transaction has been created but not broadcast", async () => { - transferModel.transaction_hash = transactionHash; transfer = Transfer.fromModel(transferModel); - mockProvider.getTransaction.mockResolvedValueOnce(null); - const status = await transfer.getStatus(); + const status = transfer.getStatus(); expect(status).toEqual(TransferStatus.PENDING); }); it("should return BROADCAST when the transaction has been broadcast but not included in a block", async () => { - transferModel.transaction_hash = transactionHash; + transferModel.status = TransferStatus.BROADCAST; transfer = Transfer.fromModel(transferModel); - mockProvider.getTransaction.mockResolvedValueOnce({ - blockHash: null, - } as ethers.TransactionResponse); - const status = await transfer.getStatus(); + const status = transfer.getStatus(); expect(status).toEqual(TransferStatus.BROADCAST); }); it("should return COMPLETE when the transaction has confirmed", async () => { - transferModel.transaction_hash = transactionHash; + transferModel.status = TransferStatus.COMPLETE; transfer = Transfer.fromModel(transferModel); - mockProvider.getTransaction.mockResolvedValueOnce({ - blockHash: "0xdeadbeef", - } as ethers.TransactionResponse); - mockProvider.getTransactionReceipt.mockResolvedValueOnce({ - status: 1, - } as ethers.TransactionReceipt); - const status = await transfer.getStatus(); + const status = transfer.getStatus(); expect(status).toEqual(TransferStatus.COMPLETE); }); it("should return FAILED when the transaction has failed", async () => { - transferModel.transaction_hash = transactionHash; + transferModel.status = TransferStatus.FAILED; transfer = Transfer.fromModel(transferModel); - mockProvider.getTransaction.mockResolvedValueOnce({ - blockHash: "0xdeadbeef", - } as ethers.TransactionResponse); - mockProvider.getTransactionReceipt.mockResolvedValueOnce({ - status: 0, - } as ethers.TransactionReceipt); - const status = await transfer.getStatus(); + const status = transfer.getStatus(); expect(status).toEqual(TransferStatus.FAILED); }); }); + + describe("reload", () => { + it("should return PENDING when the trnasaction has not been created", async () => { + Coinbase.apiClients.transfer!.getTransfer = mockReturnValue({ + ...VALID_TRANSFER_MODEL, + status: TransferStatus.PENDING, + }); + await transfer.reload(); + expect(transfer.getStatus()).toEqual(TransferStatus.PENDING); + expect(Coinbase.apiClients.transfer!.getTransfer).toHaveBeenCalledTimes(1); + }); + + it("should return COMPLETE when the trnasaction is complete", async () => { + Coinbase.apiClients.transfer!.getTransfer = mockReturnValue({ + ...VALID_TRANSFER_MODEL, + status: TransferStatus.COMPLETE, + }); + await transfer.reload(); + expect(transfer.getStatus()).toEqual(TransferStatus.COMPLETE); + expect(Coinbase.apiClients.transfer!.getTransfer).toHaveBeenCalledTimes(1); + }); + + it("should return FAILED when the trnasaction has failed", async () => { + Coinbase.apiClients.transfer!.getTransfer = mockReturnValue({ + ...VALID_TRANSFER_MODEL, + status: TransferStatus.FAILED, + }); + await transfer.reload(); + expect(transfer.getStatus()).toEqual(TransferStatus.FAILED); + expect(Coinbase.apiClients.transfer!.getTransfer).toHaveBeenCalledTimes(1); + }); + }); }); diff --git a/src/coinbase/tests/user_test.ts b/src/coinbase/tests/user_test.ts index 6d50b7bd..0839ea31 100644 --- a/src/coinbase/tests/user_test.ts +++ b/src/coinbase/tests/user_test.ts @@ -1,6 +1,5 @@ import * as crypto from "crypto"; -import * as fs from "fs"; -import { ArgumentError, InternalError } from "../errors"; +import { InternalError } from "../errors"; import { AddressBalanceList, AddressList, @@ -10,7 +9,7 @@ import { Wallet as WalletModel, } from "./../../client/api"; import { Coinbase } from "./../coinbase"; -import { SeedData, WalletData } from "./../types"; +import { WalletData } from "./../types"; import { User } from "./../user"; import { Wallet } from "./../wallet"; import { @@ -99,216 +98,6 @@ describe("User Class", () => { }); }); - describe(".saveWallet", () => { - let seed: string; - let walletId: string; - let mockSeedWallet: Wallet; - let savedWallet: Wallet; - - beforeAll(async () => { - walletId = crypto.randomUUID(); - seed = "86fc9fba421dcc6ad42747f14132c3cd975bd9fb1454df84ce5ea554f2542fbe"; - const { address1, wallet1PrivateKey } = generateWalletFromSeed(seed); - mockAddressModel = { - address_id: address1, - wallet_id: walletId, - public_key: wallet1PrivateKey, - network_id: Coinbase.networkList.BaseSepolia, - }; - mockWalletModel = { - id: walletId, - network_id: Coinbase.networkList.BaseSepolia, - default_address: mockAddressModel, - }; - user = new User(mockUserModel); - Coinbase.apiClients.address = addressesApiMock; - Coinbase.apiClients.address!.getAddress = mockReturnValue(mockAddressModel); - Coinbase.backupFilePath = crypto.randomUUID() + ".json"; - Coinbase.apiKeyPrivateKey = crypto.generateKeyPairSync("ec", { - namedCurve: "prime256v1", - privateKeyEncoding: { type: "pkcs8", format: "pem" }, - publicKeyEncoding: { type: "spki", format: "pem" }, - }).privateKey; - mockSeedWallet = await Wallet.init(mockWalletModel, seed, [mockAddressModel]); - }); - - afterEach(async () => { - fs.unlinkSync(Coinbase.backupFilePath); - }); - - it("should save the Wallet data when encryption is false", async () => { - savedWallet = user.saveWallet(mockSeedWallet); - expect(savedWallet).toBe(mockSeedWallet); - const storedSeedData = fs.readFileSync(Coinbase.backupFilePath); - const walletSeedData = JSON.parse(storedSeedData.toString()); - expect(walletSeedData[walletId].encrypted).toBe(false); - expect(walletSeedData[walletId].iv).toBe(""); - expect(walletSeedData[walletId].authTag).toBe(""); - expect(walletSeedData[walletId].seed).toBe(seed); - }); - - it("should save the Wallet data when encryption is true", async () => { - savedWallet = user.saveWallet(mockSeedWallet, true); - expect(savedWallet).toBe(mockSeedWallet); - const storedSeedData = fs.readFileSync(Coinbase.backupFilePath); - const walletSeedData = JSON.parse(storedSeedData.toString()); - expect(walletSeedData[walletId].encrypted).toBe(true); - expect(walletSeedData[walletId].iv).toBeTruthy(); - expect(walletSeedData[walletId].authTag).toBeTruthy(); - expect(walletSeedData[walletId].seed).not.toBe(seed); - }); - - it("should throw an error when the existing file is malformed", async () => { - fs.writeFileSync( - Coinbase.backupFilePath, - JSON.stringify({ malformed: "test" }, null, 2), - "utf8", - ); - expect(() => user.saveWallet(mockSeedWallet)).toThrow(ArgumentError); - }); - }); - - describe(".loadWallets", () => { - let mockUserModel: UserModel; - let user: User; - let walletId: string; - let addressModel: AddressModel; - let walletModelWithDefaultAddress: WalletModel; - let addressListModel: AddressList; - let initialSeedData: Record; - let malformedSeedData: Record; - let seedDataWithoutSeed: Record; - let seedDataWithoutIv: Record; - let seedDataWithoutAuthTag: Record; - - beforeAll(() => { - walletId = crypto.randomUUID(); - addressModel = newAddressModel(walletId); - addressModel.address_id = "0xB1666C6cDDB29468f721f3A4881a6e95CC963849"; - walletModelWithDefaultAddress = { - id: walletId, - network_id: Coinbase.networkList.BaseSepolia, - default_address: addressModel, - }; - addressListModel = { - data: [addressModel], - has_more: false, - next_page: "", - total_count: 1, - }; - Coinbase.apiClients.wallet = walletsApiMock; - Coinbase.apiClients.address = addressesApiMock; - Coinbase.backupFilePath = `${crypto.randomUUID()}.json`; - Coinbase.apiKeyPrivateKey = crypto.generateKeyPairSync("ec", { - namedCurve: "prime256v1", - privateKeyEncoding: { type: "pkcs8", format: "pem" }, - publicKeyEncoding: { type: "spki", format: "pem" }, - }).privateKey; - mockUserModel = { - id: "12345", - } as UserModel; - - initialSeedData = { - [walletId]: { - seed: "86fc9fba421dcc6ad42747f14132c3cd975bd9fb1454df84ce5ea554f2542fbe", - encrypted: false, - iv: "", - authTag: "", - }, - }; - malformedSeedData = { - [walletId]: "test", - }; - seedDataWithoutSeed = { - [walletId]: { - seed: "", - encrypted: false, - }, - }; - seedDataWithoutIv = { - [walletId]: { - seed: "86fc9fba421dcc6ad42747f14132c3cd975bd9fb1454df84ce5ea554f2542fbe", - encrypted: true, - iv: "", - auth_tag: "0x111", - }, - }; - seedDataWithoutAuthTag = { - [walletId]: { - seed: "86fc9fba421dcc6ad42747f14132c3cd975bd9fb1454df84ce5ea554f2542fbe", - encrypted: true, - iv: "0x111", - auth_tag: "", - }, - }; - }); - - beforeEach(() => { - user = new User(mockUserModel); - fs.writeFileSync(Coinbase.backupFilePath, JSON.stringify(initialSeedData, null, 2)); - }); - - afterEach(() => { - if (fs.existsSync(Coinbase.backupFilePath)) { - fs.unlinkSync(Coinbase.backupFilePath); - } - }); - - it("loads the Wallet from backup", async () => { - const seed = "86fc9fba421dcc6ad42747f14132c3cd975bd9fb1454df84ce5ea554f2542fbe"; - const { address1, address2 } = generateWalletFromSeed(seed); - const addressModel1: AddressModel = newAddressModel(walletId, address1); - const addressModel2: AddressModel = newAddressModel(walletId, address2); - walletModelWithDefaultAddress = { - id: walletId, - network_id: Coinbase.networkList.BaseSepolia, - default_address: addressModel1, - }; - addressListModel = { - data: [addressModel1, addressModel2], - has_more: false, - next_page: "", - total_count: 2, - }; - - Coinbase.apiClients.wallet = walletsApiMock; - Coinbase.apiClients.wallet!.getWallet = mockReturnValue(walletModelWithDefaultAddress); - Coinbase.apiClients.address = addressesApiMock; - Coinbase.apiClients.address!.listAddresses = mockReturnValue(addressListModel); - - const wallets = await user.loadWallets(); - const wallet = wallets[walletId]; - expect(wallet).not.toBeNull(); - expect(wallet.getId()).toBe(walletId); - expect(wallet.getDefaultAddress()?.getId()).toBe(addressModel1.address_id); - }); - - it("throws an error when the backup file is absent", async () => { - fs.unlinkSync(Coinbase.backupFilePath); - await expect(user.loadWallets()).rejects.toThrow(new ArgumentError("Backup file not found")); - }); - - it("throws an error when the backup file is corrupted", async () => { - fs.writeFileSync(Coinbase.backupFilePath, JSON.stringify(malformedSeedData, null, 2)); - await expect(user.loadWallets()).rejects.toThrow(new ArgumentError("Malformed backup data")); - }); - - it("throws an error when backup does not contain seed", async () => { - fs.writeFileSync(Coinbase.backupFilePath, JSON.stringify(seedDataWithoutSeed, null, 2)); - await expect(user.loadWallets()).rejects.toThrow(new ArgumentError("Malformed backup data")); - }); - - it("throws an error when backup does not contain iv", async () => { - fs.writeFileSync(Coinbase.backupFilePath, JSON.stringify(seedDataWithoutIv, null, 2)); - await expect(user.loadWallets()).rejects.toThrow(new ArgumentError("Malformed backup data")); - }); - - it("throws an error when backup does not contain auth_tag", async () => { - fs.writeFileSync(Coinbase.backupFilePath, JSON.stringify(seedDataWithoutAuthTag, null, 2)); - await expect(user.loadWallets()).rejects.toThrow(new ArgumentError("Malformed backup data")); - }); - }); - describe(".listWallets", () => { let user: User; let walletId: string; @@ -371,8 +160,8 @@ describe("User Class", () => { next_page: "", total_count: 0, }); - const wallets = await user.listWallets(); - expect(wallets.length).toBe(0); + const result = await user.listWallets(); + expect(result.wallets.length).toBe(0); expect(Coinbase.apiClients.wallet!.listWallets).toHaveBeenCalledTimes(1); expect(Coinbase.apiClients.address!.listAddresses).toHaveBeenCalledTimes(0); }); @@ -384,15 +173,16 @@ describe("User Class", () => { Coinbase.apiClients.wallet!.listWallets = mockReturnValue({ data: [walletModelWithDefaultAddress], has_more: false, - next_page: "", + next_page: "nextPageToken", total_count: 1, }); Coinbase.apiClients.address!.listAddresses = mockReturnValue(addressListModel); - const wallets = await user.listWallets(); - expect(wallets[0]).toBeInstanceOf(Wallet); - expect(wallets.length).toBe(1); - expect(wallets[0].getId()).toBe(walletId); - expect(wallets[0].listAddresses().length).toBe(2); + const result = await user.listWallets(); + expect(result.wallets[0]).toBeInstanceOf(Wallet); + expect(result.wallets.length).toBe(1); + expect(result.wallets[0].getId()).toBe(walletId); + expect(result.wallets[0].listAddresses().length).toBe(2); + expect(result.nextPageToken).toBe("nextPageToken"); expect(Coinbase.apiClients.wallet!.listWallets).toHaveBeenCalledTimes(1); expect(Coinbase.apiClients.address!.listAddresses).toHaveBeenCalledTimes(1); expect(Coinbase.apiClients.address!.listAddresses).toHaveBeenCalledWith( @@ -411,8 +201,9 @@ describe("User Class", () => { next_page: "", total_count: 1, }); - Coinbase.apiClients.address!.listAddresses = mockReturnValue(addressListModel); - const [unhydratedWallet] = await user.listWallets(); + Coinbase.apiClients.address!.listAddresses = mockReturnValue(mockAddressList); + const result = await user.listWallets(); + const unhydratedWallet = result.wallets[0]; expect(unhydratedWallet.canSign()).toBe(false); await unhydratedWallet.setSeed(seed); expect(unhydratedWallet).toBeInstanceOf(Wallet); @@ -429,8 +220,9 @@ describe("User Class", () => { next_page: "", total_count: 1, }); - Coinbase.apiClients.address!.listAddresses = mockReturnValue(addressListModel); - const [unhydratedWallet] = await user.listWallets(); + Coinbase.apiClients.address!.listAddresses = mockReturnValue(mockAddressList); + const result = await user.listWallets(); + const unhydratedWallet = result.wallets[0]; expect(() => unhydratedWallet.export()).toThrow( new InternalError("Cannot export Wallet without loaded seed"), ); @@ -475,7 +267,8 @@ describe("User Class", () => { transaction_hash: generateRandomHash(8), }); - const [wallet] = await user.listWallets(); + const result = await user.listWallets(); + const wallet = result.wallets[0]; expect(wallet.getId()).toBe(walletId); expect(wallet.canSign()).toBe(false); expect(wallet.getNetworkId()).toBe(Coinbase.networkList.BaseSepolia); @@ -496,4 +289,73 @@ describe("User Class", () => { expect(faucet).toBeInstanceOf(FaucetTransaction); }); }); + + describe(".getWallet", () => { + let user: User; + let walletId: string; + let walletModelWithDefaultAddress: WalletModel; + let addressListModel: AddressList; + + beforeEach(() => { + jest.clearAllMocks(); + walletId = crypto.randomUUID(); + const seed = "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"; + const { address1 } = generateWalletFromSeed(seed); + mockAddressModel = newAddressModel(walletId, address1); + + const addressModel1: AddressModel = newAddressModel(walletId); + const addressModel2: AddressModel = newAddressModel(walletId); + walletModelWithDefaultAddress = { + id: walletId, + network_id: Coinbase.networkList.BaseSepolia, + default_address: addressModel1, + }; + addressListModel = { + data: [addressModel1, addressModel2], + has_more: false, + next_page: "", + total_count: 1, + }; + Coinbase.apiClients.wallet = walletsApiMock; + Coinbase.apiClients.address = addressesApiMock; + const mockUserModel: UserModel = { + id: "12345", + } as UserModel; + user = new User(mockUserModel); + }); + + it("should raise an error when the Wallet API call fails", async () => { + Coinbase.apiClients.wallet!.getWallet = mockReturnRejectedValue(new Error("API Error")); + await expect(user.getWallet(walletId)).rejects.toThrow(new Error("API Error")); + expect(Coinbase.apiClients.wallet!.getWallet).toHaveBeenCalledTimes(1); + expect(Coinbase.apiClients.wallet!.getWallet).toHaveBeenLastCalledWith(walletId); + }); + + it("should raise an error when the Address API call fails", async () => { + Coinbase.apiClients.wallet!.getWallet = mockReturnValue(walletModelWithDefaultAddress); + Coinbase.apiClients.address!.listAddresses = mockReturnRejectedValue(new Error("API Error")); + await expect(user.getWallet(walletId)).rejects.toThrow(new Error("API Error")); + expect(Coinbase.apiClients.wallet!.getWallet).toHaveBeenCalledTimes(1); + expect(Coinbase.apiClients.wallet!.getWallet).toHaveBeenLastCalledWith(walletId); + expect(Coinbase.apiClients.address!.listAddresses).toHaveBeenCalledTimes(1); + expect(Coinbase.apiClients.address!.listAddresses).toHaveBeenLastCalledWith(walletId); + }); + + it("should return the Wallet", async () => { + const seed = "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"; + const { address1 } = generateWalletFromSeed(seed); + mockAddressModel = newAddressModel(walletId, address1); + Coinbase.apiClients.wallet!.getWallet = mockReturnValue(walletModelWithDefaultAddress); + Coinbase.apiClients.address!.listAddresses = mockReturnValue(addressListModel); + const result = await user.getWallet(walletId); + expect(result).toBeInstanceOf(Wallet); + expect(result.getId()).toBe(walletId); + expect(result.listAddresses().length).toBe(2); + expect(result.canSign()).toBe(false); + expect(Coinbase.apiClients.wallet!.getWallet).toHaveBeenCalledTimes(1); + expect(Coinbase.apiClients.address!.listAddresses).toHaveBeenCalledTimes(1); + expect(Coinbase.apiClients.address!.listAddresses).toHaveBeenCalledWith(walletId); + expect(Coinbase.apiClients.wallet!.getWallet).toHaveBeenCalledWith(walletId); + }); + }); }); diff --git a/src/coinbase/tests/wallet_test.ts b/src/coinbase/tests/wallet_test.ts index ca36bfcd..d285f0c5 100644 --- a/src/coinbase/tests/wallet_test.ts +++ b/src/coinbase/tests/wallet_test.ts @@ -1,3 +1,4 @@ +import * as fs from "fs"; import crypto from "crypto"; import Decimal from "decimal.js"; import { ethers } from "ethers"; @@ -5,8 +6,9 @@ import { Address } from "../address"; import { APIError } from "../api_error"; import { Coinbase } from "../coinbase"; import { GWEI_PER_ETHER, WEI_PER_ETHER } from "../constants"; -import { ArgumentError } from "../errors"; +import { ArgumentError, InternalError } from "../errors"; import { Wallet } from "../wallet"; +import { ServerSignerStatus, TransferStatus } from "../types"; import { AddressBalanceList, Address as AddressModel, @@ -16,6 +18,7 @@ import { import { VALID_ADDRESS_MODEL, VALID_TRANSFER_MODEL, + VALID_WALLET_MODEL, addressesApiMock, generateWalletFromSeed, mockFn, @@ -56,17 +59,14 @@ describe("Wallet Class", () => { wallet = await Wallet.create(); }); + beforeEach(async () => { + Coinbase.useServerSigner = false; + }); + describe(".createTransfer", () => { let weiAmount, destination, intervalSeconds, timeoutSeconds; let balanceModel: BalanceModel; - const mockProvider = new ethers.JsonRpcProvider( - "https://sepolia.base.org", - ) as jest.Mocked; - mockProvider.getTransaction = jest.fn(); - mockProvider.getTransactionReceipt = jest.fn(); - Coinbase.apiClients.baseSepoliaProvider = mockProvider; - beforeEach(() => { const key = ethers.Wallet.createRandom(); weiAmount = new Decimal("500000000000000000"); @@ -94,12 +94,10 @@ describe("Wallet Class", () => { transaction_hash: "0x6c087c1676e8269dd81e0777244584d0cbfd39b6997b3477242a008fa9349e11", ...VALID_TRANSFER_MODEL, }); - mockProvider.getTransaction.mockResolvedValueOnce({ - blockHash: "0xdeadbeef", - } as ethers.TransactionResponse); - mockProvider.getTransactionReceipt.mockResolvedValueOnce({ - status: 1, - } as ethers.TransactionReceipt); + Coinbase.apiClients.transfer!.getTransfer = mockReturnValue({ + ...VALID_TRANSFER_MODEL, + status: TransferStatus.COMPLETE, + }); await wallet.createTransfer( weiAmount, @@ -111,6 +109,7 @@ describe("Wallet Class", () => { expect(Coinbase.apiClients.transfer!.createTransfer).toHaveBeenCalledTimes(1); expect(Coinbase.apiClients.transfer!.broadcastTransfer).toHaveBeenCalledTimes(1); + expect(Coinbase.apiClients.transfer!.getTransfer).toHaveBeenCalledTimes(1); }); it("should throw an APIError if the createTransfer API call fails", async () => { @@ -150,6 +149,10 @@ describe("Wallet Class", () => { transaction_hash: "0x6c087c1676e8269dd81e0777244584d0cbfd39b6997b3477242a008fa9349e11", ...VALID_TRANSFER_MODEL, }); + Coinbase.apiClients.transfer!.getTransfer = mockReturnValue({ + ...VALID_TRANSFER_MODEL, + status: TransferStatus.BROADCAST, + }); intervalSeconds = 0.000002; timeoutSeconds = 0.000002; @@ -177,6 +180,26 @@ describe("Wallet Class", () => { ).rejects.toThrow(ArgumentError); }); + it("should successfully create and complete a transfer when using server signer", async () => { + Coinbase.useServerSigner = true; + Coinbase.apiClients.transfer!.createTransfer = mockReturnValue(VALID_TRANSFER_MODEL); + Coinbase.apiClients.transfer!.getTransfer = mockReturnValue({ + ...VALID_TRANSFER_MODEL, + status: TransferStatus.COMPLETE, + }); + + await wallet.createTransfer( + weiAmount, + Coinbase.assets.Wei, + destination, + intervalSeconds, + timeoutSeconds, + ); + + expect(Coinbase.apiClients.transfer!.createTransfer).toHaveBeenCalledTimes(1); + expect(Coinbase.apiClients.transfer!.getTransfer).toHaveBeenCalledTimes(1); + }); + afterEach(() => { jest.restoreAllMocks(); }); @@ -225,6 +248,49 @@ describe("Wallet Class", () => { expect(wallet.getAddress(newAddress.getId())!.getId()).toBe(newAddress.getId()); expect(Coinbase.apiClients.address!.createAddress).toHaveBeenCalledTimes(1); }); + + describe("when using a server signer", () => { + let walletId = crypto.randomUUID(); + let wallet: Wallet; + beforeEach(async () => { + jest.clearAllMocks(); + Coinbase.useServerSigner = true; + }); + + it("should return a Wallet instance", async () => { + Coinbase.apiClients.wallet!.createWallet = mockReturnValue({ + ...VALID_WALLET_MODEL, + server_signer_status: ServerSignerStatus.PENDING, + }); + Coinbase.apiClients.wallet!.getWallet = mockReturnValue({ + ...VALID_WALLET_MODEL, + server_signer_status: ServerSignerStatus.ACTIVE, + }); + Coinbase.apiClients.address!.createAddress = mockReturnValue(newAddressModel(walletId)); + + wallet = await Wallet.create(); + expect(wallet).toBeInstanceOf(Wallet); + expect(wallet.getServerSignerStatus()).toBe(ServerSignerStatus.ACTIVE); + expect(Coinbase.apiClients.wallet!.createWallet).toHaveBeenCalledTimes(1); + expect(Coinbase.apiClients.wallet!.getWallet).toHaveBeenCalledTimes(2); + expect(Coinbase.apiClients.address!.createAddress).toHaveBeenCalledTimes(1); + }); + + it("should throw an Error if the Wallet times out waiting on a not active server signer", async () => { + const intervalSeconds = 0.000002; + const timeoutSeconds = 0.000002; + Coinbase.apiClients.wallet!.getWallet = mockReturnValue({ + ...VALID_WALLET_MODEL, + server_signer_status: ServerSignerStatus.PENDING, + }); + + await expect(Wallet.create(intervalSeconds, timeoutSeconds)).rejects.toThrow( + "Wallet creation timed out. Check status of your Server-Signer", + ); + expect(Coinbase.apiClients.wallet!.createWallet).toHaveBeenCalledTimes(1); + expect(Coinbase.apiClients.wallet!.getWallet).toHaveBeenCalled(); + }); + }); }); describe(".init", () => { @@ -450,4 +516,140 @@ describe("Wallet Class", () => { expect(wallet.canSign()).toBe(true); }); }); + + describe(".saveSeed", () => { + const seed = "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"; + let apiPrivateKey; + const filePath = "seeds.json"; + let seedWallet; + + beforeEach(async () => { + apiPrivateKey = Coinbase.apiKeyPrivateKey; + Coinbase.apiKeyPrivateKey = crypto.generateKeyPairSync("ec", { + namedCurve: "prime256v1", + privateKeyEncoding: { type: "pkcs8", format: "pem" }, + publicKeyEncoding: { type: "spki", format: "pem" }, + }).privateKey; + fs.writeFileSync(filePath, JSON.stringify({}), "utf8"); + seedWallet = await Wallet.init(walletModel, seed); + }); + + afterEach(async () => { + fs.unlinkSync(filePath); + Coinbase.apiKeyPrivateKey = apiPrivateKey; + }); + + it("should save the seed when encryption is false", async () => { + seedWallet.saveSeed(filePath, false); + const storedSeedData = fs.readFileSync(filePath); + const walletSeedData = JSON.parse(storedSeedData.toString()); + expect(walletSeedData[walletId].encrypted).toBe(false); + expect(walletSeedData[walletId].iv).toBe(""); + expect(walletSeedData[walletId].authTag).toBe(""); + expect(walletSeedData[walletId].seed).toBe(seed); + }); + + it("should save the seed when encryption is true", async () => { + seedWallet.saveSeed(filePath, true); + const storedSeedData = fs.readFileSync(filePath); + const walletSeedData = JSON.parse(storedSeedData.toString()); + expect(walletSeedData[walletId].encrypted).toBe(true); + expect(walletSeedData[walletId].iv).not.toBe(""); + expect(walletSeedData[walletId].authTag).not.toBe(""); + expect(walletSeedData[walletId].seed).not.toBe(seed); + }); + + it("should throw an error when the wallet is seedless", async () => { + const seedlessWallet = await Wallet.init(walletModel, "", [newAddressModel(walletId)]); + expect(() => seedlessWallet.saveSeed(filePath, false)).toThrow(InternalError); + }); + }); + + describe(".loadSeed", () => { + const seed = "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"; + let apiPrivateKey; + const filePath = "seeds.json"; + let seedWallet; + let seedlessWallet; + const addressModel = newAddressModel(walletId, "0x919538116b4F25f1CE01429fd9Ed7964556bf565"); + + beforeEach(async () => { + apiPrivateKey = Coinbase.apiKeyPrivateKey; + Coinbase.apiKeyPrivateKey = crypto.generateKeyPairSync("ec", { + namedCurve: "prime256v1", + privateKeyEncoding: { type: "pkcs8", format: "pem" }, + publicKeyEncoding: { type: "spki", format: "pem" }, + }).privateKey; + + const initialSeedData = { + [walletId]: { + encrypted: false, + iv: "", + authTag: "", + seed, + }, + }; + fs.writeFileSync(filePath, JSON.stringify(initialSeedData), "utf8"); + seedWallet = await Wallet.init(walletModel, seed, [addressModel]); + seedlessWallet = await Wallet.init(walletModel, "", [addressModel]); + }); + + afterEach(async () => { + fs.unlinkSync(filePath); + Coinbase.apiKeyPrivateKey = apiPrivateKey; + }); + + it("loads the seed from the file", async () => { + seedlessWallet.loadSeed(filePath); + expect(seedlessWallet.canSign()).toBe(true); + }); + + it("loads the encrypted seed from the file", async () => { + seedWallet.saveSeed(filePath, true); + seedlessWallet.loadSeed(filePath); + expect(seedlessWallet.canSign()).toBe(true); + }); + + it("loads the encrypted seed from the file with multiple seeds", async () => { + seedWallet.saveSeed(filePath, true); + + const otherModel = { + id: crypto.randomUUID(), + network_id: Coinbase.networkList.BaseSepolia, + }; + const otherWallet = await Wallet.init(otherModel); + otherWallet.saveSeed(filePath, true); + + seedlessWallet.loadSeed(filePath); + expect(seedlessWallet.canSign()).toBe(true); + }); + + it("raises an error if the wallet is already hydrated", async () => { + expect(() => seedWallet.loadSeed(filePath)).toThrow(InternalError); + }); + + it("raises an error when file contains different wallet data", async () => { + const otherSeedData = { + [crypto.randomUUID()]: { + encrypted: false, + iv: "", + authTag: "", + seed, + }, + }; + fs.writeFileSync(filePath, JSON.stringify(otherSeedData), "utf8"); + + expect(() => seedlessWallet.loadSeed(filePath)).toThrow(ArgumentError); + }); + + it("raises an error when the file is absent", async () => { + expect(() => seedlessWallet.loadSeed("non-file.json")).toThrow(ArgumentError); + }); + + it("raises an error when the file is corrupted", async () => { + fs.writeFileSync(filePath, "corrupted data", "utf8"); + + expect(() => seedlessWallet.loadSeed(filePath)).toThrow(ArgumentError); + }); + }); }); diff --git a/src/coinbase/transfer.ts b/src/coinbase/transfer.ts index f0bbafd2..c1ffe2ee 100644 --- a/src/coinbase/transfer.ts +++ b/src/coinbase/transfer.ts @@ -188,18 +188,19 @@ export class Transfer { * * @returns The Status of the Transfer. */ - public async getStatus(): Promise { - const transactionHash = this.getTransactionHash(); - if (!transactionHash) return TransferStatus.PENDING; - - const onchainTransaction = - await Coinbase.apiClients.baseSepoliaProvider!.getTransaction(transactionHash); - if (!onchainTransaction) return TransferStatus.PENDING; - if (!onchainTransaction.blockHash) return TransferStatus.BROADCAST; - - const transactionReceipt = - await Coinbase.apiClients.baseSepoliaProvider!.getTransactionReceipt(transactionHash); - return transactionReceipt?.status ? TransferStatus.COMPLETE : TransferStatus.FAILED; + public getStatus(): TransferStatus | undefined { + switch (this.model.status) { + case TransferStatus.PENDING: + return TransferStatus.PENDING; + case TransferStatus.BROADCAST: + return TransferStatus.BROADCAST; + case TransferStatus.COMPLETE: + return TransferStatus.COMPLETE; + case TransferStatus.FAILED: + return TransferStatus.FAILED; + default: + return undefined; + } } /** @@ -211,18 +212,31 @@ export class Transfer { return `https://sepolia.basescan.org/tx/${this.getTransactionHash()}`; } + /** + * Reloads the Transfer model with the latest data from the server. + * + * @throws {APIError} if the API request to get a Transfer fails. + */ + public async reload(): Promise { + const result = await Coinbase.apiClients.transfer!.getTransfer( + this.getWalletId(), + this.getFromAddressId(), + this.getId(), + ); + this.model = result?.data; + } + /** * Returns a string representation of the Transfer. * * @returns The string representation of the Transfer. */ public async toString(): Promise { - const status = await this.getStatus(); return ( `Transfer{transferId: '${this.getId()}', networkId: '${this.getNetworkId()}', ` + `fromAddressId: '${this.getFromAddressId()}', destinationAddressId: '${this.getDestinationAddressId()}', ` + `assetId: '${this.getAssetId()}', amount: '${this.getAmount()}', transactionHash: '${this.getTransactionHash()}', ` + - `transactionLink: '${this.getTransactionLink()}', status: '${status}'}` + `transactionLink: '${this.getTransactionLink()}', status: '${this.getStatus()}'}` ); } } diff --git a/src/coinbase/types.ts b/src/coinbase/types.ts index c983ad6d..751269b0 100644 --- a/src/coinbase/types.ts +++ b/src/coinbase/types.ts @@ -1,6 +1,5 @@ import { Decimal } from "decimal.js"; import { AxiosPromise, AxiosRequestConfig, RawAxiosRequestConfig } from "axios"; -import { ethers } from "ethers"; import { Address as AddressModel, AddressList, @@ -298,17 +297,16 @@ export type ApiClients = { wallet?: WalletAPIClient; address?: AddressAPIClient; transfer?: TransferAPIClient; - baseSepoliaProvider?: ethers.Provider; }; /** * Transfer status type definition. */ export enum TransferStatus { - PENDING = "PENDING", - BROADCAST = "BROADCAST", - COMPLETE = "COMPLETE", - FAILED = "FAILED", + PENDING = "pending", + BROADCAST = "broadcast", + COMPLETE = "complete", + FAILED = "failed", } /** @@ -339,3 +337,66 @@ export type Amount = number | bigint | Decimal; * Destination type definition. */ export type Destination = string | Address | Wallet; + +/** + * ServerSigner status type definition. + */ +export enum ServerSignerStatus { + PENDING = "pending_seed_creation", + ACTIVE = "active_seed", +} + +/** + * CoinbaseOptions type definition. + */ +export type CoinbaseOptions = { + /** + * The API key name. + */ + apiKeyName?: string; + + /** + * The private key associated with the API key. + */ + privateKey?: string; + + /** + * Whether to use a Server-Signer or not. + */ + useServerSigner?: boolean; + + /** + * If true, logs API requests and responses to the console. + */ + debugging?: boolean; + + /** + * The base path for the API. + */ + basePath?: string; +}; + +/** + * CoinbaseConfigureFromJsonOptions type definition. + */ +export type CoinbaseConfigureFromJsonOptions = { + /** + * The path to the JSON file containing the API key and private key. + */ + filePath: string; + + /** + * Whether to use a Server-Signer or not. + */ + useServerSigner?: boolean; + + /** + * If true, logs API requests and responses to the console. + */ + debugging?: boolean; + + /** + * The base path for the API. + */ + basePath?: string; +}; diff --git a/src/coinbase/user.ts b/src/coinbase/user.ts index 63eb87ee..9b01560a 100644 --- a/src/coinbase/user.ts +++ b/src/coinbase/user.ts @@ -1,10 +1,7 @@ -import * as fs from "fs"; -import * as crypto from "crypto"; -import { WalletData, SeedData } from "./types"; +import { WalletData } from "./types"; import { User as UserModel, Address as AddressModel, Wallet as WalletModel } from "./../client/api"; import { Wallet } from "./wallet"; import { Coinbase } from "./coinbase"; -import { ArgumentError } from "./errors"; /** * A representation of a User. @@ -44,60 +41,17 @@ export class User { return this.model.id; } - /** - * Saves a Wallet to local file system. Wallet saved this way can be re-instantiated with `loadWallets` function, - * provided the backup file is available. This is an insecure method of storing Wallet seeds and should only be used - * for development purposes. If you call `saveWallet` with Wallets containing the same walletId, the backup will be overwritten during the second attempt. - * The default backup file is `seeds.json` in the root folder. It can be configured by changing `Coinbase.backupFilePath`. - * - * @param wallet - The Wallet object to save. - * @param encrypt - Whether or not to encrypt the backup persisted to local file system. - * @returns The saved Wallet object. - */ - public saveWallet(wallet: Wallet, encrypt: boolean = false): Wallet { - const existingSeedsInStore = this.getExistingSeeds(); - const data = wallet.export(); - let seedToStore = data.seed; - let authTag = ""; - let iv = ""; - - if (encrypt) { - const ivBytes = crypto.randomBytes(12); - const sharedSecret = this.storeEncryptionKey(); - const cipher: crypto.CipherCCM = crypto.createCipheriv( - "aes-256-gcm", - crypto.createHash("sha256").update(sharedSecret).digest(), - ivBytes, - ); - const encryptedData = Buffer.concat([cipher.update(data.seed, "utf8"), cipher.final()]); - authTag = cipher.getAuthTag().toString("hex"); - seedToStore = encryptedData.toString("hex"); - iv = ivBytes.toString("hex"); - } - - existingSeedsInStore[data.walletId] = { - seed: seedToStore, - encrypted: encrypt, - authTag: authTag, - iv: iv, - }; - - fs.writeFileSync( - Coinbase.backupFilePath, - JSON.stringify(existingSeedsInStore, null, 2), - "utf8", - ); - return wallet; - } - /** * Lists the Wallets belonging to the User. * * @param pageSize - The number of Wallets to return per page. Defaults to 10 * @param nextPageToken - The token for the next page of Wallets - * @returns The list of Wallets. + * @returns An object containing the Wallets and the token for the next page */ - public async listWallets(pageSize: number = 10, nextPageToken?: string): Promise { + public async listWallets( + pageSize: number = 10, + nextPageToken?: string, + ): Promise<{ wallets: Wallet[]; nextPageToken: string }> { const addressModelMap: { [key: string]: AddressModel[] } = {}; const walletList = await Coinbase.apiClients.wallet!.listWallets( pageSize, @@ -116,57 +70,27 @@ export class User { addressModelMap[wallet.id!] = addressList.data.data; } - return Promise.all( + const wallets = await Promise.all( walletsModels.map(async wallet => { - return await Wallet.init(wallet, "", addressModelMap[wallet.id!]); + const walletId = wallet.id!; + const addressModels = addressModelMap[walletId]; + return await Wallet.init(wallet, "", addressModels); }), ); + + return { wallets: wallets, nextPageToken: walletList.data.next_page }; } /** - * Loads all wallets belonging to the User with backup persisted to the local file system. + * Returns the Wallet with the given ID. * - * @returns the map of walletId's to the Wallet objects. - * @throws {ArgumentError} - If the backup file is not found or the data is malformed. + * @param wallet_id - the ID of the Wallet + * @returns the Wallet with the given ID */ - public async loadWallets(): Promise<{ [key: string]: Wallet }> { - const existingSeedsInStore = this.getExistingSeeds(); - if (Object.keys(existingSeedsInStore).length === 0) { - throw new ArgumentError("Backup file not found"); - } - - const wallets: { [key: string]: Wallet } = {}; - for (const [walletId, seedData] of Object.entries(existingSeedsInStore)) { - let seed = seedData.seed; - if (!seed) { - throw new Error("Malformed backup data"); - } - - if (seedData.encrypted) { - const sharedSecret = this.storeEncryptionKey(); - if (!seedData.iv || !seedData.authTag) { - throw new Error("Malformed encrypted seed data"); - } - - const decipher = crypto.createDecipheriv( - "aes-256-gcm", - crypto.createHash("sha256").update(sharedSecret).digest(), - Buffer.from(seedData.iv, "hex"), - ); - decipher.setAuthTag(Buffer.from(seedData.authTag, "hex")); - - const decryptedData = Buffer.concat([ - decipher.update(Buffer.from(seed, "hex")), - decipher.final(), - ]); - - seed = decryptedData.toString("utf8"); - } - - const data: WalletData = { walletId, seed }; - wallets[walletId] = await this.importWallet(data); - } - return wallets; + public async getWallet(wallet_id: string): Promise { + const walletModel = await Coinbase.apiClients.wallet!.getWallet(wallet_id); + const addressList = await Coinbase.apiClients.address!.listAddresses(wallet_id); + return Wallet.init(walletModel.data, "", addressList.data.data); } /** @@ -181,58 +105,6 @@ export class User { return Wallet.init(walletModel.data, data.seed, addressList.data.data); } - /** - * Gets existing seeds if any from the backup file. - * - * @returns The existing seeds as a JSON object. - * @throws {ArgumentError} - If the backup data is malformed. - */ - private getExistingSeeds(): Record { - try { - const data = fs.readFileSync(Coinbase.backupFilePath, "utf8"); - if (!data) { - return {} as Record; - } - const seedData = JSON.parse(data); - if ( - !Object.entries(seedData).every( - ([key, value]) => - typeof key === "string" && - /* eslint-disable @typescript-eslint/no-explicit-any */ - typeof (value! as any).authTag! === "string" && - typeof (value! as any).encrypted! === "boolean" && - typeof (value! as any).iv! === "string" && - typeof (value! as any).seed! === "string", - ) - ) { - throw new ArgumentError("Malformed backup data"); - } - - return seedData; - } catch (error: any) { - /* eslint-enable @typescript-eslint/no-explicit-any */ - if (error.code === "ENOENT") { - return {} as Record; - } - throw new ArgumentError("Malformed backup data"); - } - } - - /** - * Stores the encryption key for encrypting the backup. - * - * @returns The encryption key. - */ - private storeEncryptionKey(): Buffer { - const privateKey = crypto.createPrivateKey(Coinbase.apiKeyPrivateKey); - const publicKey = crypto.createPublicKey(Coinbase.apiKeyPrivateKey); - const sharedSecret = crypto.diffieHellman({ - privateKey, - publicKey, - }); - return sharedSecret; - } - /** * Returns a string representation of the User. * diff --git a/src/coinbase/wallet.ts b/src/coinbase/wallet.ts index 2499580a..c8bb3962 100644 --- a/src/coinbase/wallet.ts +++ b/src/coinbase/wallet.ts @@ -1,6 +1,7 @@ import { HDKey } from "@scure/bip32"; import * as bip39 from "bip39"; import * as crypto from "crypto"; +import * as fs from "fs"; import { ethers } from "ethers"; import * as secp256k1 from "secp256k1"; import { Address as AddressModel, Wallet as WalletModel } from "../client"; @@ -8,8 +9,8 @@ import { Address } from "./address"; import { Coinbase } from "./coinbase"; import { ArgumentError, InternalError } from "./errors"; import { Transfer } from "./transfer"; -import { Amount, Destination, WalletData } from "./types"; -import { convertStringToHex } from "./utils"; +import { Amount, Destination, SeedData, WalletData, ServerSignerStatus } from "./types"; +import { convertStringToHex, delay } from "./utils"; import { FaucetTransaction } from "./faucet_transaction"; import { BalanceMap } from "./balance_map"; import Decimal from "decimal.js"; @@ -59,19 +60,26 @@ export class Wallet { * Instead, use User.createWallet. * * @constructs Wallet + * @param intervalSeconds - The interval at which to poll the CDPService, in seconds. + * @param timeoutSeconds - The maximum amount of time to wait for the ServerSigner to create a seed, in seconds. * @throws {ArgumentError} If the model or client is not provided. * @throws {InternalError} - If address derivation or caching fails. * @throws {APIError} - If the request fails. * @returns A promise that resolves with the new Wallet object. */ - public static async create(): Promise { - const walletData = await Coinbase.apiClients.wallet!.createWallet({ + public static async create(intervalSeconds = 0.2, timeoutSeconds = 20): Promise { + const result = await Coinbase.apiClients.wallet!.createWallet({ wallet: { network_id: Coinbase.networkList.BaseSepolia, + use_server_signer: Coinbase.useServerSigner, }, }); - const wallet = await Wallet.init(walletData.data, undefined, []); + const wallet = await Wallet.init(result.data, undefined, []); + + if (Coinbase.useServerSigner) { + await wallet.waitForSigner(wallet.getId()!, intervalSeconds, timeoutSeconds); + } await wallet.createAddress(); await wallet.reload(); @@ -79,6 +87,31 @@ export class Wallet { return wallet; } + /** + * Waits until the ServerSigner has created a seed for the Wallet. + * + * @param walletId - The ID of the Wallet that is awaiting seed creation. + * @param intervalSeconds - The interval at which to poll the CDPService, in seconds. + * @param timeoutSeconds - The maximum amount of time to wait for the ServerSigner to create a seed, in seconds. + * @throws {APIError} if the API request to get a Wallet fails. + * @throws {Error} if the ServerSigner times out. + */ + private async waitForSigner( + walletId: string, + intervalSeconds = 0.2, + timeoutSeconds = 20, + ): Promise { + const startTime = Date.now(); + while (Date.now() - startTime < timeoutSeconds * 1000) { + const response = await Coinbase.apiClients.wallet!.getWallet(walletId); + if (response?.data.server_signer_status === ServerSignerStatus.ACTIVE) { + return; + } + await delay(intervalSeconds); + } + throw new Error("Wallet creation timed out. Check status of your Server-Signer"); + } + /** * Returns a new Wallet object. Do not use this method directly. Instead, use User.createWallet or User.importWallet. * @@ -94,11 +127,15 @@ export class Wallet { */ public static async init( model: WalletModel, - seed: string | undefined, + seed?: string | undefined, addressModels: AddressModel[] = [], ): Promise { this.validateSeedAndAddressModels(seed, addressModels); + if (Coinbase.useServerSigner) { + return new Wallet(model, undefined, undefined, addressModels); + } + const seedAndMaster = this.getSeedAndMasterKey(seed); const wallet = new Wallet(model, seedAndMaster.master, seedAndMaster.seed, addressModels); wallet.deriveAddresses(addressModels); @@ -110,6 +147,7 @@ export class Wallet { * Exports the Wallet's data to a WalletData object. * * @returns The Wallet's data. + * @throws {APIError} - If the request fails. */ public export(): WalletData { if (!this.seed) { @@ -139,15 +177,18 @@ export class Wallet { * @throws {APIError} - If the address creation fails. */ public async createAddress(): Promise
    { - const hdKey = this.deriveKey(); - const attestation = this.createAttestation(hdKey); - const publicKey = convertStringToHex(hdKey.publicKey!); - const key = new ethers.Wallet(convertStringToHex(hdKey.privateKey!)); - - const payload = { - public_key: publicKey, - attestation: attestation, - }; + let payload, key; + if (!Coinbase.useServerSigner) { + const hdKey = this.deriveKey(); + const attestation = this.createAttestation(hdKey); + const publicKey = convertStringToHex(hdKey.publicKey!); + key = new ethers.Wallet(convertStringToHex(hdKey.privateKey!)); + + payload = { + public_key: publicKey, + attestation: attestation, + }; + } const response = await Coinbase.apiClients.address!.createAddress(this.model.id!, payload); this.cacheAddress(response!.data, key); @@ -187,6 +228,8 @@ export class Wallet { /** * Reloads the Wallet model with the latest data from the server. + * + * @throws {APIError} if the API request to get a Wallet fails. */ private async reload(): Promise { const result = await Coinbase.apiClients.wallet!.getWallet(this.model.id!); @@ -261,9 +304,22 @@ export class Wallet { * * @param seed - The seed to use for the Wallet. Expects a 32-byte hexadecimal with no 0x prefix. */ - public async setSeed(seed: string): Promise { - if (this.master === undefined) { + public setSeed(seed: string) { + if (this.master === undefined && (this.seed === undefined || this.seed === "")) { this.master = HDKey.fromMasterSeed(Buffer.from(seed, "hex")); + this.addresses = []; + this.addressModels.map((addressModel: AddressModel) => { + const derivedKey = this.deriveKey(); + const etherKey = new ethers.Wallet(convertStringToHex(derivedKey.privateKey!)); + if (etherKey.address != addressModel.address_id) { + throw new InternalError( + `Seed does not match wallet; cannot find address ${etherKey.address}`, + ); + } + this.cacheAddress(addressModel, etherKey); + }); + } else { + throw new InternalError("Cannot set seed on Wallet with existing seed"); } } @@ -322,6 +378,22 @@ export class Wallet { return this.model.network_id; } + /** + * Returns the ServerSigner Status of the Wallet. + * + * @returns the ServerSigner Status. + */ + public getServerSignerStatus(): ServerSignerStatus | undefined { + switch (this.model.server_signer_status) { + case ServerSignerStatus.PENDING: + return ServerSignerStatus.PENDING; + case ServerSignerStatus.ACTIVE: + return ServerSignerStatus.ACTIVE; + default: + return undefined; + } + } + /** * Returns the wallet ID. * @@ -331,6 +403,104 @@ export class Wallet { return this.model.id; } + /** + * Saves the seed of the Wallet to the given file. Wallets whose seeds are saved this way can be + * rehydrated using load_seed. A single file can be used for multiple Wallet seeds. + * This is an insecure method of storing Wallet seeds and should only be used for development purposes. + * + * @param filePath - The path of the file to save the seed to + * @param encrypt - Whether the seed information persisted to the local file system should be + * encrypted or not. Data is unencrypted by default. + * @returns A string indicating the success of the operation + * @throws {InternalError} If the Wallet does not have a seed + */ + public saveSeed(filePath: string, encrypt: boolean = false): string { + if (!this.master) { + throw new InternalError("Cannot save Wallet without loaded seed"); + } + + const existingSeedsInStore = this.getExistingSeeds(filePath); + const data = this.export(); + let seedToStore = data.seed; + let authTag = ""; + let iv = ""; + + if (encrypt) { + const ivBytes = crypto.randomBytes(12); + const sharedSecret = this.getEncryptionKey(); + const cipher: crypto.CipherCCM = crypto.createCipheriv( + "aes-256-gcm", + crypto.createHash("sha256").update(sharedSecret).digest(), + ivBytes, + ); + const encryptedData = Buffer.concat([cipher.update(data.seed, "utf8"), cipher.final()]); + authTag = cipher.getAuthTag().toString("hex"); + seedToStore = encryptedData.toString("hex"); + iv = ivBytes.toString("hex"); + } + + existingSeedsInStore[data.walletId] = { + seed: seedToStore, + encrypted: encrypt, + authTag: authTag, + iv: iv, + }; + + fs.writeFileSync(filePath, JSON.stringify(existingSeedsInStore, null, 2), "utf8"); + + return `Successfully saved seed for ${data.walletId} to ${filePath}.`; + } + + /** + * Loads the seed of the Wallet from the given file. + * + * @param filePath - The path of the file to load the seed from + * @returns A string indicating the success of the operation + */ + public loadSeed(filePath: string): string { + const existingSeedsInStore = this.getExistingSeeds(filePath); + if (Object.keys(existingSeedsInStore).length === 0) { + throw new ArgumentError(`File ${filePath} does not contain any seed data`); + } + + if (existingSeedsInStore[this.getId()!] === undefined) { + throw new ArgumentError( + `File ${filePath} does not contain seed data for wallet ${this.getId()}`, + ); + } + + const seedData = existingSeedsInStore[this.getId()!]; + let seed = seedData.seed; + if (!seed) { + throw new ArgumentError("Seed data is malformed"); + } + + if (seedData.encrypted) { + const sharedSecret = this.getEncryptionKey(); + if (!seedData.iv || !seedData.authTag) { + throw new ArgumentError("Encrypted seed data is malformed"); + } + + const decipher = crypto.createDecipheriv( + "aes-256-gcm", + crypto.createHash("sha256").update(sharedSecret).digest(), + Buffer.from(seedData.iv, "hex"), + ); + decipher.setAuthTag(Buffer.from(seedData.authTag, "hex")); + + const decryptedData = Buffer.concat([ + decipher.update(Buffer.from(seed, "hex")), + decipher.final(), + ]); + + seed = decryptedData.toString("utf8"); + } + + this.setSeed(seed); + + return `Successfully loaded seed for wallet ${this.getId()} from ${filePath}.`; + } + /** * Returns the default address of the Wallet. * @@ -465,4 +635,56 @@ export class Wallet { } } } + + /** + * Loads the seed data from the given file. + * + * @param filePath - The path of the file to load the seed data from + * @returns The seed data + */ + private getExistingSeeds(filePath: string): Record { + try { + const data = fs.readFileSync(filePath, "utf8"); + if (!data) { + return {} as Record; + } + const seedData = JSON.parse(data); + if ( + !Object.entries(seedData).every( + ([key, value]) => + typeof key === "string" && + /* eslint-disable @typescript-eslint/no-explicit-any */ + typeof (value! as any).authTag! === "string" && + typeof (value! as any).encrypted! === "boolean" && + typeof (value! as any).iv! === "string" && + typeof (value! as any).seed! === "string", + ) + ) { + throw new ArgumentError("Malformed backup data"); + } + + return seedData; + } catch (error: any) { + /* eslint-enable @typescript-eslint/no-explicit-any */ + if (error.code === "ENOENT") { + return {} as Record; + } + throw new ArgumentError("Malformed backup data"); + } + } + + /** + * Gets the key for encrypting seed data. + * + * @returns The encryption key. + */ + private getEncryptionKey(): Buffer { + const privateKey = crypto.createPrivateKey(Coinbase.apiKeyPrivateKey); + const publicKey = crypto.createPublicKey(Coinbase.apiKeyPrivateKey); + const encryptionKey = crypto.diffieHellman({ + privateKey, + publicKey, + }); + return encryptionKey; + } } diff --git a/yarn.lock b/yarn.lock index 000b7cfa..395a7e5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1466,6 +1466,11 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dotenv@^16.4.5: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + electron-to-chromium@^1.4.668: version "1.4.773" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.773.tgz#49741af9bb4e712ad899e35d8344d8d59cdb7e12"