import {z} from 'zod' export type CoinString = string; export type WalletIdString = string; export type NumberLike = number; export type CreateApiApiV2CoinWalletWalletIdTrustlineInitiateArgs = {coin: CoinString, walletId: WalletIdString, body: {trustlines: Array<{token: string, action: 'add' | 'remove', limit?: NumberLike | undefined}>, memo?: {type: string, value: string} | undefined, comment?: string | undefined, sequenceId?: string | undefined, fee?: number | undefined, timebounds?: {maxTime: NumberLike, minTime: NumberLike} | undefined}}; export type CreateApiApiV2CoinWalletWalletIdTrustlineInitiateOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; export const pendingApprovalType = z.enum(["userChangeRequest", "transactionRequest", "transactionRequestFull", "policyRuleRequest", "updateApprovalsRequiredRequest", "updateEnterpriseRequest", "updateOrganizationRequest", "genericRequest", "enterpriseInviteRequest", "updateWalletSettingRequest", "updateWalletTagsRequest", "updateEnterpriseSettingRequest"]); export const optionalString = z.string(); export const optionalUnknownObject = z.record(z.string(), z.unknown()); export const address = z.object({address: optionalString.optional(), option: optionalUnknownObject.optional()}); export const amount = z.object({value: z.string(), symbol: z.string()}); export const paymentIntent = z.union([z.object({intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()}))}), z.object({intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean()})]); export const intentType = z.enum(["payment", "transferToken", "consolidate", "consolidateToken", "fanout", "stake", "unstake", "cancel", "delegate", "undelegate", "switchValidator", "claim", "stakeClaimRewards", "pledge", "voteDelegation", "vote", "createAccount", "updateAccount", "addTrustLine", "removeTrustLine", "signMessage", "signTypedStructuredData", "enableToken", "disableToken", "authorize", "acceleration", "fillNonce", "walletRecovery", "contractCall", "deactivate", "customTx", "confidentialTransfer", "closeAssociatedTokenAccount", "stakeWithCallData", "unstakeWithCallData", "switchValidatorWithCallData", "feeAddressTransfer", "tokenApproval", "transferStake", "validatorRegistration", "increaseStake", "decreaseStake", "signalExit", "withdrawStake", "spotTransfer", "bridgeFunds", "enableBridging", "goUnstake", "createBtcDelegation", "transferAccept", "transferReject", "transferAcknowledge", "transferOfferWithdrawn", "cosignDelegationProposal", "cosignDelegationAccept", "allocationRequest", "cantonCommand", "cantonBroadridgeStandingDelegation", "allocationAllocate", "allocationOfferWithdrawn", "allocationReject", "cantonEndInvestorOnboardingOffer", "cantonEndInvestorOnboardingAccept", "cantonEndInvestorOnboardingReject", "cantonParticipantOnboardingRequest", "cantonParticipantAllowListAdd", "cantonParticipantAllowListRemove", "defi-deposit", "defi-redeem", "defi-approve", "defi-withdraw", "wrap-native", "unwrap-native", "wrapApprove", "wrap", "unwrap", "finalizeUnwrap", "delegateResource", "undelegateResource", "stacksRegisterForBond", "export", "import", "importtoc"]); export const optionalStringArray = z.array(z.string()); export const optionalNumber = z.number(); export const tokenData = z.object({tokenQuantity: z.string(), tokenType: z.string(), tokenId: optionalString.optional(), tokenName: z.string(), tokenContractAddress: optionalString.optional(), decimals: optionalNumber.optional()}); export const optionalBoolean = z.boolean(); export const adaConsolidateIntent = z.object({unspents: optionalStringArray.optional(), intentType: z.literal("consolidate"), receiveAddress: z.string(), senderAddressIndex: optionalNumber.optional(), consolidateId: optionalString.optional(), recipients: z.array(z.object({tokenData: tokenData.optional(), address: address, amount: amount, data: optionalString.optional()})).optional(), keepAlive: optionalBoolean.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const adaPaymentIntent = z.union([z.object({unspents: optionalStringArray, isAdminSplit: optionalBoolean.optional(), intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()}))}), z.object({unspents: optionalStringArray, isAdminSplit: optionalBoolean.optional(), intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean()})]); export const stakingRequestSource = z.enum(["MANUAL", "AUTO_STAKE", "EXTERNAL"]); export const adaStakeClaimRewardsIntent = z.object({intentType: z.literal("stakeClaimRewards"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const adaRealFiStakeIntent = z.object({stakingType: z.literal("REALFI_SUSDR"), destinationAddress: z.string(), slippageToleranceBps: z.number().optional(), intentType: z.literal("stake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const adaStakeIntent = z.object({poolKeyHash: z.string(), dRepId: z.string(), amount: z.object({symbol: z.string(), value: z.string()}).optional(), stakingType: z.enum(["NATIVE", "REALFI_SUSDR"]).optional(), intentType: z.literal("stake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const adaRealFiUnstakeIntent = z.object({stakingType: z.literal("REALFI_SUSDR"), destinationAddress: z.string(), unlockSlot: z.string(), intentType: z.literal("unstake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const adaUnstakeIntent = z.object({poolKeyHash: z.string(), amount: z.object({symbol: z.string(), value: z.string()}).optional(), stakingType: z.enum(["NATIVE", "REALFI_SUSDR"]).optional(), intentType: z.literal("unstake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const adaRealFiCancelIntent = z.object({intentType: z.literal("cancel"), stakingType: z.literal("REALFI_SUSDR"), orderTxHash: z.string(), orderOutputIndex: z.number(), destinationAddress: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const adaRealFiClaimTimelockIntent = z.object({intentType: z.literal("claim"), stakingType: z.literal("REALFI_SUSDR"), resultTxHash: z.string(), resultOutputIndex: z.number(), unlockSlot: z.string(), owner: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const adaVoteDelegationIntent = z.object({dRepId: z.string(), intentType: z.literal("voteDelegation"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const entryFunctionABI = z.object({typeParameters: z.array(z.unknown()), parameters: z.array(z.unknown())}); export const aptCustomTxIntent = z.object({intentType: z.literal("customTx"), aptosCustomTransactionParams: z.object({moduleName: z.string(), functionName: z.string(), typeArguments: z.array(z.string()).optional(), functionArguments: z.array(z.unknown()).optional(), abi: entryFunctionABI.optional()}), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), maxGasAmount: z.number().optional(), gasUnitPrice: z.number().optional(), expirationTime: z.number().optional()}); export const cantonAllocationAllocateIntent = z.object({intentType: z.literal("allocationAllocate"), txRequestId: z.string(), updateId: z.string().optional(), operatorId: z.string().optional(), contractId: z.string().nullable().optional(), tradeId: z.string().optional(), transferLegId: z.string().optional(), senderPartyId: z.string().optional(), receiverPartyId: z.string().optional(), amount: z.string().optional(), token: z.string().optional(), receiveToken: z.string().optional(), receiveAmount: z.string().optional(), allocateBefore: z.string().optional(), settleBefore: z.string().optional(), legType: z.enum(["trade", "fee"]).optional(), parentTradeId: z.string().optional(), comment: z.string().optional(), requestedAt: z.string().optional(), sequenceId: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonAllocationOfferWithdrawnIntent = z.object({intentType: z.literal("allocationOfferWithdrawn"), transferOfferId: z.string(), token: z.string().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonAllocationRejectIntent = z.object({intentType: z.literal("allocationReject"), txRequestId: z.string(), updateId: z.string().optional(), operatorId: z.string().optional(), contractId: z.string().nullable().optional(), tradeId: z.string().optional(), transferLegId: z.string().optional(), senderPartyId: z.string().optional(), receiverPartyId: z.string().optional(), amount: z.string().optional(), token: z.string().optional(), receiveToken: z.string().optional(), receiveAmount: z.string().optional(), allocateBefore: z.string().optional(), settleBefore: z.string().optional(), comment: z.string().optional(), requestedAt: z.string().optional(), sequenceId: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonAllocationRequestIntent = z.object({intentType: z.literal("allocationRequest"), updateId: z.string(), operatorId: z.string(), contractId: z.string().nullable(), tradeId: z.string(), transferLegId: z.string(), senderPartyId: z.string(), receiverPartyId: z.string(), amount: z.string(), token: z.string(), allocateBefore: z.string(), settleBefore: z.string(), comment: z.string().optional(), requestedAt: z.string().optional(), receiveToken: z.string().optional(), receiveAmount: z.string().optional(), legType: z.enum(["trade", "fee"]).optional(), parentTradeId: z.string().optional(), allocationRole: z.enum(["send", "receive"]).optional(), sequenceId: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonCosignDelegationAcceptIntent = z.object({intentType: z.literal("cosignDelegationAccept"), txRequestId: z.string(), operatorId: z.string().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonCosignDelegationProposalIntent = z.object({intentType: z.literal("cosignDelegationProposal"), contractId: z.string(), operatorId: z.string(), updateId: z.string(), packageName: z.string().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const createCommand = z.object({CreateCommand: z.object({templateId: z.string(), createArguments: z.record(z.string(), z.unknown())})}); export const exerciseCommand = z.object({ExerciseCommand: z.object({templateId: z.string(), choice: z.string(), choiceArgument: z.record(z.string(), z.unknown()).optional(), contractId: z.string().optional()})}); export const cantonCommand = z.union([createCommand, exerciseCommand]); export const cantonCommandParams = z.object({command: cantonCommand, actAs: z.array(z.string()), readAs: z.array(z.string()).optional(), resolveContracts: z.array(z.object({templateId: z.string(), actAs: z.array(z.string()), injectAs: z.string(), readAs: z.array(z.string()).optional(), resolveAll: z.boolean().optional()})).optional()}); export const cantonCommandIntent = z.object({intentType: z.literal("cantonCommand"), cantonCommandParams: cantonCommandParams, token: z.string().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonBroadridgeStandingDelegationIntent = z.object({intentType: z.literal("cantonBroadridgeStandingDelegation"), executorPartyId: z.string().min(1), meta: z.record(z.string(), z.unknown()).optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonPaymentIntent = z.union([z.object({memo: optionalString.optional(), isConsolidate: z.boolean().optional(), numberOfSplits: z.number().optional(), unspents: optionalStringArray, intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()}))}), z.object({memo: optionalString.optional(), isConsolidate: z.boolean().optional(), numberOfSplits: z.number().optional(), unspents: optionalStringArray, intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean()})]); export const cantonTransferAcceptIntent = z.object({intentType: z.literal("transferAccept"), txRequestId: z.string(), token: z.string().optional(), expiry: z.number().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonAmount = z.string(); export const cantonTransferAcknowledgeIntent = z.object({intentType: z.literal("transferAcknowledge"), contractId: z.string(), senderPartyId: z.string(), updateId: z.string(), amount: cantonAmount, expiry: z.number(), memoId: z.string().optional(), token: z.string().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonTransferOfferWithdrawnIntent = z.object({intentType: z.literal("transferOfferWithdrawn"), transferOfferId: z.string(), token: z.string().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonTransferRejectIntent = z.object({intentType: z.literal("transferReject"), txRequestId: z.string(), token: z.string().optional(), expiry: z.number().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonEndInvestorOnboardingOfferIntent = z.object({intentType: z.literal("cantonEndInvestorOnboardingOffer"), endInvestorPartyId: z.string(), participantPartyId: z.string().optional(), comment: z.string().optional(), sequenceId: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonEndInvestorOnboardingAcceptIntent = z.object({intentType: z.literal("cantonEndInvestorOnboardingAccept"), txRequestId: z.string(), participantPartyId: z.string().optional(), endInvestorPartyId: z.string().optional(), custodialSigningBudgetSeconds: z.number().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonEndInvestorOnboardingRejectIntent = z.object({intentType: z.literal("cantonEndInvestorOnboardingReject"), txRequestId: z.string(), reason: z.string(), participantPartyId: z.string().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cantonParticipantOnboardingRequestIntent = z.object({intentType: z.literal("cantonParticipantOnboardingRequest"), operator: z.string(), provider: z.string(), compliance: z.string(), registrar: z.string(), clientOnboarder: z.string(), expirationIso: z.string().optional(), comment: z.string().optional(), sequenceId: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const nonEmptyUniqueStringArray = z.array(z.string()); export const uniqueStringArray = z.array(z.string()); export const cantonParticipantAllowListAddIntent = z.object({intentType: z.literal("cantonParticipantAllowListAdd"), endInvestorPartyIds: nonEmptyUniqueStringArray, sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), participantPartyId: z.string().optional(), participantServiceCid: z.string().optional(), allowListCid: z.string().optional(), credentialCids: uniqueStringArray.optional()}); export const cantonParticipantAllowListRemoveIntent = z.object({intentType: z.literal("cantonParticipantAllowListRemove"), endInvestorPartyIds: nonEmptyUniqueStringArray, sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), participantPartyId: z.string().optional(), participantServiceCid: z.string().optional(), allowListCid: z.string().optional(), credentialCids: uniqueStringArray.optional()}); export const dotConsolidateIntent = z.object({intentType: z.literal("consolidate"), receiveAddress: z.string(), senderAddressIndex: optionalNumber.optional(), consolidateId: optionalString.optional(), recipients: z.array(z.object({tokenData: tokenData.optional(), address: address, amount: amount, data: optionalString.optional()})).optional(), keepAlive: optionalBoolean.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const dotCreateAccountIntent = z.object({delayBlocks: z.string(), proxyType: z.string(), index: optionalNumber.optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})).optional(), intentType: z.literal("createAccount"), name: optionalString.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}); export const dotProxy = z.object({name: optionalString.optional(), addressString: optionalString.optional(), asset: optionalString.optional(), amountString: optionalString.optional()}); export const dotPaymentIntent = z.union([z.object({proxy: dotProxy, owner: optionalString, intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}), z.object({proxy: dotProxy, owner: optionalString, intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()})]); export const dotStakingIntent = z.object({stakingProxy: z.string(), addToStake: optionalBoolean.optional(), addProxy: optionalBoolean.optional(), intentType: z.literal("stake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional(), amount: amount}); export const dotUnstakingIntent = z.object({stakingProxy: z.string(), stopStaking: optionalBoolean.optional(), intentType: z.literal("unstake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional(), amount: amount}); export const dotWithdrawStakeIntent = z.object({intentType: z.literal("claim"), amount: z.object({symbol: z.string(), value: z.string()}).optional(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}); export const fillNonceIntent = z.object({intentType: z.literal("fillNonce"), nonce: z.union([z.string(), z.number()]), senderAddress: z.string().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional()}); export const stakeClaimRewardsIntent = z.object({intentType: z.literal("stakeClaimRewards"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const feeAddressTransferIntent = z.object({intentType: z.literal("feeAddressTransfer"), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const iotaFeeOptions = z.object({gasLimit: z.number()}); export const iotaConsolidateIntent = z.object({intentType: z.literal("consolidate"), receiveAddress: z.string(), senderAddressIndex: optionalNumber.optional(), consolidateId: optionalString.optional(), recipients: z.array(z.object({tokenData: tokenData.optional(), address: address, amount: amount, data: optionalString.optional()})).optional(), keepAlive: optionalBoolean.optional(), nonce: z.union([z.string(), z.number()]).optional(), feeOptions: iotaFeeOptions, lockedAmount: optionalString, sequenceId: optionalString.optional(), comment: optionalString.optional()}); export const iotaPaymentIntent = z.union([z.object({unspents: optionalStringArray, intentType: z.literal("payment"), sequenceId: z.string().optional(), comment: z.string().optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), feeOptions: iotaFeeOptions, lockedAmount: optionalString}), z.object({unspents: optionalStringArray, intentType: z.literal("payment"), sequenceId: z.string().optional(), comment: z.string().optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean(), feeOptions: iotaFeeOptions, lockedAmount: optionalString})]); export const nearStakeIntent = z.object({recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), intentType: z.literal("stake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const nearUnstakeIntent = z.object({recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), intentType: z.literal("unstake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const nearWithdrawIntent = z.object({recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), intentType: z.literal("claim"), amount: z.object({symbol: z.string(), value: z.string()}).optional(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const polyxCreateAccountIntent = z.object({memo: optionalString.optional(), index: optionalNumber.optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})).optional(), intentType: z.literal("createAccount"), name: optionalString.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}); export const polyxPreApproveAssetIntent = z.object({intentType: z.literal("enableToken"), enableTokens: z.array(z.object({name: z.string(), address: optionalString.optional()})), memo: optionalString.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}); export const polyxStakeIntent = z.object({intentType: z.literal("stake"), addToStake: optionalBoolean.optional(), validators: z.array(z.string()).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}); export const polyxSwitchValidatorIntent = z.object({intentType: z.literal("switchValidator"), validators: z.array(z.string()), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}); export const polyxUnstakeIntent = z.object({intentType: z.literal("unstake"), stopStaking: optionalBoolean.optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}); export const polyxWithdrawIntent = z.object({intentType: z.literal("claim"), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}); export const solAuthorizeIntent = z.object({intentType: z.literal("authorize"), transactionMessage: z.string(), stakeAccount: z.string(), oldWithdrawPublicKey: z.string(), newWithdrawPublicKey: z.string(), lockupPublicKey: z.string(), nonceAccount: z.string(), nonceAuthority: z.string(), blockhash: z.string(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), memo: optionalString}); export const solClaimIntent = z.object({stakingAddress: z.string(), intentType: z.literal("claim"), amount: z.object({symbol: z.string(), value: z.string()}), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), memo: optionalString}); export const solCloseAssociatedTokenAccountRecipients = z.array(z.object({address: address, amount: amount, data: optionalString.optional()})); export const solCloseAssociatedTokenAccountIntent = z.object({intentType: z.literal("closeAssociatedTokenAccount"), recipients: solCloseAssociatedTokenAccountRecipients, sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), memo: optionalString}); export const solConsolidateIntent = z.object({intentType: z.literal("consolidate"), receiveAddress: z.string(), senderAddressIndex: optionalNumber.optional(), consolidateId: optionalString.optional(), recipients: z.array(z.object({tokenData: tokenData.optional(), address: address, amount: amount, data: optionalString.optional()})).optional(), keepAlive: optionalBoolean.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const solCreateAssociatedTokenAccountIntent = z.object({intentType: z.literal("enableToken"), enableTokens: z.array(z.object({name: z.string(), address: optionalString.optional()})), configureAccount: optionalBoolean.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), memo: optionalString}); export const solCustomTxIntent = z.object({intentType: z.literal("customTx"), solInstructions: z.array(z.object({programId: z.string(), keys: z.array(z.object({pubkey: z.string(), isSigner: z.boolean(), isWritable: z.boolean()})), data: z.string()})), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), memo: optionalString}); export const solDeactivateIntent = z.object({intentType: z.literal("deactivate"), stakingAddresses: optionalStringArray.optional(), stakingAddress: optionalString.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), memo: optionalString}); export const solDelegateIntent = z.object({intentType: z.literal("delegate"), validatorAddress: z.string(), stakingAddresses: optionalStringArray.optional(), stakingAddress: optionalString.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), memo: optionalString}); export const solGoUnstakeIntent = z.object({goStakingRequestId: optionalString.optional(), intentType: z.literal("goUnstake"), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), memo: optionalString}); export const solPaymentIntent = z.union([z.object({intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), memo: optionalString, version: z.union([z.literal(0), z.literal(1)]).optional()}), z.object({intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean(), memo: optionalString, version: z.union([z.literal(0), z.literal(1)]).optional()})]); export const solStakeIntent = z.object({validatorAddress: z.string(), isMarinade: z.boolean().optional(), stakingType: z.enum(["NATIVE", "MARINADE", "JITO"]).optional(), intentType: z.literal("stake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), memo: optionalString, amount: amount}); export const solUnstakeIntent = z.object({stakingAddress: z.string(), amount: z.object({symbol: z.string(), value: z.string()}).optional(), remainingStakingAmount: z.object({symbol: z.string(), value: z.string()}).optional(), isMarinade: z.boolean().optional(), stakingType: z.enum(["NATIVE", "MARINADE", "JITO"]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})).optional(), intentType: z.literal("unstake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), memo: optionalString}); export const solVersionedTransactionData = z.object({versionedInstructions: z.array(z.object({programIdIndex: z.number(), accountKeyIndexes: z.array(z.number()), data: z.string()})), addressLookupTables: z.array(z.object({accountKey: z.string(), writableIndexes: z.array(z.number()), readonlyIndexes: z.array(z.number())})), staticAccountKeys: z.array(z.string()), messageHeader: z.object({numRequiredSignatures: z.number(), numReadonlySignedAccounts: z.number(), numReadonlyUnsignedAccounts: z.number()}), recentBlockhash: z.string().optional(), version: z.union([z.literal(0), z.literal(1)]).optional()}); export const solVersionedCustomTxIntent = z.object({intentType: z.literal("customTx"), solVersionedTransactionData: solVersionedTransactionData, sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), memo: optionalString}); export const substrateConsolidateIntent = z.object({intentType: z.literal("consolidate"), receiveAddress: z.string(), senderAddressIndex: optionalNumber.optional(), consolidateId: optionalString.optional(), recipients: z.array(z.object({tokenData: tokenData.optional(), address: address, amount: amount, data: optionalString.optional()})).optional(), keepAlive: optionalBoolean.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const substratePaymentIntent = z.union([z.object({memo: optionalString.optional(), intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}), z.object({memo: optionalString.optional(), intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()})]); export const suiFeeOptions = z.object({gasLimit: z.number()}); export const suiConsolidateIntent = z.object({intentType: z.literal("consolidate"), receiveAddress: z.string(), senderAddressIndex: optionalNumber.optional(), consolidateId: optionalString.optional(), recipients: z.array(z.object({tokenData: tokenData.optional(), address: address, amount: amount, data: optionalString.optional()})).optional(), keepAlive: optionalBoolean.optional(), nonce: z.union([z.string(), z.number()]).optional(), feeOptions: suiFeeOptions, lockedAmount: optionalString, sequenceId: optionalString.optional(), comment: optionalString.optional()}); export const suiCustomTxIntent = z.object({intentType: z.literal("customTx"), rawTx: z.string(), sequenceId: z.string().optional(), comment: z.string().optional(), nonce: z.union([z.string(), z.number()]).optional(), feeOptions: suiFeeOptions, lockedAmount: optionalString}); export const suiGoUnstakeIntent = z.object({intentType: z.literal("goUnstake"), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), sequenceId: z.string().optional(), comment: z.string().optional(), nonce: z.union([z.string(), z.number()]).optional(), goStakingRequestId: z.string(), feeOptions: suiFeeOptions, lockedAmount: optionalString}); export const suiPaymentIntent = z.union([z.object({intentType: z.literal("payment"), sequenceId: z.string().optional(), comment: z.string().optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), feeOptions: suiFeeOptions, lockedAmount: optionalString}), z.object({intentType: z.literal("payment"), sequenceId: z.string().optional(), comment: z.string().optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean(), feeOptions: suiFeeOptions, lockedAmount: optionalString})]); export const suiStakingIntent = z.object({validatorAddress: optionalString.optional(), amount: z.object({symbol: z.string(), value: z.string()}).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})).optional(), intentType: z.literal("stake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const suiUnstakingIntent = z.object({stakedSuiObjectId: z.string(), amount: z.object({symbol: z.string(), value: z.string()}).optional(), intentType: z.literal("claim"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const taoClaimRootIntent = z.object({intentType: z.literal("stakeClaimRewards"), hotkey: z.string(), netuid: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}); export const taoStakeIntent = z.object({amountStaked: z.string(), intentType: z.literal("stake"), stakingRequestId: z.string(), source: z.enum(["MANUAL", "AUTO_STAKE", "EXTERNAL"]).optional(), sequenceId: z.string().optional(), comment: z.string().optional(), nonce: z.union([z.string(), z.number()]).optional(), hotkey: z.string(), netuid: z.string(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}); export const taoSwitchValidatorIntent = z.object({intentType: z.literal("switchValidator"), originHotkey: z.string(), destinationHotkey: z.string(), originNetuid: z.string(), destinationNetuid: z.string(), alphaAmount: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}); export const taoTransferStakeIntent = z.object({intentType: z.literal("transferStake"), originColdkey: optionalString, destinationColdkey: z.string(), hotkey: z.string(), originNetuid: z.string(), destinationNetuid: z.string(), alphaAmount: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}); export const taoUnstakeIntent = z.object({amountUnstaked: z.string(), intentType: z.literal("claim"), amount: z.object({symbol: z.string(), value: z.string()}).optional(), stakingRequestId: z.string(), source: z.enum(["MANUAL", "AUTO_STAKE", "EXTERNAL"]).optional(), sequenceId: z.string().optional(), comment: z.string().optional(), nonce: z.union([z.string(), z.number()]).optional(), hotkey: z.string(), netuid: z.string(), fee: z.object({amount: z.union([z.string(), z.number()]), formula: z.enum(["fixed", "feeRate", "perKB", "custom"]).optional(), type: z.enum(["base", "max", "tip"]).optional(), unit: z.enum(["baseUnit", "cpu", "ram"]).optional()}).optional()}); export const tonConsolidateIntent = z.object({intentType: z.literal("consolidate"), receiveAddress: z.string(), senderAddressIndex: optionalNumber.optional(), consolidateId: optionalString.optional(), recipients: z.array(z.object({tokenData: tokenData.optional(), address: address, amount: amount, data: optionalString.optional()})).optional(), keepAlive: optionalBoolean.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const tonStakingType = z.enum(["SINGLE_NOMINATOR", "MULTI_NOMINATOR", "TON_WHALES"]); export const tonDelegateIntent = z.object({intentType: z.literal("delegate"), validatorAddress: z.string(), useSingleNominator: z.boolean(), ownerAddress: optionalString.optional(), tonStakingType: tonStakingType.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const tonMultiNominatorDelegateIntent = z.object({intentType: z.literal("delegate"), validatorAddress: z.string(), tonStakingType: z.literal("MULTI_NOMINATOR"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const tonMultiNominatorUndelegateIntent = z.object({intentType: z.literal("undelegate"), validatorAddress: z.string(), tonStakingType: z.literal("MULTI_NOMINATOR"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const tonPaymentIntent = z.union([z.object({memo: optionalString.optional(), intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()}))}), z.object({memo: optionalString.optional(), intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean()})]); export const tonSingleNominatorDelegateIntent = z.object({intentType: z.literal("delegate"), validatorAddress: z.string(), ownerAddress: z.string(), tonStakingType: z.literal("SINGLE_NOMINATOR"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const tonSingleNominatorUndelegateIntent = z.object({intentType: z.literal("undelegate"), validatorAddress: z.string(), tonStakingType: z.literal("SINGLE_NOMINATOR"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const tonUndelegateIntent = z.object({intentType: z.literal("undelegate"), validatorAddress: z.string(), useSingleNominator: z.boolean(), singleNominatorAmount: amount, tonStakingType: tonStakingType.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const tonWhalesDelegateIntent = z.object({intentType: z.literal("delegate"), validatorAddress: z.string(), tonStakingType: z.literal("TON_WHALES"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const tonWhalesUndelegateIntent = z.object({intentType: z.literal("undelegate"), validatorAddress: z.string(), withdrawalAmount: amount, tonStakingType: z.literal("TON_WHALES"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const walletRecoveryIntent = z.object({intentType: z.literal("walletRecovery"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const walrusStakingIntent = z.object({sharedStakingObjectId: z.string(), validatorAddress: optionalString.optional(), amount: z.object({symbol: z.string(), value: z.string()}).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})).optional(), intentType: z.literal("stake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const walrusUndelegateIntent = z.object({intentType: z.literal("undelegate"), stakedSuiObjectId: z.string(), sharedStakingObjectId: z.string(), amount: z.object({symbol: z.string(), value: z.string()}).optional(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const walrusWithdrawIntent = z.object({sharedStakingObjectId: z.string(), stakedSuiObjectId: z.string(), amount: z.object({symbol: z.string(), value: z.string()}).optional(), intentType: z.literal("claim"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const parsedTx = z.object({inputs: z.array(z.object({valueString: z.string(), _id: z.string().optional(), address: z.string().optional(), chain: z.number().optional(), derivationIndex: z.number().optional(), index: z.number().optional(), value: z.union([z.number(), z.number()]).optional()})), minerFee: z.union([z.string(), z.number()]), outputs: z.array(z.object({valueString: z.string(), address: z.string().optional(), change: z.boolean().optional(), coinName: z.string().optional(), data: z.string().optional(), isPayGo: z.boolean().optional(), value: z.union([z.number(), z.number()]).optional(), wallet: z.string().optional(), walletV1: z.string().optional(), baseAddress: z.string().optional(), enterprise: z.string().optional()})), spendAmount: z.union([z.string(), z.number()]), gasPrice: z.number().optional(), hasUnvalidatedData: z.boolean().optional(), payGoFee: z.union([z.string(), z.number()]).optional(), spendAmounts: z.array(z.record(z.string(), z.unknown())).optional(), type: z.string().optional()}); export const signatureShareTypeCodec = z.enum(["user", "backup", "bitgo"]); export const transactionRequestId = z.string(); export const walletIdString1 = z.string(); export const transactionRequestState = z.enum(["pendingApproval", "canceled", "rejected", "initialized", "pendingDelivery", "delivered", "pendingUserSignature", "pendingUserCommitment", "pendingUserRShare", "pendingUserGShare", "readyToSend", "signed", "failed"]); export const transactionRequestApiVersion = z.enum(["lite", "full"]); export const walletTypes = z.enum(["backing", "cold", "custodial", "custodialPaired", "hot", "advanced", "trading"]); export const enterpriseIdString = z.string(); export const txChannelType = z.literal("defi"); export const txChannelSource = z.enum(["internal", "external"]); export const txChannelConnector = z.enum(["narval", "walletconnect"]); export const txChannelProtocol = z.enum(["morpho", "aave", "concrete"]); export const txChannelDefiAction = z.enum(["approve", "deposit", "withdraw"]); export const txChannel = z.object({type: txChannelType, source: txChannelSource, connector: txChannelConnector.optional(), protocol: txChannelProtocol.optional(), defiAction: txChannelDefiAction.optional(), vaultId: z.string().optional(), clientId: z.string().optional(), walletConnectRequestId: z.string().optional()}); export const transactionRequestLite = z.object({intent: z.union([z.object({intentType: intentType, sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}), adaConsolidateIntent, adaPaymentIntent, adaStakeClaimRewardsIntent, adaRealFiStakeIntent, adaStakeIntent, adaRealFiUnstakeIntent, adaUnstakeIntent, adaRealFiCancelIntent, adaRealFiClaimTimelockIntent, adaVoteDelegationIntent, aptCustomTxIntent, cantonAllocationAllocateIntent, cantonAllocationOfferWithdrawnIntent, cantonAllocationRejectIntent, cantonAllocationRequestIntent, cantonCosignDelegationAcceptIntent, cantonCosignDelegationProposalIntent, cantonCommandIntent, cantonBroadridgeStandingDelegationIntent, cantonPaymentIntent, cantonTransferAcceptIntent, cantonTransferAcknowledgeIntent, cantonTransferOfferWithdrawnIntent, cantonTransferRejectIntent, cantonEndInvestorOnboardingOfferIntent, cantonEndInvestorOnboardingAcceptIntent, cantonEndInvestorOnboardingRejectIntent, cantonParticipantOnboardingRequestIntent, cantonParticipantAllowListAddIntent, cantonParticipantAllowListRemoveIntent, dotConsolidateIntent, dotCreateAccountIntent, dotPaymentIntent, dotStakingIntent, dotUnstakingIntent, dotWithdrawStakeIntent, fillNonceIntent, stakeClaimRewardsIntent, feeAddressTransferIntent, iotaConsolidateIntent, iotaPaymentIntent, nearStakeIntent, nearUnstakeIntent, nearWithdrawIntent, polyxCreateAccountIntent, polyxPreApproveAssetIntent, polyxStakeIntent, polyxSwitchValidatorIntent, polyxUnstakeIntent, polyxWithdrawIntent, solAuthorizeIntent, solClaimIntent, solCloseAssociatedTokenAccountIntent, solConsolidateIntent, solCreateAssociatedTokenAccountIntent, solCustomTxIntent, solDeactivateIntent, solDelegateIntent, solGoUnstakeIntent, solPaymentIntent, solStakeIntent, solUnstakeIntent, solVersionedCustomTxIntent, substrateConsolidateIntent, substratePaymentIntent, suiConsolidateIntent, suiCustomTxIntent, suiGoUnstakeIntent, suiPaymentIntent, suiStakingIntent, suiUnstakingIntent, taoClaimRootIntent, taoStakeIntent, taoSwitchValidatorIntent, taoTransferStakeIntent, taoUnstakeIntent, tonConsolidateIntent, tonDelegateIntent, tonMultiNominatorDelegateIntent, tonMultiNominatorUndelegateIntent, tonPaymentIntent, tonSingleNominatorDelegateIntent, tonSingleNominatorUndelegateIntent, tonUndelegateIntent, tonWhalesDelegateIntent, tonWhalesUndelegateIntent, walletRecoveryIntent, walrusStakingIntent, walrusUndelegateIntent, walrusWithdrawIntent, z.object({intentType: intentType, sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()})]).optional(), unsignedTxs: z.array(z.object({parsedTx: parsedTx, serializedTxHex: z.string(), signableHex: z.string(), derivationPath: z.string().optional(), coinSpecific: z.object({nonceAddress: z.string().optional(), stakingAddress: z.string().optional(), signature: z.string().optional()}).and(z.record(z.string(), z.unknown())).optional(), feeInfo: z.object({fee: z.union([z.string(), z.number()]), feeString: z.string()}).optional()})).optional(), signatureShares: z.array(z.object({vssProof: z.string().optional(), privateShareProof: z.string().optional(), publicShare: z.string().optional(), from: signatureShareTypeCodec, to: signatureShareTypeCodec, share: z.string()})).optional(), commitmentShares: z.array(z.object({type: z.literal("commitment"), from: signatureShareTypeCodec, to: signatureShareTypeCodec, share: z.string()})).optional(), txHashes: z.array(z.string()).optional(), txRequestId: transactionRequestId, walletId: walletIdString1, version: z.number(), state: transactionRequestState, date: z.string(), createdDate: z.string(), userId: z.string(), initiatedBy: z.string(), updatedBy: z.string(), intents: z.array(z.unknown()), latest: z.boolean(), apiVersion: transactionRequestApiVersion.optional(), idempotencyKey: z.string().optional(), walletType: walletTypes.optional(), enterpriseId: enterpriseIdString.optional(), organizationId: z.string().optional(), pendingApprovalId: z.string().optional(), policiesChecked: z.boolean().optional(), isCanceled: z.boolean().optional(), cancelReason: z.string().optional(), initiatedByDAppClient: z.boolean().optional(), txChannel: txChannel.optional()}); export const atomPaymentIntent = z.union([z.object({memo: optionalString, intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()}))}), z.object({memo: optionalString, intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean()})]); export const atomStakeIntent = z.object({validatorAddress: z.string(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})).optional(), intentType: z.literal("stake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const atomUnstakeIntent = z.object({validatorAddress: z.string(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})).optional(), intentType: z.literal("unstake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const babyCreateBtcDelegationIntent = z.object({intentType: z.literal("createBtcDelegation"), createBtcDelegationBytes: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const babyWithdrawRewardIntent = z.object({intentType: z.literal("stakeClaimRewards"), type: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const bscDelegateIntent = z.object({intentType: z.literal("delegate"), validatorAddress: z.string(), relayerFee: z.string().optional(), delegateVotePower: z.string().optional(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const bscUnDelegateIntent = z.object({intentType: z.literal("undelegate"), validatorAddress: z.string(), relayerFee: z.string().optional(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const bscWithdrawUndelegateIntent = z.object({validatorAddress: z.string(), requestNumber: z.number(), intentType: z.literal("claim"), amount: z.object({symbol: z.string(), value: z.string()}).optional(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const claimIntent = z.object({intentType: z.literal("claim"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cosmosContractCallIntent = z.object({intentType: z.literal("contractCall"), contract: z.string(), msgHex: z.string(), feeGranter: z.string().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cosmosPaymentIntent = z.union([z.object({memo: optionalString, intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()}))}), z.object({memo: optionalString, intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean()})]); export const cosmosStakeClaimRewardsIntent = z.object({intentType: z.literal("stakeClaimRewards"), validatorAddress: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const cosmosStakeIntent = z.object({intentType: z.literal("delegate"), validatorAddress: z.string(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})).optional(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const cosmosSwitchValidatorIntent = z.object({intentType: z.literal("switchValidator"), validatorAddress: z.string(), destValidatorAddress: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const cosmosUnstakeIntent = z.object({intentType: z.literal("undelegate"), validatorAddress: z.string(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})).optional(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const defiApproveIntent = z.object({intentType: z.literal("defi-approve"), vaultId: z.string(), amount: z.string(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const defiDepositIntent = z.object({intentType: z.literal("defi-deposit"), vaultId: z.string(), amount: z.string(), operationId: z.string(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const defiRedeemIntent = z.object({intentType: z.literal("defi-redeem"), protocol: z.string(), amount: z.string(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const defiWithdrawIntent = z.object({intentType: z.literal("defi-withdraw"), vaultId: z.string(), shareTokenAmount: z.string(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const wrapNativeIntent = z.object({intentType: z.literal("wrap-native"), vaultId: z.string(), amount: z.string(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const unwrapNativeIntent = z.object({intentType: z.literal("unwrap-native"), vaultId: z.string(), amount: z.string(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const wrapApproveIntent = z.object({intentType: z.literal("wrapApprove"), amount: z.string(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), tokenName: z.string()}); export const delegateIntent = z.object({intentType: z.literal("delegate"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const feeOption = z.object({unit: z.enum(["baseUnit", "cpu", "ram"]).optional(), formula: z.enum(["fixed", "feeRate", "perKB", "custom", "perVKB"]).optional(), feeType: z.enum(["base", "max", "tip"]).optional(), gasLimit: optionalNumber.optional(), gasPrice: optionalNumber.optional()}); export const eIP1559FeeOptions = z.object({gasLimit: optionalNumber.optional(), maxFeePerGas: optionalNumber.optional(), maxPriorityFeePerGas: optionalNumber.optional()}); export const ethAccelerationIntent = z.object({feeOptions: z.union([feeOption, eIP1559FeeOptions]), intentType: z.literal("acceleration"), txid: z.string(), senderAddress: z.string().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), hopParams: z.object({gasPriceMax: optionalNumber, paymentId: optionalString, userReqSig: optionalString}).optional(), receiveAddress: optionalString.optional(), senderAddressIndex: optionalNumber.optional()}); export const ethConsolidateIntent = z.object({intentType: z.literal("consolidate"), receiveAddress: z.string(), senderAddressIndex: z.number().optional(), consolidateId: optionalString.optional(), recipients: z.array(z.object({tokenData: tokenData.optional(), address: address, amount: amount, data: optionalString.optional()})).optional(), keepAlive: optionalBoolean.optional(), nonce: z.union([z.string(), z.number()]).optional(), feeOptions: z.union([feeOption, eIP1559FeeOptions]).optional(), hopParams: z.object({gasPriceMax: optionalNumber, paymentId: optionalString, userReqSig: optionalString}).optional()}); export const ethConsolidateTokenIntent = z.object({intentType: z.literal("consolidateToken"), recipients: z.array(z.object({tokenData: tokenData.optional(), address: address, amount: amount, data: optionalString.optional()})), consolidateId: optionalString, keepAlive: optionalBoolean, sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), feeOptions: z.union([feeOption, eIP1559FeeOptions]).optional(), hopParams: z.object({gasPriceMax: optionalNumber, paymentId: optionalString, userReqSig: optionalString}).optional(), receiveAddress: optionalString.optional(), senderAddressIndex: optionalNumber.optional()}); export const ethFillNonceIntent = z.object({intentType: z.literal("fillNonce"), nonce: z.union([z.string(), z.number()]), senderAddress: z.string().optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), feeOptions: z.union([feeOption, eIP1559FeeOptions]).optional(), receiveAddress: optionalString.optional(), senderAddressIndex: optionalNumber.optional()}); export const ethPaymentIntent = z.union([z.object({selfSend: optionalBoolean, intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), feeOptions: z.union([feeOption, eIP1559FeeOptions]).optional(), hopParams: z.object({gasPriceMax: optionalNumber, paymentId: optionalString, userReqSig: optionalString}).optional(), receiveAddress: optionalString.optional(), senderAddressIndex: optionalNumber.optional()}), z.object({selfSend: optionalBoolean, intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean(), feeOptions: z.union([feeOption, eIP1559FeeOptions]).optional(), hopParams: z.object({gasPriceMax: optionalNumber, paymentId: optionalString, userReqSig: optionalString}).optional(), receiveAddress: optionalString.optional(), senderAddressIndex: optionalNumber.optional()})]); export const ethStakingIntent = z.object({pubkey: z.string(), withdrawalCredentials: z.string(), signature: z.string(), depositDataRoot: z.string(), intentType: z.literal("stake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), feeOptions: z.union([feeOption, eIP1559FeeOptions]).optional(), hopParams: z.object({gasPriceMax: optionalNumber, paymentId: optionalString, userReqSig: optionalString}).optional(), receiveAddress: optionalString.optional(), senderAddressIndex: optionalNumber.optional()}); export const ethTransferTokenIntent = z.object({intentType: z.literal("transferToken"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({tokenData: tokenData.optional(), address: address, amount: amount, data: optionalString.optional()})), feeOptions: z.union([feeOption, eIP1559FeeOptions]).optional(), hopParams: z.object({gasPriceMax: optionalNumber, paymentId: optionalString, userReqSig: optionalString}).optional(), receiveAddress: optionalString.optional(), senderAddressIndex: optionalNumber.optional()}); export const undelegateIntent = z.object({intentType: z.literal("undelegate"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const hbarUpdateAccountIntent = z.object({stakedNodeId: optionalNumber.optional(), stakedAccountId: optionalString.optional(), declineStakingReward: optionalBoolean.optional(), intentType: z.literal("updateAccount"), options: optionalUnknownObject.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const hypeevmBridgeFundsIntent = z.object({feeOptions: z.union([feeOption, eIP1559FeeOptions]).optional(), intentType: z.literal("bridgeFunds"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const hypeevmSpotTransferIntent = z.object({intentType: z.literal("spotTransfer"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()}))}); export const hypeevmEnableBridgingIntent = z.object({intentType: z.literal("enableBridging"), asset: z.string(), network: optionalString.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const icpPaymentIntent = z.union([z.object({memo: optionalString.optional(), intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()}))}), z.object({memo: optionalString.optional(), intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean()})]); export const lightningPaymentRequest = z.object({invoice: z.string(), amountMsat: z.string().optional(), feeLimitMsat: z.string().optional(), feeLimitRatio: z.number().optional()}); export const lightningOnchainRequest = z.object({recipients: z.array(z.object({amountSat: z.string(), address: z.string()})), satsPerVbyte: z.string().optional(), numBlocks: z.number().optional()}); export const lightningPaymentIntent = z.union([z.object({intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), signedRequest: lightningPaymentRequest, signature: z.string()}), z.object({intentType: z.literal("payment"), onchainRequest: lightningOnchainRequest, sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()})]); export const mmiSignMessageIntent = z.object({custodianMessageId: z.string(), intentType: z.literal("signMessage"), messageRaw: z.string(), messageEncoded: optionalString, messageStandardType: optionalString, signerAddress: optionalString, sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const mmiSignTransactionIntent = z.union([z.object({custodianTransactionId: z.string(), intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()}))}), z.object({custodianTransactionId: z.string(), intentType: z.literal("payment"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})), isTestTransaction: z.boolean()})]); export const tokenApprovalIntent = z.object({intentType: z.literal("tokenApproval"), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), tokenName: z.string()}); export const trxClaimRewardsIntent = z.object({intentType: z.literal("stakeClaimRewards"), ownerAddress: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const trxDelegateResourceIntent = z.object({intentType: z.literal("delegateResource"), ownerAddress: z.string(), receiverAddress: z.string(), resource: z.enum(["BANDWIDTH", "ENERGY"]), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const trxFreezeIntent = z.object({intentType: z.literal("stake"), validatorAddress: z.string(), ownerAddress: z.string(), resource: z.enum(["BANDWIDTH", "ENERGY"]), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const trxUndelegateResourceIntent = z.object({intentType: z.literal("undelegateResource"), ownerAddress: z.string(), receiverAddress: z.string(), resource: z.enum(["BANDWIDTH", "ENERGY"]), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const trxUnfreezeIntent = z.object({intentType: z.literal("unstake"), ownerAddress: z.string(), resource: z.enum(["BANDWIDTH", "ENERGY"]), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const trxVoteIntent = z.object({intentType: z.literal("voteDelegation"), validatorAddress: z.string(), ownerAddress: z.string(), votes: z.array(z.object({vote_address: z.string(), vote_count: z.string()})), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const trxWithdrawExpireUnfreezeIntent = z.object({intentType: z.literal("claim"), ownerAddress: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const vetStakingIntent = z.object({stakingContractAddress: z.string().min(1), levelId: z.string().min(1), intentType: z.literal("stake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const vetDelegateIntent = z.object({tokenId: z.string().min(1), stakingContractAddress: z.string().min(1), validatorAddress: z.string().min(1), intentType: z.literal("delegate"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const vetExitDelegationIntent = z.object({intentType: z.literal("undelegate"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), tokenId: z.string().min(1), stakingContractAddress: z.string().min(1)}); export const vetBurnNFTIntent = z.object({intentType: z.literal("unstake"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), tokenId: z.string().min(1), stakingContractAddress: z.string().min(1)}); export const vetStakeClaimRewardsIntent = z.object({tokenId: z.string().min(1), stakingContractAddress: z.string().min(1), intentType: z.literal("stakeClaimRewards"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const vetValidatorRegistrationIntent = z.object({validatorAddress: z.string().min(1), stakingPeriod: z.union([z.literal(60480), z.literal(129600), z.literal(259200)]), stakingContractAddress: z.string().min(1), intentType: z.literal("validatorRegistration"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const vetIncreaseStakeIntent = z.object({intentType: z.literal("increaseStake"), validatorAddress: z.string().min(1), stakingContractAddress: z.string().min(1), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const vetDecreaseStakeIntent = z.object({intentType: z.literal("decreaseStake"), validatorAddress: z.string().min(1), stakingContractAddress: z.string().min(1), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const vetSignalExitIntent = z.object({intentType: z.literal("signalExit"), validatorAddress: z.string().min(1), stakingContractAddress: z.string().min(1), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const vetWithdrawStakeIntent = z.object({intentType: z.literal("withdrawStake"), validatorAddress: z.string().min(1), stakingContractAddress: z.string().min(1), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const baseStakeIntentWithCalldata = z.object({calldata: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), intentType: intentType, sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const stakeWithCallDataIntent = z.object({intentType: z.literal("stakeWithCallData"), calldata: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const switchValidatorWithCallDataIntent = z.object({intentType: z.literal("switchValidatorWithCallData"), calldata: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const coreDaoDelegateIntent = z.object({intentType: z.literal("delegate"), validatorAddress: z.string(), calldata: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const coreDaoUndelegateIntent = z.object({intentType: z.literal("undelegate"), validatorAddress: z.string(), calldata: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const coreDaoClaimIntent = z.object({intentType: z.literal("stakeClaimRewards"), calldata: z.string(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const ethLikeStakeIntent = z.object({intentType: intentType, recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})).optional(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const beraDelegateIntent = z.object({intentType: z.literal("delegate"), recipients: z.array(z.object({address: address, amount: amount, data: optionalString.optional()})).optional(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const xdcUploadKycIntent = z.object({intentType: z.literal("contractCall"), ipfsHash: z.string().min(1), validatorContractAddress: z.string().min(1), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const xdcProposeIntent = z.object({candidateAddress: z.string().min(1), validatorContractAddress: z.string().min(1), intentType: z.literal("validatorRegistration"), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const xdcResignIntent = z.object({intentType: z.literal("undelegate"), candidateAddress: z.string().min(1), validatorContractAddress: z.string().min(1), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const xdcWithdrawIntent = z.object({intentType: z.literal("unstake"), blockNumber: z.string().min(1), index: z.string().min(1), validatorContractAddress: z.string().min(1), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional(), amount: amount}); export const stacksRegisterForBondIntent = z.object({intentType: z.literal("stacksRegisterForBond"), stxWalletId: z.string(), stxAddress: z.string(), bondIndex: z.union([z.string(), z.number()]), signerManager: z.string(), amountUstx: z.union([z.string(), z.number()]), contractName: z.string(), functionName: z.string(), functionArgs: z.array(z.string()), signerCalldata: optionalString.optional(), stakingRequestId: z.string(), source: stakingRequestSource.optional(), sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()}); export const transactionState = z.enum(["initialized", "pendingSignature", "eddsaPendingCommitment", "eddsaPendingRShare", "eddsaPendingGShare", "ecdsaMPCv2Round1", "ecdsaMPCv2Round2", "ecdsaMPCv2Round3", "eddsaMPCv2Round1", "eddsaMPCv2Round2", "eddsaMPCv2Round3", "redpallasRerandRound1", "redpallasRerandRound2", "redpallasMPCv2Round1", "redpallasMPCv2Round2", "redpallasMPCv2Round3", "readyToCombineShares", "signed", "held", "delivered", "invalidSignature", "rejected"]); export const unsignedTransaction = z.object({parsedTx: parsedTx, serializedTxHex: z.string(), signableHex: z.string(), derivationPath: z.string().optional(), coinSpecific: z.object({nonceAddress: z.string().optional(), stakingAddress: z.string().optional(), signature: z.string().optional()}).and(z.record(z.string(), z.unknown())).optional(), feeInfo: z.object({fee: z.union([z.string(), z.number()]), feeString: z.string()}).optional()}); export const shareType = z.enum(["encryptedSignerShare", "encryptedRShare"]); export const transactionRequestFull = z.object({intent: z.union([atomPaymentIntent, atomStakeIntent, atomUnstakeIntent, babyCreateBtcDelegationIntent, babyWithdrawRewardIntent, bscDelegateIntent, bscUnDelegateIntent, bscWithdrawUndelegateIntent, claimIntent, cosmosContractCallIntent, cosmosPaymentIntent, cosmosStakeClaimRewardsIntent, cosmosStakeIntent, cosmosSwitchValidatorIntent, cosmosUnstakeIntent, defiApproveIntent, defiDepositIntent, defiRedeemIntent, defiWithdrawIntent, wrapNativeIntent, unwrapNativeIntent, wrapApproveIntent, delegateIntent, ethAccelerationIntent, ethConsolidateIntent, ethConsolidateTokenIntent, ethFillNonceIntent, ethPaymentIntent, ethStakingIntent, ethTransferTokenIntent, undelegateIntent, hbarUpdateAccountIntent, hypeevmBridgeFundsIntent, hypeevmSpotTransferIntent, hypeevmEnableBridgingIntent, icpPaymentIntent, lightningPaymentIntent, mmiSignMessageIntent, mmiSignTransactionIntent, tokenApprovalIntent, trxClaimRewardsIntent, trxDelegateResourceIntent, trxFreezeIntent, trxUndelegateResourceIntent, trxUnfreezeIntent, trxVoteIntent, trxWithdrawExpireUnfreezeIntent, vetStakingIntent, vetDelegateIntent, vetExitDelegationIntent, vetBurnNFTIntent, vetStakeClaimRewardsIntent, vetValidatorRegistrationIntent, vetIncreaseStakeIntent, vetDecreaseStakeIntent, vetSignalExitIntent, vetWithdrawStakeIntent, baseStakeIntentWithCalldata, stakeWithCallDataIntent, switchValidatorWithCallDataIntent, coreDaoDelegateIntent, coreDaoUndelegateIntent, coreDaoClaimIntent, ethLikeStakeIntent, beraDelegateIntent, xdcUploadKycIntent, xdcProposeIntent, xdcResignIntent, xdcWithdrawIntent, stacksRegisterForBondIntent, adaConsolidateIntent, adaPaymentIntent, adaStakeClaimRewardsIntent, adaRealFiStakeIntent, adaStakeIntent, adaRealFiUnstakeIntent, adaUnstakeIntent, adaRealFiCancelIntent, adaRealFiClaimTimelockIntent, adaVoteDelegationIntent, aptCustomTxIntent, cantonAllocationAllocateIntent, cantonAllocationOfferWithdrawnIntent, cantonAllocationRejectIntent, cantonAllocationRequestIntent, cantonCosignDelegationAcceptIntent, cantonCosignDelegationProposalIntent, cantonCommandIntent, cantonBroadridgeStandingDelegationIntent, cantonPaymentIntent, cantonTransferAcceptIntent, cantonTransferAcknowledgeIntent, cantonTransferOfferWithdrawnIntent, cantonTransferRejectIntent, cantonEndInvestorOnboardingOfferIntent, cantonEndInvestorOnboardingAcceptIntent, cantonEndInvestorOnboardingRejectIntent, cantonParticipantOnboardingRequestIntent, cantonParticipantAllowListAddIntent, cantonParticipantAllowListRemoveIntent, dotConsolidateIntent, dotCreateAccountIntent, dotPaymentIntent, dotStakingIntent, dotUnstakingIntent, dotWithdrawStakeIntent, fillNonceIntent, stakeClaimRewardsIntent, feeAddressTransferIntent, iotaConsolidateIntent, iotaPaymentIntent, nearStakeIntent, nearUnstakeIntent, nearWithdrawIntent, polyxCreateAccountIntent, polyxPreApproveAssetIntent, polyxStakeIntent, polyxSwitchValidatorIntent, polyxUnstakeIntent, polyxWithdrawIntent, solAuthorizeIntent, solClaimIntent, solCloseAssociatedTokenAccountIntent, solConsolidateIntent, solCreateAssociatedTokenAccountIntent, solCustomTxIntent, solDeactivateIntent, solDelegateIntent, solGoUnstakeIntent, solPaymentIntent, solStakeIntent, solUnstakeIntent, solVersionedCustomTxIntent, substrateConsolidateIntent, substratePaymentIntent, suiConsolidateIntent, suiCustomTxIntent, suiGoUnstakeIntent, suiPaymentIntent, suiStakingIntent, suiUnstakingIntent, taoClaimRootIntent, taoStakeIntent, taoSwitchValidatorIntent, taoTransferStakeIntent, taoUnstakeIntent, tonConsolidateIntent, tonDelegateIntent, tonMultiNominatorDelegateIntent, tonMultiNominatorUndelegateIntent, tonPaymentIntent, tonSingleNominatorDelegateIntent, tonSingleNominatorUndelegateIntent, tonUndelegateIntent, tonWhalesDelegateIntent, tonWhalesUndelegateIntent, walletRecoveryIntent, walrusStakingIntent, walrusUndelegateIntent, walrusWithdrawIntent, z.object({intentType: intentType, sequenceId: optionalString.optional(), comment: optionalString.optional(), nonce: z.union([z.string(), z.number()]).optional()})]).optional(), transactions: z.array(z.object({state: transactionState, unsignedTx: unsignedTransaction, signatureShares: z.array(z.object({vssProof: z.string().optional(), privateShareProof: z.string().optional(), publicShare: z.string().optional(), from: signatureShareTypeCodec, to: signatureShareTypeCodec, share: z.string()})).optional(), commitmentShares: z.array(z.object({type: z.literal("commitment"), from: signatureShareTypeCodec, to: signatureShareTypeCodec, share: z.string()})).optional(), txHash: z.string().optional(), updatedDate: z.string().optional(), createdDate: z.string().optional()})).optional(), messages: z.array(z.object({state: transactionState, messageRaw: z.string(), signatureShares: z.array(z.object({vssProof: z.string().optional(), privateShareProof: z.string().optional(), publicShare: z.string().optional(), from: signatureShareTypeCodec, to: signatureShareTypeCodec, share: z.string()})).optional(), privateSignatureShares: z.array(z.object({vssProof: z.string().optional(), privateShareProof: z.string().optional(), publicShare: z.string().optional(), from: signatureShareTypeCodec, to: signatureShareTypeCodec, share: z.string()})).optional(), commitmentShares: z.array(z.object({type: z.literal("commitment"), from: signatureShareTypeCodec, to: signatureShareTypeCodec, share: z.string()})).optional(), encryptedShares: z.array(z.object({type: shareType, from: signatureShareTypeCodec, to: signatureShareTypeCodec, share: z.string()})).optional(), txHash: z.string().optional(), updatedDate: z.string().optional(), createdDate: z.string().optional(), messageEncoded: z.string().optional(), messageBroadcastable: z.string().optional(), messageStandardType: z.string().optional(), derivationPath: z.string().optional(), combineSigShare: z.string().optional(), coin: z.string().optional(), bitgoPaillierChallenge: z.unknown(), encryptedChallenge: z.string().optional()})).optional(), txRequestId: transactionRequestId, walletId: walletIdString1, version: z.number(), state: transactionRequestState, date: z.string(), createdDate: z.string(), userId: z.string(), initiatedBy: z.string(), updatedBy: z.string(), intents: z.array(z.unknown()), latest: z.boolean(), apiVersion: transactionRequestApiVersion.optional(), idempotencyKey: z.string().optional(), walletType: walletTypes.optional(), enterpriseId: enterpriseIdString.optional(), organizationId: z.string().optional(), pendingApprovalId: z.string().optional(), policiesChecked: z.boolean().optional(), isCanceled: z.boolean().optional(), cancelReason: z.string().optional(), initiatedByDAppClient: z.boolean().optional(), txChannel: txChannel.optional()}); export const actionType = z.enum(["deny", "getApproval", "getEnterpriseUserApproval", "getUserRoleApproval", "getAnyApproval", "getFinalApproval", "getVideoApproval", "getIdVerification", "verifyWalletRebalance", "getCustodianApproval", "getCustodialSignature", "triggerWebhookNotification", "performLivenessVerification", "recommendBackingWalletRouting", "getManualTrustReview", "getManualSupportReview", "getSupportManagerApproval", "getVideoApprovalFromSupport", "evaluateFraudRisk"]); export const policyRuleAction = z.object({type: actionType, userIds: z.array(z.string()).optional()}); export const coinString = z.string(); export const addressListRuleUpdateCondition = z.object({add: z.string().optional(), remove: z.string().optional(), metaData: z.record(z.string(), z.record(z.string(), z.unknown())).optional()}); export const advancedListType = z.enum(["address", "enterpriseId", "walletId", "organizationId", "linkAccountId"]); export const advancedListRuleEntry = z.object({item: z.string(), metaData: z.record(z.string(), z.unknown()).optional(), type: advancedListType, verificationState: z.enum(["unverified", "verified"]).optional(), verifiedBy: z.enum(["unverifiedRule", "fastWithdrawal", "caasWaiverThreshold"]).optional(), verifiedAt: z.string().optional()}); export const advancedListRuleUpdateCondition = z.object({add: advancedListRuleEntry.optional(), remove: z.object({item: z.string(), type: z.enum(["address", "enterpriseId", "walletId", "organizationId", "linkAccountId"]).optional()}).optional(), verifyItems: z.object({items: z.array(z.string())}).optional()}); export const txUsdThresholdRuleCondition = z.object({lowerBound: z.string(), upperBound: z.string().optional()}); export const limitRuleCondition = z.object({amountString: z.string(), timeWindow: z.number().gte(0).lte(2678400), groupTags: z.array(z.string()).optional(), startDate: z.string().optional()}); export const webhookRuleCondition = z.object({url: z.string()}); export const policyRuleUpdateCondition = z.union([addressListRuleUpdateCondition, advancedListRuleUpdateCondition, txUsdThresholdRuleCondition, limitRuleCondition, webhookRuleCondition]); export const apiRuleType = z.enum(["advancedWhitelist", "coinAddressWhitelist", "coinAddressBlacklist"]); export const anchorType = z.enum(["policyRuleId", "settlementId", "crossChainRecoveryId"]); export const changeType = z.enum(["create", "update", "delete", "unlock", "bulkUnlock", "bulkArchive", "duplicate"]); export const caasOrganizationInviteInviterInfo = z.object({id: z.string(), email: z.string(), fullName: z.string()}); export const walletTagsAction = z.enum(["add", "remove"]); export const pendingApprovalInfo = z.object({type: pendingApprovalType, userChangeRequest: z.object({action: z.string().optional(), permissions: z.array(z.string()).optional(), userChanged: z.string().optional()}).optional(), transactionRequest: z.object({buildParams: z.unknown(), coinSpecific: z.unknown(), comment: z.string().nullable().optional(), fee: z.unknown(), isUnsigned: z.boolean().nullable().optional(), policyUniqueId: z.unknown(), recipients: z.array(z.object({address: z.string().max(250).optional(), amount: z.string().optional(), data: z.string().optional()})).optional(), requestedAmount: z.unknown(), sourceWallet: z.unknown(), triggeredPolicy: z.unknown(), validTransaction: z.string().optional(), validTransactionHash: z.string().optional(), verificationItems: z.array(z.string()).nullable().optional(), verificationRuleId: z.string().nullable().optional(), videoApprovers: z.array(z.unknown()).optional()}).optional(), transactionRequestFull: z.object({intent: paymentIntent.optional(), policyUniqueId: z.string().optional(), txRequest: z.union([transactionRequestLite, transactionRequestFull]).optional(), txRequestId: transactionRequestId, verificationItems: z.array(z.string()).optional(), verificationRuleId: z.string().optional(), videoApprovers: z.array(z.string()).optional(), walletRebalanceEventId: z.string().optional()}).optional(), policyRuleRequest: z.object({action: z.string().optional(), batch: z.object({groupId: z.string(), index: z.number(), total: z.number()}).optional(), update: z.object({action: policyRuleAction.optional(), coin: coinString.optional(), condition: policyRuleUpdateCondition.optional(), generatePolicy: z.boolean().optional(), id: z.string().optional(), lockDate: z.string().optional(), type: apiRuleType.optional(), walletId: z.string().optional()}).optional(), updates: z.array(z.object({action: policyRuleAction.optional(), coin: coinString.optional(), condition: policyRuleUpdateCondition.optional(), generatePolicy: z.boolean().optional(), id: z.string().optional(), lockDate: z.string().optional(), type: apiRuleType.optional(), walletId: z.string().optional()})).optional()}).optional(), updateApprovalsRequiredRequest: z.object({requestedApprovalsRequired: z.number().optional()}).optional(), updateEnterpriseRequest: z.object({action: z.enum(["add", "update", "remove"]).optional(), email: z.string().optional(), isVideoIdUser: z.boolean().optional(), permissions: z.enum(["admin", "auditor", "wallet.create"]).optional(), userId: z.string().optional()}).optional(), updateOrganizationRequest: z.object({action: z.enum(["add", "update", "remove"]).optional(), email: z.string().optional(), inviterInfo: z.object({email: z.string(), fullName: z.string(), id: z.string()}).optional(), role: z.enum(["serviceUser", "admin", "member", "customer"]).optional(), userId: z.string().optional()}).optional(), genericRequest: z.object({anchors: z.array(z.object({anchorType: anchorType, key: z.string(), value: z.string()})).optional(), changeType: changeType.optional(), currentId: z.string().optional(), description: z.string().optional(), metadata: z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.array(z.string())])).optional(), proposedId: z.string().optional(), resources: z.array(z.object({currentId: z.string().optional(), metadata: z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.array(z.string())])).optional(), proposedId: z.string().optional()})).optional(), resourceType: z.string().optional()}).optional(), enterpriseInviteRequest: z.object({action: z.enum(["add", "update", "remove"]).optional(), email: z.string().optional(), enterpriseInfo: z.object({id: z.string(), invitedBy: caasOrganizationInviteInviterInfo, name: z.string(), requiredVerificationStep: z.string(), userKycState: z.string().optional()}).optional(), isVideoIdUser: z.boolean().optional(), permissions: z.enum(["admin", "auditor", "wallet.create"]).optional(), userId: z.string().optional()}).optional(), updateWalletSettingRequest: z.object({userKeySigningRequired: z.object({newValue: z.boolean(), oldValue: z.boolean()}).optional()}).optional(), updateWalletTagsRequest: z.object({action: walletTagsAction, customTags: z.array(z.string())}).optional(), updateEnterpriseSettingRequest: z.object({withdrawalAttestationRequired: z.object({newValue: z.boolean(), oldValue: z.boolean()}).optional()}).optional()}); export const pendingApprovalStatePending = z.enum(["pending", "awaitingSignature", "pendingFinalApproval", "pendingCustodianApproval", "pendingVideoApproval", "pendingIdVerification", "pendingLivenessVerification", "pendingManualTrustReview", "pendingManualSupportReview", "pendingVideoApprovalFromSupport", "pendingFraudRiskEvaluation"]); export const pendingApprovalStateResolved = z.enum(["approved", "processing", "rejected", "cancelled"]); export const pendingApprovalStateTrust = z.enum(["pendingVideoApproval", "pendingIdVerification", "awaitingSignature", "pendingCustodianApproval", "pendingManualTrustReview", "pendingFraudRiskEvaluation"]); export const pendingApprovalStateProtected = z.enum(["pendingVideoApproval", "pendingIdVerification", "awaitingSignature", "pendingCustodianApproval", "pendingManualTrustReview", "pendingFraudRiskEvaluation"]); export const pendingApprovalState = z.union([pendingApprovalStatePending, pendingApprovalStateResolved, pendingApprovalStateTrust, pendingApprovalStateProtected]); export const addressString = z.string().max(250); export const livenessVerificationParameter = z.enum(["transactionInitiator", "walletAdmins", "videoIdUsers", "enterpriseAdmin"]); export const custodialWalletSubType = z.enum(["custodialCold", "custodialHot", "lightningCustody"]); export const policyActionParameters = z.object({minRequired: z.union([z.string().min(1), z.number()]).optional(), userIds: z.array(z.string().min(1)).optional(), initiatorIsAllowedToApprove: z.boolean().optional(), webhookURL: z.string().min(1).optional(), livenessCheckUser: livenessVerificationParameter.optional(), isFallback: z.boolean().optional(), walletSubtype: custodialWalletSubType.optional(), userRoleIds: z.array(z.string().min(1)).optional()}); export const evaluatedPolicyActionStatus = z.enum(["SKIPPED", "PENDING", "NOT_NEEDED", "COMPLETE", "CANCELLED", "FAILED", "AUTO_CANCELLED"]); export const inquiryStatus = z.enum(["completed", "failed"]); export const inquirySubType = z.enum(["withdrawalLivenessCheck", "managePolicyLivenessCheck", "govIdSelfie"]); export const inquiryType = z.literal("livenessCheck"); export const pendingApproval = z.object({id: z.string(), coin: z.string().optional(), wallet: z.string().optional(), walletType: z.string().optional(), walletSubType: z.string().optional(), wallets: z.array(z.string()).optional(), enterprise: z.string().optional(), organization: z.string().optional(), safeId: z.string().optional(), organizationName: z.string().optional(), bitgoOrg: z.string().optional(), creator: z.string(), createDate: z.string(), approvedDate: z.string().optional(), updatedAt: z.string().optional(), keyCurve: z.enum(["secp256k1", "ed25519", "bls12_381", "redpallas"]).optional(), info: pendingApprovalInfo, state: pendingApprovalState, scope: z.enum(["enterprise", "wallet", "organization", "global", "safe"]), userIds: z.array(z.string()).optional(), approvalsRequired: z.number().gte(1).optional(), walletLabel: z.string().optional(), addressLabels: z.array(z.object({address: addressString, label: z.string(), walletLabel: z.string().optional()})).optional(), resolvers: z.array(z.object({autoApproved: z.boolean().optional(), date: z.string().optional(), resolutionAction: z.enum(["approve", "reject", "skip", "fail"]).optional(), resolutionMemo: z.string().optional(), resolutionType: pendingApprovalStatePending, user: z.string().optional(), videoApprover: z.string().optional(), videoException: z.string().optional(), videoLink: z.string().optional()})).optional(), approvers: z.array(z.string()).optional(), singleRunResults: z.array(z.object({ruleId: z.string().optional(), triggered: z.boolean().optional()})).optional(), txRequestId: z.string().optional(), videoId: z.object({date: z.string().optional(), user: z.string().optional(), videoApprover: z.string().optional(), videoException: z.string().optional(), videoLink: z.string().optional()}).optional(), version: z.number().optional(), policyEvaluationId: z.string().optional(), kytCounterpartyScreeningId: z.string().optional(), actions: z.array(z.object({approvers: z.array(z.string()).optional(), excludedApprovers: z.array(z.string()).optional(), id: z.string(), name: z.string(), operator: z.enum(["AND", "OR"]).optional(), parameters: policyActionParameters, resolvers: z.array(z.object({autoApproved: z.boolean().optional(), date: z.string().optional(), resolutionAction: z.enum(["approve", "reject", "skip", "fail"]).optional(), resolutionMemo: z.string().optional(), resolutionType: pendingApprovalStatePending, user: z.string().optional(), videoApprover: z.string().optional(), videoException: z.string().optional(), videoLink: z.string().optional()})).optional(), status: evaluatedPolicyActionStatus})).optional(), resolutionOrder: z.array(z.object({actions: z.array(z.string().min(1))})).optional(), useLegacyPolicyEngine: z.boolean().optional(), videoCallId: z.string().optional(), lastUpdated: z.string().optional(), freeze: z.object({actions: z.array(z.object({reason: z.string().optional(), state: z.enum(["frozen", "unFrozen"]).optional(), time: z.string().optional(), userId: z.string().optional(), username: z.string().optional()})).optional(), state: z.enum(["frozen", "unFrozen"]).optional()}).optional(), memo: z.array(z.object({text: z.string(), time: z.string(), userId: z.string(), username: z.string()})).optional(), associatedInquiries: z.array(z.object({inquiryId: z.string(), inquiryStatus: inquiryStatus, inquirySubType: inquirySubType, inquiryType: inquiryType})).optional(), securityControlEvents: z.array(z.object({control: z.string().optional(), date: z.string(), evaluatedControls: z.array(z.object({control: z.string(), message: z.string().optional(), result: z.enum(["allowed", "blocked"])})).optional(), ip: z.string().optional(), message: z.string().optional(), result: z.enum(["allowed", "blocked"]), user: z.string()})).optional()}); export const trustlineInitiateAcceptedResponse = z.object({pendingApproval: pendingApproval, error: z.string().optional(), triggeredPolicy: z.string().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 }; /** * Initiate a trustline transaction * * POST /api/v2/{coin}/wallet/{walletId}/trustline/initiate */ export const createApiApiV2CoinWalletWalletIdTrustlineInitiate = async (args: CreateApiApiV2CoinWalletWalletIdTrustlineInitiateArgs, options: CreateApiApiV2CoinWalletWalletIdTrustlineInitiateOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/api/v2/${encodeURIComponent(String(args.coin))}/wallet/${encodeURIComponent(String(args.walletId))}/trustline/initiate${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(trustlineInitiateAcceptedResponse, await res.json()) };