Skip to content

@swapped/connect-sdk / core / Coinbase

Interface: Coinbase ​

Defined in: src/modules/coinbase/coinbase.module.ts:96

Coinbase connect and withdraw APIs.

Available on the client as client.coinbase. Event subscriptions and idle reads work before a session is loaded; connect / withdraw actions require loadSession().

Methods ​

cancelWithdrawal() ​

cancelWithdrawal(): void

Defined in: src/modules/coinbase/coinbase.module.ts:849

Cancel a withdrawal that is waiting for 2FA.

Clears the pending withdrawal so confirmWithdrawal can no longer be used for it. Does not cancel anything already submitted to Coinbase.

Returns ​

void


confirmWithdrawal() ​

confirmWithdrawal(code): Promise<CoinbaseWithdrawalState>

Defined in: src/modules/coinbase/coinbase.module.ts:777

Confirm a pending withdrawal with a 2FA code.

Call this after startWithdrawal returns { status: 'requires2fa' }. Unlike starting a withdrawal, confirming is not blocked by the cooldown - the user can retry codes immediately if Coinbase rejects one.

A wrong code usually returns { status: 'requires2fa' } again (not thrown).

Parameters ​

code ​

string

Returns ​

Promise<CoinbaseWithdrawalState>


connect() ​

connect(): Promise<boolean>

Defined in: src/modules/coinbase/coinbase.module.ts:195

Open the Coinbase login flow. Returns true when connected.

Returns ​

Promise<boolean>


disconnect() ​

disconnect(): void

Defined in: src/modules/coinbase/coinbase.module.ts:209

Disconnect Coinbase and clear any in-progress withdrawal.

Returns ​

void


ensureSession() ​

ensureSession(): Promise<boolean>

Defined in: src/modules/coinbase/coinbase.module.ts:225

Check that the Coinbase session is still valid.

Returns false when the session expired; returns true on success or when a transient network error occurs.

Skips the network call when the local token is still within coinbase.tokenExpiryMs. Concurrent callers share one in-flight request. On success the local token (and timestamp) is updated. Transient errors fail open without touching the stored timestamp so the next call retries refresh ASAP.

Returns ​

Promise<boolean>


getActiveWithdrawal() ​

getActiveWithdrawal(): CoinbaseActiveWithdrawal | null

Defined in: src/modules/coinbase/coinbase.module.ts:859

Get the withdrawal currently waiting for 2FA, if any.

Present after startWithdrawal returns { status: 'requires2fa' } until the withdrawal completes, fails, or cancelWithdrawal is called.

Returns ​

CoinbaseActiveWithdrawal | null


getBalances() ​

getBalances(__namedParameters?): Promise<CoinbaseBalance[]>

Defined in: src/modules/coinbase/coinbase.module.ts:297

Fetch enriched Coinbase account balances.

Parameters ​

__namedParameters? ​
forceRefetch? ​

boolean = false

Bypass RTK Query cache and hit the API again.

Returns ​

Promise<CoinbaseBalance[]>


getCompletedTransactionSummary() ​

getCompletedTransactionSummary(): CoinbaseCompletedTransactionSummary | null

Defined in: src/modules/coinbase/coinbase.module.ts:870

Display-ready summary of the last completed Coinbase withdrawal.

Built only from the in-memory withdraw API result. Returns null when there is no completed withdrawal for this session module (e.g. after reload or restartSession()).

Returns ​

CoinbaseCompletedTransactionSummary | null


getCooldown() ​

getCooldown(): CoinbaseCooldown

Defined in: src/modules/coinbase/coinbase.module.ts:891

Get the cooldown that prevents starting another withdrawal too quickly.

The timer starts when startWithdrawal is called (SDK default: 30s). While isInCooldown is true, startWithdrawal throws COINBASE_COOLDOWN_ACTIVE - use remainingMs (also pushed every second via onCooldownChanged) to show a wait UI. Confirming a 2FA code with confirmWithdrawal is not affected.

Returns ​

CoinbaseCooldown


getDefaultFundingTokens() ​

getDefaultFundingTokens(balances, destinationCurrency): TokenSymbol[]

Defined in: src/modules/coinbase/coinbase.module.ts:625

Default funding-token selection for a destination currency.

Parameters ​

balances ​

ExchangeBalanceItem[]

