Skip to main content
Fetches a paginated list of withdrawal requests for a user from the backend API. Supports filtering by chain, vault, and status.

Import

import { getWithdrawalRequests } from '@paxoslabs/amplify-sdk'

Usage

const result = await getWithdrawalRequests({
  userAddress: '0x1234...5678',
  status: 'PENDING',
  chainId: 1,
})

for (const request of result.withdrawalRequests) {
  console.log(request.id, request.status, request.orderAmount)
}

Parameters

ParameterTypeRequiredDescription
userAddressAddressYesUser’s wallet address
chainIdnumberNoFilter by blockchain network
vaultAddressAddressNoFilter by vault contract address
vaultNamestringNoFilter by vault name (resolved to address via cache)
statusWithdrawalRequestStatusNoFilter by status
pageSizenumberNoNumber of results per page
pageTokenstringNoPagination token for next page
interface GetWithdrawalRequestsParams {
  userAddress: Address
  chainId?: number
  vaultAddress?: Address
  vaultName?: string
  status?: WithdrawalRequestStatus
  pageSize?: number
  pageToken?: string
}

Return Type

interface WithdrawalRequestsResult {
  withdrawalRequests: WithdrawalRequest[]
  nextPageToken: string | null
}

interface WithdrawalRequest {
  id: string
  vaultAddress: Address
  chainId: number
  wantAssetAddress: Address
  status: WithdrawalRequestStatus
  createdAt: string
  userAddress: Address
  receiverAddress: Address
  refundReceiverAddress: Address
  orderAmount: string
  orderIndex: number
  isSubmittedViaSignature: boolean
  isForceProcessed: boolean
  isMarkedForRefund: boolean
  isMarkedForRefundByUser: boolean
  didOrderFailTransfer: boolean
}

type WithdrawalRequestStatus =
  | 'PENDING'
  | 'COMPLETE'
  | 'PENDING_REFUND'
  | 'REFUNDED'

Example: Withdrawal History Component

import { useQuery } from '@tanstack/react-query'
import { getWithdrawalRequests } from '@paxoslabs/amplify-sdk'

function WithdrawalHistory({ userAddress }: { userAddress: `0x${string}` }) {
  const { data, isLoading } = useQuery({
    queryKey: ['withdrawalRequests', userAddress],
    queryFn: () => getWithdrawalRequests({ userAddress }),
  })

  if (isLoading) return <p>Loading...</p>

  return (
    <ul>
      {data?.withdrawalRequests.map((req) => (
        <li key={req.id}>
          {req.orderAmount} - {req.status}
        </li>
      ))}
    </ul>
  )
}

Error Handling

Error Message PatternDescriptionResolution
"SDK not initialized"SDK not initializedCall initAmplifySDK() first
"Failed to fetch withdrawal requests"Network or API errorCheck connection and retry