> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blink.cash/llms.txt
> Use this file to discover all available pages before exploring further.

# TypeScript Types

> Complete type reference for the Deposit SDK.

All types are exported from the main entry point:

```typescript theme={null}
import type {
  DepositConfig,
  DepositStatus,
  DepositRequest,
  DepositResult,
  SignerFunction,
  SignerRequest,
  SignerResponse,
  TransferSummary,
  DepositErrorCode,
} from '@swype-org/deposit';
```

<Info>
  `DepositRequest`, `DepositResult`, `TransferSummary`, `SignerRequest`, `SignerResponse`, and `SignerFunction` are shared between `@swype-org/deposit` (web) and `@swype-org/deposit-mobile` (mobile). The type definitions are identical across both SDKs.
</Info>

## DepositStatus

Current phase of the deposit flow.

```typescript theme={null}
type DepositStatus =
  | 'idle'
  | 'signer-loading'
  | 'iframe-active'
  | 'completed'
  | 'error';
```

## DepositConfig

Configuration for a `Deposit` instance. See [Deposit Class](/sdk-reference/deposit-class) for detailed descriptions.

```typescript theme={null}
interface DepositConfig {
  signer: string | SignerFunction;
  environment?: 'production' | 'sandbox';
  webviewBaseUrl?: string;
  hostedFlowOrigin?: string;
  containerElement?: HTMLElement;
  signerTimeoutMs?: number;
  flowTimeoutMs?: number;
  enableFullWidget?: boolean;
  debug?: boolean;
}
```

## DepositRequest

Parameters for a single deposit request.

```typescript theme={null}
interface DepositRequest {
  amount: number;
  chainId: number;
  address: string;
  token: string;
  callbackScheme?: string | null;
  reference?: string;
  metadata?: Record<string, string>;
}
```

| Field            | Type                     | Required | Description                                                                                                                    |
| ---------------- | ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `amount`         | `number`                 | Yes      | USD amount to deposit. Must be > 0.                                                                                            |
| `chainId`        | `number`                 | Yes      | Destination chain ID (for example, `8453` for Base or `792703809` for Solana).                                                 |
| `address`        | `string`                 | Yes      | Destination wallet address. In the web SDK this can be an EVM address or a Solana address, depending on the destination chain. |
| `token`          | `string`                 | Yes      | Destination token identifier. Use an EVM token contract address on EVM chains or an SPL mint address on Solana.                |
| `callbackScheme` | `string \| null`         | No       | Custom URL scheme for native app deep-link callbacks. Always `null` for browser.                                               |
| `reference`      | `string`                 | No       | Merchant order or invoice ID for reconciliation.                                                                               |
| `metadata`       | `Record<string, string>` | No       | Arbitrary key-value pairs forwarded to the signer.                                                                             |

<Info>
  Choose `chainId` and `token` from Blink's active routing catalog. See [Supported Networks and Wallets](/integration/supported-networks-and-wallets) for the current support matrix and fee behavior.
</Info>

## DepositResult

Result returned when a deposit completes successfully.

```typescript theme={null}
interface DepositResult {
  transfer: TransferSummary;
  idempotencyKey?: string;
  preview?: {
    amount: number;
    chainId: number;
    address: string;
    token: string;
  };
}
```

## TransferSummary

Subset of transfer data returned from the hosted flow on completion.

```typescript theme={null}
interface TransferSummary {
  id: string;
  status: string;
  amount?: {
    amount: number;
    currency: string;
  };
  destinations?: Array<{
    chainId: string;
    address: string;
    token?: { address?: string; symbol?: string };
  }>;
}
```

## SignerRequest

Data the SDK passes to the merchant signer.

```typescript theme={null}
interface SignerRequest {
  amount: number;
  chainId: number;
  address: string;
  token: string;
  callbackScheme: string | null;
  url: string;
  version: 'v1';
  reference?: string;
  metadata?: Record<string, string>;
}
```

| Field            | Type                      | Description                                             |
| ---------------- | ------------------------- | ------------------------------------------------------- |
| `amount`         | `number`                  | USD amount to deposit.                                  |
| `chainId`        | `number`                  | Destination chain ID.                                   |
| `address`        | `string`                  | Destination wallet address.                             |
| `token`          | `string`                  | Destination token identifier for that chain.            |
| `callbackScheme` | `string \| null`          | `null` for browser integrations.                        |
| `url`            | `string`                  | Base webview URL. Provided for logging/validation only. |
| `version`        | `'v1'`                    | Protocol version.                                       |
| `reference`      | `string?`                 | Merchant order or invoice ID.                           |
| `metadata`       | `Record<string, string>?` | Arbitrary key-value pairs.                              |

## SignerResponse

Shape the merchant signer must return.

```typescript theme={null}
interface SignerResponse {
  merchantId: string;
  payload: string;
  signature: string;
  expiresAt?: string;
  preview: {
    amount: number;
    chainId: number;
    address: string;
    token: string;
    idempotencyKey: string;
  };
}
```

| Field        | Type      | Description                                                                                                         |
| ------------ | --------- | ------------------------------------------------------------------------------------------------------------------- |
| `merchantId` | `string`  | Your merchant UUID.                                                                                                 |
| `payload`    | `string`  | Base64url-encoded payment payload.                                                                                  |
| `signature`  | `string`  | Base64url-encoded ECDSA signature of the payload string.                                                            |
| `expiresAt`  | `string?` | ISO 8601 expiration timestamp. Optional. Swype enforces expiry server-side via `signatureTimestamp` in the payload. |
| `preview`    | `object`  | Echo of payment parameters for client-side display.                                                                 |

## SignerFunction

Custom async function for full control over the signer call.

```typescript theme={null}
type SignerFunction = (data: SignerRequest) => Promise<SignerResponse>;
```
