Swapping
Integrations
Javascript SDK
Get Status
Get Status V2

Get Status V2

getStatusV2

Fetches the status of an ongoing swap based on the provided swapStatusRequest argument.

getStatusV2(
  swapStatusRequest: SwapStatusRequest,
  options?: RequestOptions
): Promise<SwapStatusResponseV2>

The SwapStatusRequest object includes the following arguments:

ParamDescriptionData type
id(required)

One of the following:

string

The SwapStatusRequestV2 response will include the following:

interface Boost {
  maxBoostFeeBps: number;
  effectiveBoostFeeBps: number | undefined;
  boostedAt: number | undefined;
  boostedBlockIndex: string | undefined;
  skippedAt: number | undefined;
  skippedBlockIndex: string | undefined;
}
 
interface DepositChannelFields {
  id: string;
  createdAt: number;
  brokerCommissionBps: number;
  depositAddress: string;
  srcChainExpiryBlock: string;
  estimatedExpiryTime: number;
  expectedDepositAmount: string;
  isExpired: boolean;
  openedThroughBackend: boolean;
  affiliateBrokers: AffiliateBroker[];
  fillOrKillParams: FillOrKillParams | undefined;
  dcaParams: DcaParams | undefined;
}
 
interface DepositFields {
  amount: string;
  txRef: string | undefined;
  txConfirmations: number | undefined;
  witnessedAt: number | undefined;
  witnessedBlockIndex: string | undefined;
  failure: Failure | undefined;
  failedAt: number | undefined;
  failedBlockIndex: string | undefined;
}
 
interface PaidFee {
  type: 'NETWORK' | 'INGRESS' | 'EGRESS' | 'BROKER' | 'BOOST' | 'LIQUIDITY';
  chain: Chain;
  asset: Asset;
  amount: string;
}
 
interface SwapFields {
  originalInputAmount: string;
  remainingInputAmount: string;
  swappedInputAmount: string;
  swappedOutputAmount: string;
  regular?: {
    inputAmount: string;
    outputAmount: string;
    scheduledAt: number;
    scheduledBlockIndex: string;
    executedAt?: number;
    executedBlockIndex?: string;
    retryCount: 0;
  };
  dca?: {
    lastExecutedChunk: {
      inputAmount: string;
      outputAmount: string;
      scheduledAt: number;
      scheduledBlockIndex: string;
      executedAt: number;
      executedBlockIndex: string;
      retryCount: number;
    } | null;
    currentChunk: {
      inputAmount: string;
      scheduledAt: number;
      scheduledBlockIndex: string;
      retryCount: number;
    } | null;
    executedChunks: number;
    remainingChunks: number;
  };
}
 
interface EgressFields {
  amount: string;
  scheduledAt: number;
  scheduledBlockIndex: string;
  txRef: string | undefined;
  witnessedAt: number | undefined;
  witnessedBlockIndex: string | undefined;
  failure: Failure | undefined;
  failedAt: number | undefined;
  failedBlockIndex: string | undefined;
}
 
interface SwapStatusResponseCommonFields {
  swapId: string;
  srcChain: Chain;
  srcAsset: Asset;
  destChain: Chain;
  destAsset: Asset;
  destAddress: string;
  depositChannel: DepositChannelFields | undefined;
  ccmParams: CcmParams | undefined;
  boost: Boost | undefined;
  fees: PaidFee[];
  estimatedDurationSeconds: number | null | undefined; // total estimated time until destination asset is received by the user
  estimatedDurationsSeconds: {
      deposit: number; // estimated time for a deposit to be witnessed
      swap: number; // estimated time for a swap to be fully executed
      egress: number; // estimated time until the output transaction is included in a block
  };
  srcChainRequiredBlockConfirmations: number | null;
}
 
interface Waiting extends SwapStatusResponseCommonFields {
  depositChannel: DepositChannelFields;
}
 
interface Receiving extends SwapStatusResponseCommonFields {
  deposit: DepositFields;
}
 
interface Swapping extends Receiving {
  swap: SwapFields;
}
 
interface Sending extends Receiving {
  swap: SwapFields;
  swapEgress: EgressFields | undefined;
  refundEgress: EgressFields | undefined;
}
 