destinationCurrency ​

TokenSymbol

Returns ​

TokenSymbol[]


getFundingTokens() ​

getFundingTokens(balances, destinationCurrency): CoinbaseFundingToken[]

Defined in: src/modules/coinbase/coinbase.module.ts:603

List funding tokens that can pay for a destination currency.

Parameters ​

balances ​

ExchangeBalanceItem[]

destinationCurrency ​

TokenSymbol

Returns ​

CoinbaseFundingToken[]


getMaxWithdrawableAmount() ​

getMaxWithdrawableAmount(__namedParameters): number

Defined in: src/modules/coinbase/coinbase.module.ts:536

Max withdrawable amount after reserving the network fee (default $1.50). Use for Max button / amount-field caps - not for the displayed minimum. Pass symbol so the result is truncated down to display decimals (USDC → 2).

Parameters ​

__namedParameters ​

GetCoinbaseMaxWithdrawableAmountOptions

Returns ​

number


getMinWithdrawalAmount() ​

getMinWithdrawalAmount(__namedParameters): Promise<number>

Defined in: src/modules/coinbase/coinbase.module.ts:506

Get the minimum withdrawal amount for a token.

Default (includeSwappedFee: false) is for the amount screen / network display: max(sessionWalletMin, balanceMin, max(Coinbase min, feeInCrypto)). Pass includeSwappedFee: true only for network-eligibility checks (adds the fee on top of Coinbase min).

Resolves exchange rate from balances when omitted.

Parameters ​

__namedParameters ​

GetCoinbaseMinWithdrawalAmountOptions

Returns ​

Promise<number>


getNetworks() ​

getNetworks(__namedParameters): Promise<CoinbaseNetworkItem[]>

Defined in: src/modules/coinbase/coinbase.module.ts:361

Fetch available withdrawal networks for a currency (with per-network mins).

Parameters ​

__namedParameters ​
accountName ​

string

currency ​

TokenSymbol

Returns ​

Promise<CoinbaseNetworkItem[]>


getSelectionAggregatedBalance() ​

getSelectionAggregatedBalance(__namedParameters): CoinbaseSelectionAggregatedBalance

Defined in: src/modules/coinbase/coinbase.module.ts:637

Aggregated balance for the selected destination and funding tokens.

Parameters ​

__namedParameters ​
balances ​

ExchangeBalanceItem[]

currency ​

TokenSymbol

fundingTokens? ​

TokenSymbol[]

Returns ​

CoinbaseSelectionAggregatedBalance


getTokenDecimals() ​

getTokenDecimals(symbol): number | undefined

Defined in: src/modules/coinbase/coinbase.module.ts:464

Cached Coinbase max-precision decimals for a currency, or undefined when currency data has not been fetched yet.

Parameters ​

symbol ​

TokenSymbol

Returns ​

number | undefined


getTokenDecimalsAsync() ​

getTokenDecimalsAsync(symbol): Promise<number>

Defined in: src/modules/coinbase/coinbase.module.ts:473

Coinbase max-precision decimals for a currency. Uses the cache when populated; otherwise fetches https://api.exchange.coinbase.com/currencies/{symbol}.

Parameters ​

symbol ​

TokenSymbol

Returns ​

Promise<number>


isConnected() ​

isConnected(): boolean

Defined in: src/modules/coinbase/coinbase.module.ts:175

Whether Coinbase is currently connected.

Returns ​

boolean


isInitializing() ​

isInitializing(): boolean

Defined in: src/modules/coinbase/coinbase.module.ts:180

Whether Coinbase is still initializing.

Returns ​

boolean


isPopupOpen() ​

isPopupOpen(): boolean

Defined in: src/modules/coinbase/coinbase.module.ts:190

Whether the Coinbase login popup is currently open.

Returns ​

boolean


onConnected() ​

onConnected(handler): () => void

Defined in: src/modules/coinbase/coinbase.module.ts:925

Subscribe when Coinbase connects.

Parameters ​

handler ​

(payload) => void

Returns ​

() => void


onCooldownChanged() ​

onCooldownChanged(handler): () => void

Defined in: src/modules/coinbase/coinbase.module.ts:972

Subscribe when the withdrawal-start cooldown changes.

Fired when cooldown begins (after startWithdrawal), every second while active (with updated remainingMs), and when it ends. Payload matches getCooldown.

