type HazbaseWalletApiErrorBody = { message?: string | { message?: string; code?: string; errorCode?: string; }; error?: string; reason?: string; code?: string; errorCode?: string; }; declare class HazbaseWalletApiError extends Error { readonly status: number; readonly code?: string; readonly body?: HazbaseWalletApiErrorBody; constructor(message: string, status: number, code?: string, body?: HazbaseWalletApiErrorBody); } declare const DEFAULT_HAZBASE_API_ENDPOINT = "https://api.hazbase.com"; type HazbaseWalletClientOptions = { apiEndpoint?: string; fetcher?: typeof fetch; headers?: Record; requestId?: () => string; }; type WalletTokenSummary = { tokenId?: string; chainId: number; address: string; symbol: string; name: string; decimals: number; standard: string; transferable: boolean; whitelistRequired: boolean; voucherRedeemEnabled: boolean; blockExplorerUrl?: string | null; metadata?: Record; }; type WalletTokenBalance = { raw: string; formatted: string; decimals: number; symbol: string; }; type ListTokensInput = { chainId?: number; endpoint?: string; }; type ListTokensResult = { tokens: WalletTokenSummary[]; status?: string; }; type GetTokenInfoInput = { chainId?: number; token: string; endpoint?: string; }; type GetTokenInfoResult = { token: WalletTokenSummary; status?: string; }; type GetBalanceInput = { chainId?: number; token: string; account: string; endpoint?: string; }; type GetBalanceResult = { chainId: number; account: string; token: WalletTokenSummary; balance: WalletTokenBalance; status?: string; }; type X402PaymentActivityDetails = { paymentRequestId: string; paymentAttemptId?: string; xPaymentHash?: string; scheme?: string; network?: string | null; resourceId?: string; resourceUrl?: string; description?: string | null; mimeType?: string | null; amountAtomic?: string; payTo?: string; payoutKind?: string; status?: string; paidAt?: string | null; settledAt?: string | null; relayMode?: string; submittedUserOpHash?: string | null; proof?: Record | null; }; type WalletActivityItem = { id: string; kind?: string; direction: string; chainId: number; account: string; tokenAddress: string; from: string; to: string; counterparty: string; amount: WalletTokenBalance; transactionHash: string; blockNumber: number; blockHash: string; logIndex: number; transactionIndex: number; at?: string | null; status?: string; x402?: X402PaymentActivityDetails; }; type GetActivityInput = { chainId?: number; token: string; account: string; limit?: number; cursor?: string; fromBlock?: number; toBlock?: number; endpoint?: string; }; type GetActivityResult = { chainId: number; account: string; token: WalletTokenSummary; activities: WalletActivityItem[]; nextCursor?: string | null; range?: { fromBlock: number; toBlock: number; latestBlock: number; }; status?: string; }; type PrepareTransferInput = { chainId?: number; token: string; account: string; recipient: string; amount: string; metadata?: Record; endpoint?: string; }; type PrepareTransferResult = { chainId: number; account: string; recipient: string; token: WalletTokenSummary; amount: { input: string; raw: string; formatted: string; decimals: number; symbol: string; }; execution: { target: string; value: string; data: string; method: string; selector: string; }; policy: { authorization: string; sessionEligible: boolean; sponsored: boolean; }; display: { title: string; subtitle: string; from: string; to: string; assetSymbol: string; assetName: string; }; metadata?: Record; status?: string; }; type SubmitTransferInput = { emailSession: string; chainId?: number; token: string; account: string; recipient: string; amount: string; deviceBindingId: string; highTrustToken: string; accountSalt?: string; paymasterValiditySec?: number; waitForReceipt?: boolean; metadata?: Record; endpoint?: string; }; type SubmitTransferResult = { chainId: number; token: WalletTokenSummary; transfer: { account: string; recipient: string; amount: PrepareTransferResult['amount']; execution: PrepareTransferResult['execution']; }; relayMode?: string; bundlerRpcUrl?: string; entryPointAddress?: string; smartAccountAddress: string; nonce: string; initCode: string; localUserOpHash?: string | null; submittedUserOpHash?: string | null; transactionHash?: string | null; gasEstimate?: Record; receipt?: Record | null; metadata?: Record; status?: string; }; type GetTransferStatusInput = { emailSession: string; chainId?: number; token: string; account: string; recipient: string; amount: string; userOpHash: string; transactionHash?: string; relayMode?: string; metadata?: Record; endpoint?: string; }; type GetTransferStatusResult = { chainId: number; token: WalletTokenSummary; account: string; recipient: string; amount: PrepareTransferResult['amount']; submittedUserOpHash: string; transactionHash?: string | null; confirmed: boolean; blockNumber?: number; logIndex?: number; retryAfterMs?: number; errorCode?: string; status: string; }; type OwnerOperationCall = { to: string; value: string; data: string; }; type PrepareOwnerOperationInput = { chainId: number; account: string; policyKey: string; calls: OwnerOperationCall[]; grantToken: string; metadata?: Record; endpoint?: string; }; type PrepareOwnerOperationResult = { chainId: number; account: string; operation: { policyKey: string; displayName: string; calls: Array; }; policy: { authorization: string; sessionEligible: boolean; sponsored: boolean; maxCalls: number; maxNativeValueWei: string; }; metadata?: Record; status?: string; }; type SubmitOwnerOperationInput = PrepareOwnerOperationInput & { emailSession: string; deviceBindingId: string; highTrustToken: string; accountSalt?: string; paymasterValiditySec?: string; waitForReceipt?: boolean; }; type SubmitOwnerOperationResult = { chainId: number; operation: PrepareOwnerOperationResult['operation']; policy: PrepareOwnerOperationResult['policy']; relayMode?: string; bundlerRpcUrl?: string | null; entryPointAddress?: string; smartAccountAddress: string; nonce: string; initCode: string; localUserOpHash?: string | null; submittedUserOpHash?: string | null; transactionHash?: string | null; gasEstimate?: Record; receipt?: Record | null; metadata?: Record; status?: string; }; type GetOwnerOperationStatusInput = { emailSession: string; chainId: number; account: string; userOpHash: string; transactionHash?: string; relayMode?: string; endpoint?: string; }; type GetOwnerOperationStatusResult = { chainId: number; account: string; userOpHash: string; transactionHash?: string | null; confirmed: boolean; blockNumber?: number; logIndex?: number; retryAfterMs?: number; relayMode?: string; errorCode?: string; status: string; }; type PayX402WithHazbaseWalletInput = { emailSession: string; paymentRequestId: string; smartAccountAddress: string; deviceBindingId: string; highTrustToken: string; accountSalt?: string; waitForReceipt?: boolean; expectedAmountAtomic?: string; expectedPayTo?: string; endpoint?: string; }; type X402HazbaseWalletPaymentResult = { paymentRequestId: string; paymentAttemptId: string; xPaymentHash: string; paid: boolean; verified: boolean; settled: boolean; payer: string; chainId: number; network: string; relayMode?: string; submittedUserOpHash?: string | null; transactionHash?: string | null; gasEstimate?: Record; xPayment?: string | null; receipt?: Record | null; status?: string; errorCode?: string; retryAfterMs?: number; }; type GetX402HazbaseWalletPaymentStatusInput = { emailSession: string; paymentRequestId: string; paymentAttemptId: string; endpoint?: string; }; type CreateWalletLinkChallengeInput = { origin: string; purpose?: string; endpoint?: string; }; type WalletLinkChallengeResult = { challengeId: string; nonce: string; origin: string; purpose: string; expiresAt: string; status?: string; }; type ApproveWalletLinkInput = { emailSession: string; challengeId: string; nonce: string; walletAddress: string; chainId: number; endpoint?: string; }; type ApproveWalletLinkResult = { challengeId: string; proof: string; expiresAt: string; status?: string; }; type VerifyWalletLinkInput = { challengeId: string; nonce: string; proof: string; origin: string; endpoint?: string; }; type VerifyWalletLinkResult = { verified: true; walletAddress: string; chainId: number; origin: string; purpose: string; assurance: 'authenticated_wallet_session'; expiresAt: string; linkSessionToken: string; linkSessionExpiresAt: string; status?: string; }; type VerifyWalletLinkSessionInput = { linkSessionToken: string; origin: string; endpoint?: string; }; type VerifyWalletLinkSessionResult = { verified: true; linkSessionId: string; walletAddress: string; chainId: number; origin: string; purpose: string; assurance: 'authenticated_wallet_session'; linkSessionExpiresAt: string; status?: string; }; type HazbaseWalletClient = ReturnType; declare function createHazbaseWalletClient(options?: HazbaseWalletClientOptions): { listTokens(input?: ListTokensInput): Promise; getTokenInfo(input: GetTokenInfoInput): Promise; getBalance(input: GetBalanceInput): Promise; getActivity(input: GetActivityInput): Promise; prepareTransfer(input: PrepareTransferInput): Promise; submitTransfer(input: SubmitTransferInput): Promise; getTransferStatus(input: GetTransferStatusInput): Promise; prepareOwnerOperation(input: PrepareOwnerOperationInput): Promise; submitOwnerOperation(input: SubmitOwnerOperationInput): Promise; getOwnerOperationStatus(input: GetOwnerOperationStatusInput): Promise; payX402WithHazbaseWallet(input: PayX402WithHazbaseWalletInput): Promise; getX402HazbaseWalletPaymentStatus(input: GetX402HazbaseWalletPaymentStatusInput): Promise; createWalletLinkChallenge(input: CreateWalletLinkChallengeInput): Promise; approveWalletLink(input: ApproveWalletLinkInput): Promise; verifyWalletLink(input: VerifyWalletLinkInput): Promise; verifyWalletLinkSession(input: VerifyWalletLinkSessionInput): Promise; }; export { type ApproveWalletLinkInput, type ApproveWalletLinkResult, type CreateWalletLinkChallengeInput, DEFAULT_HAZBASE_API_ENDPOINT, type GetActivityInput, type GetActivityResult, type GetBalanceInput, type GetBalanceResult, type GetOwnerOperationStatusInput, type GetOwnerOperationStatusResult, type GetTokenInfoInput, type GetTokenInfoResult, type GetTransferStatusInput, type GetTransferStatusResult, type GetX402HazbaseWalletPaymentStatusInput, HazbaseWalletApiError, type HazbaseWalletApiErrorBody, type HazbaseWalletClient, type HazbaseWalletClientOptions, type ListTokensInput, type ListTokensResult, type OwnerOperationCall, type PayX402WithHazbaseWalletInput, type PrepareOwnerOperationInput, type PrepareOwnerOperationResult, type PrepareTransferInput, type PrepareTransferResult, type SubmitOwnerOperationInput, type SubmitOwnerOperationResult, type SubmitTransferInput, type SubmitTransferResult, type VerifyWalletLinkInput, type VerifyWalletLinkResult, type VerifyWalletLinkSessionInput, type VerifyWalletLinkSessionResult, type WalletActivityItem, type WalletLinkChallengeResult, type WalletTokenBalance, type WalletTokenSummary, type X402HazbaseWalletPaymentResult, type X402PaymentActivityDetails, createHazbaseWalletClient };