export type SwapStatusResponseV2 =
  | ({
      state: 'WAITING';
    } & Waiting)
  | ({
      state: 'RECEIVING';
    } & Receiving)
  | ({
      state: 'SWAPPING';
    } & Swapping)
  | ({
      state: 'SENDING';
    } & Sending)
  | ({
      state: 'SENT';
    } & Sending)
  | ({
      state: 'COMPLETED';
    } & Sending)
  | ({
      state: 'FAILED';

Example

Here is an example using Request Deposit Address:

const swapStatusRequest = {
  id: "1234567890", // depositChannelId or transactionHash
};
 
console.log(await swapSDK.getStatusV2(swapStatusRequest));

Sample Responses

DCA Swap

{
  "state": "COMPLETED",
  "srcAsset": "ETH",
  "srcChain": "Ethereum",
  "destAsset": "DOT",
  "destChain": "Polkadot",
  "destAddress": "1yMmfLti1k3huRQM2c47WugwonQMqTvQ2GUFxnU7Pcs7xPo",
  "estimatedDurationSeconds": 102,
  "estimatedDurationsSeconds": {
    "deposit": 84,
    "swap": 12,
    "egress": 6
  },
  "srcChainRequiredBlockConfirmations": 2,
  "deposit": {
    "amount": "9999949999999650000",
    "txRef": "0x1e6e4a865a18aa31306e088966e14193f95f409e40830b829963c365207596ce",
    "witnessedAt": 552000,
    "witnessedBlockIndex": "92-400",
  },
  "depositChannel": {
    "brokerCommissionBps": 0,
    "createdAt": 516000,
    "dcaParams": {
      "chunkIntervalBlocks": 3,
      "numberOfChunks": 10,
    },
    "depositAddress": "0x6aa69332b63bb5b1d7ca5355387edd5624e181f2",
    "estimatedExpiryTime": 1699527060000,
    "id": "86-Ethereum-85",
    "isExpired": false,
    "openedThroughBackend": false,
    "srcChainExpiryBlock": "265",
  },
  "fees": [
    {
      "amount": "9112484",
      "asset": "USDC",
      "chain": "Ethereum",
      "type": "NETWORK",
    },
    {
      "amount": "9999899999999300",
      "asset": "ETH",
      "chain": "Ethereum",
      "type": "LIQUIDITY",
    },
    {
      "amount": "9012338",
      "asset": "USDC",
      "chain": "Ethereum",
      "type": "LIQUIDITY",
    },
    {
      "amount": "91033720",
      "asset": "ETH",
      "chain": "Ethereum",
      "type": "BROKER",
    },
    {
      "amount": "50000000350000",
      "asset": "ETH",
      "chain": "Ethereum",
      "type": "INGRESS",
    },
    {
      "amount": "197450000",
      "asset": "DOT",
      "chain": "Polkadot",
      "type": "EGRESS",
    },
  ],
  "swap": {
    "originalInputAmount": "9999899999999300000",
    "remainingInputAmount": "0",
    "swappedInputAmount": "9999899999999300000",
    "swappedOutputAmount": "8385809332068",
    "dca": {
      "currentChunk": null,
      "executedChunks": 2,
      "lastExecutedChunk": {
        "executedAt": 564000,
        "executedBlockIndex": "94-594",
        "inputAmount": "4999949999999650000",
        "outputAmount": "4192904666034",
        "retryCount": 0,
        "scheduledAt": 552000,
        "scheduledBlockIndex": "92-399",
      },
      "remainingChunks": 8,
    },
  },
  "swapEgress": {
    "amount": "4192707216034",
    "scheduledAt": 564000,
    "scheduledBlockIndex": "94-595",
    "txRef": "104-2",
    "witnessedAt": 624000,
    "witnessedBlockIndex": "104-7",
  },
}

Regular Swap

{
  "state": "COMPLETED",
  "srcChain": "Ethereum",
  "srcAsset": "ETH",
  "destChain": "Polkadot",
  "destAsset": "DOT",
  "destAddress": "1yMmfLti1k3huRQM2c47WugwonQMqTvQ2GUFxnU7Pcs7xPo",
  "estimatedDurationSeconds": 102,
  "estimatedDurationsSeconds": {
    "deposit": 84,
    "swap": 12,
    "egress": 6
  },
  "srcChainRequiredBlockConfirmations": 2,
  "deposit": {
    "amount": "5000000000000000000",
    "txRef": "0x1e6e4a865a18aa31306e088966e14193f95f409e40830b829963c365207596ce",
    "witnessedAt": 552000,
    "witnessedBlockIndex": "92-400",
  },
  "depositChannel": {
    "id": "86-Ethereum-85",
    "createdAt": 516000,
    "depositAddress": "0x6aa69332b63bb5b1d7ca5355387edd5624e181f2",
    "isExpired": false,
    "brokerCommissionBps": 0,
    "estimatedExpiryTime": 1699527060000,
    "openedThroughBackend": false,
    "srcChainExpiryBlock": "265",
  },
  "fees": [
    {
      "amount": "4556242",
      "asset": "USDC",
      "chain": "Ethereum",
      "type": "NETWORK",
    },
    {
      "amount": "4999949999999650",
      "asset": "ETH",
      "chain": "Ethereum",
      "type": "LIQUIDITY",
    },
    {
      "amount": "4506169",
      "asset": "USDC",
      "chain": "Ethereum",
      "type": "LIQUIDITY",
    },
    {
      "amount": "45516860",
      "asset": "ETH",
      "chain": "Ethereum",
      "type": "BROKER",
    },
    {
      "amount": "197450000",
      "asset": "DOT",
      "chain": "Polkadot",
      "type": "EGRESS",
    },
  ],
  "swap": {
    "originalInputAmount": "4999949999999650000",
    "remainingInputAmount": "0",
    "swappedInputAmount": "4999949999999650000",
    "swappedOutputAmount": "4192904666034",
    "regular": {
      "executedAt": 564000,
      "executedBlockIndex": "94-594",
      "inputAmount": "4999949999999650000",
      "outputAmount": "4192904666034",
      "retryCount": 0,
      "scheduledAt": 552000,
      "scheduledBlockIndex": "92-399",
    },
  },
  "swapEgress": {
    "amount": "4192707216034",
    "scheduledAt": 564000,
    "scheduledBlockIndex": "94-595",
    "txRef": "104-2",
    "witnessedAt": 624000,
    "witnessedBlockIndex": "104-7",
  },
}
 

Boost Swap

  {
  "state": "COMPLETED",
  "srcChain": "Ethereum",
  "srcAsset": "ETH",
  "destChain": "Polkadot",
  "destAsset": "DOT",
  "estimatedDurationSeconds": 102,
  "estimatedDurationsSeconds": {
    "deposit": 84,
    "swap": 12,
    "egress": 6
  },
  "srcChainRequiredBlockConfirmations": 2,
  "destAddress": "1yMmfLti1k3huRQM2c47WugwonQMqTvQ2GUFxnU7Pcs7xPo",
    "depositChannel": {
    "brokerCommissionBps": 0,
    "createdAt": 516000,
    "depositAddress": "0x6aa69332b63bb5b1d7ca5355387edd5624e181f2",
    "estimatedExpiryTime": 1699527060000,
    "id": "86-Ethereum-85",
    "isExpired": false,
    "openedThroughBackend": false,
    "srcChainExpiryBlock": "265",
  },
  "deposit": {
    "amount": "5000000000000000000",
    "txRef": "0x1e6e4a865a18aa31306e088966e14193f95f409e40830b829963c365207596ce",
    "witnessedAt": 552000,
    "witnessedBlockIndex": "92-400",
  },
  "boost": {
    "boostedAt": 552000,
    "boostedBlockIndex": "92-400",
    "effectiveBoostFeeBps": 5,
    "maxBoostFeeBps": 30,
  },
  "fees": [
    {
      "amount": "4556242",
      "asset": "USDC",
      "chain": "Ethereum",
      "type": "NETWORK",
    },
    {
      "amount": "4999949999999650",
      "asset": "ETH",
      "chain": "Ethereum",
      "type": "LIQUIDITY",
    },
    {
      "amount": "4506169",
      "asset": "USDC",
      "chain": "Ethereum",
      "type": "LIQUIDITY",
    },
    {
      "amount": "45516860",
      "asset": "ETH",
      "chain": "Ethereum",
      "type": "BROKER",
    },
    {
      "amount": "2500000000000000",
      "asset": "ETH",
      "chain": "Ethereum",
      "type": "BOOST",
    },
    {
      "amount": "50000000350000",
      "asset": "ETH",
      "chain": "Ethereum",
      "type": "INGRESS",
    },
    {
      "amount": "50000000350000",
      "asset": "ETH",
      "chain": "Ethereum",
      "type": "INGRESS",
    },
    {
      "amount": "197450000",
      "asset": "DOT",
      "chain": "Polkadot",
      "type": "EGRESS",
    },
  ],
  "swap": {
    "originalInputAmount": "4997399999999300000",
    "regular": {
      "executedAt": 564000,
      "executedBlockIndex": "94-594",
      "inputAmount": "4999949999999650000",
      "outputAmount": "4192904666034",
      "retryCount": 0,
      "scheduledAt": 552000,
      "scheduledBlockIndex": "92-399",
    },
    "remainingInputAmount": "0",
    "swappedInputAmount": "4999949999999650000",
    "swappedOutputAmount": "4192904666034",
  },
  "swapEgress": {
    "amount": "4192707216034",
    "scheduledAt": 564000,
    "scheduledBlockIndex": "94-595",
    "txRef": "104-2",
    "witnessedAt": 624000,
    "witnessedBlockIndex": "104-7",
  },
}

Lifecycle of a swap