Parameters ​

handler ​

(payload) => void

Returns ​

() => void


onDisconnected() ​

onDisconnected(handler): () => void

Defined in: src/modules/coinbase/coinbase.module.ts:932

Subscribe when Coinbase disconnects.

Parameters ​

handler ​

(payload) => void

Returns ​

() => void


onInitializationCompleted() ​

onInitializationCompleted(handler): () => void

Defined in: src/modules/coinbase/coinbase.module.ts:916

Subscribe when Coinbase finishes initializing.

Parameters ​

handler ​

(payload) => void

Returns ​

() => void


onInitializationStarted() ​

onInitializationStarted(handler): () => void

Defined in: src/modules/coinbase/coinbase.module.ts:907

Subscribe when Coinbase starts initializing.

Parameters ​

handler ​

(payload) => void

Returns ​

() => void


onOAuthError() ​

onOAuthError(handler): () => void

Defined in: src/modules/coinbase/coinbase.module.ts:996

Subscribe when the Coinbase login popup fails (blocked, closed, or auth error).

Parameters ​

handler ​

(payload) => void

Returns ​

() => void


onPopupOpenChanged() ​

onPopupOpenChanged(handler): () => void

Defined in: src/modules/coinbase/coinbase.module.ts:981

Subscribe when the Coinbase login popup opens or closes.

Parameters ​

handler ​

(payload) => void

Returns ​

() => void


onSessionEnsured() ​

onSessionEnsured(handler): () => void

Defined in: src/modules/coinbase/coinbase.module.ts:948

Subscribe when ensureSession() successfully validates / refreshes the token.

Parameters ​

handler ​

(payload) => void

Returns ​

() => void


onSessionExpired() ​

onSessionExpired(handler): () => void

Defined in: src/modules/coinbase/coinbase.module.ts:939

Subscribe when the Coinbase session expires.

Parameters ​

handler ​

(payload) => void

Returns ​

() => void


onWithdrawalCompleted() ​

onWithdrawalCompleted(handler): () => void

Defined in: src/modules/coinbase/coinbase.module.ts:957

Subscribe when a Coinbase withdrawal completes.

Parameters ​

handler ​

(payload) => void

Returns ​

() => void


ready() ​

ready(): Promise<void>

Defined in: src/modules/coinbase/coinbase.module.ts:185

Resolve when Coinbase has finished initializing.

Returns ​

Promise<void>


reset() ​

reset(): void

Defined in: src/modules/coinbase/coinbase.module.ts:1009

Reset withdrawal and cooldown state. Connection status is unchanged.

Returns ​

void


startWithdrawal() ​

startWithdrawal(request, options?): Promise<CoinbaseWithdrawalState>

Defined in: src/modules/coinbase/coinbase.module.ts:704

Start a Coinbase withdrawal.

Validates amount against min and fee-reserve max before calling the API. When the amount is above the fee-reserve max and the capped max is still viable, the amount is auto-adjusted and optional StartCoinbaseWithdrawalOptions.onAmountAdjusted is awaited. Return false from that callback to cancel - resolves { status: 'idle' } without starting cooldown. Other invalid amounts throw COINBASE_INVALID_WITHDRAWAL_AMOUNT. Prefer calling validateWithdrawalAmount in UI first for field errors.

Often returns { status: 'requires2fa' } - then call confirmWithdrawal with the user's 2FA code. Starting a withdrawal begins a short cooldown (see getCooldown); calling this again too soon throws COINBASE_COOLDOWN_ACTIVE.

Parameters ​

request ​

StartCoinbaseWithdrawalRequest

options? ​

StartCoinbaseWithdrawalOptions

Returns ​

Promise<CoinbaseWithdrawalState>


validateWithdrawalAmount() ​

validateWithdrawalAmount(__namedParameters): Promise<CoinbaseWithdrawalAmountValidation>

Defined in: src/modules/coinbase/coinbase.module.ts:556

Validate amount against min and fee-reserve max before startWithdrawal. Does not throw on range errors - check ok.

Pass minAmount if already loaded, or symbol to fetch it. When resolving via symbol, pass network / balanceMin

Parameters ​

__namedParameters ​

ValidateCoinbaseWithdrawalAmountOptions

Returns ​

Promise<CoinbaseWithdrawalAmountValidation>