import {z} from 'zod' export type GetApiV2VaultsVaultIdTransactionsArgs = {vault_id: string, filter?: string | undefined, orderBy?: string | undefined, pageSize?: number | undefined, pageToken?: string | undefined, skip?: number | undefined, includeReferencedResources?: boolean | undefined, view?: ('BASIC' | 'FULL') | undefined}; export type GetApiV2VaultsVaultIdTransactionsOptions = {baseUrl?: string | undefined, bearerAuth?: string | undefined, fetch?: typeof fetch | undefined}; export const v2TransactionTypeEnum = z.enum(["TRANSACTION", "MESSAGE"]); export const v2TransactionSubTypeEnum = z.enum(["NATIVE_TRANSFER", "TOKEN_TRANSFER", "NON_FUNGIBLE_TOKEN_TRANSFER", "TOKEN_APPROVAL", "PERSONAL_SIGN", "SIGN_TYPED_DATA", "EVM_ACCOUNT_DELEGATION", "CONTRACT_CALL", "NATIVE_MULTI_TRANSFER", "NON_FUNGIBLE_TOKEN_APPROVAL", "CONNECTION_TRANSFER", "BATCH_TRANSFER", "TOKEN_MINT", "TOKEN_BURN", "PROGRAM_CALL", "CONTRACT_DEPLOYMENT", "TON_PROOF", "TON_SIGN_DATA", "SOLANA_SIGN_MESSAGE", "GENERIC_TRANSACTION", "CHANGE_TRUST", "CANTON_TOPOLOGY_TRANSACTION", "CANTON_TRANSFER_AUTO_APPROVAL", "CANTON_ACCEPT_TRANSFER_OFFER", "SUBMITTING_TRANSACTION", "BTC_PSBT", "BTC_TRANSFER", "BTC_SIGN_MESSAGE", "SHIELD", "UNSHIELD", "ALEO_CONSOLIDATE", "EVM_ZAMA_CONFIDENTIAL_TOKEN_ACTIVATION"]); export const v2TransactionStateEnum = z.enum(["AWAITING_APPROVAL", "AWAITING_AML_POLICY_CHECK", "DECLINED_BY_AML_POLICY", "AWAITING_POLICY_CHECK", "AWAITING_SIGNATURE", "SIGNED", "AWAITING_PUBLISH", "PUBLISHED", "MINED", "MINED_FAILED", "FAILED", "DECLINED", "REPLACED", "CANCELED", "DROPPED", "CONFIRMED", "EXPIRED"]); export const protobufAny = z.object({"@type": z.string().optional()}).and(z.record(z.string(), z.unknown())); export const googlerpcStatus = z.object({code: z.number().int().optional(), message: z.string().optional(), details: z.array(protobufAny).optional()}); export const v2TransactionDirectionEnum = z.enum(["INCOMING", "OUTGOING"]); export const transactionRequestDappInfo = z.object({url: z.string().optional()}); export const transactionRequestOriginEnum = z.enum(["WALLET_CONNECT", "EXTENSION"]); export const v2RequestSignature = z.object({rawRequestBody: z.string().optional(), jwt: z.string().optional()}); export const v2TransactionRequest = z.object({name: z.string().optional(), externalId: z.string().optional(), initiator: z.string().optional(), sourceWallet: z.string().optional(), cancelTime: z.string().optional(), signTime: z.string().optional(), failTime: z.string().optional(), declineTime: z.string().optional(), publishTime: z.string().optional(), dropTime: z.string().optional(), expireTime: z.string().optional(), approveTime: z.string().optional(), publish: z.boolean().optional(), signingSessions: z.array(z.string()).optional(), blockingTransaction: z.string().optional(), walletconnectSession: z.string().optional(), transactionBundle: z.string().optional(), evmSubmissionDetails: z.string().optional(), dappInfo: transactionRequestDappInfo.optional(), origin: transactionRequestOriginEnum.optional(), gasStationOrder: z.string().optional(), gasStation: z.string().optional(), sponsorWallet: z.string().optional(), initiatorRequestSignature: v2RequestSignature.optional()}); export const v2ScreeningStateEnum = z.enum(["SKIPPED", "PENDING", "FAILED", "READY"]); export const v2AMLActionEnum = z.enum(["DENY", "ALLOW", "ALERT"]); export const transactionAMLDetails = z.object({screeningState: v2ScreeningStateEnum.optional(), screeningPolicyResult: v2AMLActionEnum.optional(), resolved: z.boolean().optional()}); export const apiv2Address = z.object({value: z.string().optional(), infoRef: z.string().optional(), private: z.boolean().optional()}); export const v2ConvertedValue = z.object({amount: z.string().optional(), currencyCode: z.string().optional()}); export const transactionTransfer = z.object({sourceAddress: apiv2Address.optional(), destinationAddress: apiv2Address.optional(), amount: z.string().optional(), asset: z.string().optional(), miningPrice: v2ConvertedValue.optional(), note: z.string().optional(), unknownAmount: z.boolean().optional()}); export const transactionTokenAllowance = z.object({approverAddress: apiv2Address.optional(), spenderAddress: apiv2Address.optional(), asset: z.string().optional(), amount: z.string().optional(), miningPrice: v2ConvertedValue.optional()}); export const v2EVMTransactionGas = z.object({gasLimit: z.string().optional(), gasUsed: z.string().optional(), gasPrice: z.string().optional(), maxPriorityFeePerGas: z.string().optional(), maxFeePerGas: z.string().optional()}); export const v2TransactionEVMTransactionAuthorization = z.object({signer: apiv2Address.optional(), contractAddress: apiv2Address.optional(), nonce: z.string().optional(), chainId: z.string().optional(), signature: z.string().optional()}); export const v2TransactionEVMTransactionAuthorizationDetails = z.object({authorizationList: z.array(v2TransactionEVMTransactionAuthorization).optional()}); export const v2TransactionEVMTransaction = z.object({fromAddress: apiv2Address.optional(), toAddress: apiv2Address.optional(), value: z.string().optional(), data: z.string().optional(), fee: v2EVMTransactionGas.optional(), authorizationDetails: v2TransactionEVMTransactionAuthorizationDetails.optional(), signature: z.string().optional(), providedNonce: z.string().optional(), nonce: z.string().optional(), chainId: z.string().optional()}); export const transactionEVMMessageTypeEnum = z.enum(["PERSONAL_SIGN", "SIGN_TYPED_DATA_V4"]); export const transactionEVMMessage = z.object({type: transactionEVMMessageTypeEnum.optional(), message: z.string().optional(), signature: z.string().optional()}); export const v2TransactionTronPersonalSign = z.object({message: z.string().optional(), signature: z.string().optional(), messageHex: z.string().optional()}); export const v2TransactionEVMAccountDelegation = z.object({signerAddress: apiv2Address.optional(), contractAddress: apiv2Address.optional(), chainId: z.string().optional(), nonce: z.string().optional(), signature: z.string().optional(), offsetNonce: z.boolean().optional(), providedNonce: z.string().optional()}); export const v2TransactionTronTransactionTriggerSmartContract = z.object({ownerAddress: apiv2Address.optional(), contractAddress: apiv2Address.optional(), callValue: z.string().optional(), data: z.string().optional()}); export const v2TransactionTronTransactionTronResourceEnum = z.enum(["BANDWIDTH", "ENERGY"]); export const v2TransactionTronTransactionFreezeBalanceV2 = z.object({ownerAddress: apiv2Address.optional(), amount: z.string().optional(), resource: v2TransactionTronTransactionTronResourceEnum.optional(), asset: z.string().optional()}); export const v2TransactionTronTransactionUnfreezeBalanceV2 = z.object({ownerAddress: apiv2Address.optional(), amount: z.string().optional(), resource: v2TransactionTronTransactionTronResourceEnum.optional(), asset: z.string().optional()}); export const v2TransactionTronTransactionWithdrawExpireUnfreeze = z.object({ownerAddress: apiv2Address.optional()}); export const v2TransactionTronTransactionDelegateResource = z.object({ownerAddress: apiv2Address.optional(), resource: v2TransactionTronTransactionTronResourceEnum.optional(), amount: z.string().optional(), asset: z.string().optional(), receiverAddress: apiv2Address.optional(), lock: z.boolean().optional(), lockPeriod: z.string().optional()}); export const v2TransactionTronTransactionUnDelegateResource = z.object({ownerAddress: apiv2Address.optional(), resource: v2TransactionTronTransactionTronResourceEnum.optional(), amount: z.string().optional(), asset: z.string().optional(), receiverAddress: apiv2Address.optional()}); export const v2TransactionTronTransactionCancelAllUnfreezeV2 = z.object({ownerAddress: apiv2Address.optional()}); export const v2TransactionTronTransactionVoteWitnessVote = z.object({voteAddress: apiv2Address.optional(), voteCount: z.string().optional()}); export const v2TransactionTronTransactionVoteWitness = z.object({ownerAddress: apiv2Address.optional(), votes: z.array(v2TransactionTronTransactionVoteWitnessVote)}); export const v2TransactionTronTransactionWithdrawBalance = z.object({ownerAddress: apiv2Address.optional()}); export const tronTransactionTransferContract = z.object({ownerAddress: apiv2Address.optional(), toAddress: apiv2Address.optional(), amount: z.string().optional()}); export const v2TronResourceFee = z.object({consumed: z.string().optional(), burned: z.string().optional(), convertedBurned: v2ConvertedValue.optional()}); export const v2TronAccountActivationFee = z.object({fee: z.string().optional(), convertedFee: v2ConvertedValue.optional()}); export const v2TronGasStationFee = z.object({order: z.string().optional(), price: z.string().optional(), asset: z.string().optional()}); export const v2TronTransactionFee = z.object({usedSun: z.string().optional(), convertedValue: v2ConvertedValue.optional(), bandwidth: v2TronResourceFee.optional(), energy: v2TronResourceFee.optional(), accountActivationFee: v2TronAccountActivationFee.optional(), gasStationFee: v2TronGasStationFee.optional()}); export const v2TransactionTronTransaction = z.object({triggerSmartContract: v2TransactionTronTransactionTriggerSmartContract.optional(), freezeBalanceV2: v2TransactionTronTransactionFreezeBalanceV2.optional(), unfreezeBalanceV2: v2TransactionTronTransactionUnfreezeBalanceV2.optional(), withdrawExpireUnfreeze: v2TransactionTronTransactionWithdrawExpireUnfreeze.optional(), delegateResource: v2TransactionTronTransactionDelegateResource.optional(), undelegateResource: v2TransactionTronTransactionUnDelegateResource.optional(), cancelAllUnfreezeV2: v2TransactionTronTransactionCancelAllUnfreezeV2.optional(), voteWitness: v2TransactionTronTransactionVoteWitness.optional(), withdrawBalance: v2TransactionTronTransactionWithdrawBalance.optional(), transferContract: tronTransactionTransferContract.optional(), fee: v2TronTransactionFee.optional(), signature: z.string().optional(), expireTime: z.string().optional(), refBlockBytes: z.string().optional(), refBlockHash: z.string().optional(), timestamp: z.string().optional()}); export const bTCTransactionUTXOIn = z.object({address: apiv2Address.optional(), amount: z.string().optional(), signingSession: z.string().optional(), userSelected: z.boolean().optional()}); export const bTCTransactionUTXOOut = z.object({address: apiv2Address.optional(), amount: z.string().optional(), change: z.boolean().optional(), changeUserSelected: z.boolean().optional(), vout: z.number().int().optional()}); export const transactionBTCTransaction = z.object({inputs: z.array(bTCTransactionUTXOIn).optional(), outputs: z.array(bTCTransactionUTXOOut).optional(), fee: z.string().optional(), asset: z.string().optional()}); export const v2TransactionBTCPSBT = z.object({signedPsbt: z.string().optional(), inputs: z.array(bTCTransactionUTXOIn).optional(), outputs: z.array(bTCTransactionUTXOOut).optional(), fee: z.string().optional()}); export const v2DecodedAptosEntryFunction = z.object({function: z.string(), typeArguments: z.array(z.string()), arguments: z.array(z.string())}); export const v2DecodedAptosTransactionPayload = z.object({entryFunction: v2DecodedAptosEntryFunction.optional()}); export const transactionAptosTransaction = z.object({sender: apiv2Address.optional(), sequenceNumber: z.string().optional(), payloadBytes: z.string().optional(), decodedPayload: v2DecodedAptosTransactionPayload.optional(), maxGasAmount: z.string().optional(), gasUnitPrice: z.string().optional(), expirationTime: z.string().optional(), chainId: z.string().optional()}); export const transactionSuiTransaction = z.object({sender: apiv2Address.optional(), gasBudget: z.string().optional(), gasPrice: z.string().optional(), expirationEpoch: z.string().optional(), txBcsBytes: z.string().optional(), decodedTransaction: z.string().optional()}); export const v2TransactionSuiSignPersonalMessage = z.object({signer: apiv2Address.optional(), message: z.string().optional(), signature: z.string().optional()}); export const transactionXRPLTransaction = z.object({jsonTransactionData: z.object({}).optional()}); export const decodedCallArg = z.object({name: z.string().optional(), type: z.string().optional(), value: z.string().optional()}); export const substrateTransactionDecodedCall = z.object({pallet: z.string().optional(), palletIndex: z.number().int().optional(), method: z.string().optional(), methodIndex: z.number().int().optional(), args: z.array(decodedCallArg).optional()}); export const transactionSubstrateTransaction = z.object({fromAddress: apiv2Address.optional(), nonce: z.string().optional(), encodedCall: z.string().optional(), call: substrateTransactionDecodedCall.optional(), genesisHash: z.string().optional()}); export const transactionTonTransactionMessage = z.object({address: z.string(), amount: z.string(), payload: z.string().optional(), stateInit: z.string().optional()}); export const transactionTonTransaction = z.object({sender: apiv2Address.optional(), seqno: z.string().optional(), messages: z.array(transactionTonTransactionMessage).optional(), memo: z.string().optional(), validUntil: z.string().optional(), amount: z.string().optional()}); export const v2TransactionTonSignData = z.object({schemaCrc: z.string().optional(), cell: z.string().optional(), publicKey: z.string().optional(), timestamp: z.string().optional(), signature: z.string().optional()}); export const v2TransactionTonProof = z.object({address: z.string().optional(), appDomain: z.string().optional(), payload: z.string().optional(), timestamp: z.string().optional(), signature: z.string().optional()}); export const v2TransactionSolanaSignMessage = z.object({signer: apiv2Address.optional(), message: z.string().optional(), signature: z.string().optional()}); export const v2TransactionSolanaTransaction = z.object({fee: z.string().optional(), rawTransaction: z.string().optional(), utilaSigners: z.array(apiv2Address).optional(), replaceBlockhash: z.boolean().optional(), memo: z.string().optional()}); export const thetaTransactionCoins = z.object({thetaWei: z.string().optional(), tfuelWei: z.string().optional()}); export const thetaTransactionTxInput = z.object({address: apiv2Address.optional(), coins: thetaTransactionCoins.optional()}); export const thetaTransactionTxOutput = z.object({address: apiv2Address.optional(), coins: thetaTransactionCoins.optional()}); export const thetaTransactionSendTransaction = z.object({inputs: z.array(thetaTransactionTxInput).optional(), outputs: z.array(thetaTransactionTxOutput).optional(), fee: thetaTransactionCoins.optional()}); export const transactionThetaTransaction = z.object({sendTransaction: thetaTransactionSendTransaction.optional()}); export const v2StellarMemoMemoTypeEnum = z.enum(["TEXT", "ID", "HASH", "RETURN"]); export const v2StellarMemo = z.object({type: v2StellarMemoMemoTypeEnum, data: z.string()}); export const transactionStellarTransactionStellarTimeBounds = z.object({minUnixTime: z.string().optional(), maxUnixTime: z.string().optional()}); export const stellarTransactionDecodedOperationBodyPayment = z.object({destinationAddress: apiv2Address.optional(), asset: z.string().optional(), assetRef: z.string().optional(), amount: z.string().optional()}); export const stellarTransactionDecodedOperationBodyCreateAccount = z.object({destinationAddress: apiv2Address.optional(), startingBalance: z.string().optional()}); export const stellarTransactionDecodedOperationBodyChangeTrust = z.object({asset: z.string().optional(), assetRef: z.string().optional(), limit: z.string().optional(), unlimited: z.boolean().optional()}); export const stellarTransactionDecodedOperationBodySEP41Payment = z.object({spenderAddress: apiv2Address.optional(), sourceAddress: apiv2Address.optional(), destinationAddress: apiv2Address.optional(), contractAddress: z.string().optional(), assetRef: z.string().optional(), rawAmount: z.string().optional()}); export const stellarTransactionDecodedOperationBodySEP41TokenApproval = z.object({sourceAddress: apiv2Address.optional(), spenderAddress: apiv2Address.optional(), contractAddress: z.string().optional(), assetRef: z.string().optional(), rawAmount: z.string().optional(), liveUntilLedgerNumber: z.string().optional()}); export const stellarTransactionDecodedOperationBody = z.object({payment: stellarTransactionDecodedOperationBodyPayment.optional(), createAccount: stellarTransactionDecodedOperationBodyCreateAccount.optional(), changeTrust: stellarTransactionDecodedOperationBodyChangeTrust.optional(), sep41Payment: stellarTransactionDecodedOperationBodySEP41Payment.optional(), sep41TokenApproval: stellarTransactionDecodedOperationBodySEP41TokenApproval.optional()}); export const stellarTransactionStellarOperation = z.object({sourceAccountAddress: apiv2Address.optional(), rawBody: z.string().optional(), decodedBody: stellarTransactionDecodedOperationBody.optional()}); export const v2TransactionStellarTransaction = z.object({sourceAccountAddress: apiv2Address.optional(), sequenceNumber: z.string().optional(), fee: z.string().optional(), memo: v2StellarMemo.optional(), timeBounds: transactionStellarTransactionStellarTimeBounds.optional(), operations: z.array(stellarTransactionStellarOperation).optional(), rawXdrEnvelope: z.string().optional()}); export const transactionFeePublic = z.object({amountMicrocredits: z.string().optional(), priorityFeeMicrocredits: z.string().optional(), payer: apiv2Address.optional()}); export const transactionTransferPublic = z.object({sender: apiv2Address.optional(), recipient: apiv2Address.optional(), amount: z.string().optional()}); export const transactionTransferPublicAsSigner = z.object({signer: apiv2Address.optional(), recipient: apiv2Address.optional(), amount: z.string().optional()}); export const transactionTransferPrivate = z.object({sender: apiv2Address.optional(), recipient: apiv2Address.optional(), sentAmount: z.string().optional(), changeAmount: z.string().optional()}); export const transactionTransferPrivateToPublic = z.object({sender: apiv2Address.optional(), recipient: apiv2Address.optional(), sentAmount: z.string().optional(), changeAmount: z.string().optional()}); export const transactionTransferPublicToPrivate = z.object({sender: apiv2Address.optional(), recipient: apiv2Address.optional(), amount: z.string().optional()}); export const transactionAleoRecord = z.object({commitment: z.string().optional(), amount: z.string().optional()}); export const transactionJoinOperation = z.object({owner: apiv2Address.optional(), inputs: z.array(transactionAleoRecord).optional(), outputs: z.array(transactionAleoRecord).optional()}); export const transactionTransitionValue = z.object({type: z.string().optional(), value: z.string().optional()}); export const transactionUnknownOperation = z.object({inputs: z.array(transactionTransitionValue).optional(), outputs: z.array(transactionTransitionValue).optional()}); export const transactionAleoOperation = z.object({program: z.string().optional(), function: z.string().optional(), asset: z.string().optional(), internal: z.boolean().optional(), transferPublic: transactionTransferPublic.optional(), transferPublicAsSigner: transactionTransferPublicAsSigner.optional(), transferPrivate: transactionTransferPrivate.optional(), transferPrivateToPublic: transactionTransferPrivateToPublic.optional(), transferPublicToPrivate: transactionTransferPublicToPrivate.optional(), join: transactionJoinOperation.optional(), unknown: transactionUnknownOperation.optional()}); export const transactionAleoTransaction = z.object({feeMicrocredits: z.string().optional(), feeOperation: transactionFeePublic.optional(), operations: z.array(transactionAleoOperation).optional()}); export const v2Transaction = z.object({name: z.string().optional(), type: v2TransactionTypeEnum.optional(), subType: v2TransactionSubTypeEnum.optional(), state: v2TransactionStateEnum.optional(), error: googlerpcStatus.optional(), direction: v2TransactionDirectionEnum.optional(), note: z.string().optional(), network: z.string().optional(), hash: z.string().optional(), blockNumber: z.string().optional(), signingSession: z.string().optional(), request: v2TransactionRequest.optional(), amlDetails: transactionAMLDetails.optional(), transfers: z.array(transactionTransfer).optional(), tokenAllowances: z.array(transactionTokenAllowance).optional(), designatedSigners: z.array(z.string()).optional(), evmTransaction: v2TransactionEVMTransaction.optional(), evmMessage: transactionEVMMessage.optional(), tronPersonalSign: v2TransactionTronPersonalSign.optional(), evmAccountDelegation: v2TransactionEVMAccountDelegation.optional(), tronTransaction: v2TransactionTronTransaction.optional(), btcTransaction: transactionBTCTransaction.optional(), btcPsbt: v2TransactionBTCPSBT.optional(), aptosTransaction: transactionAptosTransaction.optional(), suiTransaction: transactionSuiTransaction.optional(), suiSignPersonalMessage: v2TransactionSuiSignPersonalMessage.optional(), xrplTransaction: transactionXRPLTransaction.optional(), substrateTransaction: transactionSubstrateTransaction.optional(), tonTransaction: transactionTonTransaction.optional(), tonSignData: v2TransactionTonSignData.optional(), tonProof: v2TransactionTonProof.optional(), solanaSignMessage: v2TransactionSolanaSignMessage.optional(), solanaTransaction: v2TransactionSolanaTransaction.optional(), thetaTransaction: transactionThetaTransaction.optional(), stellarTransaction: v2TransactionStellarTransaction.optional(), aleoTransaction: transactionAleoTransaction.optional(), createTime: z.string().optional(), mineTime: z.string().optional(), confirmTime: z.string().optional(), expireTime: z.string().optional(), spam: z.boolean().optional(), annotations: z.record(z.string(), z.string()).optional(), replacementTransaction: z.string().optional()}); export const v2AssetTypeEnum = z.enum(["NATIVE_CURRENCY", "TOKEN"]); export const assetTokenInfoStandardEnum = z.enum(["ERC20", "ERC721", "ERC1155", "TRC20", "SPL_TOKEN", "SPL_TOKEN_2022", "ICS20", "JETTON", "TIP20", "ERC7984"]); export const v2CantonTokenDetails = z.object({instrumentId: z.string().optional(), instrumentAdmin: z.string().optional(), supportsTransferPreapproval: z.boolean().optional()}); export const v2SuiTokenDetails = z.object({gasless: z.boolean().optional()}); export const v2EVMTokenDetails = z.object({zamaConfidentialTokenPair: z.string().optional()}); export const v2AssetTokenInfo = z.object({contractAddress: z.string().optional(), standard: assetTokenInfoStandardEnum.optional(), denom: z.string().optional(), cantonTokenDetails: v2CantonTokenDetails.optional(), tip20Currency: z.string().optional(), suiTokenDetails: v2SuiTokenDetails.optional(), evmTokenDetails: v2EVMTokenDetails.optional()}); export const v2Asset = z.object({name: z.string().optional(), displayName: z.string().optional(), network: z.string().optional(), type: v2AssetTypeEnum.optional(), symbol: z.string().optional(), decimals: z.number().int().optional(), convertedValue: v2ConvertedValue.optional(), tokenInfo: v2AssetTokenInfo.optional()}); export const v2WalletEVMDetails = z.object({address: z.string().optional()}); export const walletTronDetails = z.object({address: z.string().optional()}); export const v2WalletTonDetails = z.object({address: z.string().optional()}); export const walletSolanaDetails = z.object({address: z.string().optional()}); export const v2WalletStellarDetails = z.object({address: z.string().optional()}); export const walletXRPLDetails = z.object({signingPubKey: z.string().optional()}); export const bTCDetailsAddressFormat = z.enum(["P2PKH", "P2WPKH", "P2TR"]); export const walletCreateParamsBTCDetailsBTCNetworkDetails = z.object({network: z.string(), format: bTCDetailsAddressFormat}); export const v2WalletCreateParamsBTCDetails = z.object({btcNetworkDetails: z.array(walletCreateParamsBTCDetailsBTCNetworkDetails).optional()}); export const v2WalletCreateParams = z.object({walletGroups: z.array(z.string()).optional(), btcDetails: v2WalletCreateParamsBTCDetails.optional()}); export const v2WalletBTCDetailsBTCNetworkDetails = z.object({network: z.string().optional(), mainAddress: z.string().optional(), xpub: z.string().optional(), format: bTCDetailsAddressFormat.optional()}); export const v2WalletBTCDetails = z.object({btcNetworkDetails: z.array(v2WalletBTCDetailsBTCNetworkDetails).optional()}); export const v2Wallet = z.object({name: z.string().optional(), displayName: z.string(), external: z.boolean().optional(), archived: z.boolean().optional(), convertedValue: v2ConvertedValue.optional(), incompleteValue: z.boolean().optional(), hasFrozenAssets: z.boolean().optional(), networks: z.array(z.string()), evmDetails: v2WalletEVMDetails.optional(), tronDetails: walletTronDetails.optional(), tonDetails: v2WalletTonDetails.optional(), solanaDetails: walletSolanaDetails.optional(), stellarDetails: v2WalletStellarDetails.optional(), xrplDetails: walletXRPLDetails.optional(), createParams: v2WalletCreateParams.optional(), btcDetails: v2WalletBTCDetails.optional()}); export const walletAddressFormat = z.enum(["BITCOIN_P2PKH", "BITCOIN_P2WPKH", "EVM", "TRON_BASE58", "BASE58", "TON_NON_BOUNCEABLE", "SUBSTRATE_58", "BITCOIN_P2TR"]); export const v2WalletAddressType = z.enum(["MAIN", "DEPOSIT", "CHANGE"]); export const v2WalletAddressCreateParamsBTCDetails = z.object({format: bTCDetailsAddressFormat}); export const v2WalletAddressCreateParams = z.object({btcDetails: v2WalletAddressCreateParamsBTCDetails.optional()}); export const v2WalletAddress = z.object({name: z.string().optional(), displayName: z.string().optional(), network: z.string(), address: z.string().optional(), format: walletAddressFormat.optional(), key: z.string().optional(), keyDerivationPath: z.array(z.string()).optional(), type: v2WalletAddressType.optional(), note: z.string().optional(), createParams: v2WalletAddressCreateParams.optional()}); export const apiUserTypeEnum = z.enum(["USER_ACCOUNT", "SERVICE_ACCOUNT"]); export const apiUserRoleEnum = z.enum(["ADMIN", "SIGNER", "VIEWER", "OWNER", "NON_SIGNING_OPERATOR", "NON_SIGNING_ADMIN"]); export const apiUserStatusEnum = z.enum(["PENDING", "ACTIVE"]); export const apiv2VaultContext = z.object({vaultId: z.string().optional(), role: apiUserRoleEnum.optional(), status: apiUserStatusEnum.optional()}); export const v2User = z.object({name: z.string().optional(), fullname: z.string().optional(), email: z.string(), pictureUri: z.string().optional(), type: apiUserTypeEnum.optional(), vaultContext: apiv2VaultContext.optional()}); export const walletconnectSessionPeer = z.object({uri: z.string().optional(), name: z.string().optional(), description: z.string().optional(), icon: z.string().optional()}); export const verificationContextValidationEnum = z.enum(["UNKNOWN", "VALID", "INVALID"]); export const walletconnectSessionVerificationContext = z.object({origin: z.string().optional(), validation: verificationContextValidationEnum.optional(), verifyUrl: z.string().optional()}); export const v2WalletconnectSession = z.object({name: z.string().optional(), initiator: z.string().optional(), peer: walletconnectSessionPeer.optional(), network: z.string().optional(), verificationContext: walletconnectSessionVerificationContext.optional()}); export const v2AddressBookEntry = z.object({name: z.string().optional(), address: z.string(), displayName: z.string(), network: z.string().optional(), note: z.string().optional(), createTime: z.string().optional(), tracked: z.boolean().optional(), associatedExternalWallet: z.string().optional(), creator: z.string().optional(), signed: z.boolean().optional()}); export const v2VerificationStatusEnum = z.enum(["VERIFIED", "PENDING"]); export const v2SignedDataTypeEnum = z.enum(["JSON_V1", "LEGACY", "MERKLE_ROOT", "COINCOVER_V1", "STATION70_V1", "COINCOVER_V2"]); export const v2SignedData = z.object({type: v2SignedDataTypeEnum.optional(), data: z.string().optional(), signature: z.string().optional()}); export const v2LinkAddress = z.object({address: z.string().optional(), network: z.string().optional(), connectionId: z.string().optional(), verificationStatus: v2VerificationStatusEnum.optional(), signature: v2SignedData.optional(), createTime: z.string().optional(), updateTime: z.string().optional(), archiveTime: z.string().optional(), connectionDisplayName: z.string().optional(), targetProfileDisplayName: z.string().optional(), name: z.string().optional()}); export const v2ReferencedResource = z.object({asset: v2Asset.optional(), wallet: v2Wallet.optional(), walletAddress: v2WalletAddress.optional(), user: v2User.optional(), walletconnectSession: v2WalletconnectSession.optional(), addressBookEntry: v2AddressBookEntry.optional(), transaction: v2Transaction.optional(), linkAddress: v2LinkAddress.optional()}); export const v2NetworkAddressInfo = z.object({wallet: z.string().optional(), walletAddress: z.string().optional(), addressBookEntry: z.string().optional(), linkAddress: z.string().optional()}); export const v2ListTransactionsResponse = z.object({transactions: z.array(v2Transaction).optional(), nextPageToken: z.string().optional(), totalSize: z.number().int().optional(), referencedResources: z.record(z.string(), v2ReferencedResource).optional(), referencedAddressesInfo: z.record(z.string(), v2NetworkAddressInfo).optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * ListTransactions * * GET /v2/vaults/{vault_id}/transactions */ export const getApiV2VaultsVaultIdTransactions = async (args: GetApiV2VaultsVaultIdTransactionsArgs, options?: GetApiV2VaultsVaultIdTransactionsOptions) => { const {baseUrl = "https://api.utila.io", fetch: fetchFn = fetch, bearerAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.filter != null) query.append("filter", String(args.filter)) if (args.orderBy != null) query.append("orderBy", String(args.orderBy)) if (args.pageSize != null) query.append("pageSize", String(args.pageSize)) if (args.pageToken != null) query.append("pageToken", String(args.pageToken)) if (args.skip != null) query.append("skip", String(args.skip)) if (args.includeReferencedResources != null) query.append("includeReferencedResources", String(args.includeReferencedResources)) if (args.view != null) query.append("view", String(args.view)) if (bearerAuth !== undefined) headers.set('authorization', `Bearer ${bearerAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/v2/vaults/${encodeURIComponent(String(args.vault_id))}/transactions${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(v2ListTransactionsResponse, await res.json()) };