@revibase/core 0.7.0 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/generated/accounts/domainConfig.ts","../src/generated/accounts/globalCounter.ts","../src/generated/types/accountState.ts","../src/generated/types/additionalMetadata.ts","../src/generated/types/addMemberArgs.ts","../src/generated/types/compiledInstruction.ts","../src/generated/types/compressedOnlyExtension.ts","../src/generated/types/compressedProof.ts","../src/generated/types/compressedTokenArgs.ts","../src/generated/types/compressibleExtension.ts","../src/generated/types/compressionInfo.ts","../src/generated/types/configAction.ts","../src/generated/types/editMemberArgs.ts","../src/generated/types/expectedSigner.ts","../src/generated/types/extensionStruct.ts","../src/generated/types/member.ts","../src/generated/types/memberKey.ts","../src/generated/types/packedMerkleContext.ts","../src/generated/types/pausableAccountExtension.ts","../src/generated/types/permanentDelegateAccountExtension.ts","../src/generated/types/permissions.ts","../src/generated/types/proofArgs.ts","../src/generated/types/removeMemberArgs.ts","../src/generated/types/rentConfig.ts","../src/generated/types/secp256r1Pubkey.ts","../src/generated/types/secp256r1VerifyArgs.ts","../src/generated/types/secp256r1VerifyArgsWithDomainConfigIndex.ts","../src/generated/types/settingsIndexWithDelegateInfo.ts","../src/generated/types/splInterfacePdaArgs.ts","../src/generated/types/tokenMetadata.ts","../src/generated/types/transactionMessageAddressTableLookup.ts","../src/generated/types/transactionSyncSigners.ts","../src/generated/types/transferFeeAccountExtension.ts","../src/generated/types/transferHookAccountExtension.ts","../src/generated/types/transports.ts","../src/generated/types/userRole.ts","../src/generated/accounts/settings.ts","../src/generated/accounts/transactionBuffer.ts","../src/generated/accounts/user.ts","../src/hooked/index.ts","../src/generated/shared/index.ts","../src/generated/instructions/changeConfig.ts","../src/generated/instructions/createDomainConfig.ts","../src/generated/instructions/createDomainUserAccount.ts","../src/generated/instructions/createGlobalCounter.ts","../src/generated/instructions/createUserAccount.ts","../src/generated/instructions/createWallet.ts","../src/generated/instructions/disableDomainConfig.ts","../src/generated/instructions/editDomainConfig.ts","../src/generated/instructions/editTransactionManagerUrl.ts","../src/generated/instructions/editUserDelegate.ts","../src/generated/instructions/nativeTransferIntent.ts","../src/generated/instructions/tokenTransferIntent.ts","../src/generated/instructions/transactionBufferClose.ts","../src/generated/instructions/transactionBufferCreate.ts","../src/generated/instructions/transactionBufferExecute.ts","../src/generated/instructions/transactionBufferExtend.ts","../src/generated/instructions/transactionBufferVote.ts","../src/generated/instructions/transactionExecute.ts","../src/generated/instructions/transactionExecuteSync.ts","../src/generated/programs/multiWallet.ts","../src/generated/errors/multiWallet.ts","../src/errors/index.ts","../src/types/keyType.ts","../src/types/passkeys.ts","../src/types/permissions.ts","../src/types/secp256r1.ts","../src/types/vaultTransactionMessage.ts","../src/utils/validation.ts","../src/utils/addresses/index.ts","../src/utils/initialize.ts","../src/utils/passkeys/internal.ts","../src/utils/passkeys/helper.ts","../src/utils/transaction/helper.ts","../src/constants.ts","../src/utils/transaction/internal.ts","../src/utils/user/helper.ts","../src/instructions/admin/createDomainConfig.ts","../src/instructions/admin/createGlobalCounter.ts","../src/instructions/admin/disableDomainConfig.ts","../src/utils/transactionMessage/internal.ts","../src/instructions/secp256r1Verify.ts","../src/instructions/executeTransaction.ts","../src/utils/transaction/packedAccounts.ts","../src/instructions/executeTransactionSync.ts","../src/instructions/intents/nativeTransferIntent.ts","../src/utils/retry.ts","../src/instructions/intents/tokenTransferIntent.ts","../src/instructions/shared/changeConfig.ts","../src/instructions/shared/createDomainUserAccounts.ts","../src/instructions/shared/createUserAccounts.ts","../src/instructions/shared/createWallet.ts","../src/instructions/shared/editDomainConfig.ts","../src/instructions/shared/editTransactionManagerUrl.ts","../src/instructions/shared/editUserDelegate.ts","../src/instructions/transactionBuffers/closeTransactionBuffer.ts","../src/instructions/transactionBuffers/createTransactionBuffer.ts","../src/instructions/transactionBuffers/executeTransactionBuffer.ts","../src/instructions/transactionBuffers/extendTransactionBuffer.ts","../src/instructions/transactionBuffers/voteTransactionBuffer.ts","../src/transaction/prepareChangeConfig.ts","../src/transaction/prepareTransactionBundle.ts","../src/utils/transactionMessage/compiled-keys.ts","../src/utils/transactionMessage/message-account-keys.ts","../src/utils/transactionMessage/compileToWrappedMessageV0.ts","../src/transaction/prepareTransactionMessage.ts","../src/transaction/prepareTransactionSync.ts"],"names":["DOMAIN_CONFIG_DISCRIMINATOR","getDomainConfigDiscriminatorBytes","fixEncoderSize","getBytesEncoder","getDomainConfigEncoder","transformEncoder","getStructEncoder","getAddressEncoder","getU8Encoder","value","getDomainConfigDecoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getAddressDecoder","getU8Decoder","getDomainConfigCodec","combineCodec","decodeDomainConfig","encodedAccount","decodeAccount","fetchDomainConfig","rpc","address","config","maybeAccount","fetchMaybeDomainConfig","assertAccountExists","fetchEncodedAccount","fetchAllDomainConfig","addresses","maybeAccounts","fetchAllMaybeDomainConfig","assertAccountsExist","fetchEncodedAccounts","getDomainConfigSize","GLOBAL_COUNTER_DISCRIMINATOR","getGlobalCounterDiscriminatorBytes","getGlobalCounterEncoder","getU128Encoder","getGlobalCounterDecoder","getU128Decoder","getGlobalCounterCodec","decodeGlobalCounter","fetchGlobalCounter","fetchMaybeGlobalCounter","fetchAllGlobalCounter","fetchAllMaybeGlobalCounter","getGlobalCounterSize","AccountState","getAccountStateEncoder","getEnumEncoder","getAccountStateDecoder","getEnumDecoder","getAccountStateCodec","getAdditionalMetadataEncoder","addEncoderSizePrefix","getU32Encoder","getAdditionalMetadataDecoder","addDecoderSizePrefix","getU32Decoder","getAdditionalMetadataCodec","getAddMemberArgsEncoder","getMemberKeyEncoder","getPermissionsEncoder","getAddMemberArgsDecoder","getMemberKeyDecoder","getPermissionsDecoder","getAddMemberArgsCodec","getCompiledInstructionEncoder","getCompiledInstructionDecoder","getCompiledInstructionCodec","getCompressedOnlyExtensionEncoder","getU64Encoder","getCompressedOnlyExtensionDecoder","getU64Decoder","getCompressedOnlyExtensionCodec","getCompressedProofEncoder","getCompressedProofDecoder","getCompressedProofCodec","getCompressedTokenArgsEncoder","getU16Encoder","getPackedMerkleContextEncoder","getOptionEncoder","getArrayEncoder","getExtensionStructEncoder","getCompressedTokenArgsDecoder","getU16Decoder","getPackedMerkleContextDecoder","getOptionDecoder","getArrayDecoder","getExtensionStructDecoder","getCompressedTokenArgsCodec","getCompressibleExtensionEncoder","getBooleanEncoder","getCompressionInfoEncoder","getCompressibleExtensionDecoder","getBooleanDecoder","getCompressionInfoDecoder","getCompressibleExtensionCodec","getRentConfigEncoder","getRentConfigDecoder","getCompressionInfoCodec","getConfigActionEncoder","getDiscriminatedUnionEncoder","getTupleEncoder","getEditMemberArgsEncoder","getRemoveMemberArgsEncoder","getConfigActionDecoder","getDiscriminatedUnionDecoder","getTupleDecoder","getEditMemberArgsDecoder","getRemoveMemberArgsDecoder","getConfigActionCodec","configAction","kind","data","isConfigAction","getEditMemberArgsCodec","getExpectedSignerEncoder","getExpectedSignerDecoder","getExpectedSignerCodec","getUnitEncoder","getTokenMetadataEncoder","getPausableAccountExtensionEncoder","getPermanentDelegateAccountExtensionEncoder","getTransferFeeAccountExtensionEncoder","getTransferHookAccountExtensionEncoder","getUnitDecoder","getTokenMetadataDecoder","getPausableAccountExtensionDecoder","getPermanentDelegateAccountExtensionDecoder","getTransferFeeAccountExtensionDecoder","getTransferHookAccountExtensionDecoder","getExtensionStructCodec","extensionStruct","isExtensionStruct","getMemberEncoder","getMemberDecoder","getMemberCodec","getMemberKeyCodec","getPackedMerkleContextCodec","getPausableAccountExtensionCodec","getPermanentDelegateAccountExtensionCodec","getPermissionsCodec","getProofArgsEncoder","getProofArgsDecoder","getProofArgsCodec","getRemoveMemberArgsCodec","getRentConfigCodec","getSecp256r1PubkeyEncoder","getSecp256r1PubkeyDecoder","getSecp256r1PubkeyCodec","getSecp256r1VerifyArgsEncoder","getSecp256r1VerifyArgsDecoder","getSecp256r1VerifyArgsCodec","getSecp256r1VerifyArgsWithDomainConfigIndexEncoder","getSecp256r1VerifyArgsWithDomainConfigIndexDecoder","getSecp256r1VerifyArgsWithDomainConfigIndexCodec","getSettingsIndexWithDelegateInfoEncoder","getSettingsIndexWithDelegateInfoDecoder","getSettingsIndexWithDelegateInfoCodec","getSplInterfacePdaArgsEncoder","getSplInterfacePdaArgsDecoder","getSplInterfacePdaArgsCodec","getTokenMetadataCodec","getTransactionMessageAddressTableLookupEncoder","getTransactionMessageAddressTableLookupDecoder","getTransactionMessageAddressTableLookupCodec","getTransactionSyncSignersEncoder","getTransactionSyncSignersDecoder","getTransactionSyncSignersCodec","transactionSyncSigners","isTransactionSyncSigners","getTransferFeeAccountExtensionCodec","getTransferHookAccountExtensionCodec","Transports","getTransportsEncoder","getTransportsDecoder","getTransportsCodec","UserRole","getUserRoleEncoder","getUserRoleDecoder","getUserRoleCodec","SETTINGS_DISCRIMINATOR","getSettingsDiscriminatorBytes","getSettingsEncoder","getSettingsDecoder","getSettingsCodec","decodeSettings","fetchSettings","fetchMaybeSettings","fetchAllSettings","fetchAllMaybeSettings","TRANSACTION_BUFFER_DISCRIMINATOR","getTransactionBufferDiscriminatorBytes","getTransactionBufferEncoder","getTransactionBufferDecoder","getTransactionBufferCodec","decodeTransactionBuffer","fetchTransactionBuffer","fetchMaybeTransactionBuffer","fetchAllTransactionBuffer","fetchAllMaybeTransactionBuffer","USER_DISCRIMINATOR","getUserDiscriminatorBytes","getUserEncoder","getUtf8Encoder","getUserDecoder","getUtf8Decoder","getUserCodec","decodeUser","fetchUser","fetchMaybeUser","fetchAllUser","fetchAllMaybeUser","parseRemainingAccounts","args","remainingAccounts","x","expectSome","expectAddress","getAccountMetaFactory","programAddress","optionalAccountStrategy","account","AccountRole","writableRole","isTransactionSigner","upgradeRoleToSigner","kitIsTransactionSigner","CHANGE_CONFIG_DISCRIMINATOR","getChangeConfigDiscriminatorBytes","getChangeConfigInstructionDataEncoder","getChangeConfigInstructionDataDecoder","getChangeConfigInstructionDataCodec","getChangeConfigInstruction","input","MULTI_WALLET_PROGRAM_ADDRESS","accounts","resolverScope","getAccountMeta","parseChangeConfigInstruction","instruction","accountIndex","getNextAccount","accountMeta","getNextOptionalAccount","CREATE_DOMAIN_CONFIG_DISCRIMINATOR","getCreateDomainConfigDiscriminatorBytes","getCreateDomainConfigInstructionDataEncoder","getCreateDomainConfigInstructionDataDecoder","getCreateDomainConfigInstructionDataCodec","getCreateDomainConfigInstructionAsync","getProgramDerivedAddress","getCreateDomainConfigInstruction","parseCreateDomainConfigInstruction","CREATE_DOMAIN_USER_ACCOUNT_DISCRIMINATOR","getCreateDomainUserAccountDiscriminatorBytes","getCreateDomainUserAccountInstructionDataEncoder","getCreateDomainUserAccountInstructionDataDecoder","getCreateDomainUserAccountInstructionDataCodec","getCreateDomainUserAccountInstruction","parseCreateDomainUserAccountInstruction","CREATE_GLOBAL_COUNTER_DISCRIMINATOR","getCreateGlobalCounterDiscriminatorBytes","getCreateGlobalCounterInstructionDataEncoder","getCreateGlobalCounterInstructionDataDecoder","getCreateGlobalCounterInstructionDataCodec","getCreateGlobalCounterInstructionAsync","getCreateGlobalCounterInstruction","parseCreateGlobalCounterInstruction","CREATE_USER_ACCOUNT_DISCRIMINATOR","getCreateUserAccountDiscriminatorBytes","getCreateUserAccountInstructionDataEncoder","getCreateUserAccountInstructionDataDecoder","getCreateUserAccountInstructionDataCodec","getCreateUserAccountInstructionAsync","getCreateUserAccountInstruction","parseCreateUserAccountInstruction","CREATE_WALLET_DISCRIMINATOR","getCreateWalletDiscriminatorBytes","getCreateWalletInstructionDataEncoder","getCreateWalletInstructionDataDecoder","getCreateWalletInstructionDataCodec","getCreateWalletInstructionAsync","getCreateWalletInstruction","parseCreateWalletInstruction","DISABLE_DOMAIN_CONFIG_DISCRIMINATOR","getDisableDomainConfigDiscriminatorBytes","getDisableDomainConfigInstructionDataEncoder","getDisableDomainConfigInstructionDataDecoder","getDisableDomainConfigInstructionDataCodec","getDisableDomainConfigInstruction","parseDisableDomainConfigInstruction","EDIT_DOMAIN_CONFIG_DISCRIMINATOR","getEditDomainConfigDiscriminatorBytes","getEditDomainConfigInstructionDataEncoder","getEditDomainConfigInstructionDataDecoder","getEditDomainConfigInstructionDataCodec","getEditDomainConfigInstruction","parseEditDomainConfigInstruction","EDIT_TRANSACTION_MANAGER_URL_DISCRIMINATOR","getEditTransactionManagerUrlDiscriminatorBytes","getEditTransactionManagerUrlInstructionDataEncoder","getEditTransactionManagerUrlInstructionDataDecoder","getEditTransactionManagerUrlInstructionDataCodec","getEditTransactionManagerUrlInstructionAsync","getEditTransactionManagerUrlInstruction","parseEditTransactionManagerUrlInstruction","EDIT_USER_DELEGATE_DISCRIMINATOR","getEditUserDelegateDiscriminatorBytes","getEditUserDelegateInstructionDataEncoder","getEditUserDelegateInstructionDataDecoder","getEditUserDelegateInstructionDataCodec","getEditUserDelegateInstruction","parseEditUserDelegateInstruction","NATIVE_TRANSFER_INTENT_DISCRIMINATOR","getNativeTransferIntentDiscriminatorBytes","getNativeTransferIntentInstructionDataEncoder","getNativeTransferIntentInstructionDataDecoder","getNativeTransferIntentInstructionDataCodec","getNativeTransferIntentInstructionAsync","getNativeTransferIntentInstruction","parseNativeTransferIntentInstruction","TOKEN_TRANSFER_INTENT_DISCRIMINATOR","getTokenTransferIntentDiscriminatorBytes","getTokenTransferIntentInstructionDataEncoder","getTokenTransferIntentInstructionDataDecoder","getTokenTransferIntentInstructionDataCodec","getTokenTransferIntentInstructionAsync","getTokenTransferIntentInstruction","parseTokenTransferIntentInstruction","TRANSACTION_BUFFER_CLOSE_DISCRIMINATOR","getTransactionBufferCloseDiscriminatorBytes","getTransactionBufferCloseInstructionDataEncoder","getTransactionBufferCloseInstructionDataDecoder","getTransactionBufferCloseInstructionDataCodec","getTransactionBufferCloseInstruction","parseTransactionBufferCloseInstruction","TRANSACTION_BUFFER_CREATE_DISCRIMINATOR","getTransactionBufferCreateDiscriminatorBytes","getTransactionBufferCreateInstructionDataEncoder","getTransactionBufferCreateInstructionDataDecoder","getTransactionBufferCreateInstructionDataCodec","getTransactionBufferCreateInstruction","parseTransactionBufferCreateInstruction","TRANSACTION_BUFFER_EXECUTE_DISCRIMINATOR","getTransactionBufferExecuteDiscriminatorBytes","getTransactionBufferExecuteInstructionDataEncoder","getTransactionBufferExecuteInstructionDataDecoder","getTransactionBufferExecuteInstructionDataCodec","getTransactionBufferExecuteInstruction","parseTransactionBufferExecuteInstruction","TRANSACTION_BUFFER_EXTEND_DISCRIMINATOR","getTransactionBufferExtendDiscriminatorBytes","getTransactionBufferExtendInstructionDataEncoder","getTransactionBufferExtendInstructionDataDecoder","getTransactionBufferExtendInstructionDataCodec","getTransactionBufferExtendInstruction","parseTransactionBufferExtendInstruction","TRANSACTION_BUFFER_VOTE_DISCRIMINATOR","getTransactionBufferVoteDiscriminatorBytes","getTransactionBufferVoteInstructionDataEncoder","getTransactionBufferVoteInstructionDataDecoder","getTransactionBufferVoteInstructionDataCodec","getTransactionBufferVoteInstruction","parseTransactionBufferVoteInstruction","TRANSACTION_EXECUTE_DISCRIMINATOR","getTransactionExecuteDiscriminatorBytes","getTransactionExecuteInstructionDataEncoder","getTransactionExecuteInstructionDataDecoder","getTransactionExecuteInstructionDataCodec","getTransactionExecuteInstruction","parseTransactionExecuteInstruction","TRANSACTION_EXECUTE_SYNC_DISCRIMINATOR","getTransactionExecuteSyncDiscriminatorBytes","getTransactionExecuteSyncInstructionDataEncoder","getTransactionExecuteSyncInstructionDataDecoder","getTransactionExecuteSyncInstructionDataCodec","getTransactionExecuteSyncInstruction","parseTransactionExecuteSyncInstruction","MultiWalletAccount","identifyMultiWalletAccount","containsBytes","MultiWalletInstruction","identifyMultiWalletInstruction","MULTI_WALLET_ERROR__INVALID_SECP256R1_VERIFY_ARG","MULTI_WALLET_ERROR__INVALID_SECP256R1_INSTRUCTION","MULTI_WALLET_ERROR__SIGNATURE_INDEX_OUT_OF_BOUNDS","MULTI_WALLET_ERROR__INVALID_SIGNATURE_OFFSETS","MULTI_WALLET_ERROR__INVALID_SECP256R1_PUBLIC_KEY","MULTI_WALLET_ERROR__MALFORMED_SIGNED_MESSAGE","MULTI_WALLET_ERROR__RP_ID_HASH_MISMATCH","MULTI_WALLET_ERROR__CLIENT_DATA_HASH_MISMATCH","MULTI_WALLET_ERROR__EXPECTED_MESSAGE_HASH_MISMATCH","MULTI_WALLET_ERROR__DURABLE_NONCE_DETECTED","MULTI_WALLET_ERROR__DUPLICATE_MEMBER","MULTI_WALLET_ERROR__PERMANENT_MEMBER","MULTI_WALLET_ERROR__ONLY_ONE_PERMANENT_MEMBER_ALLOWED","MULTI_WALLET_ERROR__INVALID_PERMANENT_MEMBER_CONFIG","MULTI_WALLET_ERROR__ONLY_ONE_TRANSACTION_MANAGER_ALLOWED","MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_PERMISSION","MULTI_WALLET_ERROR__EXPECTED_TRANSACTION_MANAGER_ROLE_MISMATCH","MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_CONFIG","MULTI_WALLET_ERROR__EXPECTED_ADMINISTRATOR_ROLE_MISMATCH","MULTI_WALLET_ERROR__INVALID_ADMINISTRATOR_CONFIG","MULTI_WALLET_ERROR__ONLY_ONE_ADMINISTRATOR_ALLOWED","MULTI_WALLET_ERROR__EMPTY_MEMBERS","MULTI_WALLET_ERROR__TOO_MANY_MEMBERS","MULTI_WALLET_ERROR__INVALID_THRESHOLD","MULTI_WALLET_ERROR__INVALID_TRANSACTION_MESSAGE","MULTI_WALLET_ERROR__INVALID_NUMBER_OF_ACCOUNTS","MULTI_WALLET_ERROR__INVALID_ACCOUNT","MULTI_WALLET_ERROR__INVALID_USER_ROLE","MULTI_WALLET_ERROR__INVALID_ARGUMENTS","MULTI_WALLET_ERROR__MISSING_ACCOUNT","MULTI_WALLET_ERROR__ALREADY_DELEGATED","MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_EXECUTE_PERMISSION","MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_INITIATE_PERMISSION","MULTI_WALLET_ERROR__INSUFFICIENT_SIGNERS_WITH_VOTE_PERMISSION","MULTI_WALLET_ERROR__INVALID_NON_DELEGATED_SIGNERS","MULTI_WALLET_ERROR__UNEXPECTED_SIGNER","MULTI_WALLET_ERROR__NO_SIGNER_FOUND","MULTI_WALLET_ERROR__UNAUTHORISED_TO_CLOSE_TRANSACTION_BUFFER","MULTI_WALLET_ERROR__INVALID_BUFFER","MULTI_WALLET_ERROR__FINAL_BUFFER_HASH_MISMATCH","MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_EXCEEDED","MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_MISMATCH","MULTI_WALLET_ERROR__TRANSACTION_HAS_EXPIRED","MULTI_WALLET_ERROR__TRANSACTION_NOT_APPROVED","MULTI_WALLET_ERROR__PROTECTED_ACCOUNT","MULTI_WALLET_ERROR__MAX_LENGTH_EXCEEDED","MULTI_WALLET_ERROR__MISSING_SYSVAR_SLOT_HISTORY","MULTI_WALLET_ERROR__INVALID_SYSVAR_DATA_FORMAT","MULTI_WALLET_ERROR__SLOT_NUMBER_NOT_FOUND","MULTI_WALLET_ERROR__INVALID_SLOT_NUMBER","MULTI_WALLET_ERROR__CREDENTIAL_ID_IS_MISSING","MULTI_WALLET_ERROR__TRANSPORTS_IS_MISSING","MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_DISABLED","MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_MISSING","MULTI_WALLET_ERROR__ORIGIN_INDEX_OUT_OF_BOUNDS","MULTI_WALLET_ERROR__HASH_COMPUTATION_FAILED","MULTI_WALLET_ERROR__INVALID_MEMBER_KEY_FORMAT","MULTI_WALLET_ERROR__MISSING_COMPRESSED_PROOF_ARGS","MULTI_WALLET_ERROR__MISSING_LIGHT_CPI_ACCOUNTS","MULTI_WALLET_ERROR__MEMBER_NOT_FOUND","MULTI_WALLET_ERROR__SETTINGS_KEY_MISMATCH","MULTI_WALLET_ERROR__PAYER_MISMATCH","MULTI_WALLET_ERROR__MISSING_COMPRESSED_TOKEN_ACCOUNT","MULTI_WALLET_ERROR__MISSING_SPL_INTERFACE_PDA","MULTI_WALLET_ERROR__MISSING_INSTRUCTIONS_SYSVAR","MULTI_WALLET_ERROR__LIGHT_CPI_ACCOUNT_ERROR","MULTI_WALLET_ERROR__INVALID_TOKEN_SOURCE_TYPE","MULTI_WALLET_ERROR__INVALID_ACCOUNT_INDEX","MULTI_WALLET_ERROR__DOMAIN_CONFIG_KEY_MISMATCH","MULTI_WALLET_ERROR__UNAUTHORIZED_ADMIN_ONLY","MULTI_WALLET_ERROR__INVALID_USER_TRANSACTION_MANAGER_CONFIG","MULTI_WALLET_ERROR__INVALID_USER_ED25519_CONFIG","MULTI_WALLET_ERROR__MISSING_DESTINATION_TOKEN_ACCOUNT","MULTI_WALLET_ERROR__MISSING_SETTINGS_ACCOUNT_FOR_DELEGATE","MULTI_WALLET_ERROR__MISSING_NEW_AUTHORITY","multiWalletErrorMessages","getMultiWalletErrorMessage","code","isMultiWalletError","error","transactionMessage","isProgramError","RevibaseError","message","cause","NotInitializedError","service","NotFoundError","resource","details","ValidationError","field","NetworkError","statusCode","url","RetryExhaustedError","operation","attempts","lastError","PermissionError","required","actual","KeyType","UserInfoSchema","z","DeviceProfileSchema","TransactionActionTypeSchema","TransactionPayloadSchema","arr","TransactionPayloadWithBase64MessageBytesSchema","StartMessageRequestSchema","StartTransactionRequestSchema","AuthenticationContextSchema","BaseResponseSchema","TransactionDetailsSchema","CompleteMessageRequestSchema","CompleteTransactionRequestSchema","Permission","Permissions","_Permissions","mask","permissions","permission","SECP256R1_PUBLIC_KEY_LENGTH","Secp256r1Key","getBase58Encoder","key","getBase58Decoder","buf","SignedSecp256r1Key","signed","getStructCodec","getU8Codec","getArrayCodec","getMessageAddressTableLookupCodec","getAddressCodec","vaultTransactionMessageCodec","vaultTransactionMessageSerialize","compiledMessage","ix","vaultTransactionMessageDeserialize","transactionMessageBytes","vaultTransactionMessage","requireInRange","min","max","name","getUserAddress","user","userAddress","getDomainConfigAddress","rpIdHash","rpId","sha256","domainConfig","getGlobalCounterAddress","globalCounter","getTransactionBufferAddress","settings","creator","buffer_index","transactionBuffer","getWalletAddressFromSettings","getSettingsFromIndex","index","getWalletAddressFromIndex","getLightCpiSigner","lightCpiSigner","state","getSolanaRpcEndpoint","getLightProtocolRpc","getSolanaRpc","getSendAndConfirmTransaction","initialize","rpcEndpoint","proverEndpoint","compressionApiEndpoint","createRpc","sendAndConfirmTransaction","createSolanaClient","uint8ArrayToHex","bytes","b","hexToUint8Array","hex","i","extractAdditionalFields","clientData","knownKeys","remaining","serialized","parseOrigins","originsBytes","numOrigins","origins","cursor","decoder","strLen","strBytes","origin","convertSignatureDERtoRS","signature","totalLength","offset","lengthBytes","rLen","rStart","r","sLen","sStart","rStripped","sStripped","rPad","HALF_ORDER","p256","sBig","sHex","sPad","getSecp256r1Message","authResponse","clientDataJSON","base64URLStringToBuffer","authenticatorData","clientDataHash","convertPubkeyCoseToCompressed","publicKey","decodedPublicKey","decodeCBOR","uncompressedPublicKey","convertPubkeyCompressedToCose","coseDecodedPublicKey","encodeCBOR","getSignedSecp256r1Key","payload","authData","clientDataJsonParsed","truncatedClientDataJson","convertedSignature","getClientAndDeviceHash","clientOrigin","deviceJwk","nonce","getBase64Encoder","createClientAuthorizationStartRequestChallenge","canonicalize","createClientAuthorizationCompleteRequestChallenge","getSecp256r1MessageHash","createMessageChallenge","clientDeviceHash","createTransactionChallenge","slotHash","slotNumber","estimatedSlotHashExpiry","slotHashBytes","slotSysvarData","slotHashData","transactionMessageHash","challenge","getDeviceMessageHash","deviceProfile","bufferToBase64URLString","buffer","str","charCode","base64URLString","base64","padLength","padded","binary","getOriginIndex","convertJWKToBase64String","jwk","getBase64Decoder","convertBase64StringToJWK","retrieveTransactionManager","signer","settingsData","member","m","convertMemberKeyToString","hasInitiate","hasVote","hasExecute","transactionManager","toWebSocketUrl","httpUrl","u","openWebSocket","signal","resolve","reject","ws","onAbort","readWebSocketJsonEvents","onEvent","settled","cleanup","onMessage","onError","onClose","finish","fn","ev","parsed","event","e","createAbortError","err","sleep","ms","s","id","createTransactionManagerSigner","authResponses","onPendingApprovalsCallback","onPendingApprovalsSuccess","abortController","opts","controller","maxAttempts","retryDelayMs","transactions","wsUrl","getTransactionEncoder","signatures","sig","memberKey","serializeConfigActions","configActions","encodedActions","sum","a","serializedConfigActions","action","deserializeConfigActions","count","u32offset","out","JITO_TIP_ACCOUNTS","extractSecp256r1VerificationArgs","secp256r1PublicKey","verifyArgs","some","none","buildSignerAccounts","dedupSigners","packedAccounts","secp256r1VerifyInput","domainConfigIndex","convertPubkeyToMemberkey","pubkey","getPubkeyString","getDeduplicatedSigners","signers","hashSet","secp256r1Signers","addJitoTip","payer","tipAmount","tipAccount","getTransferSolInstruction","ACCOUNT_DISCRIMINATOR_SIZE","OPTION_SOME_TAG","MEMBER_KEY_SIZE","OPTION_VEC_PREFIX_SIZE","USER_DOMAIN_CONFIG_OFFSET","USER_MEMBER_OFFSET","USER_CREDENTIAL_ID_OFFSET","SETTINGS_MEMBER_OFFSET","fetchUserAccountByFilters","domainConfigAddress","credentialId","filters","result","fetchAllSettingsAccountByMember","settingsAccount","createDomainConfig","authority","createGlobalCounter","disableDomainConfig","admin","disable","getAccountRole","accountKey","vaultPda","isWritable","isStaticWritableIndex","isSigner","isSignerIndex","numAccountKeys","numSignerAccounts","numReadonlySignerAccounts","numReadonlyNonSignerAccounts","numWritableSigners","numWritableNonSigners","accountsForTransactionExecute","walletAddress","addressesByLookupTableAddress","additionalSigners","addressLookupTableAccounts","fetchAddressesForLookupTables","accountMetas","lookup","lookupTableAccount","meta","COMPRESSED_PUBKEY_SERIALIZED_SIZE","SIGNATURE_SERIALIZED_SIZE","SIGNATURE_OFFSETS_SERIALIZED_SIZE","SIGNATURE_OFFSETS_START","SECP256R1_PROGRAM_ADDRESS","getSecp256r1SignatureOffsetsDataEncoder","getSecp256r1SignatureOffsetsDataDecoder","getSecp256r1VerifyInstructionDataDecoder","createDecoder","numSignatures","padding","offsets","offsetDecoder","messageSize","getSecp256r1VerifyInstructionDataEncoder","createEncoder","offsetSize","payloadSize","p","offsetEncoder","offsetEntry","entry","getSecp256r1VerifyInstructionDataCodec","getSecp256r1VerifyInstruction","currentOffset","publicKeyOffset","signatureOffset","messageDataOffset","parseSecp256r1VerifyInstruction","executeTransaction","transactionBufferAddress","jitoBundlesTipAmount","instructions","PackedAccounts","acc","getLightSystemAccountMetasV2","PublicKey","isPacked","map","outputStateTreeInfo","TreeType","stateTreeInfos","selectedStateTree","selectStateTreeInfo","accountProofInputs","newAddressProofInputs","addressTreeInfos","merkleTreePubkeyIndex","queuePubkeyIndex","treeToUse","addressMerkleTreePubkeyIndex","addressQueuePubkeyIndex","preAccountLength","systemAccountsStartOffset","packedAccountsStartOffset","preAccounts","systemOffset","packedOffset","executeTransactionSync","finalSecp256r1VerifyInput","customTransactionMessage","parseTransactionMessage","y","nativeTransferIntent","destination","amount","DEFAULT_NETWORK_RETRY_MAX_RETRIES","DEFAULT_NETWORK_RETRY_DELAY_MS","EXPONENTIAL_BACKOFF_BASE","BACKOFF_MAX_DELAY_MS","DEFAULT_RETRY_CONFIG","calculateBackoffDelay","attempt","initialDelayMs","backoffBase","maxDelayMs","delay","retryWithBackoff","maxRetries","shouldRetry","compressibleConfig","rentSponsor","ctokenProgramAddress","tokenTransferIntent","mint","tokenProgram","splInterfacePdaArgs","resolveAddresses","accountInfos","fetchAccountInfos","balances","computeBalancesAndDestinations","compressedTokenAccounts","splInterfaceNeedsInitialization","getCompressedTokenAccounts","checkIfSplInterfaceNeedsToBeInitialized","compressedTotalBalance","hashesWithTree","buildHashesWithTree","proof","resolveCompressedProofAndSettings","sourceCompressedTokenAccounts","buildSourceCompressedTokenAccounts","compressedProofArgs","convertToCompressedProofArgs","getCtokenAta","owner","seeds","sourceSplAta","sourceCtokenAta","destinationSplAta","destinationCTokenAta","splInterfacePda","getAssociatedTokenAccountAddress","destinationSplAtaInfo","sourceSplAtaInfo","sourceCTokenAtaInfo","destinationSplExists","sourceSplExists","sourceCtokenExist","splBalance","getTokenDecoder","cTokenBalance","parseTokenAmount","destinationSplTokenAccount","destinationCtokenTokenAccount","requireSplInterface","getValidityProofWithRetry","getVersionFromDiscriminator","total","transferAmount","selectMinCompressedTokenAccountsForDecompression","maxInputs","options","filteredAccounts","accumulatedAmount","accumulatedLamports","maxPossibleAmount","selectedAccounts","totalBalance","discriminator","versionByte","validityProof","hashes","newAddresses","changeConfig","changeConfigArgs","createDomainUserAccounts","createUserArgs","createUserAccounts","createWallet","initialMember","editDomainConfig","newAuthority","newOrigins","editTransactionManagerUrl","transactionManagerUrl","editUserDelegate","newDelegate","userAccount","oldSettings","newSettings","old_delegate","closeTransactionBuffer","closer","createTransactionBuffer","bufferIndex","finalBufferHash","finalBufferSize","preauthorizeExecution","bufferExtendHashes","expectedSigners","executeTransactionBuffer","executor","extendTransactionBuffer","voteTransactionBuffer","voter","prepareChangeConfigArgs","configActionsArgs","buildConfigActions","convertAddMember","convertRemoveMember","convertEditMember","permissionArgs","convertPermissions","perms","prepareTransactionBundle","additionalVoters","chunkSize","chunks","chunksHash","chunk","createIxs","extendIxs","voteIxs","executeApprovalIxs","executeIxs","buildTx","CompiledKeys","_CompiledKeys","keyMetaMap","getOrInsertDefault","keyMeta","payerKeyMeta","mapEntries","writableSigners","readonlySigners","writableNonSigners","readonlyNonSigners","header","payerAddress","staticAccountKeys","lookupTableAddresses","writableIndexes","drainedWritableKeys","readonlyIndexes","drainedReadonlyKeys","lookupTableEntries","keyMetaFilter","lookupTableIndexes","drainedKeys","addressKey","lookupTableIndex","MessageAccountKeys","accountKeysFromLookups","keySegments","keySegment","keyIndexMap","findKeyIndex","keyIndex","compileToWrappedMessageV0","recentBlockhash","compiledKeys","addressTableLookups","lookupTableAccounts","lookupTable","extractResult","addressTableLookup","staticAccounts","compiledInstructions","prepareTransactionMessage","prepareTransactionSync"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport const DOMAIN_CONFIG_DISCRIMINATOR = new Uint8Array([\n 201, 232, 212, 229, 59, 241, 106, 197,\n]);\n\nexport function getDomainConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n DOMAIN_CONFIG_DISCRIMINATOR,\n );\n}\n\nexport type DomainConfig = {\n discriminator: ReadonlyUint8Array;\n authority: Address;\n rpIdHash: ReadonlyUint8Array;\n bump: number;\n isDisabled: number;\n rpIdLength: number;\n numOrigins: number;\n rpId: ReadonlyUint8Array;\n origins: ReadonlyUint8Array;\n};\n\nexport type DomainConfigArgs = {\n authority: Address;\n rpIdHash: ReadonlyUint8Array;\n bump: number;\n isDisabled: number;\n rpIdLength: number;\n numOrigins: number;\n rpId: ReadonlyUint8Array;\n origins: ReadonlyUint8Array;\n};\n\nexport function getDomainConfigEncoder(): FixedSizeEncoder<DomainConfigArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"authority\", getAddressEncoder()],\n [\"rpIdHash\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"bump\", getU8Encoder()],\n [\"isDisabled\", getU8Encoder()],\n [\"rpIdLength\", getU8Encoder()],\n [\"numOrigins\", getU8Encoder()],\n [\"rpId\", fixEncoderSize(getBytesEncoder(), 255)],\n [\"origins\", fixEncoderSize(getBytesEncoder(), 515)],\n ]),\n (value) => ({ ...value, discriminator: DOMAIN_CONFIG_DISCRIMINATOR }),\n );\n}\n\nexport function getDomainConfigDecoder(): FixedSizeDecoder<DomainConfig> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"authority\", getAddressDecoder()],\n [\"rpIdHash\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"bump\", getU8Decoder()],\n [\"isDisabled\", getU8Decoder()],\n [\"rpIdLength\", getU8Decoder()],\n [\"numOrigins\", getU8Decoder()],\n [\"rpId\", fixDecoderSize(getBytesDecoder(), 255)],\n [\"origins\", fixDecoderSize(getBytesDecoder(), 515)],\n ]);\n}\n\nexport function getDomainConfigCodec(): FixedSizeCodec<\n DomainConfigArgs,\n DomainConfig\n> {\n return combineCodec(getDomainConfigEncoder(), getDomainConfigDecoder());\n}\n\nexport function decodeDomainConfig<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<DomainConfig, TAddress>;\nexport function decodeDomainConfig<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<DomainConfig, TAddress>;\nexport function decodeDomainConfig<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<DomainConfig, TAddress> | MaybeAccount<DomainConfig, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getDomainConfigDecoder(),\n );\n}\n\nexport async function fetchDomainConfig<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<DomainConfig, TAddress>> {\n const maybeAccount = await fetchMaybeDomainConfig(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeDomainConfig<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<DomainConfig, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeDomainConfig(maybeAccount);\n}\n\nexport async function fetchAllDomainConfig(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<DomainConfig>[]> {\n const maybeAccounts = await fetchAllMaybeDomainConfig(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeDomainConfig(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<DomainConfig>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeDomainConfig(maybeAccount));\n}\n\nexport function getDomainConfigSize(): number {\n return 846;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport const GLOBAL_COUNTER_DISCRIMINATOR = new Uint8Array([\n 42, 206, 176, 58, 175, 129, 130, 233,\n]);\n\nexport function getGlobalCounterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n GLOBAL_COUNTER_DISCRIMINATOR,\n );\n}\n\nexport type GlobalCounter = {\n discriminator: ReadonlyUint8Array;\n index: bigint;\n};\n\nexport type GlobalCounterArgs = { index: number | bigint };\n\nexport function getGlobalCounterEncoder(): FixedSizeEncoder<GlobalCounterArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"index\", getU128Encoder()],\n ]),\n (value) => ({ ...value, discriminator: GLOBAL_COUNTER_DISCRIMINATOR }),\n );\n}\n\nexport function getGlobalCounterDecoder(): FixedSizeDecoder<GlobalCounter> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"index\", getU128Decoder()],\n ]);\n}\n\nexport function getGlobalCounterCodec(): FixedSizeCodec<\n GlobalCounterArgs,\n GlobalCounter\n> {\n return combineCodec(getGlobalCounterEncoder(), getGlobalCounterDecoder());\n}\n\nexport function decodeGlobalCounter<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<GlobalCounter, TAddress>;\nexport function decodeGlobalCounter<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<GlobalCounter, TAddress>;\nexport function decodeGlobalCounter<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<GlobalCounter, TAddress> | MaybeAccount<GlobalCounter, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getGlobalCounterDecoder(),\n );\n}\n\nexport async function fetchGlobalCounter<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<GlobalCounter, TAddress>> {\n const maybeAccount = await fetchMaybeGlobalCounter(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeGlobalCounter<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<GlobalCounter, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeGlobalCounter(maybeAccount);\n}\n\nexport async function fetchAllGlobalCounter(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<GlobalCounter>[]> {\n const maybeAccounts = await fetchAllMaybeGlobalCounter(\n rpc,\n addresses,\n config,\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeGlobalCounter(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<GlobalCounter>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeGlobalCounter(maybeAccount));\n}\n\nexport function getGlobalCounterSize(): number {\n return 24;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\nexport enum AccountState {\n Initialized,\n Frozen,\n}\n\nexport type AccountStateArgs = AccountState;\n\nexport function getAccountStateEncoder(): FixedSizeEncoder<AccountStateArgs> {\n return getEnumEncoder(AccountState);\n}\n\nexport function getAccountStateDecoder(): FixedSizeDecoder<AccountState> {\n return getEnumDecoder(AccountState);\n}\n\nexport function getAccountStateCodec(): FixedSizeCodec<\n AccountStateArgs,\n AccountState\n> {\n return combineCodec(getAccountStateEncoder(), getAccountStateDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type AdditionalMetadata = {\n /** The key of the metadata */\n key: ReadonlyUint8Array;\n /** The value of the metadata */\n value: ReadonlyUint8Array;\n};\n\nexport type AdditionalMetadataArgs = AdditionalMetadata;\n\nexport function getAdditionalMetadataEncoder(): Encoder<AdditionalMetadataArgs> {\n return getStructEncoder([\n [\"key\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n [\"value\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n ]);\n}\n\nexport function getAdditionalMetadataDecoder(): Decoder<AdditionalMetadata> {\n return getStructDecoder([\n [\"key\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n [\"value\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n ]);\n}\n\nexport function getAdditionalMetadataCodec(): Codec<\n AdditionalMetadataArgs,\n AdditionalMetadata\n> {\n return combineCodec(\n getAdditionalMetadataEncoder(),\n getAdditionalMetadataDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\nimport {\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n getPermissionsDecoder,\n getPermissionsEncoder,\n type IPermissions,\n type MemberKey,\n type MemberKeyArgs,\n type PermissionsArgs,\n} from \".\";\n\nexport type AddMemberArgs = { memberKey: MemberKey; permissions: IPermissions };\n\nexport type AddMemberArgsArgs = {\n memberKey: MemberKeyArgs;\n permissions: PermissionsArgs;\n};\n\nexport function getAddMemberArgsEncoder(): FixedSizeEncoder<AddMemberArgsArgs> {\n return getStructEncoder([\n [\"memberKey\", getMemberKeyEncoder()],\n [\"permissions\", getPermissionsEncoder()],\n ]);\n}\n\nexport function getAddMemberArgsDecoder(): FixedSizeDecoder<AddMemberArgs> {\n return getStructDecoder([\n [\"memberKey\", getMemberKeyDecoder()],\n [\"permissions\", getPermissionsDecoder()],\n ]);\n}\n\nexport function getAddMemberArgsCodec(): FixedSizeCodec<\n AddMemberArgsArgs,\n AddMemberArgs\n> {\n return combineCodec(getAddMemberArgsEncoder(), getAddMemberArgsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type CompiledInstruction = {\n programAddressIndex: number;\n accountIndices: ReadonlyUint8Array;\n data: ReadonlyUint8Array;\n};\n\nexport type CompiledInstructionArgs = CompiledInstruction;\n\nexport function getCompiledInstructionEncoder(): Encoder<CompiledInstructionArgs> {\n return getStructEncoder([\n [\"programAddressIndex\", getU8Encoder()],\n [\n \"accountIndices\",\n addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n ],\n [\"data\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n ]);\n}\n\nexport function getCompiledInstructionDecoder(): Decoder<CompiledInstruction> {\n return getStructDecoder([\n [\"programAddressIndex\", getU8Decoder()],\n [\n \"accountIndices\",\n addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n ],\n [\"data\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n ]);\n}\n\nexport function getCompiledInstructionCodec(): Codec<\n CompiledInstructionArgs,\n CompiledInstruction\n> {\n return combineCodec(\n getCompiledInstructionEncoder(),\n getCompiledInstructionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/**\n * CompressedOnly extension for compressed token accounts.\n * This extension marks a compressed account as decompress-only (cannot be transferred).\n * It stores the delegated amount from the source Token account when it was compressed-and-closed.\n */\nexport type CompressedOnlyExtension = {\n /**\n * The delegated amount from the source Token account's delegate field.\n * When decompressing, the decompression amount must match this value.\n */\n delegatedAmount: bigint;\n /** Withheld transfer fee amount from the source Token account. */\n withheldTransferFee: bigint;\n /**\n * Whether the source was an ATA (1) or regular token account (0).\n * When is_ata=1, decompress must verify ATA derivation matches.\n */\n isAta: number;\n};\n\nexport type CompressedOnlyExtensionArgs = {\n /**\n * The delegated amount from the source Token account's delegate field.\n * When decompressing, the decompression amount must match this value.\n */\n delegatedAmount: number | bigint;\n /** Withheld transfer fee amount from the source Token account. */\n withheldTransferFee: number | bigint;\n /**\n * Whether the source was an ATA (1) or regular token account (0).\n * When is_ata=1, decompress must verify ATA derivation matches.\n */\n isAta: number;\n};\n\nexport function getCompressedOnlyExtensionEncoder(): FixedSizeEncoder<CompressedOnlyExtensionArgs> {\n return getStructEncoder([\n [\"delegatedAmount\", getU64Encoder()],\n [\"withheldTransferFee\", getU64Encoder()],\n [\"isAta\", getU8Encoder()],\n ]);\n}\n\nexport function getCompressedOnlyExtensionDecoder(): FixedSizeDecoder<CompressedOnlyExtension> {\n return getStructDecoder([\n [\"delegatedAmount\", getU64Decoder()],\n [\"withheldTransferFee\", getU64Decoder()],\n [\"isAta\", getU8Decoder()],\n ]);\n}\n\nexport function getCompressedOnlyExtensionCodec(): FixedSizeCodec<\n CompressedOnlyExtensionArgs,\n CompressedOnlyExtension\n> {\n return combineCodec(\n getCompressedOnlyExtensionEncoder(),\n getCompressedOnlyExtensionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type CompressedProof = {\n a: ReadonlyUint8Array;\n b: ReadonlyUint8Array;\n c: ReadonlyUint8Array;\n};\n\nexport type CompressedProofArgs = CompressedProof;\n\nexport function getCompressedProofEncoder(): FixedSizeEncoder<CompressedProofArgs> {\n return getStructEncoder([\n [\"a\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"b\", fixEncoderSize(getBytesEncoder(), 64)],\n [\"c\", fixEncoderSize(getBytesEncoder(), 32)],\n ]);\n}\n\nexport function getCompressedProofDecoder(): FixedSizeDecoder<CompressedProof> {\n return getStructDecoder([\n [\"a\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"b\", fixDecoderSize(getBytesDecoder(), 64)],\n [\"c\", fixDecoderSize(getBytesDecoder(), 32)],\n ]);\n}\n\nexport function getCompressedProofCodec(): FixedSizeCodec<\n CompressedProofArgs,\n CompressedProof\n> {\n return combineCodec(getCompressedProofEncoder(), getCompressedProofDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n} from \"gill\";\nimport {\n getAccountStateDecoder,\n getAccountStateEncoder,\n getExtensionStructDecoder,\n getExtensionStructEncoder,\n getPackedMerkleContextDecoder,\n getPackedMerkleContextEncoder,\n type AccountState,\n type AccountStateArgs,\n type ExtensionStruct,\n type ExtensionStructArgs,\n type PackedMerkleContext,\n type PackedMerkleContextArgs,\n} from \".\";\n\nexport type CompressedTokenArgs = {\n version: number;\n rootIndex: number;\n amount: bigint;\n merkleContext: PackedMerkleContext;\n tlv: Option<Array<ExtensionStruct>>;\n state: AccountState;\n};\n\nexport type CompressedTokenArgsArgs = {\n version: number;\n rootIndex: number;\n amount: number | bigint;\n merkleContext: PackedMerkleContextArgs;\n tlv: OptionOrNullable<Array<ExtensionStructArgs>>;\n state: AccountStateArgs;\n};\n\nexport function getCompressedTokenArgsEncoder(): Encoder<CompressedTokenArgsArgs> {\n return getStructEncoder([\n [\"version\", getU8Encoder()],\n [\"rootIndex\", getU16Encoder()],\n [\"amount\", getU64Encoder()],\n [\"merkleContext\", getPackedMerkleContextEncoder()],\n [\"tlv\", getOptionEncoder(getArrayEncoder(getExtensionStructEncoder()))],\n [\"state\", getAccountStateEncoder()],\n ]);\n}\n\nexport function getCompressedTokenArgsDecoder(): Decoder<CompressedTokenArgs> {\n return getStructDecoder([\n [\"version\", getU8Decoder()],\n [\"rootIndex\", getU16Decoder()],\n [\"amount\", getU64Decoder()],\n [\"merkleContext\", getPackedMerkleContextDecoder()],\n [\"tlv\", getOptionDecoder(getArrayDecoder(getExtensionStructDecoder()))],\n [\"state\", getAccountStateDecoder()],\n ]);\n}\n\nexport function getCompressedTokenArgsCodec(): Codec<\n CompressedTokenArgsArgs,\n CompressedTokenArgs\n> {\n return combineCodec(\n getCompressedTokenArgsEncoder(),\n getCompressedTokenArgsDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\nimport {\n getCompressionInfoDecoder,\n getCompressionInfoEncoder,\n type CompressionInfo,\n type CompressionInfoArgs,\n} from \".\";\n\n/**\n * Compressible extension for token accounts.\n * This extension contains compression configuration and timing data.\n */\nexport type CompressibleExtension = {\n /** Option discriminator for decimals (0 = None, 1 = Some) */\n decimalsOption: number;\n /** Token decimals (only valid when decimals_option == 1) */\n decimals: number;\n /** Whether this account is compression-only (cannot decompress) */\n compressionOnly: boolean;\n /**\n * Whether the source account is an ATA (1 = ATA, 0 = regular account)\n * Used during compress_and_close to set is_ata in CompressedOnlyExtension\n */\n isAta: number;\n /** Compression configuration and timing data */\n info: CompressionInfo;\n};\n\nexport type CompressibleExtensionArgs = {\n /** Option discriminator for decimals (0 = None, 1 = Some) */\n decimalsOption: number;\n /** Token decimals (only valid when decimals_option == 1) */\n decimals: number;\n /** Whether this account is compression-only (cannot decompress) */\n compressionOnly: boolean;\n /**\n * Whether the source account is an ATA (1 = ATA, 0 = regular account)\n * Used during compress_and_close to set is_ata in CompressedOnlyExtension\n */\n isAta: number;\n /** Compression configuration and timing data */\n info: CompressionInfoArgs;\n};\n\nexport function getCompressibleExtensionEncoder(): FixedSizeEncoder<CompressibleExtensionArgs> {\n return getStructEncoder([\n [\"decimalsOption\", getU8Encoder()],\n [\"decimals\", getU8Encoder()],\n [\"compressionOnly\", getBooleanEncoder()],\n [\"isAta\", getU8Encoder()],\n [\"info\", getCompressionInfoEncoder()],\n ]);\n}\n\nexport function getCompressibleExtensionDecoder(): FixedSizeDecoder<CompressibleExtension> {\n return getStructDecoder([\n [\"decimalsOption\", getU8Decoder()],\n [\"decimals\", getU8Decoder()],\n [\"compressionOnly\", getBooleanDecoder()],\n [\"isAta\", getU8Decoder()],\n [\"info\", getCompressionInfoDecoder()],\n ]);\n}\n\nexport function getCompressibleExtensionCodec(): FixedSizeCodec<\n CompressibleExtensionArgs,\n CompressibleExtension\n> {\n return combineCodec(\n getCompressibleExtensionEncoder(),\n getCompressibleExtensionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n getRentConfigDecoder,\n getRentConfigEncoder,\n type RentConfig,\n type RentConfigArgs,\n} from \".\";\n\n/** Compressible extension for ctoken accounts. */\nexport type CompressionInfo = {\n configAccountVersion: number;\n /** Compress to account pubkey instead of account owner. */\n compressToPubkey: number;\n /**\n * Version of the compressed token account when ctoken account is\n * compressed and closed. (The account_version specifies the hashing scheme.)\n */\n accountVersion: number;\n /**\n * Lamports amount the account is topped up with at every write\n * by the fee payer.\n */\n lamportsPerWrite: number;\n /** Authority that can compress and close the account. */\n compressionAuthority: ReadonlyUint8Array;\n /** Recipient for rent exemption lamports up on account closure. */\n rentSponsor: ReadonlyUint8Array;\n /** Last slot rent was claimed from this account. */\n lastClaimedSlot: bigint;\n /**\n * Rent exemption lamports paid at account creation.\n * Used instead of querying the Rent sysvar to ensure rent sponsor\n * gets back exactly what they paid regardless of future rent changes.\n */\n rentExemptionPaid: number;\n /** Reserved for future use. */\n reserved: number;\n /**\n * Rent function parameters,\n * used to calculate whether the account is compressible.\n */\n rentConfig: RentConfig;\n};\n\nexport type CompressionInfoArgs = {\n configAccountVersion: number;\n /** Compress to account pubkey instead of account owner. */\n compressToPubkey: number;\n /**\n * Version of the compressed token account when ctoken account is\n * compressed and closed. (The account_version specifies the hashing scheme.)\n */\n accountVersion: number;\n /**\n * Lamports amount the account is topped up with at every write\n * by the fee payer.\n */\n lamportsPerWrite: number;\n /** Authority that can compress and close the account. */\n compressionAuthority: ReadonlyUint8Array;\n /** Recipient for rent exemption lamports up on account closure. */\n rentSponsor: ReadonlyUint8Array;\n /** Last slot rent was claimed from this account. */\n lastClaimedSlot: number | bigint;\n /**\n * Rent exemption lamports paid at account creation.\n * Used instead of querying the Rent sysvar to ensure rent sponsor\n * gets back exactly what they paid regardless of future rent changes.\n */\n rentExemptionPaid: number;\n /** Reserved for future use. */\n reserved: number;\n /**\n * Rent function parameters,\n * used to calculate whether the account is compressible.\n */\n rentConfig: RentConfigArgs;\n};\n\nexport function getCompressionInfoEncoder(): FixedSizeEncoder<CompressionInfoArgs> {\n return getStructEncoder([\n [\"configAccountVersion\", getU16Encoder()],\n [\"compressToPubkey\", getU8Encoder()],\n [\"accountVersion\", getU8Encoder()],\n [\"lamportsPerWrite\", getU32Encoder()],\n [\"compressionAuthority\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"rentSponsor\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"lastClaimedSlot\", getU64Encoder()],\n [\"rentExemptionPaid\", getU32Encoder()],\n [\"reserved\", getU32Encoder()],\n [\"rentConfig\", getRentConfigEncoder()],\n ]);\n}\n\nexport function getCompressionInfoDecoder(): FixedSizeDecoder<CompressionInfo> {\n return getStructDecoder([\n [\"configAccountVersion\", getU16Decoder()],\n [\"compressToPubkey\", getU8Decoder()],\n [\"accountVersion\", getU8Decoder()],\n [\"lamportsPerWrite\", getU32Decoder()],\n [\"compressionAuthority\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"rentSponsor\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"lastClaimedSlot\", getU64Decoder()],\n [\"rentExemptionPaid\", getU32Decoder()],\n [\"reserved\", getU32Decoder()],\n [\"rentConfig\", getRentConfigDecoder()],\n ]);\n}\n\nexport function getCompressionInfoCodec(): FixedSizeCodec<\n CompressionInfoArgs,\n CompressionInfo\n> {\n return combineCodec(getCompressionInfoEncoder(), getCompressionInfoDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type GetDiscriminatedUnionVariant,\n type GetDiscriminatedUnionVariantContent,\n} from \"gill\";\nimport {\n getAddMemberArgsDecoder,\n getAddMemberArgsEncoder,\n getEditMemberArgsDecoder,\n getEditMemberArgsEncoder,\n getRemoveMemberArgsDecoder,\n getRemoveMemberArgsEncoder,\n type AddMemberArgs,\n type AddMemberArgsArgs,\n type EditMemberArgs,\n type EditMemberArgsArgs,\n type RemoveMemberArgs,\n type RemoveMemberArgsArgs,\n} from \".\";\n\nexport type ConfigAction =\n | { __kind: \"EditPermissions\"; fields: readonly [Array<EditMemberArgs>] }\n | { __kind: \"AddMembers\"; fields: readonly [Array<AddMemberArgs>] }\n | { __kind: \"RemoveMembers\"; fields: readonly [Array<RemoveMemberArgs>] }\n | { __kind: \"SetThreshold\"; fields: readonly [number] };\n\nexport type ConfigActionArgs =\n | { __kind: \"EditPermissions\"; fields: readonly [Array<EditMemberArgsArgs>] }\n | { __kind: \"AddMembers\"; fields: readonly [Array<AddMemberArgsArgs>] }\n | { __kind: \"RemoveMembers\"; fields: readonly [Array<RemoveMemberArgsArgs>] }\n | { __kind: \"SetThreshold\"; fields: readonly [number] };\n\nexport function getConfigActionEncoder(): Encoder<ConfigActionArgs> {\n return getDiscriminatedUnionEncoder([\n [\n \"EditPermissions\",\n getStructEncoder([\n [\n \"fields\",\n getTupleEncoder([getArrayEncoder(getEditMemberArgsEncoder())]),\n ],\n ]),\n ],\n [\n \"AddMembers\",\n getStructEncoder([\n [\n \"fields\",\n getTupleEncoder([getArrayEncoder(getAddMemberArgsEncoder())]),\n ],\n ]),\n ],\n [\n \"RemoveMembers\",\n getStructEncoder([\n [\n \"fields\",\n getTupleEncoder([getArrayEncoder(getRemoveMemberArgsEncoder())]),\n ],\n ]),\n ],\n [\n \"SetThreshold\",\n getStructEncoder([[\"fields\", getTupleEncoder([getU8Encoder()])]]),\n ],\n ]);\n}\n\nexport function getConfigActionDecoder(): Decoder<ConfigAction> {\n return getDiscriminatedUnionDecoder([\n [\n \"EditPermissions\",\n getStructDecoder([\n [\n \"fields\",\n getTupleDecoder([getArrayDecoder(getEditMemberArgsDecoder())]),\n ],\n ]),\n ],\n [\n \"AddMembers\",\n getStructDecoder([\n [\n \"fields\",\n getTupleDecoder([getArrayDecoder(getAddMemberArgsDecoder())]),\n ],\n ]),\n ],\n [\n \"RemoveMembers\",\n getStructDecoder([\n [\n \"fields\",\n getTupleDecoder([getArrayDecoder(getRemoveMemberArgsDecoder())]),\n ],\n ]),\n ],\n [\n \"SetThreshold\",\n getStructDecoder([[\"fields\", getTupleDecoder([getU8Decoder()])]]),\n ],\n ]);\n}\n\nexport function getConfigActionCodec(): Codec<ConfigActionArgs, ConfigAction> {\n return combineCodec(getConfigActionEncoder(), getConfigActionDecoder());\n}\n\n// Data Enum Helpers.\nexport function configAction(\n kind: \"EditPermissions\",\n data: GetDiscriminatedUnionVariantContent<\n ConfigActionArgs,\n \"__kind\",\n \"EditPermissions\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<ConfigActionArgs, \"__kind\", \"EditPermissions\">;\nexport function configAction(\n kind: \"AddMembers\",\n data: GetDiscriminatedUnionVariantContent<\n ConfigActionArgs,\n \"__kind\",\n \"AddMembers\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<ConfigActionArgs, \"__kind\", \"AddMembers\">;\nexport function configAction(\n kind: \"RemoveMembers\",\n data: GetDiscriminatedUnionVariantContent<\n ConfigActionArgs,\n \"__kind\",\n \"RemoveMembers\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<ConfigActionArgs, \"__kind\", \"RemoveMembers\">;\nexport function configAction(\n kind: \"SetThreshold\",\n data: GetDiscriminatedUnionVariantContent<\n ConfigActionArgs,\n \"__kind\",\n \"SetThreshold\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<ConfigActionArgs, \"__kind\", \"SetThreshold\">;\nexport function configAction<K extends ConfigActionArgs[\"__kind\"], Data>(\n kind: K,\n data?: Data,\n) {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isConfigAction<K extends ConfigAction[\"__kind\"]>(\n kind: K,\n value: ConfigAction,\n): value is ConfigAction & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\nimport {\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n getPermissionsDecoder,\n getPermissionsEncoder,\n type IPermissions,\n type MemberKey,\n type MemberKeyArgs,\n type PermissionsArgs,\n} from \".\";\n\nexport type EditMemberArgs = {\n memberKey: MemberKey;\n permissions: IPermissions;\n};\n\nexport type EditMemberArgsArgs = {\n memberKey: MemberKeyArgs;\n permissions: PermissionsArgs;\n};\n\nexport function getEditMemberArgsEncoder(): FixedSizeEncoder<EditMemberArgsArgs> {\n return getStructEncoder([\n [\"memberKey\", getMemberKeyEncoder()],\n [\"permissions\", getPermissionsEncoder()],\n ]);\n}\n\nexport function getEditMemberArgsDecoder(): FixedSizeDecoder<EditMemberArgs> {\n return getStructDecoder([\n [\"memberKey\", getMemberKeyDecoder()],\n [\"permissions\", getPermissionsDecoder()],\n ]);\n}\n\nexport function getEditMemberArgsCodec(): FixedSizeCodec<\n EditMemberArgsArgs,\n EditMemberArgs\n> {\n return combineCodec(getEditMemberArgsEncoder(), getEditMemberArgsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n type MemberKey,\n type MemberKeyArgs,\n} from \".\";\n\nexport type ExpectedSigner = {\n memberKey: MemberKey;\n messageHash: Option<ReadonlyUint8Array>;\n};\n\nexport type ExpectedSignerArgs = {\n memberKey: MemberKeyArgs;\n messageHash: OptionOrNullable<ReadonlyUint8Array>;\n};\n\nexport function getExpectedSignerEncoder(): Encoder<ExpectedSignerArgs> {\n return getStructEncoder([\n [\"memberKey\", getMemberKeyEncoder()],\n [\"messageHash\", getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32))],\n ]);\n}\n\nexport function getExpectedSignerDecoder(): Decoder<ExpectedSigner> {\n return getStructDecoder([\n [\"memberKey\", getMemberKeyDecoder()],\n [\"messageHash\", getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n ]);\n}\n\nexport function getExpectedSignerCodec(): Codec<\n ExpectedSignerArgs,\n ExpectedSigner\n> {\n return combineCodec(getExpectedSignerEncoder(), getExpectedSignerDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getUnitDecoder,\n getUnitEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n type GetDiscriminatedUnionVariant,\n type GetDiscriminatedUnionVariantContent,\n} from \"gill\";\nimport {\n getCompressedOnlyExtensionDecoder,\n getCompressedOnlyExtensionEncoder,\n getCompressibleExtensionDecoder,\n getCompressibleExtensionEncoder,\n getPausableAccountExtensionDecoder,\n getPausableAccountExtensionEncoder,\n getPermanentDelegateAccountExtensionDecoder,\n getPermanentDelegateAccountExtensionEncoder,\n getTokenMetadataDecoder,\n getTokenMetadataEncoder,\n getTransferFeeAccountExtensionDecoder,\n getTransferFeeAccountExtensionEncoder,\n getTransferHookAccountExtensionDecoder,\n getTransferHookAccountExtensionEncoder,\n type CompressedOnlyExtension,\n type CompressedOnlyExtensionArgs,\n type CompressibleExtension,\n type CompressibleExtensionArgs,\n type PausableAccountExtension,\n type PausableAccountExtensionArgs,\n type PermanentDelegateAccountExtension,\n type PermanentDelegateAccountExtensionArgs,\n type TokenMetadata,\n type TokenMetadataArgs,\n type TransferFeeAccountExtension,\n type TransferFeeAccountExtensionArgs,\n type TransferHookAccountExtension,\n type TransferHookAccountExtensionArgs,\n} from \".\";\n\nexport type ExtensionStruct =\n | { __kind: \"Placeholder0\" }\n | { __kind: \"Placeholder1\" }\n | { __kind: \"Placeholder2\" }\n | { __kind: \"Placeholder3\" }\n | { __kind: \"Placeholder4\" }\n | { __kind: \"Placeholder5\" }\n | { __kind: \"Placeholder6\" }\n | { __kind: \"Placeholder7\" }\n | { __kind: \"Placeholder8\" }\n | { __kind: \"Placeholder9\" }\n | { __kind: \"Placeholder10\" }\n | { __kind: \"Placeholder11\" }\n | { __kind: \"Placeholder12\" }\n | { __kind: \"Placeholder13\" }\n | { __kind: \"Placeholder14\" }\n | { __kind: \"Placeholder15\" }\n | { __kind: \"Placeholder16\" }\n | { __kind: \"Placeholder17\" }\n | { __kind: \"Placeholder18\" }\n | { __kind: \"TokenMetadata\"; fields: readonly [TokenMetadata] }\n | { __kind: \"Placeholder20\" }\n | { __kind: \"Placeholder21\" }\n | { __kind: \"Placeholder22\" }\n | { __kind: \"Placeholder23\" }\n | { __kind: \"Placeholder24\" }\n | { __kind: \"Placeholder25\" }\n | { __kind: \"Placeholder26\" }\n | { __kind: \"PausableAccount\"; fields: readonly [PausableAccountExtension] }\n | {\n __kind: \"PermanentDelegateAccount\";\n fields: readonly [PermanentDelegateAccountExtension];\n }\n | {\n __kind: \"TransferFeeAccount\";\n fields: readonly [TransferFeeAccountExtension];\n }\n | {\n __kind: \"TransferHookAccount\";\n fields: readonly [TransferHookAccountExtension];\n }\n | { __kind: \"CompressedOnly\"; fields: readonly [CompressedOnlyExtension] }\n | { __kind: \"Compressible\"; fields: readonly [CompressibleExtension] };\n\nexport type ExtensionStructArgs =\n | { __kind: \"Placeholder0\" }\n | { __kind: \"Placeholder1\" }\n | { __kind: \"Placeholder2\" }\n | { __kind: \"Placeholder3\" }\n | { __kind: \"Placeholder4\" }\n | { __kind: \"Placeholder5\" }\n | { __kind: \"Placeholder6\" }\n | { __kind: \"Placeholder7\" }\n | { __kind: \"Placeholder8\" }\n | { __kind: \"Placeholder9\" }\n | { __kind: \"Placeholder10\" }\n | { __kind: \"Placeholder11\" }\n | { __kind: \"Placeholder12\" }\n | { __kind: \"Placeholder13\" }\n | { __kind: \"Placeholder14\" }\n | { __kind: \"Placeholder15\" }\n | { __kind: \"Placeholder16\" }\n | { __kind: \"Placeholder17\" }\n | { __kind: \"Placeholder18\" }\n | { __kind: \"TokenMetadata\"; fields: readonly [TokenMetadataArgs] }\n | { __kind: \"Placeholder20\" }\n | { __kind: \"Placeholder21\" }\n | { __kind: \"Placeholder22\" }\n | { __kind: \"Placeholder23\" }\n | { __kind: \"Placeholder24\" }\n | { __kind: \"Placeholder25\" }\n | { __kind: \"Placeholder26\" }\n | {\n __kind: \"PausableAccount\";\n fields: readonly [PausableAccountExtensionArgs];\n }\n | {\n __kind: \"PermanentDelegateAccount\";\n fields: readonly [PermanentDelegateAccountExtensionArgs];\n }\n | {\n __kind: \"TransferFeeAccount\";\n fields: readonly [TransferFeeAccountExtensionArgs];\n }\n | {\n __kind: \"TransferHookAccount\";\n fields: readonly [TransferHookAccountExtensionArgs];\n }\n | { __kind: \"CompressedOnly\"; fields: readonly [CompressedOnlyExtensionArgs] }\n | { __kind: \"Compressible\"; fields: readonly [CompressibleExtensionArgs] };\n\nexport function getExtensionStructEncoder(): Encoder<ExtensionStructArgs> {\n return getDiscriminatedUnionEncoder([\n [\"Placeholder0\", getUnitEncoder()],\n [\"Placeholder1\", getUnitEncoder()],\n [\"Placeholder2\", getUnitEncoder()],\n [\"Placeholder3\", getUnitEncoder()],\n [\"Placeholder4\", getUnitEncoder()],\n [\"Placeholder5\", getUnitEncoder()],\n [\"Placeholder6\", getUnitEncoder()],\n [\"Placeholder7\", getUnitEncoder()],\n [\"Placeholder8\", getUnitEncoder()],\n [\"Placeholder9\", getUnitEncoder()],\n [\"Placeholder10\", getUnitEncoder()],\n [\"Placeholder11\", getUnitEncoder()],\n [\"Placeholder12\", getUnitEncoder()],\n [\"Placeholder13\", getUnitEncoder()],\n [\"Placeholder14\", getUnitEncoder()],\n [\"Placeholder15\", getUnitEncoder()],\n [\"Placeholder16\", getUnitEncoder()],\n [\"Placeholder17\", getUnitEncoder()],\n [\"Placeholder18\", getUnitEncoder()],\n [\n \"TokenMetadata\",\n getStructEncoder([\n [\"fields\", getTupleEncoder([getTokenMetadataEncoder()])],\n ]),\n ],\n [\"Placeholder20\", getUnitEncoder()],\n [\"Placeholder21\", getUnitEncoder()],\n [\"Placeholder22\", getUnitEncoder()],\n [\"Placeholder23\", getUnitEncoder()],\n [\"Placeholder24\", getUnitEncoder()],\n [\"Placeholder25\", getUnitEncoder()],\n [\"Placeholder26\", getUnitEncoder()],\n [\n \"PausableAccount\",\n getStructEncoder([\n [\"fields\", getTupleEncoder([getPausableAccountExtensionEncoder()])],\n ]),\n ],\n [\n \"PermanentDelegateAccount\",\n getStructEncoder([\n [\n \"fields\",\n getTupleEncoder([getPermanentDelegateAccountExtensionEncoder()]),\n ],\n ]),\n ],\n [\n \"TransferFeeAccount\",\n getStructEncoder([\n [\"fields\", getTupleEncoder([getTransferFeeAccountExtensionEncoder()])],\n ]),\n ],\n [\n \"TransferHookAccount\",\n getStructEncoder([\n [\"fields\", getTupleEncoder([getTransferHookAccountExtensionEncoder()])],\n ]),\n ],\n [\n \"CompressedOnly\",\n getStructEncoder([\n [\"fields\", getTupleEncoder([getCompressedOnlyExtensionEncoder()])],\n ]),\n ],\n [\n \"Compressible\",\n getStructEncoder([\n [\"fields\", getTupleEncoder([getCompressibleExtensionEncoder()])],\n ]),\n ],\n ]);\n}\n\nexport function getExtensionStructDecoder(): Decoder<ExtensionStruct> {\n return getDiscriminatedUnionDecoder([\n [\"Placeholder0\", getUnitDecoder()],\n [\"Placeholder1\", getUnitDecoder()],\n [\"Placeholder2\", getUnitDecoder()],\n [\"Placeholder3\", getUnitDecoder()],\n [\"Placeholder4\", getUnitDecoder()],\n [\"Placeholder5\", getUnitDecoder()],\n [\"Placeholder6\", getUnitDecoder()],\n [\"Placeholder7\", getUnitDecoder()],\n [\"Placeholder8\", getUnitDecoder()],\n [\"Placeholder9\", getUnitDecoder()],\n [\"Placeholder10\", getUnitDecoder()],\n [\"Placeholder11\", getUnitDecoder()],\n [\"Placeholder12\", getUnitDecoder()],\n [\"Placeholder13\", getUnitDecoder()],\n [\"Placeholder14\", getUnitDecoder()],\n [\"Placeholder15\", getUnitDecoder()],\n [\"Placeholder16\", getUnitDecoder()],\n [\"Placeholder17\", getUnitDecoder()],\n [\"Placeholder18\", getUnitDecoder()],\n [\n \"TokenMetadata\",\n getStructDecoder([\n [\"fields\", getTupleDecoder([getTokenMetadataDecoder()])],\n ]),\n ],\n [\"Placeholder20\", getUnitDecoder()],\n [\"Placeholder21\", getUnitDecoder()],\n [\"Placeholder22\", getUnitDecoder()],\n [\"Placeholder23\", getUnitDecoder()],\n [\"Placeholder24\", getUnitDecoder()],\n [\"Placeholder25\", getUnitDecoder()],\n [\"Placeholder26\", getUnitDecoder()],\n [\n \"PausableAccount\",\n getStructDecoder([\n [\"fields\", getTupleDecoder([getPausableAccountExtensionDecoder()])],\n ]),\n ],\n [\n \"PermanentDelegateAccount\",\n getStructDecoder([\n [\n \"fields\",\n getTupleDecoder([getPermanentDelegateAccountExtensionDecoder()]),\n ],\n ]),\n ],\n [\n \"TransferFeeAccount\",\n getStructDecoder([\n [\"fields\", getTupleDecoder([getTransferFeeAccountExtensionDecoder()])],\n ]),\n ],\n [\n \"TransferHookAccount\",\n getStructDecoder([\n [\"fields\", getTupleDecoder([getTransferHookAccountExtensionDecoder()])],\n ]),\n ],\n [\n \"CompressedOnly\",\n getStructDecoder([\n [\"fields\", getTupleDecoder([getCompressedOnlyExtensionDecoder()])],\n ]),\n ],\n [\n \"Compressible\",\n getStructDecoder([\n [\"fields\", getTupleDecoder([getCompressibleExtensionDecoder()])],\n ]),\n ],\n ]);\n}\n\nexport function getExtensionStructCodec(): Codec<\n ExtensionStructArgs,\n ExtensionStruct\n> {\n return combineCodec(getExtensionStructEncoder(), getExtensionStructDecoder());\n}\n\n// Data Enum Helpers.\nexport function extensionStruct(\n kind: \"Placeholder0\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder0\">;\nexport function extensionStruct(\n kind: \"Placeholder1\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder1\">;\nexport function extensionStruct(\n kind: \"Placeholder2\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder2\">;\nexport function extensionStruct(\n kind: \"Placeholder3\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder3\">;\nexport function extensionStruct(\n kind: \"Placeholder4\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder4\">;\nexport function extensionStruct(\n kind: \"Placeholder5\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder5\">;\nexport function extensionStruct(\n kind: \"Placeholder6\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder6\">;\nexport function extensionStruct(\n kind: \"Placeholder7\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder7\">;\nexport function extensionStruct(\n kind: \"Placeholder8\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder8\">;\nexport function extensionStruct(\n kind: \"Placeholder9\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder9\">;\nexport function extensionStruct(\n kind: \"Placeholder10\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder10\">;\nexport function extensionStruct(\n kind: \"Placeholder11\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder11\">;\nexport function extensionStruct(\n kind: \"Placeholder12\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder12\">;\nexport function extensionStruct(\n kind: \"Placeholder13\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder13\">;\nexport function extensionStruct(\n kind: \"Placeholder14\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder14\">;\nexport function extensionStruct(\n kind: \"Placeholder15\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder15\">;\nexport function extensionStruct(\n kind: \"Placeholder16\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder16\">;\nexport function extensionStruct(\n kind: \"Placeholder17\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder17\">;\nexport function extensionStruct(\n kind: \"Placeholder18\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder18\">;\nexport function extensionStruct(\n kind: \"TokenMetadata\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"TokenMetadata\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"TokenMetadata\">;\nexport function extensionStruct(\n kind: \"Placeholder20\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder20\">;\nexport function extensionStruct(\n kind: \"Placeholder21\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder21\">;\nexport function extensionStruct(\n kind: \"Placeholder22\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder22\">;\nexport function extensionStruct(\n kind: \"Placeholder23\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder23\">;\nexport function extensionStruct(\n kind: \"Placeholder24\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder24\">;\nexport function extensionStruct(\n kind: \"Placeholder25\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder25\">;\nexport function extensionStruct(\n kind: \"Placeholder26\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder26\">;\nexport function extensionStruct(\n kind: \"PausableAccount\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"PausableAccount\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n ExtensionStructArgs,\n \"__kind\",\n \"PausableAccount\"\n>;\nexport function extensionStruct(\n kind: \"PermanentDelegateAccount\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"PermanentDelegateAccount\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n ExtensionStructArgs,\n \"__kind\",\n \"PermanentDelegateAccount\"\n>;\nexport function extensionStruct(\n kind: \"TransferFeeAccount\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"TransferFeeAccount\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n ExtensionStructArgs,\n \"__kind\",\n \"TransferFeeAccount\"\n>;\nexport function extensionStruct(\n kind: \"TransferHookAccount\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"TransferHookAccount\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n ExtensionStructArgs,\n \"__kind\",\n \"TransferHookAccount\"\n>;\nexport function extensionStruct(\n kind: \"CompressedOnly\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"CompressedOnly\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n ExtensionStructArgs,\n \"__kind\",\n \"CompressedOnly\"\n>;\nexport function extensionStruct(\n kind: \"Compressible\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"Compressible\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Compressible\">;\nexport function extensionStruct<K extends ExtensionStructArgs[\"__kind\"], Data>(\n kind: K,\n data?: Data,\n) {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isExtensionStruct<K extends ExtensionStruct[\"__kind\"]>(\n kind: K,\n value: ExtensionStruct,\n): value is ExtensionStruct & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\nimport {\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n getPermissionsDecoder,\n getPermissionsEncoder,\n type IPermissions,\n type MemberKey,\n type MemberKeyArgs,\n type PermissionsArgs,\n} from \".\";\n\nexport type Member = {\n pubkey: MemberKey;\n role: number;\n permissions: IPermissions;\n padding: number;\n isDelegate: number;\n};\n\nexport type MemberArgs = {\n pubkey: MemberKeyArgs;\n role: number;\n permissions: PermissionsArgs;\n padding: number;\n isDelegate: number;\n};\n\nexport function getMemberEncoder(): FixedSizeEncoder<MemberArgs> {\n return getStructEncoder([\n [\"pubkey\", getMemberKeyEncoder()],\n [\"role\", getU8Encoder()],\n [\"permissions\", getPermissionsEncoder()],\n [\"padding\", getU8Encoder()],\n [\"isDelegate\", getU8Encoder()],\n ]);\n}\n\nexport function getMemberDecoder(): FixedSizeDecoder<Member> {\n return getStructDecoder([\n [\"pubkey\", getMemberKeyDecoder()],\n [\"role\", getU8Decoder()],\n [\"permissions\", getPermissionsDecoder()],\n [\"padding\", getU8Decoder()],\n [\"isDelegate\", getU8Decoder()],\n ]);\n}\n\nexport function getMemberCodec(): FixedSizeCodec<MemberArgs, Member> {\n return combineCodec(getMemberEncoder(), getMemberDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type MemberKey = { keyType: number; key: ReadonlyUint8Array };\n\nexport type MemberKeyArgs = MemberKey;\n\nexport function getMemberKeyEncoder(): FixedSizeEncoder<MemberKeyArgs> {\n return getStructEncoder([\n [\"keyType\", getU8Encoder()],\n [\"key\", fixEncoderSize(getBytesEncoder(), 33)],\n ]);\n}\n\nexport function getMemberKeyDecoder(): FixedSizeDecoder<MemberKey> {\n return getStructDecoder([\n [\"keyType\", getU8Decoder()],\n [\"key\", fixDecoderSize(getBytesDecoder(), 33)],\n ]);\n}\n\nexport function getMemberKeyCodec(): FixedSizeCodec<MemberKeyArgs, MemberKey> {\n return combineCodec(getMemberKeyEncoder(), getMemberKeyDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\nexport type PackedMerkleContext = {\n merkleTreePubkeyIndex: number;\n queuePubkeyIndex: number;\n leafIndex: number;\n proveByIndex: boolean;\n};\n\nexport type PackedMerkleContextArgs = PackedMerkleContext;\n\nexport function getPackedMerkleContextEncoder(): FixedSizeEncoder<PackedMerkleContextArgs> {\n return getStructEncoder([\n [\"merkleTreePubkeyIndex\", getU8Encoder()],\n [\"queuePubkeyIndex\", getU8Encoder()],\n [\"leafIndex\", getU32Encoder()],\n [\"proveByIndex\", getBooleanEncoder()],\n ]);\n}\n\nexport function getPackedMerkleContextDecoder(): FixedSizeDecoder<PackedMerkleContext> {\n return getStructDecoder([\n [\"merkleTreePubkeyIndex\", getU8Decoder()],\n [\"queuePubkeyIndex\", getU8Decoder()],\n [\"leafIndex\", getU32Decoder()],\n [\"proveByIndex\", getBooleanDecoder()],\n ]);\n}\n\nexport function getPackedMerkleContextCodec(): FixedSizeCodec<\n PackedMerkleContextArgs,\n PackedMerkleContext\n> {\n return combineCodec(\n getPackedMerkleContextEncoder(),\n getPackedMerkleContextDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/**\n * Marker extension indicating the account belongs to a pausable mint.\n * This is a zero-size marker (no data) that indicates the token account's\n * mint has the SPL Token 2022 Pausable extension.\n *\n * When present, token operations must check the SPL mint's PausableConfig\n * to determine if the mint is paused before allowing transfers.\n */\nexport type PausableAccountExtension = {};\n\nexport type PausableAccountExtensionArgs = PausableAccountExtension;\n\nexport function getPausableAccountExtensionEncoder(): FixedSizeEncoder<PausableAccountExtensionArgs> {\n return getStructEncoder([]);\n}\n\nexport function getPausableAccountExtensionDecoder(): FixedSizeDecoder<PausableAccountExtension> {\n return getStructDecoder([]);\n}\n\nexport function getPausableAccountExtensionCodec(): FixedSizeCodec<\n PausableAccountExtensionArgs,\n PausableAccountExtension\n> {\n return combineCodec(\n getPausableAccountExtensionEncoder(),\n getPausableAccountExtensionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/**\n * Marker extension indicating the account belongs to a mint with permanent delegate.\n * This is a zero-size marker (no data) that indicates the token account's\n * mint has the SPL Token 2022 Permanent Delegate extension.\n *\n * When present, token operations must check the SPL mint's PermanentDelegate\n * to determine the delegate authority before allowing transfers/burns.\n */\nexport type PermanentDelegateAccountExtension = {};\n\nexport type PermanentDelegateAccountExtensionArgs =\n PermanentDelegateAccountExtension;\n\nexport function getPermanentDelegateAccountExtensionEncoder(): FixedSizeEncoder<PermanentDelegateAccountExtensionArgs> {\n return getStructEncoder([]);\n}\n\nexport function getPermanentDelegateAccountExtensionDecoder(): FixedSizeDecoder<PermanentDelegateAccountExtension> {\n return getStructDecoder([]);\n}\n\nexport function getPermanentDelegateAccountExtensionCodec(): FixedSizeCodec<\n PermanentDelegateAccountExtensionArgs,\n PermanentDelegateAccountExtension\n> {\n return combineCodec(\n getPermanentDelegateAccountExtensionEncoder(),\n getPermanentDelegateAccountExtensionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/** Bitmask for permissions. */\nexport type IPermissions = { mask: number };\n\nexport type PermissionsArgs = IPermissions;\n\nexport function getPermissionsEncoder(): FixedSizeEncoder<PermissionsArgs> {\n return getStructEncoder([[\"mask\", getU8Encoder()]]);\n}\n\nexport function getPermissionsDecoder(): FixedSizeDecoder<IPermissions> {\n return getStructDecoder([[\"mask\", getU8Decoder()]]);\n}\n\nexport function getPermissionsCodec(): FixedSizeCodec<\n PermissionsArgs,\n IPermissions\n> {\n return combineCodec(getPermissionsEncoder(), getPermissionsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n} from \"gill\";\nimport {\n getCompressedProofDecoder,\n getCompressedProofEncoder,\n type CompressedProof,\n type CompressedProofArgs,\n} from \".\";\n\nexport type ProofArgs = {\n proof: Option<CompressedProof>;\n lightCpiAccountsStartIndex: number;\n};\n\nexport type ProofArgsArgs = {\n proof: OptionOrNullable<CompressedProofArgs>;\n lightCpiAccountsStartIndex: number;\n};\n\nexport function getProofArgsEncoder(): Encoder<ProofArgsArgs> {\n return getStructEncoder([\n [\"proof\", getOptionEncoder(getCompressedProofEncoder())],\n [\"lightCpiAccountsStartIndex\", getU8Encoder()],\n ]);\n}\n\nexport function getProofArgsDecoder(): Decoder<ProofArgs> {\n return getStructDecoder([\n [\"proof\", getOptionDecoder(getCompressedProofDecoder())],\n [\"lightCpiAccountsStartIndex\", getU8Decoder()],\n ]);\n}\n\nexport function getProofArgsCodec(): Codec<ProofArgsArgs, ProofArgs> {\n return combineCodec(getProofArgsEncoder(), getProofArgsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\nimport {\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n type MemberKey,\n type MemberKeyArgs,\n} from \".\";\n\nexport type RemoveMemberArgs = { memberKey: MemberKey };\n\nexport type RemoveMemberArgsArgs = { memberKey: MemberKeyArgs };\n\nexport function getRemoveMemberArgsEncoder(): FixedSizeEncoder<RemoveMemberArgsArgs> {\n return getStructEncoder([[\"memberKey\", getMemberKeyEncoder()]]);\n}\n\nexport function getRemoveMemberArgsDecoder(): FixedSizeDecoder<RemoveMemberArgs> {\n return getStructDecoder([[\"memberKey\", getMemberKeyDecoder()]]);\n}\n\nexport function getRemoveMemberArgsCodec(): FixedSizeCodec<\n RemoveMemberArgsArgs,\n RemoveMemberArgs\n> {\n return combineCodec(\n getRemoveMemberArgsEncoder(),\n getRemoveMemberArgsDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/**\n * Rent function parameters,\n * used to calculate whether the account is compressible.\n */\nexport type RentConfig = {\n /** Base rent constant: rent = base_rent + num_bytes * lamports_per_byte_per_epoch */\n baseRent: number;\n compressionCost: number;\n lamportsPerBytePerEpoch: number;\n maxFundedEpochs: number;\n /**\n * Maximum lamports that can be charged per top-up operation.\n * Protects against griefing by accounts with high lamports_per_write.\n */\n maxTopUp: number;\n};\n\nexport type RentConfigArgs = RentConfig;\n\nexport function getRentConfigEncoder(): FixedSizeEncoder<RentConfigArgs> {\n return getStructEncoder([\n [\"baseRent\", getU16Encoder()],\n [\"compressionCost\", getU16Encoder()],\n [\"lamportsPerBytePerEpoch\", getU8Encoder()],\n [\"maxFundedEpochs\", getU8Encoder()],\n [\"maxTopUp\", getU16Encoder()],\n ]);\n}\n\nexport function getRentConfigDecoder(): FixedSizeDecoder<RentConfig> {\n return getStructDecoder([\n [\"baseRent\", getU16Decoder()],\n [\"compressionCost\", getU16Decoder()],\n [\"lamportsPerBytePerEpoch\", getU8Decoder()],\n [\"maxFundedEpochs\", getU8Decoder()],\n [\"maxTopUp\", getU16Decoder()],\n ]);\n}\n\nexport function getRentConfigCodec(): FixedSizeCodec<\n RentConfigArgs,\n RentConfig\n> {\n return combineCodec(getRentConfigEncoder(), getRentConfigDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getTupleDecoder,\n getTupleEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type Secp256r1Pubkey = readonly [ReadonlyUint8Array];\n\nexport type Secp256r1PubkeyArgs = Secp256r1Pubkey;\n\nexport function getSecp256r1PubkeyEncoder(): FixedSizeEncoder<Secp256r1PubkeyArgs> {\n return getTupleEncoder([fixEncoderSize(getBytesEncoder(), 33)]);\n}\n\nexport function getSecp256r1PubkeyDecoder(): FixedSizeDecoder<Secp256r1Pubkey> {\n return getTupleDecoder([fixDecoderSize(getBytesDecoder(), 33)]);\n}\n\nexport function getSecp256r1PubkeyCodec(): FixedSizeCodec<\n Secp256r1PubkeyArgs,\n Secp256r1Pubkey\n> {\n return combineCodec(getSecp256r1PubkeyEncoder(), getSecp256r1PubkeyDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type Secp256r1VerifyArgs = {\n signedMessageIndex: number;\n slotNumber: bigint;\n originIndex: number;\n crossOrigin: boolean;\n truncatedClientDataJson: ReadonlyUint8Array;\n clientAndDeviceHash: ReadonlyUint8Array;\n};\n\nexport type Secp256r1VerifyArgsArgs = {\n signedMessageIndex: number;\n slotNumber: number | bigint;\n originIndex: number;\n crossOrigin: boolean;\n truncatedClientDataJson: ReadonlyUint8Array;\n clientAndDeviceHash: ReadonlyUint8Array;\n};\n\nexport function getSecp256r1VerifyArgsEncoder(): Encoder<Secp256r1VerifyArgsArgs> {\n return getStructEncoder([\n [\"signedMessageIndex\", getU8Encoder()],\n [\"slotNumber\", getU64Encoder()],\n [\"originIndex\", getU8Encoder()],\n [\"crossOrigin\", getBooleanEncoder()],\n [\n \"truncatedClientDataJson\",\n addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n ],\n [\"clientAndDeviceHash\", fixEncoderSize(getBytesEncoder(), 32)],\n ]);\n}\n\nexport function getSecp256r1VerifyArgsDecoder(): Decoder<Secp256r1VerifyArgs> {\n return getStructDecoder([\n [\"signedMessageIndex\", getU8Decoder()],\n [\"slotNumber\", getU64Decoder()],\n [\"originIndex\", getU8Decoder()],\n [\"crossOrigin\", getBooleanDecoder()],\n [\n \"truncatedClientDataJson\",\n addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n ],\n [\"clientAndDeviceHash\", fixDecoderSize(getBytesDecoder(), 32)],\n ]);\n}\n\nexport function getSecp256r1VerifyArgsCodec(): Codec<\n Secp256r1VerifyArgsArgs,\n Secp256r1VerifyArgs\n> {\n return combineCodec(\n getSecp256r1VerifyArgsEncoder(),\n getSecp256r1VerifyArgsDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from \"gill\";\nimport {\n getSecp256r1VerifyArgsDecoder,\n getSecp256r1VerifyArgsEncoder,\n type Secp256r1VerifyArgs,\n type Secp256r1VerifyArgsArgs,\n} from \".\";\n\nexport type Secp256r1VerifyArgsWithDomainConfigIndex = {\n verifyArgs: Secp256r1VerifyArgs;\n domainConfigIndex: number;\n};\n\nexport type Secp256r1VerifyArgsWithDomainConfigIndexArgs = {\n verifyArgs: Secp256r1VerifyArgsArgs;\n domainConfigIndex: number;\n};\n\nexport function getSecp256r1VerifyArgsWithDomainConfigIndexEncoder(): Encoder<Secp256r1VerifyArgsWithDomainConfigIndexArgs> {\n return getStructEncoder([\n [\"verifyArgs\", getSecp256r1VerifyArgsEncoder()],\n [\"domainConfigIndex\", getU8Encoder()],\n ]);\n}\n\nexport function getSecp256r1VerifyArgsWithDomainConfigIndexDecoder(): Decoder<Secp256r1VerifyArgsWithDomainConfigIndex> {\n return getStructDecoder([\n [\"verifyArgs\", getSecp256r1VerifyArgsDecoder()],\n [\"domainConfigIndex\", getU8Decoder()],\n ]);\n}\n\nexport function getSecp256r1VerifyArgsWithDomainConfigIndexCodec(): Codec<\n Secp256r1VerifyArgsWithDomainConfigIndexArgs,\n Secp256r1VerifyArgsWithDomainConfigIndex\n> {\n return combineCodec(\n getSecp256r1VerifyArgsWithDomainConfigIndexEncoder(),\n getSecp256r1VerifyArgsWithDomainConfigIndexDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\nexport type SettingsIndexWithDelegateInfo = {\n index: bigint;\n isDelegate: boolean;\n};\n\nexport type SettingsIndexWithDelegateInfoArgs = {\n index: number | bigint;\n isDelegate: boolean;\n};\n\nexport function getSettingsIndexWithDelegateInfoEncoder(): FixedSizeEncoder<SettingsIndexWithDelegateInfoArgs> {\n return getStructEncoder([\n [\"index\", getU128Encoder()],\n [\"isDelegate\", getBooleanEncoder()],\n ]);\n}\n\nexport function getSettingsIndexWithDelegateInfoDecoder(): FixedSizeDecoder<SettingsIndexWithDelegateInfo> {\n return getStructDecoder([\n [\"index\", getU128Decoder()],\n [\"isDelegate\", getBooleanDecoder()],\n ]);\n}\n\nexport function getSettingsIndexWithDelegateInfoCodec(): FixedSizeCodec<\n SettingsIndexWithDelegateInfoArgs,\n SettingsIndexWithDelegateInfo\n> {\n return combineCodec(\n getSettingsIndexWithDelegateInfoEncoder(),\n getSettingsIndexWithDelegateInfoDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\nexport type SplInterfacePdaArgs = { index: number; restricted: boolean };\n\nexport type SplInterfacePdaArgsArgs = SplInterfacePdaArgs;\n\nexport function getSplInterfacePdaArgsEncoder(): FixedSizeEncoder<SplInterfacePdaArgsArgs> {\n return getStructEncoder([\n [\"index\", getU8Encoder()],\n [\"restricted\", getBooleanEncoder()],\n ]);\n}\n\nexport function getSplInterfacePdaArgsDecoder(): FixedSizeDecoder<SplInterfacePdaArgs> {\n return getStructDecoder([\n [\"index\", getU8Decoder()],\n [\"restricted\", getBooleanDecoder()],\n ]);\n}\n\nexport function getSplInterfacePdaArgsCodec(): FixedSizeCodec<\n SplInterfacePdaArgsArgs,\n SplInterfacePdaArgs\n> {\n return combineCodec(\n getSplInterfacePdaArgsEncoder(),\n getSplInterfacePdaArgsDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n getAdditionalMetadataDecoder,\n getAdditionalMetadataEncoder,\n type AdditionalMetadata,\n type AdditionalMetadataArgs,\n} from \".\";\n\n/** Used for onchain serialization */\nexport type TokenMetadata = {\n /**\n * The authority that can sign to update the metadata\n * None if zero\n */\n updateAuthority: Address;\n /**\n * The associated mint, used to counter spoofing to be sure that metadata\n * belongs to a particular mint\n */\n mint: Address;\n /** The longer name of the token */\n name: ReadonlyUint8Array;\n /** The shortened symbol for the token */\n symbol: ReadonlyUint8Array;\n /** The URI pointing to richer metadata */\n uri: ReadonlyUint8Array;\n /**\n * Any additional metadata about the token as key-value pairs. The program\n * must avoid storing the same key twice.\n */\n additionalMetadata: Array<AdditionalMetadata>;\n};\n\nexport type TokenMetadataArgs = {\n /**\n * The authority that can sign to update the metadata\n * None if zero\n */\n updateAuthority: Address;\n /**\n * The associated mint, used to counter spoofing to be sure that metadata\n * belongs to a particular mint\n */\n mint: Address;\n /** The longer name of the token */\n name: ReadonlyUint8Array;\n /** The shortened symbol for the token */\n symbol: ReadonlyUint8Array;\n /** The URI pointing to richer metadata */\n uri: ReadonlyUint8Array;\n /**\n * Any additional metadata about the token as key-value pairs. The program\n * must avoid storing the same key twice.\n */\n additionalMetadata: Array<AdditionalMetadataArgs>;\n};\n\nexport function getTokenMetadataEncoder(): Encoder<TokenMetadataArgs> {\n return getStructEncoder([\n [\"updateAuthority\", getAddressEncoder()],\n [\"mint\", getAddressEncoder()],\n [\"name\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n [\"symbol\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n [\"uri\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n [\"additionalMetadata\", getArrayEncoder(getAdditionalMetadataEncoder())],\n ]);\n}\n\nexport function getTokenMetadataDecoder(): Decoder<TokenMetadata> {\n return getStructDecoder([\n [\"updateAuthority\", getAddressDecoder()],\n [\"mint\", getAddressDecoder()],\n [\"name\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n [\"symbol\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n [\"uri\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n [\"additionalMetadata\", getArrayDecoder(getAdditionalMetadataDecoder())],\n ]);\n}\n\nexport function getTokenMetadataCodec(): Codec<\n TokenMetadataArgs,\n TokenMetadata\n> {\n return combineCodec(getTokenMetadataEncoder(), getTokenMetadataDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type TransactionMessageAddressTableLookup = {\n lookupTableAddressIndex: number;\n writableIndexes: ReadonlyUint8Array;\n readonlyIndexes: ReadonlyUint8Array;\n};\n\nexport type TransactionMessageAddressTableLookupArgs =\n TransactionMessageAddressTableLookup;\n\nexport function getTransactionMessageAddressTableLookupEncoder(): Encoder<TransactionMessageAddressTableLookupArgs> {\n return getStructEncoder([\n [\"lookupTableAddressIndex\", getU8Encoder()],\n [\n \"writableIndexes\",\n addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n ],\n [\n \"readonlyIndexes\",\n addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n ],\n ]);\n}\n\nexport function getTransactionMessageAddressTableLookupDecoder(): Decoder<TransactionMessageAddressTableLookup> {\n return getStructDecoder([\n [\"lookupTableAddressIndex\", getU8Decoder()],\n [\n \"writableIndexes\",\n addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n ],\n [\n \"readonlyIndexes\",\n addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n ],\n ]);\n}\n\nexport function getTransactionMessageAddressTableLookupCodec(): Codec<\n TransactionMessageAddressTableLookupArgs,\n TransactionMessageAddressTableLookup\n> {\n return combineCodec(\n getTransactionMessageAddressTableLookupEncoder(),\n getTransactionMessageAddressTableLookupDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type GetDiscriminatedUnionVariant,\n type GetDiscriminatedUnionVariantContent,\n} from \"gill\";\nimport {\n getSecp256r1VerifyArgsWithDomainConfigIndexDecoder,\n getSecp256r1VerifyArgsWithDomainConfigIndexEncoder,\n type Secp256r1VerifyArgsWithDomainConfigIndex,\n type Secp256r1VerifyArgsWithDomainConfigIndexArgs,\n} from \".\";\n\nexport type TransactionSyncSigners =\n | { __kind: \"Ed25519\"; fields: readonly [number] }\n | {\n __kind: \"Secp256r1\";\n fields: readonly [Secp256r1VerifyArgsWithDomainConfigIndex];\n };\n\nexport type TransactionSyncSignersArgs =\n | { __kind: \"Ed25519\"; fields: readonly [number] }\n | {\n __kind: \"Secp256r1\";\n fields: readonly [Secp256r1VerifyArgsWithDomainConfigIndexArgs];\n };\n\nexport function getTransactionSyncSignersEncoder(): Encoder<TransactionSyncSignersArgs> {\n return getDiscriminatedUnionEncoder([\n [\n \"Ed25519\",\n getStructEncoder([[\"fields\", getTupleEncoder([getU8Encoder()])]]),\n ],\n [\n \"Secp256r1\",\n getStructEncoder([\n [\n \"fields\",\n getTupleEncoder([\n getSecp256r1VerifyArgsWithDomainConfigIndexEncoder(),\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getTransactionSyncSignersDecoder(): Decoder<TransactionSyncSigners> {\n return getDiscriminatedUnionDecoder([\n [\n \"Ed25519\",\n getStructDecoder([[\"fields\", getTupleDecoder([getU8Decoder()])]]),\n ],\n [\n \"Secp256r1\",\n getStructDecoder([\n [\n \"fields\",\n getTupleDecoder([\n getSecp256r1VerifyArgsWithDomainConfigIndexDecoder(),\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getTransactionSyncSignersCodec(): Codec<\n TransactionSyncSignersArgs,\n TransactionSyncSigners\n> {\n return combineCodec(\n getTransactionSyncSignersEncoder(),\n getTransactionSyncSignersDecoder(),\n );\n}\n\n// Data Enum Helpers.\nexport function transactionSyncSigners(\n kind: \"Ed25519\",\n data: GetDiscriminatedUnionVariantContent<\n TransactionSyncSignersArgs,\n \"__kind\",\n \"Ed25519\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n TransactionSyncSignersArgs,\n \"__kind\",\n \"Ed25519\"\n>;\nexport function transactionSyncSigners(\n kind: \"Secp256r1\",\n data: GetDiscriminatedUnionVariantContent<\n TransactionSyncSignersArgs,\n \"__kind\",\n \"Secp256r1\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n TransactionSyncSignersArgs,\n \"__kind\",\n \"Secp256r1\"\n>;\nexport function transactionSyncSigners<\n K extends TransactionSyncSignersArgs[\"__kind\"],\n Data,\n>(kind: K, data?: Data) {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isTransactionSyncSigners<\n K extends TransactionSyncSigners[\"__kind\"],\n>(\n kind: K,\n value: TransactionSyncSigners,\n): value is TransactionSyncSigners & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/**\n * Transfer fee extension for Token accounts.\n * Stores withheld fees that accumulate during transfers.\n * Mirrors SPL Token-2022's TransferFeeAmount extension.\n */\nexport type TransferFeeAccountExtension = {\n /** Amount withheld during transfers, to be harvested on decompress */\n withheldAmount: bigint;\n};\n\nexport type TransferFeeAccountExtensionArgs = {\n /** Amount withheld during transfers, to be harvested on decompress */\n withheldAmount: number | bigint;\n};\n\nexport function getTransferFeeAccountExtensionEncoder(): FixedSizeEncoder<TransferFeeAccountExtensionArgs> {\n return getStructEncoder([[\"withheldAmount\", getU64Encoder()]]);\n}\n\nexport function getTransferFeeAccountExtensionDecoder(): FixedSizeDecoder<TransferFeeAccountExtension> {\n return getStructDecoder([[\"withheldAmount\", getU64Decoder()]]);\n}\n\nexport function getTransferFeeAccountExtensionCodec(): FixedSizeCodec<\n TransferFeeAccountExtensionArgs,\n TransferFeeAccountExtension\n> {\n return combineCodec(\n getTransferFeeAccountExtensionEncoder(),\n getTransferFeeAccountExtensionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/**\n * Extension indicating the account belongs to a mint with transfer hook.\n * Contains a `transferring` flag used as a reentrancy guard during hook CPI.\n * Consistent with SPL Token-2022 TransferHookAccount layout.\n */\nexport type TransferHookAccountExtension = {\n /**\n * Flag to indicate that the account is in the middle of a transfer.\n * Used as reentrancy guard when transfer hook program is called via CPI.\n * Always false at rest since we only support nil program_id (no hook invoked).\n */\n transferring: number;\n};\n\nexport type TransferHookAccountExtensionArgs = TransferHookAccountExtension;\n\nexport function getTransferHookAccountExtensionEncoder(): FixedSizeEncoder<TransferHookAccountExtensionArgs> {\n return getStructEncoder([[\"transferring\", getU8Encoder()]]);\n}\n\nexport function getTransferHookAccountExtensionDecoder(): FixedSizeDecoder<TransferHookAccountExtension> {\n return getStructDecoder([[\"transferring\", getU8Decoder()]]);\n}\n\nexport function getTransferHookAccountExtensionCodec(): FixedSizeCodec<\n TransferHookAccountExtensionArgs,\n TransferHookAccountExtension\n> {\n return combineCodec(\n getTransferHookAccountExtensionEncoder(),\n getTransferHookAccountExtensionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\nexport enum Transports {\n Ble,\n Cable,\n Hybrid,\n Internal,\n Nfc,\n SmartCard,\n Usb,\n}\n\nexport type TransportsArgs = Transports;\n\nexport function getTransportsEncoder(): FixedSizeEncoder<TransportsArgs> {\n return getEnumEncoder(Transports);\n}\n\nexport function getTransportsDecoder(): FixedSizeDecoder<Transports> {\n return getEnumDecoder(Transports);\n}\n\nexport function getTransportsCodec(): FixedSizeCodec<\n TransportsArgs,\n Transports\n> {\n return combineCodec(getTransportsEncoder(), getTransportsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\nexport enum UserRole {\n TransactionManager,\n Administrator,\n PermanentMember,\n Member,\n}\n\nexport type UserRoleArgs = UserRole;\n\nexport function getUserRoleEncoder(): FixedSizeEncoder<UserRoleArgs> {\n return getEnumEncoder(UserRole);\n}\n\nexport function getUserRoleDecoder(): FixedSizeDecoder<UserRole> {\n return getEnumDecoder(UserRole);\n}\n\nexport function getUserRoleCodec(): FixedSizeCodec<UserRoleArgs, UserRole> {\n return combineCodec(getUserRoleEncoder(), getUserRoleDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n getMemberDecoder,\n getMemberEncoder,\n type Member,\n type MemberArgs,\n} from \"../types\";\n\nexport const SETTINGS_DISCRIMINATOR = new Uint8Array([\n 223, 179, 163, 190, 177, 224, 67, 173,\n]);\n\nexport function getSettingsDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(SETTINGS_DISCRIMINATOR);\n}\n\nexport type Settings = {\n discriminator: ReadonlyUint8Array;\n index: bigint;\n members: Array<Member>;\n threshold: number;\n multiWalletBump: number;\n bump: number;\n padding: number;\n latestSlotNumber: bigint;\n};\n\nexport type SettingsArgs = {\n index: number | bigint;\n members: Array<MemberArgs>;\n threshold: number;\n multiWalletBump: number;\n bump: number;\n padding: number;\n latestSlotNumber: number | bigint;\n};\n\nexport function getSettingsEncoder(): Encoder<SettingsArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"index\", getU128Encoder()],\n [\"members\", getArrayEncoder(getMemberEncoder())],\n [\"threshold\", getU8Encoder()],\n [\"multiWalletBump\", getU8Encoder()],\n [\"bump\", getU8Encoder()],\n [\"padding\", getU8Encoder()],\n [\"latestSlotNumber\", getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: SETTINGS_DISCRIMINATOR }),\n );\n}\n\nexport function getSettingsDecoder(): Decoder<Settings> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"index\", getU128Decoder()],\n [\"members\", getArrayDecoder(getMemberDecoder())],\n [\"threshold\", getU8Decoder()],\n [\"multiWalletBump\", getU8Decoder()],\n [\"bump\", getU8Decoder()],\n [\"padding\", getU8Decoder()],\n [\"latestSlotNumber\", getU64Decoder()],\n ]);\n}\n\nexport function getSettingsCodec(): Codec<SettingsArgs, Settings> {\n return combineCodec(getSettingsEncoder(), getSettingsDecoder());\n}\n\nexport function decodeSettings<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<Settings, TAddress>;\nexport function decodeSettings<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Settings, TAddress>;\nexport function decodeSettings<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Settings, TAddress> | MaybeAccount<Settings, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getSettingsDecoder(),\n );\n}\n\nexport async function fetchSettings<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<Settings, TAddress>> {\n const maybeAccount = await fetchMaybeSettings(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeSettings<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<Settings, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeSettings(maybeAccount);\n}\n\nexport async function fetchAllSettings(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<Settings>[]> {\n const maybeAccounts = await fetchAllMaybeSettings(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeSettings(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Settings>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeSettings(maybeAccount));\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n getExpectedSignerDecoder,\n getExpectedSignerEncoder,\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n type ExpectedSigner,\n type ExpectedSignerArgs,\n type MemberKey,\n type MemberKeyArgs,\n} from \"../types\";\n\nexport const TRANSACTION_BUFFER_DISCRIMINATOR = new Uint8Array([\n 90, 36, 35, 219, 93, 225, 110, 96,\n]);\n\nexport function getTransactionBufferDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n TRANSACTION_BUFFER_DISCRIMINATOR,\n );\n}\n\nexport type TransactionBuffer = {\n discriminator: ReadonlyUint8Array;\n /** The multisig settings this belongs to. */\n multiWalletSettings: Address;\n /** The bump for the multi_wallet */\n multiWalletBump: number;\n /** Flag to allow transaction to be executed */\n canExecute: boolean;\n /** Flag to preauthorize execution before sufficient threshold is met */\n preauthorizeExecution: boolean;\n validTill: bigint;\n /** Payer for the transaction buffer */\n payer: Address;\n /** transaction bump */\n bump: number;\n /** Index to seed address derivation */\n bufferIndex: number;\n /** Hash of the final assembled transaction message. */\n finalBufferHash: ReadonlyUint8Array;\n /** The size of the final assembled transaction message. */\n finalBufferSize: number;\n /** Member of the Multisig who created the TransactionBuffer. */\n creator: MemberKey;\n /** Member of the Multisig who executed the TransactionBuffer. */\n executor: MemberKey;\n /** Buffer hash for all the buffer extend instruction */\n bufferExtendHashes: Array<ReadonlyUint8Array>;\n /** Members that voted for this transaction */\n voters: Array<MemberKey>;\n /** All Signers that are expected to initiate / vote / execute this transaction (used for off-chain inspection by the transaction manager) */\n expectedSigners: Array<ExpectedSigner>;\n /** The buffer of the transaction message. */\n buffer: ReadonlyUint8Array;\n};\n\nexport type TransactionBufferArgs = {\n /** The multisig settings this belongs to. */\n multiWalletSettings: Address;\n /** The bump for the multi_wallet */\n multiWalletBump: number;\n /** Flag to allow transaction to be executed */\n canExecute: boolean;\n /** Flag to preauthorize execution before sufficient threshold is met */\n preauthorizeExecution: boolean;\n validTill: number | bigint;\n /** Payer for the transaction buffer */\n payer: Address;\n /** transaction bump */\n bump: number;\n /** Index to seed address derivation */\n bufferIndex: number;\n /** Hash of the final assembled transaction message. */\n finalBufferHash: ReadonlyUint8Array;\n /** The size of the final assembled transaction message. */\n finalBufferSize: number;\n /** Member of the Multisig who created the TransactionBuffer. */\n creator: MemberKeyArgs;\n /** Member of the Multisig who executed the TransactionBuffer. */\n executor: MemberKeyArgs;\n /** Buffer hash for all the buffer extend instruction */\n bufferExtendHashes: Array<ReadonlyUint8Array>;\n /** Members that voted for this transaction */\n voters: Array<MemberKeyArgs>;\n /** All Signers that are expected to initiate / vote / execute this transaction (used for off-chain inspection by the transaction manager) */\n expectedSigners: Array<ExpectedSignerArgs>;\n /** The buffer of the transaction message. */\n buffer: ReadonlyUint8Array;\n};\n\nexport function getTransactionBufferEncoder(): Encoder<TransactionBufferArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"multiWalletSettings\", getAddressEncoder()],\n [\"multiWalletBump\", getU8Encoder()],\n [\"canExecute\", getBooleanEncoder()],\n [\"preauthorizeExecution\", getBooleanEncoder()],\n [\"validTill\", getU64Encoder()],\n [\"payer\", getAddressEncoder()],\n [\"bump\", getU8Encoder()],\n [\"bufferIndex\", getU8Encoder()],\n [\"finalBufferHash\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"finalBufferSize\", getU16Encoder()],\n [\"creator\", getMemberKeyEncoder()],\n [\"executor\", getMemberKeyEncoder()],\n [\n \"bufferExtendHashes\",\n getArrayEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n ],\n [\"voters\", getArrayEncoder(getMemberKeyEncoder())],\n [\"expectedSigners\", getArrayEncoder(getExpectedSignerEncoder())],\n [\"buffer\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n ]),\n (value) => ({ ...value, discriminator: TRANSACTION_BUFFER_DISCRIMINATOR }),\n );\n}\n\nexport function getTransactionBufferDecoder(): Decoder<TransactionBuffer> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"multiWalletSettings\", getAddressDecoder()],\n [\"multiWalletBump\", getU8Decoder()],\n [\"canExecute\", getBooleanDecoder()],\n [\"preauthorizeExecution\", getBooleanDecoder()],\n [\"validTill\", getU64Decoder()],\n [\"payer\", getAddressDecoder()],\n [\"bump\", getU8Decoder()],\n [\"bufferIndex\", getU8Decoder()],\n [\"finalBufferHash\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"finalBufferSize\", getU16Decoder()],\n [\"creator\", getMemberKeyDecoder()],\n [\"executor\", getMemberKeyDecoder()],\n [\n \"bufferExtendHashes\",\n getArrayDecoder(fixDecoderSize(getBytesDecoder(), 32)),\n ],\n [\"voters\", getArrayDecoder(getMemberKeyDecoder())],\n [\"expectedSigners\", getArrayDecoder(getExpectedSignerDecoder())],\n [\"buffer\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n ]);\n}\n\nexport function getTransactionBufferCodec(): Codec<\n TransactionBufferArgs,\n TransactionBuffer\n> {\n return combineCodec(\n getTransactionBufferEncoder(),\n getTransactionBufferDecoder(),\n );\n}\n\nexport function decodeTransactionBuffer<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<TransactionBuffer, TAddress>;\nexport function decodeTransactionBuffer<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<TransactionBuffer, TAddress>;\nexport function decodeTransactionBuffer<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n):\n | Account<TransactionBuffer, TAddress>\n | MaybeAccount<TransactionBuffer, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getTransactionBufferDecoder(),\n );\n}\n\nexport async function fetchTransactionBuffer<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<TransactionBuffer, TAddress>> {\n const maybeAccount = await fetchMaybeTransactionBuffer(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeTransactionBuffer<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<TransactionBuffer, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeTransactionBuffer(maybeAccount);\n}\n\nexport async function fetchAllTransactionBuffer(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<TransactionBuffer>[]> {\n const maybeAccounts = await fetchAllMaybeTransactionBuffer(\n rpc,\n addresses,\n config,\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeTransactionBuffer(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<TransactionBuffer>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeTransactionBuffer(maybeAccount),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type Option,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n getSettingsIndexWithDelegateInfoDecoder,\n getSettingsIndexWithDelegateInfoEncoder,\n getTransportsDecoder,\n getTransportsEncoder,\n getUserRoleDecoder,\n getUserRoleEncoder,\n type MemberKey,\n type MemberKeyArgs,\n type SettingsIndexWithDelegateInfo,\n type SettingsIndexWithDelegateInfoArgs,\n type Transports,\n type TransportsArgs,\n type UserRole,\n type UserRoleArgs,\n} from \"../types\";\n\nexport const USER_DISCRIMINATOR = new Uint8Array([\n 159, 117, 95, 227, 239, 151, 58, 236,\n]);\n\nexport function getUserDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(USER_DISCRIMINATOR);\n}\n\nexport type User = {\n discriminator: ReadonlyUint8Array;\n domainConfig: Option<Address>;\n member: MemberKey;\n credentialId: Option<ReadonlyUint8Array>;\n transports: Option<Array<Transports>>;\n wallets: Array<SettingsIndexWithDelegateInfo>;\n role: UserRole;\n transactionManagerUrl: Option<string>;\n bump: number;\n};\n\nexport type UserArgs = {\n domainConfig: OptionOrNullable<Address>;\n member: MemberKeyArgs;\n credentialId: OptionOrNullable<ReadonlyUint8Array>;\n transports: OptionOrNullable<Array<TransportsArgs>>;\n wallets: Array<SettingsIndexWithDelegateInfoArgs>;\n role: UserRoleArgs;\n transactionManagerUrl: OptionOrNullable<string>;\n bump: number;\n};\n\nexport function getUserEncoder(): Encoder<UserArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"domainConfig\", getOptionEncoder(getAddressEncoder())],\n [\"member\", getMemberKeyEncoder()],\n [\n \"credentialId\",\n getOptionEncoder(\n addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n ),\n ],\n [\"transports\", getOptionEncoder(getArrayEncoder(getTransportsEncoder()))],\n [\"wallets\", getArrayEncoder(getSettingsIndexWithDelegateInfoEncoder())],\n [\"role\", getUserRoleEncoder()],\n [\n \"transactionManagerUrl\",\n getOptionEncoder(\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ),\n ],\n [\"bump\", getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: USER_DISCRIMINATOR }),\n );\n}\n\nexport function getUserDecoder(): Decoder<User> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"domainConfig\", getOptionDecoder(getAddressDecoder())],\n [\"member\", getMemberKeyDecoder()],\n [\n \"credentialId\",\n getOptionDecoder(\n addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n ),\n ],\n [\"transports\", getOptionDecoder(getArrayDecoder(getTransportsDecoder()))],\n [\"wallets\", getArrayDecoder(getSettingsIndexWithDelegateInfoDecoder())],\n [\"role\", getUserRoleDecoder()],\n [\n \"transactionManagerUrl\",\n getOptionDecoder(addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())),\n ],\n [\"bump\", getU8Decoder()],\n ]);\n}\n\nexport function getUserCodec(): Codec<UserArgs, User> {\n return combineCodec(getUserEncoder(), getUserDecoder());\n}\n\nexport function decodeUser<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<User, TAddress>;\nexport function decodeUser<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<User, TAddress>;\nexport function decodeUser<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<User, TAddress> | MaybeAccount<User, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getUserDecoder(),\n );\n}\n\nexport async function fetchUser<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<User, TAddress>> {\n const maybeAccount = await fetchMaybeUser(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeUser<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<User, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeUser(maybeAccount);\n}\n\nexport async function fetchAllUser(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<User>[]> {\n const maybeAccounts = await fetchAllMaybeUser(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeUser(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<User>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeUser(maybeAccount));\n}\n","import {\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type TransactionSigner,\n} from \"gill\";\n\nexport function parseRemainingAccounts({\n args,\n}: {\n programAddress: Address;\n accounts?: any;\n args?: {\n remainingAccounts: {\n address: Address;\n role: number;\n signer?: TransactionSigner;\n }[];\n };\n}): AccountMeta[] {\n if (!args) {\n return [];\n }\n const { remainingAccounts } = args;\n return remainingAccounts.map((x) =>\n x.signer\n ? ({\n address: x.address,\n role: x.role,\n signer: x.signer,\n } as AccountSignerMeta)\n : ({ address: x.address, role: x.role } as AccountMeta),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n isProgramDerivedAddress,\n isTransactionSigner as kitIsTransactionSigner,\n upgradeRoleToSigner,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type ProgramDerivedAddress,\n type TransactionSigner,\n} from \"gill\";\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n if (value === null || value === undefined) {\n throw new Error(\"Expected a value but received null or undefined.\");\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined,\n): Address<T> {\n if (!value) {\n throw new Error(\"Expected a Address.\");\n }\n if (typeof value === \"object\" && \"address\" in value) {\n return value.address;\n }\n if (Array.isArray(value)) {\n return value[0] as Address<T>;\n }\n return value as Address<T>;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined,\n): ProgramDerivedAddress<T> {\n if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n throw new Error(\"Expected a ProgramDerivedAddress.\");\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined,\n): TransactionSigner<T> {\n if (!value || !isTransactionSigner(value)) {\n throw new Error(\"Expected a TransactionSigner.\");\n }\n return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n T extends string = string,\n U extends\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null =\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null,\n> = {\n isWritable: boolean;\n value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type InstructionWithByteDelta = {\n byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(\n programAddress: Address,\n optionalAccountStrategy: \"omitted\" | \"programId\",\n) {\n return (\n account: ResolvedAccount,\n ): AccountMeta | AccountSignerMeta | undefined => {\n if (!account.value) {\n if (optionalAccountStrategy === \"omitted\") return;\n return Object.freeze({\n address: programAddress,\n role: AccountRole.READONLY,\n });\n }\n\n const writableRole = account.isWritable\n ? AccountRole.WRITABLE\n : AccountRole.READONLY;\n return Object.freeze({\n address: expectAddress(account.value),\n role: isTransactionSigner(account.value)\n ? upgradeRoleToSigner(writableRole)\n : writableRole,\n ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n });\n };\n}\n\nexport function isTransactionSigner<TAddress extends string = string>(\n value:\n | Address<TAddress>\n | ProgramDerivedAddress<TAddress>\n | TransactionSigner<TAddress>,\n): value is TransactionSigner<TAddress> {\n return (\n !!value &&\n typeof value === \"object\" &&\n \"address\" in value &&\n kitIsTransactionSigner(value)\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getConfigActionDecoder,\n getConfigActionEncoder,\n getTransactionSyncSignersDecoder,\n getTransactionSyncSignersEncoder,\n type ConfigAction,\n type ConfigActionArgs,\n type TransactionSyncSigners,\n type TransactionSyncSignersArgs,\n} from \"../types\";\n\nexport const CHANGE_CONFIG_DISCRIMINATOR = new Uint8Array([8]);\n\nexport function getChangeConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n CHANGE_CONFIG_DISCRIMINATOR,\n );\n}\n\nexport type ChangeConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ChangeConfigInstructionData = {\n discriminator: ReadonlyUint8Array;\n configActions: Array<ConfigAction>;\n signers: Array<TransactionSyncSigners>;\n};\n\nexport type ChangeConfigInstructionDataArgs = {\n configActions: Array<ConfigActionArgs>;\n signers: Array<TransactionSyncSignersArgs>;\n};\n\nexport function getChangeConfigInstructionDataEncoder(): Encoder<ChangeConfigInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"configActions\", getArrayEncoder(getConfigActionEncoder())],\n [\"signers\", getArrayEncoder(getTransactionSyncSignersEncoder())],\n ]),\n (value) => ({ ...value, discriminator: CHANGE_CONFIG_DISCRIMINATOR }),\n );\n}\n\nexport function getChangeConfigInstructionDataDecoder(): Decoder<ChangeConfigInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"configActions\", getArrayDecoder(getConfigActionDecoder())],\n [\"signers\", getArrayDecoder(getTransactionSyncSignersDecoder())],\n ]);\n}\n\nexport function getChangeConfigInstructionDataCodec(): Codec<\n ChangeConfigInstructionDataArgs,\n ChangeConfigInstructionData\n> {\n return combineCodec(\n getChangeConfigInstructionDataEncoder(),\n getChangeConfigInstructionDataDecoder(),\n );\n}\n\nexport type ChangeConfigInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type ChangeConfigInput<\n TAccountSettings extends string = string,\n TAccountPayer extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n payer: TransactionSigner<TAccountPayer>;\n systemProgram?: Address<TAccountSystemProgram>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n configActions: ChangeConfigInstructionDataArgs[\"configActions\"];\n signers: ChangeConfigInstructionDataArgs[\"signers\"];\n remainingAccounts: ChangeConfigInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getChangeConfigInstruction<\n TAccountSettings extends string,\n TAccountPayer extends string,\n TAccountSystemProgram extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: ChangeConfigInput<\n TAccountSettings,\n TAccountPayer,\n TAccountSystemProgram,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >,\n config?: { programAddress?: TProgramAddress },\n): ChangeConfigInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountSystemProgram,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n ...remainingAccounts,\n ],\n data: getChangeConfigInstructionDataEncoder().encode(\n args as ChangeConfigInstructionDataArgs,\n ),\n programAddress,\n } as ChangeConfigInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountSystemProgram,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >);\n}\n\nexport type ParsedChangeConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n payer: TAccountMetas[1];\n systemProgram: TAccountMetas[2];\n slotHashSysvar?: TAccountMetas[3] | undefined;\n instructionsSysvar: TAccountMetas[4];\n };\n data: ChangeConfigInstructionData;\n};\n\nexport function parseChangeConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedChangeConfigInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n payer: getNextAccount(),\n systemProgram: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextAccount(),\n },\n data: getChangeConfigInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const CREATE_DOMAIN_CONFIG_DISCRIMINATOR = new Uint8Array([0]);\n\nexport function getCreateDomainConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n CREATE_DOMAIN_CONFIG_DISCRIMINATOR,\n );\n}\n\nexport type CreateDomainConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountUserAccount extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountDomainConfig extends string\n ? WritableAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountUserAccount extends string\n ? WritableAccount<TAccountUserAccount>\n : TAccountUserAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateDomainConfigInstructionData = {\n discriminator: ReadonlyUint8Array;\n rpId: string;\n origins: Array<string>;\n};\n\nexport type CreateDomainConfigInstructionDataArgs = {\n rpId: string;\n origins: Array<string>;\n};\n\nexport function getCreateDomainConfigInstructionDataEncoder(): Encoder<CreateDomainConfigInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"rpId\", addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n [\n \"origins\",\n getArrayEncoder(\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: CREATE_DOMAIN_CONFIG_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getCreateDomainConfigInstructionDataDecoder(): Decoder<CreateDomainConfigInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"rpId\", addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n [\n \"origins\",\n getArrayDecoder(addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())),\n ],\n ]);\n}\n\nexport function getCreateDomainConfigInstructionDataCodec(): Codec<\n CreateDomainConfigInstructionDataArgs,\n CreateDomainConfigInstructionData\n> {\n return combineCodec(\n getCreateDomainConfigInstructionDataEncoder(),\n getCreateDomainConfigInstructionDataDecoder(),\n );\n}\n\nexport type CreateDomainConfigInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type CreateDomainConfigAsyncInput<\n TAccountDomainConfig extends string = string,\n TAccountPayer extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountUserAccount extends string = string,\n> = {\n domainConfig: Address<TAccountDomainConfig>;\n payer: TransactionSigner<TAccountPayer>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n userAccount?: Address<TAccountUserAccount>;\n rpId: CreateDomainConfigInstructionDataArgs[\"rpId\"];\n origins: CreateDomainConfigInstructionDataArgs[\"origins\"];\n remainingAccounts: CreateDomainConfigInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getCreateDomainConfigInstructionAsync<\n TAccountDomainConfig extends string,\n TAccountPayer extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TAccountUserAccount extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateDomainConfigAsyncInput<\n TAccountDomainConfig,\n TAccountPayer,\n TAccountAuthority,\n TAccountSystemProgram,\n TAccountUserAccount\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n CreateDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountPayer,\n TAccountAuthority,\n TAccountSystemProgram,\n TAccountUserAccount\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n domainConfig: { value: input.domainConfig ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.userAccount.value) {\n accounts.userAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([117, 115, 101, 114])),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\n ],\n });\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.userAccount),\n ...remainingAccounts,\n ],\n data: getCreateDomainConfigInstructionDataEncoder().encode(\n args as CreateDomainConfigInstructionDataArgs,\n ),\n programAddress,\n } as CreateDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountPayer,\n TAccountAuthority,\n TAccountSystemProgram,\n TAccountUserAccount\n >);\n}\n\nexport type CreateDomainConfigInput<\n TAccountDomainConfig extends string = string,\n TAccountPayer extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountUserAccount extends string = string,\n> = {\n domainConfig: Address<TAccountDomainConfig>;\n payer: TransactionSigner<TAccountPayer>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n userAccount: Address<TAccountUserAccount>;\n rpId: CreateDomainConfigInstructionDataArgs[\"rpId\"];\n origins: CreateDomainConfigInstructionDataArgs[\"origins\"];\n remainingAccounts: CreateDomainConfigInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getCreateDomainConfigInstruction<\n TAccountDomainConfig extends string,\n TAccountPayer extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TAccountUserAccount extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateDomainConfigInput<\n TAccountDomainConfig,\n TAccountPayer,\n TAccountAuthority,\n TAccountSystemProgram,\n TAccountUserAccount\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountPayer,\n TAccountAuthority,\n TAccountSystemProgram,\n TAccountUserAccount\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n domainConfig: { value: input.domainConfig ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.userAccount),\n ...remainingAccounts,\n ],\n data: getCreateDomainConfigInstructionDataEncoder().encode(\n args as CreateDomainConfigInstructionDataArgs,\n ),\n programAddress,\n } as CreateDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountPayer,\n TAccountAuthority,\n TAccountSystemProgram,\n TAccountUserAccount\n >);\n}\n\nexport type ParsedCreateDomainConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n domainConfig: TAccountMetas[0];\n payer: TAccountMetas[1];\n authority: TAccountMetas[2];\n systemProgram: TAccountMetas[3];\n userAccount: TAccountMetas[4];\n };\n data: CreateDomainConfigInstructionData;\n};\n\nexport function parseCreateDomainConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateDomainConfigInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n domainConfig: getNextAccount(),\n payer: getNextAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n userAccount: getNextAccount(),\n },\n data: getCreateDomainConfigInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getSecp256r1PubkeyDecoder,\n getSecp256r1PubkeyEncoder,\n getTransportsDecoder,\n getTransportsEncoder,\n getUserRoleDecoder,\n getUserRoleEncoder,\n type Secp256r1Pubkey,\n type Secp256r1PubkeyArgs,\n type Transports,\n type TransportsArgs,\n type UserRole,\n type UserRoleArgs,\n} from \"../types\";\n\nexport const CREATE_DOMAIN_USER_ACCOUNT_DISCRIMINATOR = new Uint8Array([4]);\n\nexport function getCreateDomainUserAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n CREATE_DOMAIN_USER_ACCOUNT_DISCRIMINATOR,\n );\n}\n\nexport type CreateDomainUserAccountInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountUserAccount extends string | AccountMeta<string> = string,\n TAccountTransactionManagerAccount extends\n | string\n | AccountMeta<string> = string,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountDomainConfig extends string\n ? ReadonlyAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountUserAccount extends string\n ? WritableAccount<TAccountUserAccount>\n : TAccountUserAccount,\n TAccountTransactionManagerAccount extends string\n ? ReadonlyAccount<TAccountTransactionManagerAccount>\n : TAccountTransactionManagerAccount,\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateDomainUserAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n member: Secp256r1Pubkey;\n role: UserRole;\n credentialId: ReadonlyUint8Array;\n transports: Array<Transports>;\n};\n\nexport type CreateDomainUserAccountInstructionDataArgs = {\n member: Secp256r1PubkeyArgs;\n role: UserRoleArgs;\n credentialId: ReadonlyUint8Array;\n transports: Array<TransportsArgs>;\n};\n\nexport function getCreateDomainUserAccountInstructionDataEncoder(): Encoder<CreateDomainUserAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"member\", getSecp256r1PubkeyEncoder()],\n [\"role\", getUserRoleEncoder()],\n [\n \"credentialId\",\n addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n ],\n [\"transports\", getArrayEncoder(getTransportsEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: CREATE_DOMAIN_USER_ACCOUNT_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getCreateDomainUserAccountInstructionDataDecoder(): Decoder<CreateDomainUserAccountInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"member\", getSecp256r1PubkeyDecoder()],\n [\"role\", getUserRoleDecoder()],\n [\"credentialId\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n [\"transports\", getArrayDecoder(getTransportsDecoder())],\n ]);\n}\n\nexport function getCreateDomainUserAccountInstructionDataCodec(): Codec<\n CreateDomainUserAccountInstructionDataArgs,\n CreateDomainUserAccountInstructionData\n> {\n return combineCodec(\n getCreateDomainUserAccountInstructionDataEncoder(),\n getCreateDomainUserAccountInstructionDataDecoder(),\n );\n}\n\nexport type CreateDomainUserAccountInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type CreateDomainUserAccountInput<\n TAccountPayer extends string = string,\n TAccountDomainConfig extends string = string,\n TAccountAuthority extends string = string,\n TAccountUserAccount extends string = string,\n TAccountTransactionManagerAccount extends string = string,\n TAccountSettings extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n domainConfig: Address<TAccountDomainConfig>;\n authority: TransactionSigner<TAccountAuthority>;\n userAccount: Address<TAccountUserAccount>;\n transactionManagerAccount?: Address<TAccountTransactionManagerAccount>;\n settings?: Address<TAccountSettings>;\n systemProgram?: Address<TAccountSystemProgram>;\n member: CreateDomainUserAccountInstructionDataArgs[\"member\"];\n role: CreateDomainUserAccountInstructionDataArgs[\"role\"];\n credentialId: CreateDomainUserAccountInstructionDataArgs[\"credentialId\"];\n transports: CreateDomainUserAccountInstructionDataArgs[\"transports\"];\n remainingAccounts: CreateDomainUserAccountInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getCreateDomainUserAccountInstruction<\n TAccountPayer extends string,\n TAccountDomainConfig extends string,\n TAccountAuthority extends string,\n TAccountUserAccount extends string,\n TAccountTransactionManagerAccount extends string,\n TAccountSettings extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateDomainUserAccountInput<\n TAccountPayer,\n TAccountDomainConfig,\n TAccountAuthority,\n TAccountUserAccount,\n TAccountTransactionManagerAccount,\n TAccountSettings,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateDomainUserAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountAuthority,\n TAccountUserAccount,\n TAccountTransactionManagerAccount,\n TAccountSettings,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n domainConfig: { value: input.domainConfig ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n transactionManagerAccount: {\n value: input.transactionManagerAccount ?? null,\n isWritable: false,\n },\n settings: { value: input.settings ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.userAccount),\n getAccountMeta(accounts.transactionManagerAccount),\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.systemProgram),\n ...remainingAccounts,\n ],\n data: getCreateDomainUserAccountInstructionDataEncoder().encode(\n args as CreateDomainUserAccountInstructionDataArgs,\n ),\n programAddress,\n } as CreateDomainUserAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountAuthority,\n TAccountUserAccount,\n TAccountTransactionManagerAccount,\n TAccountSettings,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCreateDomainUserAccountInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n domainConfig: TAccountMetas[1];\n authority: TAccountMetas[2];\n userAccount: TAccountMetas[3];\n transactionManagerAccount?: TAccountMetas[4] | undefined;\n settings?: TAccountMetas[5] | undefined;\n systemProgram: TAccountMetas[6];\n };\n data: CreateDomainUserAccountInstructionData;\n};\n\nexport function parseCreateDomainUserAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateDomainUserAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n domainConfig: getNextAccount(),\n authority: getNextAccount(),\n userAccount: getNextAccount(),\n transactionManagerAccount: getNextOptionalAccount(),\n settings: getNextOptionalAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCreateDomainUserAccountInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\n\nexport const CREATE_GLOBAL_COUNTER_DISCRIMINATOR = new Uint8Array([3]);\n\nexport function getCreateGlobalCounterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n CREATE_GLOBAL_COUNTER_DISCRIMINATOR,\n );\n}\n\nexport type CreateGlobalCounterInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountGlobalCounter extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountGlobalCounter extends string\n ? WritableAccount<TAccountGlobalCounter>\n : TAccountGlobalCounter,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateGlobalCounterInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type CreateGlobalCounterInstructionDataArgs = {};\n\nexport function getCreateGlobalCounterInstructionDataEncoder(): FixedSizeEncoder<CreateGlobalCounterInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([[\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)]]),\n (value) => ({\n ...value,\n discriminator: CREATE_GLOBAL_COUNTER_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getCreateGlobalCounterInstructionDataDecoder(): FixedSizeDecoder<CreateGlobalCounterInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n ]);\n}\n\nexport function getCreateGlobalCounterInstructionDataCodec(): FixedSizeCodec<\n CreateGlobalCounterInstructionDataArgs,\n CreateGlobalCounterInstructionData\n> {\n return combineCodec(\n getCreateGlobalCounterInstructionDataEncoder(),\n getCreateGlobalCounterInstructionDataDecoder(),\n );\n}\n\nexport type CreateGlobalCounterInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type CreateGlobalCounterAsyncInput<\n TAccountGlobalCounter extends string = string,\n TAccountPayer extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n globalCounter?: Address<TAccountGlobalCounter>;\n payer: TransactionSigner<TAccountPayer>;\n systemProgram?: Address<TAccountSystemProgram>;\n remainingAccounts: CreateGlobalCounterInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getCreateGlobalCounterInstructionAsync<\n TAccountGlobalCounter extends string,\n TAccountPayer extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateGlobalCounterAsyncInput<\n TAccountGlobalCounter,\n TAccountPayer,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n CreateGlobalCounterInstruction<\n TProgramAddress,\n TAccountGlobalCounter,\n TAccountPayer,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n globalCounter: { value: input.globalCounter ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts };\n\n // Resolve default values.\n if (!accounts.globalCounter.value) {\n accounts.globalCounter.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 103, 108, 111, 98, 97, 108, 95, 99, 111, 117, 110, 116, 101, 114,\n ]),\n ),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.globalCounter),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.systemProgram),\n ...remainingAccounts,\n ],\n data: getCreateGlobalCounterInstructionDataEncoder().encode({}),\n programAddress,\n } as CreateGlobalCounterInstruction<\n TProgramAddress,\n TAccountGlobalCounter,\n TAccountPayer,\n TAccountSystemProgram\n >);\n}\n\nexport type CreateGlobalCounterInput<\n TAccountGlobalCounter extends string = string,\n TAccountPayer extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n globalCounter: Address<TAccountGlobalCounter>;\n payer: TransactionSigner<TAccountPayer>;\n systemProgram?: Address<TAccountSystemProgram>;\n remainingAccounts: CreateGlobalCounterInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getCreateGlobalCounterInstruction<\n TAccountGlobalCounter extends string,\n TAccountPayer extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateGlobalCounterInput<\n TAccountGlobalCounter,\n TAccountPayer,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateGlobalCounterInstruction<\n TProgramAddress,\n TAccountGlobalCounter,\n TAccountPayer,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n globalCounter: { value: input.globalCounter ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.globalCounter),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.systemProgram),\n ...remainingAccounts,\n ],\n data: getCreateGlobalCounterInstructionDataEncoder().encode({}),\n programAddress,\n } as CreateGlobalCounterInstruction<\n TProgramAddress,\n TAccountGlobalCounter,\n TAccountPayer,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCreateGlobalCounterInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n globalCounter: TAccountMetas[0];\n payer: TAccountMetas[1];\n systemProgram: TAccountMetas[2];\n };\n data: CreateGlobalCounterInstructionData;\n};\n\nexport function parseCreateGlobalCounterInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateGlobalCounterInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n globalCounter: getNextAccount(),\n payer: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCreateGlobalCounterInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\nimport {\n getUserRoleDecoder,\n getUserRoleEncoder,\n type UserRole,\n type UserRoleArgs,\n} from \"../types\";\n\nexport const CREATE_USER_ACCOUNT_DISCRIMINATOR = new Uint8Array([5]);\n\nexport function getCreateUserAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n CREATE_USER_ACCOUNT_DISCRIMINATOR,\n );\n}\n\nexport type CreateUserAccountInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountMember extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountUserAccount extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountMember extends string\n ? ReadonlySignerAccount<TAccountMember> &\n AccountSignerMeta<TAccountMember>\n : TAccountMember,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountUserAccount extends string\n ? WritableAccount<TAccountUserAccount>\n : TAccountUserAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateUserAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n role: UserRole;\n transactionManagerUrl: Option<string>;\n};\n\nexport type CreateUserAccountInstructionDataArgs = {\n role: UserRoleArgs;\n transactionManagerUrl: OptionOrNullable<string>;\n};\n\nexport function getCreateUserAccountInstructionDataEncoder(): Encoder<CreateUserAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"role\", getUserRoleEncoder()],\n [\n \"transactionManagerUrl\",\n getOptionEncoder(\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ),\n ],\n ]),\n (value) => ({ ...value, discriminator: CREATE_USER_ACCOUNT_DISCRIMINATOR }),\n );\n}\n\nexport function getCreateUserAccountInstructionDataDecoder(): Decoder<CreateUserAccountInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"role\", getUserRoleDecoder()],\n [\n \"transactionManagerUrl\",\n getOptionDecoder(addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())),\n ],\n ]);\n}\n\nexport function getCreateUserAccountInstructionDataCodec(): Codec<\n CreateUserAccountInstructionDataArgs,\n CreateUserAccountInstructionData\n> {\n return combineCodec(\n getCreateUserAccountInstructionDataEncoder(),\n getCreateUserAccountInstructionDataDecoder(),\n );\n}\n\nexport type CreateUserAccountInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type CreateUserAccountAsyncInput<\n TAccountPayer extends string = string,\n TAccountMember extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountUserAccount extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n member: TransactionSigner<TAccountMember>;\n systemProgram?: Address<TAccountSystemProgram>;\n userAccount?: Address<TAccountUserAccount>;\n role: CreateUserAccountInstructionDataArgs[\"role\"];\n transactionManagerUrl: CreateUserAccountInstructionDataArgs[\"transactionManagerUrl\"];\n remainingAccounts: CreateUserAccountInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getCreateUserAccountInstructionAsync<\n TAccountPayer extends string,\n TAccountMember extends string,\n TAccountSystemProgram extends string,\n TAccountUserAccount extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateUserAccountAsyncInput<\n TAccountPayer,\n TAccountMember,\n TAccountSystemProgram,\n TAccountUserAccount\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n CreateUserAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMember,\n TAccountSystemProgram,\n TAccountUserAccount\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n member: { value: input.member ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.userAccount.value) {\n accounts.userAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([117, 115, 101, 114])),\n getAddressEncoder().encode(expectAddress(accounts.member.value)),\n ],\n });\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.member),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.userAccount),\n ...remainingAccounts,\n ],\n data: getCreateUserAccountInstructionDataEncoder().encode(\n args as CreateUserAccountInstructionDataArgs,\n ),\n programAddress,\n } as CreateUserAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMember,\n TAccountSystemProgram,\n TAccountUserAccount\n >);\n}\n\nexport type CreateUserAccountInput<\n TAccountPayer extends string = string,\n TAccountMember extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountUserAccount extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n member: TransactionSigner<TAccountMember>;\n systemProgram?: Address<TAccountSystemProgram>;\n userAccount: Address<TAccountUserAccount>;\n role: CreateUserAccountInstructionDataArgs[\"role\"];\n transactionManagerUrl: CreateUserAccountInstructionDataArgs[\"transactionManagerUrl\"];\n remainingAccounts: CreateUserAccountInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getCreateUserAccountInstruction<\n TAccountPayer extends string,\n TAccountMember extends string,\n TAccountSystemProgram extends string,\n TAccountUserAccount extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateUserAccountInput<\n TAccountPayer,\n TAccountMember,\n TAccountSystemProgram,\n TAccountUserAccount\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateUserAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMember,\n TAccountSystemProgram,\n TAccountUserAccount\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n member: { value: input.member ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.member),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.userAccount),\n ...remainingAccounts,\n ],\n data: getCreateUserAccountInstructionDataEncoder().encode(\n args as CreateUserAccountInstructionDataArgs,\n ),\n programAddress,\n } as CreateUserAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMember,\n TAccountSystemProgram,\n TAccountUserAccount\n >);\n}\n\nexport type ParsedCreateUserAccountInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n member: TAccountMetas[1];\n systemProgram: TAccountMetas[2];\n userAccount: TAccountMetas[3];\n };\n data: CreateUserAccountInstructionData;\n};\n\nexport function parseCreateUserAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateUserAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n member: getNextAccount(),\n systemProgram: getNextAccount(),\n userAccount: getNextAccount(),\n },\n data: getCreateUserAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const CREATE_WALLET_DISCRIMINATOR = new Uint8Array([16]);\n\nexport function getCreateWalletDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n CREATE_WALLET_DISCRIMINATOR,\n );\n}\n\nexport type CreateWalletInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountInitialMember extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountGlobalCounter extends string | AccountMeta<string> = string,\n TAccountUserAccount extends string | AccountMeta<string> = string,\n TAccountSettings extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountInitialMember extends string\n ? ReadonlySignerAccount<TAccountInitialMember> &\n AccountSignerMeta<TAccountInitialMember>\n : TAccountInitialMember,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountGlobalCounter extends string\n ? WritableAccount<TAccountGlobalCounter>\n : TAccountGlobalCounter,\n TAccountUserAccount extends string\n ? WritableAccount<TAccountUserAccount>\n : TAccountUserAccount,\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateWalletInstructionData = {\n discriminator: ReadonlyUint8Array;\n settingsIndex: bigint;\n};\n\nexport type CreateWalletInstructionDataArgs = {\n settingsIndex: number | bigint;\n};\n\nexport function getCreateWalletInstructionDataEncoder(): FixedSizeEncoder<CreateWalletInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"settingsIndex\", getU128Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CREATE_WALLET_DISCRIMINATOR }),\n );\n}\n\nexport function getCreateWalletInstructionDataDecoder(): FixedSizeDecoder<CreateWalletInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"settingsIndex\", getU128Decoder()],\n ]);\n}\n\nexport function getCreateWalletInstructionDataCodec(): FixedSizeCodec<\n CreateWalletInstructionDataArgs,\n CreateWalletInstructionData\n> {\n return combineCodec(\n getCreateWalletInstructionDataEncoder(),\n getCreateWalletInstructionDataDecoder(),\n );\n}\n\nexport type CreateWalletInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type CreateWalletAsyncInput<\n TAccountPayer extends string = string,\n TAccountInitialMember extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountGlobalCounter extends string = string,\n TAccountUserAccount extends string = string,\n TAccountSettings extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n initialMember: TransactionSigner<TAccountInitialMember>;\n systemProgram?: Address<TAccountSystemProgram>;\n globalCounter?: Address<TAccountGlobalCounter>;\n userAccount?: Address<TAccountUserAccount>;\n settings?: Address<TAccountSettings>;\n settingsIndex: CreateWalletInstructionDataArgs[\"settingsIndex\"];\n remainingAccounts: CreateWalletInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getCreateWalletInstructionAsync<\n TAccountPayer extends string,\n TAccountInitialMember extends string,\n TAccountSystemProgram extends string,\n TAccountGlobalCounter extends string,\n TAccountUserAccount extends string,\n TAccountSettings extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateWalletAsyncInput<\n TAccountPayer,\n TAccountInitialMember,\n TAccountSystemProgram,\n TAccountGlobalCounter,\n TAccountUserAccount,\n TAccountSettings\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n CreateWalletInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountInitialMember,\n TAccountSystemProgram,\n TAccountGlobalCounter,\n TAccountUserAccount,\n TAccountSettings\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n initialMember: { value: input.initialMember ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n globalCounter: { value: input.globalCounter ?? null, isWritable: true },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n settings: { value: input.settings ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.globalCounter.value) {\n accounts.globalCounter.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 103, 108, 111, 98, 97, 108, 95, 99, 111, 117, 110, 116, 101, 114,\n ]),\n ),\n ],\n });\n }\n if (!accounts.userAccount.value) {\n accounts.userAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([117, 115, 101, 114])),\n getAddressEncoder().encode(expectAddress(accounts.initialMember.value)),\n ],\n });\n }\n if (!accounts.settings.value) {\n accounts.settings.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 109, 117, 108, 116, 105, 95, 119, 97, 108, 108, 101, 116,\n ]),\n ),\n getU128Encoder().encode(expectSome(args.settingsIndex)),\n ],\n });\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.initialMember),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.globalCounter),\n getAccountMeta(accounts.userAccount),\n getAccountMeta(accounts.settings),\n ...remainingAccounts,\n ],\n data: getCreateWalletInstructionDataEncoder().encode(\n args as CreateWalletInstructionDataArgs,\n ),\n programAddress,\n } as CreateWalletInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountInitialMember,\n TAccountSystemProgram,\n TAccountGlobalCounter,\n TAccountUserAccount,\n TAccountSettings\n >);\n}\n\nexport type CreateWalletInput<\n TAccountPayer extends string = string,\n TAccountInitialMember extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountGlobalCounter extends string = string,\n TAccountUserAccount extends string = string,\n TAccountSettings extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n initialMember: TransactionSigner<TAccountInitialMember>;\n systemProgram?: Address<TAccountSystemProgram>;\n globalCounter: Address<TAccountGlobalCounter>;\n userAccount: Address<TAccountUserAccount>;\n settings: Address<TAccountSettings>;\n settingsIndex: CreateWalletInstructionDataArgs[\"settingsIndex\"];\n remainingAccounts: CreateWalletInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getCreateWalletInstruction<\n TAccountPayer extends string,\n TAccountInitialMember extends string,\n TAccountSystemProgram extends string,\n TAccountGlobalCounter extends string,\n TAccountUserAccount extends string,\n TAccountSettings extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateWalletInput<\n TAccountPayer,\n TAccountInitialMember,\n TAccountSystemProgram,\n TAccountGlobalCounter,\n TAccountUserAccount,\n TAccountSettings\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateWalletInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountInitialMember,\n TAccountSystemProgram,\n TAccountGlobalCounter,\n TAccountUserAccount,\n TAccountSettings\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n initialMember: { value: input.initialMember ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n globalCounter: { value: input.globalCounter ?? null, isWritable: true },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n settings: { value: input.settings ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.initialMember),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.globalCounter),\n getAccountMeta(accounts.userAccount),\n getAccountMeta(accounts.settings),\n ...remainingAccounts,\n ],\n data: getCreateWalletInstructionDataEncoder().encode(\n args as CreateWalletInstructionDataArgs,\n ),\n programAddress,\n } as CreateWalletInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountInitialMember,\n TAccountSystemProgram,\n TAccountGlobalCounter,\n TAccountUserAccount,\n TAccountSettings\n >);\n}\n\nexport type ParsedCreateWalletInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n initialMember: TAccountMetas[1];\n systemProgram: TAccountMetas[2];\n globalCounter: TAccountMetas[3];\n userAccount: TAccountMetas[4];\n settings: TAccountMetas[5];\n };\n data: CreateWalletInstructionData;\n};\n\nexport function parseCreateWalletInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateWalletInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n initialMember: getNextAccount(),\n systemProgram: getNextAccount(),\n globalCounter: getNextAccount(),\n userAccount: getNextAccount(),\n settings: getNextAccount(),\n },\n data: getCreateWalletInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\n\nexport const DISABLE_DOMAIN_CONFIG_DISCRIMINATOR = new Uint8Array([2]);\n\nexport function getDisableDomainConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n DISABLE_DOMAIN_CONFIG_DISCRIMINATOR,\n );\n}\n\nexport type DisableDomainConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountAdmin extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountDomainConfig extends string\n ? WritableAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountAdmin extends string\n ? ReadonlySignerAccount<TAccountAdmin> &\n AccountSignerMeta<TAccountAdmin>\n : TAccountAdmin,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type DisableDomainConfigInstructionData = {\n discriminator: ReadonlyUint8Array;\n disable: boolean;\n};\n\nexport type DisableDomainConfigInstructionDataArgs = { disable: boolean };\n\nexport function getDisableDomainConfigInstructionDataEncoder(): FixedSizeEncoder<DisableDomainConfigInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"disable\", getBooleanEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: DISABLE_DOMAIN_CONFIG_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getDisableDomainConfigInstructionDataDecoder(): FixedSizeDecoder<DisableDomainConfigInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"disable\", getBooleanDecoder()],\n ]);\n}\n\nexport function getDisableDomainConfigInstructionDataCodec(): FixedSizeCodec<\n DisableDomainConfigInstructionDataArgs,\n DisableDomainConfigInstructionData\n> {\n return combineCodec(\n getDisableDomainConfigInstructionDataEncoder(),\n getDisableDomainConfigInstructionDataDecoder(),\n );\n}\n\nexport type DisableDomainConfigInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type DisableDomainConfigInput<\n TAccountDomainConfig extends string = string,\n TAccountAdmin extends string = string,\n> = {\n domainConfig: Address<TAccountDomainConfig>;\n admin: TransactionSigner<TAccountAdmin>;\n disable: DisableDomainConfigInstructionDataArgs[\"disable\"];\n remainingAccounts: DisableDomainConfigInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getDisableDomainConfigInstruction<\n TAccountDomainConfig extends string,\n TAccountAdmin extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: DisableDomainConfigInput<TAccountDomainConfig, TAccountAdmin>,\n config?: { programAddress?: TProgramAddress },\n): DisableDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountAdmin\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n domainConfig: { value: input.domainConfig ?? null, isWritable: true },\n admin: { value: input.admin ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.admin),\n ...remainingAccounts,\n ],\n data: getDisableDomainConfigInstructionDataEncoder().encode(\n args as DisableDomainConfigInstructionDataArgs,\n ),\n programAddress,\n } as DisableDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountAdmin\n >);\n}\n\nexport type ParsedDisableDomainConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n domainConfig: TAccountMetas[0];\n admin: TAccountMetas[1];\n };\n data: DisableDomainConfigInstructionData;\n};\n\nexport function parseDisableDomainConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedDisableDomainConfigInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: { domainConfig: getNextAccount(), admin: getNextAccount() },\n data: getDisableDomainConfigInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\n\nexport const EDIT_DOMAIN_CONFIG_DISCRIMINATOR = new Uint8Array([1]);\n\nexport function getEditDomainConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n EDIT_DOMAIN_CONFIG_DISCRIMINATOR,\n );\n}\n\nexport type EditDomainConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountNewAuthority extends string | AccountMeta<string> = string,\n TAccountUserAccount extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountDomainConfig extends string\n ? WritableAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountNewAuthority extends string\n ? ReadonlySignerAccount<TAccountNewAuthority> &\n AccountSignerMeta<TAccountNewAuthority>\n : TAccountNewAuthority,\n TAccountUserAccount extends string\n ? WritableAccount<TAccountUserAccount>\n : TAccountUserAccount,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EditDomainConfigInstructionData = {\n discriminator: ReadonlyUint8Array;\n newOrigins: Option<Array<string>>;\n};\n\nexport type EditDomainConfigInstructionDataArgs = {\n newOrigins: OptionOrNullable<Array<string>>;\n};\n\nexport function getEditDomainConfigInstructionDataEncoder(): Encoder<EditDomainConfigInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"newOrigins\",\n getOptionEncoder(\n getArrayEncoder(\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ),\n ),\n ],\n ]),\n (value) => ({ ...value, discriminator: EDIT_DOMAIN_CONFIG_DISCRIMINATOR }),\n );\n}\n\nexport function getEditDomainConfigInstructionDataDecoder(): Decoder<EditDomainConfigInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\n \"newOrigins\",\n getOptionDecoder(\n getArrayDecoder(\n addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()),\n ),\n ),\n ],\n ]);\n}\n\nexport function getEditDomainConfigInstructionDataCodec(): Codec<\n EditDomainConfigInstructionDataArgs,\n EditDomainConfigInstructionData\n> {\n return combineCodec(\n getEditDomainConfigInstructionDataEncoder(),\n getEditDomainConfigInstructionDataDecoder(),\n );\n}\n\nexport type EditDomainConfigInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type EditDomainConfigInput<\n TAccountDomainConfig extends string = string,\n TAccountAuthority extends string = string,\n TAccountNewAuthority extends string = string,\n TAccountUserAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n domainConfig: Address<TAccountDomainConfig>;\n authority: TransactionSigner<TAccountAuthority>;\n newAuthority?: TransactionSigner<TAccountNewAuthority>;\n userAccount?: Address<TAccountUserAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n newOrigins: EditDomainConfigInstructionDataArgs[\"newOrigins\"];\n remainingAccounts: EditDomainConfigInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getEditDomainConfigInstruction<\n TAccountDomainConfig extends string,\n TAccountAuthority extends string,\n TAccountNewAuthority extends string,\n TAccountUserAccount extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: EditDomainConfigInput<\n TAccountDomainConfig,\n TAccountAuthority,\n TAccountNewAuthority,\n TAccountUserAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): EditDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountAuthority,\n TAccountNewAuthority,\n TAccountUserAccount,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n domainConfig: { value: input.domainConfig ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n newAuthority: { value: input.newAuthority ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.newAuthority),\n getAccountMeta(accounts.userAccount),\n getAccountMeta(accounts.systemProgram),\n ...remainingAccounts,\n ],\n data: getEditDomainConfigInstructionDataEncoder().encode(\n args as EditDomainConfigInstructionDataArgs,\n ),\n programAddress,\n } as EditDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountAuthority,\n TAccountNewAuthority,\n TAccountUserAccount,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedEditDomainConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n domainConfig: TAccountMetas[0];\n authority: TAccountMetas[1];\n newAuthority?: TAccountMetas[2] | undefined;\n userAccount?: TAccountMetas[3] | undefined;\n systemProgram: TAccountMetas[4];\n };\n data: EditDomainConfigInstructionData;\n};\n\nexport function parseEditDomainConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedEditDomainConfigInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n domainConfig: getNextAccount(),\n authority: getNextAccount(),\n newAuthority: getNextOptionalAccount(),\n userAccount: getNextOptionalAccount(),\n systemProgram: getNextAccount(),\n },\n data: getEditDomainConfigInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const EDIT_TRANSACTION_MANAGER_URL_DISCRIMINATOR = new Uint8Array([6]);\n\nexport function getEditTransactionManagerUrlDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n EDIT_TRANSACTION_MANAGER_URL_DISCRIMINATOR,\n );\n}\n\nexport type EditTransactionManagerUrlInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountTransactionManagerAccount extends\n | string\n | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountTransactionManagerAccount extends string\n ? WritableAccount<TAccountTransactionManagerAccount>\n : TAccountTransactionManagerAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EditTransactionManagerUrlInstructionData = {\n discriminator: ReadonlyUint8Array;\n transactionManagerUrl: string;\n};\n\nexport type EditTransactionManagerUrlInstructionDataArgs = {\n transactionManagerUrl: string;\n};\n\nexport function getEditTransactionManagerUrlInstructionDataEncoder(): Encoder<EditTransactionManagerUrlInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"transactionManagerUrl\",\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: EDIT_TRANSACTION_MANAGER_URL_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getEditTransactionManagerUrlInstructionDataDecoder(): Decoder<EditTransactionManagerUrlInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\n \"transactionManagerUrl\",\n addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()),\n ],\n ]);\n}\n\nexport function getEditTransactionManagerUrlInstructionDataCodec(): Codec<\n EditTransactionManagerUrlInstructionDataArgs,\n EditTransactionManagerUrlInstructionData\n> {\n return combineCodec(\n getEditTransactionManagerUrlInstructionDataEncoder(),\n getEditTransactionManagerUrlInstructionDataDecoder(),\n );\n}\n\nexport type EditTransactionManagerUrlInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type EditTransactionManagerUrlAsyncInput<\n TAccountSigner extends string = string,\n TAccountTransactionManagerAccount extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n transactionManagerAccount?: Address<TAccountTransactionManagerAccount>;\n transactionManagerUrl: EditTransactionManagerUrlInstructionDataArgs[\"transactionManagerUrl\"];\n remainingAccounts: EditTransactionManagerUrlInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getEditTransactionManagerUrlInstructionAsync<\n TAccountSigner extends string,\n TAccountTransactionManagerAccount extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: EditTransactionManagerUrlAsyncInput<\n TAccountSigner,\n TAccountTransactionManagerAccount\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n EditTransactionManagerUrlInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTransactionManagerAccount\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n transactionManagerAccount: {\n value: input.transactionManagerAccount ?? null,\n isWritable: true,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.transactionManagerAccount.value) {\n accounts.transactionManagerAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([117, 115, 101, 114])),\n getAddressEncoder().encode(expectAddress(accounts.signer.value)),\n ],\n });\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.transactionManagerAccount),\n ...remainingAccounts,\n ],\n data: getEditTransactionManagerUrlInstructionDataEncoder().encode(\n args as EditTransactionManagerUrlInstructionDataArgs,\n ),\n programAddress,\n } as EditTransactionManagerUrlInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTransactionManagerAccount\n >);\n}\n\nexport type EditTransactionManagerUrlInput<\n TAccountSigner extends string = string,\n TAccountTransactionManagerAccount extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n transactionManagerAccount: Address<TAccountTransactionManagerAccount>;\n transactionManagerUrl: EditTransactionManagerUrlInstructionDataArgs[\"transactionManagerUrl\"];\n remainingAccounts: EditTransactionManagerUrlInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getEditTransactionManagerUrlInstruction<\n TAccountSigner extends string,\n TAccountTransactionManagerAccount extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: EditTransactionManagerUrlInput<\n TAccountSigner,\n TAccountTransactionManagerAccount\n >,\n config?: { programAddress?: TProgramAddress },\n): EditTransactionManagerUrlInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTransactionManagerAccount\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n transactionManagerAccount: {\n value: input.transactionManagerAccount ?? null,\n isWritable: true,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.transactionManagerAccount),\n ...remainingAccounts,\n ],\n data: getEditTransactionManagerUrlInstructionDataEncoder().encode(\n args as EditTransactionManagerUrlInstructionDataArgs,\n ),\n programAddress,\n } as EditTransactionManagerUrlInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTransactionManagerAccount\n >);\n}\n\nexport type ParsedEditTransactionManagerUrlInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n transactionManagerAccount: TAccountMetas[1];\n };\n data: EditTransactionManagerUrlInstructionData;\n};\n\nexport function parseEditTransactionManagerUrlInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedEditTransactionManagerUrlInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n transactionManagerAccount: getNextAccount(),\n },\n data: getEditTransactionManagerUrlInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getSecp256r1VerifyArgsDecoder,\n getSecp256r1VerifyArgsEncoder,\n type Secp256r1VerifyArgs,\n type Secp256r1VerifyArgsArgs,\n} from \"../types\";\n\nexport const EDIT_USER_DELEGATE_DISCRIMINATOR = new Uint8Array([7]);\n\nexport function getEditUserDelegateDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n EDIT_USER_DELEGATE_DISCRIMINATOR,\n );\n}\n\nexport type EditUserDelegateInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountFeePayer extends string | AccountMeta<string> = string,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountUserAccount extends string | AccountMeta<string> = string,\n TAccountOldSettings extends string | AccountMeta<string> = string,\n TAccountNewSettings extends string | AccountMeta<string> = string,\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountFeePayer extends string\n ? WritableSignerAccount<TAccountFeePayer> &\n AccountSignerMeta<TAccountFeePayer>\n : TAccountFeePayer,\n TAccountSigner extends string\n ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountUserAccount extends string\n ? WritableAccount<TAccountUserAccount>\n : TAccountUserAccount,\n TAccountOldSettings extends string\n ? WritableAccount<TAccountOldSettings>\n : TAccountOldSettings,\n TAccountNewSettings extends string\n ? WritableAccount<TAccountNewSettings>\n : TAccountNewSettings,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n TAccountDomainConfig extends string\n ? ReadonlyAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EditUserDelegateInstructionData = {\n discriminator: ReadonlyUint8Array;\n secp256r1VerifyArgs: Option<Secp256r1VerifyArgs>;\n delegateTo: Option<bigint>;\n};\n\nexport type EditUserDelegateInstructionDataArgs = {\n secp256r1VerifyArgs: OptionOrNullable<Secp256r1VerifyArgsArgs>;\n delegateTo: OptionOrNullable<number | bigint>;\n};\n\nexport function getEditUserDelegateInstructionDataEncoder(): Encoder<EditUserDelegateInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"secp256r1VerifyArgs\",\n getOptionEncoder(getSecp256r1VerifyArgsEncoder()),\n ],\n [\"delegateTo\", getOptionEncoder(getU128Encoder())],\n ]),\n (value) => ({ ...value, discriminator: EDIT_USER_DELEGATE_DISCRIMINATOR }),\n );\n}\n\nexport function getEditUserDelegateInstructionDataDecoder(): Decoder<EditUserDelegateInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"secp256r1VerifyArgs\", getOptionDecoder(getSecp256r1VerifyArgsDecoder())],\n [\"delegateTo\", getOptionDecoder(getU128Decoder())],\n ]);\n}\n\nexport function getEditUserDelegateInstructionDataCodec(): Codec<\n EditUserDelegateInstructionDataArgs,\n EditUserDelegateInstructionData\n> {\n return combineCodec(\n getEditUserDelegateInstructionDataEncoder(),\n getEditUserDelegateInstructionDataDecoder(),\n );\n}\n\nexport type EditUserDelegateInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type EditUserDelegateInput<\n TAccountFeePayer extends string = string,\n TAccountSigner extends string = string,\n TAccountUserAccount extends string = string,\n TAccountOldSettings extends string = string,\n TAccountNewSettings extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountDomainConfig extends string = string,\n> = {\n feePayer: TransactionSigner<TAccountFeePayer>;\n signer?: TransactionSigner<TAccountSigner>;\n userAccount: Address<TAccountUserAccount>;\n oldSettings?: Address<TAccountOldSettings>;\n newSettings?: Address<TAccountNewSettings>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n domainConfig?: Address<TAccountDomainConfig>;\n secp256r1VerifyArgs: EditUserDelegateInstructionDataArgs[\"secp256r1VerifyArgs\"];\n delegateTo: EditUserDelegateInstructionDataArgs[\"delegateTo\"];\n remainingAccounts: EditUserDelegateInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getEditUserDelegateInstruction<\n TAccountFeePayer extends string,\n TAccountSigner extends string,\n TAccountUserAccount extends string,\n TAccountOldSettings extends string,\n TAccountNewSettings extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TAccountDomainConfig extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: EditUserDelegateInput<\n TAccountFeePayer,\n TAccountSigner,\n TAccountUserAccount,\n TAccountOldSettings,\n TAccountNewSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountDomainConfig\n >,\n config?: { programAddress?: TProgramAddress },\n): EditUserDelegateInstruction<\n TProgramAddress,\n TAccountFeePayer,\n TAccountSigner,\n TAccountUserAccount,\n TAccountOldSettings,\n TAccountNewSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountDomainConfig\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n feePayer: { value: input.feePayer ?? null, isWritable: true },\n signer: { value: input.signer ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n oldSettings: { value: input.oldSettings ?? null, isWritable: true },\n newSettings: { value: input.newSettings ?? null, isWritable: true },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n domainConfig: { value: input.domainConfig ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.feePayer),\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.userAccount),\n getAccountMeta(accounts.oldSettings),\n getAccountMeta(accounts.newSettings),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.domainConfig),\n ...remainingAccounts,\n ],\n data: getEditUserDelegateInstructionDataEncoder().encode(\n args as EditUserDelegateInstructionDataArgs,\n ),\n programAddress,\n } as EditUserDelegateInstruction<\n TProgramAddress,\n TAccountFeePayer,\n TAccountSigner,\n TAccountUserAccount,\n TAccountOldSettings,\n TAccountNewSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountDomainConfig\n >);\n}\n\nexport type ParsedEditUserDelegateInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n feePayer: TAccountMetas[0];\n signer?: TAccountMetas[1] | undefined;\n userAccount: TAccountMetas[2];\n oldSettings?: TAccountMetas[3] | undefined;\n newSettings?: TAccountMetas[4] | undefined;\n slotHashSysvar?: TAccountMetas[5] | undefined;\n instructionsSysvar?: TAccountMetas[6] | undefined;\n domainConfig?: TAccountMetas[7] | undefined;\n };\n data: EditUserDelegateInstructionData;\n};\n\nexport function parseEditUserDelegateInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedEditUserDelegateInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n feePayer: getNextAccount(),\n signer: getNextOptionalAccount(),\n userAccount: getNextAccount(),\n oldSettings: getNextOptionalAccount(),\n newSettings: getNextOptionalAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextOptionalAccount(),\n domainConfig: getNextOptionalAccount(),\n },\n data: getEditUserDelegateInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\nimport {\n getTransactionSyncSignersDecoder,\n getTransactionSyncSignersEncoder,\n type TransactionSyncSigners,\n type TransactionSyncSignersArgs,\n} from \"../types\";\n\nexport const NATIVE_TRANSFER_INTENT_DISCRIMINATOR = new Uint8Array([17]);\n\nexport function getNativeTransferIntentDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n NATIVE_TRANSFER_INTENT_DISCRIMINATOR,\n );\n}\n\nexport type NativeTransferIntentInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TAccountSource extends string | AccountMeta<string> = string,\n TAccountDestination extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n TAccountSource extends string\n ? WritableAccount<TAccountSource>\n : TAccountSource,\n TAccountDestination extends string\n ? WritableAccount<TAccountDestination>\n : TAccountDestination,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type NativeTransferIntentInstructionData = {\n discriminator: ReadonlyUint8Array;\n amount: bigint;\n signers: Array<TransactionSyncSigners>;\n};\n\nexport type NativeTransferIntentInstructionDataArgs = {\n amount: number | bigint;\n signers: Array<TransactionSyncSignersArgs>;\n};\n\nexport function getNativeTransferIntentInstructionDataEncoder(): Encoder<NativeTransferIntentInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"amount\", getU64Encoder()],\n [\"signers\", getArrayEncoder(getTransactionSyncSignersEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: NATIVE_TRANSFER_INTENT_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getNativeTransferIntentInstructionDataDecoder(): Decoder<NativeTransferIntentInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"amount\", getU64Decoder()],\n [\"signers\", getArrayDecoder(getTransactionSyncSignersDecoder())],\n ]);\n}\n\nexport function getNativeTransferIntentInstructionDataCodec(): Codec<\n NativeTransferIntentInstructionDataArgs,\n NativeTransferIntentInstructionData\n> {\n return combineCodec(\n getNativeTransferIntentInstructionDataEncoder(),\n getNativeTransferIntentInstructionDataDecoder(),\n );\n}\n\nexport type NativeTransferIntentInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type NativeTransferIntentAsyncInput<\n TAccountSettings extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountSource extends string = string,\n TAccountDestination extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n source?: Address<TAccountSource>;\n destination: Address<TAccountDestination>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: NativeTransferIntentInstructionDataArgs[\"amount\"];\n signers: NativeTransferIntentInstructionDataArgs[\"signers\"];\n remainingAccounts: NativeTransferIntentInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getNativeTransferIntentInstructionAsync<\n TAccountSettings extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TAccountSource extends string,\n TAccountDestination extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: NativeTransferIntentAsyncInput<\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountDestination,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n NativeTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountDestination,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n source: { value: input.source ?? null, isWritable: true },\n destination: { value: input.destination ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n if (!accounts.source.value) {\n accounts.source.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 109, 117, 108, 116, 105, 95, 119, 97, 108, 108, 101, 116,\n ]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.settings.value)),\n getBytesEncoder().encode(new Uint8Array([118, 97, 117, 108, 116])),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.systemProgram),\n ...remainingAccounts,\n ],\n data: getNativeTransferIntentInstructionDataEncoder().encode(\n args as NativeTransferIntentInstructionDataArgs,\n ),\n programAddress,\n } as NativeTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountDestination,\n TAccountSystemProgram\n >);\n}\n\nexport type NativeTransferIntentInput<\n TAccountSettings extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountSource extends string = string,\n TAccountDestination extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n source: Address<TAccountSource>;\n destination: Address<TAccountDestination>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: NativeTransferIntentInstructionDataArgs[\"amount\"];\n signers: NativeTransferIntentInstructionDataArgs[\"signers\"];\n remainingAccounts: NativeTransferIntentInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getNativeTransferIntentInstruction<\n TAccountSettings extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TAccountSource extends string,\n TAccountDestination extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: NativeTransferIntentInput<\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountDestination,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): NativeTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountDestination,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n source: { value: input.source ?? null, isWritable: true },\n destination: { value: input.destination ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.systemProgram),\n ...remainingAccounts,\n ],\n data: getNativeTransferIntentInstructionDataEncoder().encode(\n args as NativeTransferIntentInstructionDataArgs,\n ),\n programAddress,\n } as NativeTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountDestination,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedNativeTransferIntentInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n slotHashSysvar?: TAccountMetas[1] | undefined;\n instructionsSysvar: TAccountMetas[2];\n source: TAccountMetas[3];\n destination: TAccountMetas[4];\n systemProgram: TAccountMetas[5];\n };\n data: NativeTransferIntentInstructionData;\n};\n\nexport function parseNativeTransferIntentInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedNativeTransferIntentInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextAccount(),\n source: getNextAccount(),\n destination: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getNativeTransferIntentInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\nimport {\n getCompressedTokenArgsDecoder,\n getCompressedTokenArgsEncoder,\n getProofArgsDecoder,\n getProofArgsEncoder,\n getSplInterfacePdaArgsDecoder,\n getSplInterfacePdaArgsEncoder,\n getTransactionSyncSignersDecoder,\n getTransactionSyncSignersEncoder,\n type CompressedTokenArgs,\n type CompressedTokenArgsArgs,\n type ProofArgs,\n type ProofArgsArgs,\n type SplInterfacePdaArgs,\n type SplInterfacePdaArgsArgs,\n type TransactionSyncSigners,\n type TransactionSyncSignersArgs,\n} from \"../types\";\n\nexport const TOKEN_TRANSFER_INTENT_DISCRIMINATOR = new Uint8Array([18]);\n\nexport function getTokenTransferIntentDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TOKEN_TRANSFER_INTENT_DISCRIMINATOR,\n );\n}\n\nexport type TokenTransferIntentInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TAccountSource extends string | AccountMeta<string> = string,\n TAccountSourceSplTokenAccount extends string | AccountMeta<string> = string,\n TAccountSourceCtokenTokenAccount extends\n | string\n | AccountMeta<string> = string,\n TAccountDestination extends string | AccountMeta<string> = string,\n TAccountDestinationSplTokenAccount extends\n | string\n | AccountMeta<string> = string,\n TAccountDestinationCtokenTokenAccount extends\n | string\n | AccountMeta<string> = string,\n TAccountTokenProgram extends\n | string\n | AccountMeta<string> = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\n TAccountMint extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountCompressedTokenProgramAuthority extends\n | string\n | AccountMeta<string> = \"GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy\",\n TAccountSplInterfacePda extends string | AccountMeta<string> = string,\n TAccountCompressibleConfig extends string | AccountMeta<string> = string,\n TAccountRentSponsor extends string | AccountMeta<string> = string,\n TAccountCompressedTokenProgram extends\n | string\n | AccountMeta<string> = \"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n TAccountSource extends string\n ? ReadonlyAccount<TAccountSource>\n : TAccountSource,\n TAccountSourceSplTokenAccount extends string\n ? WritableAccount<TAccountSourceSplTokenAccount>\n : TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount extends string\n ? WritableAccount<TAccountSourceCtokenTokenAccount>\n : TAccountSourceCtokenTokenAccount,\n TAccountDestination extends string\n ? ReadonlyAccount<TAccountDestination>\n : TAccountDestination,\n TAccountDestinationSplTokenAccount extends string\n ? WritableAccount<TAccountDestinationSplTokenAccount>\n : TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount extends string\n ? WritableAccount<TAccountDestinationCtokenTokenAccount>\n : TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountMint extends string\n ? WritableAccount<TAccountMint>\n : TAccountMint,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority extends string\n ? ReadonlyAccount<TAccountCompressedTokenProgramAuthority>\n : TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda extends string\n ? WritableAccount<TAccountSplInterfacePda>\n : TAccountSplInterfacePda,\n TAccountCompressibleConfig extends string\n ? ReadonlyAccount<TAccountCompressibleConfig>\n : TAccountCompressibleConfig,\n TAccountRentSponsor extends string\n ? WritableAccount<TAccountRentSponsor>\n : TAccountRentSponsor,\n TAccountCompressedTokenProgram extends string\n ? ReadonlyAccount<TAccountCompressedTokenProgram>\n : TAccountCompressedTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TokenTransferIntentInstructionData = {\n discriminator: ReadonlyUint8Array;\n splInterfacePdaArgs: Option<SplInterfacePdaArgs>;\n amount: bigint;\n sourceCompressedTokenAccounts: Array<CompressedTokenArgs>;\n compressedProofArgs: Option<ProofArgs>;\n signers: Array<TransactionSyncSigners>;\n};\n\nexport type TokenTransferIntentInstructionDataArgs = {\n splInterfacePdaArgs: OptionOrNullable<SplInterfacePdaArgsArgs>;\n amount: number | bigint;\n sourceCompressedTokenAccounts: Array<CompressedTokenArgsArgs>;\n compressedProofArgs: OptionOrNullable<ProofArgsArgs>;\n signers: Array<TransactionSyncSignersArgs>;\n};\n\nexport function getTokenTransferIntentInstructionDataEncoder(): Encoder<TokenTransferIntentInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"splInterfacePdaArgs\",\n getOptionEncoder(getSplInterfacePdaArgsEncoder()),\n ],\n [\"amount\", getU64Encoder()],\n [\n \"sourceCompressedTokenAccounts\",\n getArrayEncoder(getCompressedTokenArgsEncoder()),\n ],\n [\"compressedProofArgs\", getOptionEncoder(getProofArgsEncoder())],\n [\"signers\", getArrayEncoder(getTransactionSyncSignersEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: TOKEN_TRANSFER_INTENT_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTokenTransferIntentInstructionDataDecoder(): Decoder<TokenTransferIntentInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"splInterfacePdaArgs\", getOptionDecoder(getSplInterfacePdaArgsDecoder())],\n [\"amount\", getU64Decoder()],\n [\n \"sourceCompressedTokenAccounts\",\n getArrayDecoder(getCompressedTokenArgsDecoder()),\n ],\n [\"compressedProofArgs\", getOptionDecoder(getProofArgsDecoder())],\n [\"signers\", getArrayDecoder(getTransactionSyncSignersDecoder())],\n ]);\n}\n\nexport function getTokenTransferIntentInstructionDataCodec(): Codec<\n TokenTransferIntentInstructionDataArgs,\n TokenTransferIntentInstructionData\n> {\n return combineCodec(\n getTokenTransferIntentInstructionDataEncoder(),\n getTokenTransferIntentInstructionDataDecoder(),\n );\n}\n\nexport type TokenTransferIntentInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TokenTransferIntentAsyncInput<\n TAccountSettings extends string = string,\n TAccountPayer extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountSource extends string = string,\n TAccountSourceSplTokenAccount extends string = string,\n TAccountSourceCtokenTokenAccount extends string = string,\n TAccountDestination extends string = string,\n TAccountDestinationSplTokenAccount extends string = string,\n TAccountDestinationCtokenTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountMint extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountCompressedTokenProgramAuthority extends string = string,\n TAccountSplInterfacePda extends string = string,\n TAccountCompressibleConfig extends string = string,\n TAccountRentSponsor extends string = string,\n TAccountCompressedTokenProgram extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n payer: TransactionSigner<TAccountPayer>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n source?: Address<TAccountSource>;\n sourceSplTokenAccount?: Address<TAccountSourceSplTokenAccount>;\n sourceCtokenTokenAccount?: Address<TAccountSourceCtokenTokenAccount>;\n destination: Address<TAccountDestination>;\n destinationSplTokenAccount?: Address<TAccountDestinationSplTokenAccount>;\n destinationCtokenTokenAccount?: Address<TAccountDestinationCtokenTokenAccount>;\n tokenProgram?: Address<TAccountTokenProgram>;\n mint: Address<TAccountMint>;\n systemProgram?: Address<TAccountSystemProgram>;\n compressedTokenProgramAuthority?: Address<TAccountCompressedTokenProgramAuthority>;\n splInterfacePda?: Address<TAccountSplInterfacePda>;\n compressibleConfig: Address<TAccountCompressibleConfig>;\n rentSponsor?: Address<TAccountRentSponsor>;\n compressedTokenProgram?: Address<TAccountCompressedTokenProgram>;\n splInterfacePdaArgs: TokenTransferIntentInstructionDataArgs[\"splInterfacePdaArgs\"];\n amount: TokenTransferIntentInstructionDataArgs[\"amount\"];\n sourceCompressedTokenAccounts: TokenTransferIntentInstructionDataArgs[\"sourceCompressedTokenAccounts\"];\n compressedProofArgs: TokenTransferIntentInstructionDataArgs[\"compressedProofArgs\"];\n signers: TokenTransferIntentInstructionDataArgs[\"signers\"];\n remainingAccounts: TokenTransferIntentInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getTokenTransferIntentInstructionAsync<\n TAccountSettings extends string,\n TAccountPayer extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TAccountSource extends string,\n TAccountSourceSplTokenAccount extends string,\n TAccountSourceCtokenTokenAccount extends string,\n TAccountDestination extends string,\n TAccountDestinationSplTokenAccount extends string,\n TAccountDestinationCtokenTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountMint extends string,\n TAccountSystemProgram extends string,\n TAccountCompressedTokenProgramAuthority extends string,\n TAccountSplInterfacePda extends string,\n TAccountCompressibleConfig extends string,\n TAccountRentSponsor extends string,\n TAccountCompressedTokenProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TokenTransferIntentAsyncInput<\n TAccountSettings,\n TAccountPayer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount,\n TAccountDestination,\n TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram,\n TAccountMint,\n TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda,\n TAccountCompressibleConfig,\n TAccountRentSponsor,\n TAccountCompressedTokenProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n TokenTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount,\n TAccountDestination,\n TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram,\n TAccountMint,\n TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda,\n TAccountCompressibleConfig,\n TAccountRentSponsor,\n TAccountCompressedTokenProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n source: { value: input.source ?? null, isWritable: false },\n sourceSplTokenAccount: {\n value: input.sourceSplTokenAccount ?? null,\n isWritable: true,\n },\n sourceCtokenTokenAccount: {\n value: input.sourceCtokenTokenAccount ?? null,\n isWritable: true,\n },\n destination: { value: input.destination ?? null, isWritable: false },\n destinationSplTokenAccount: {\n value: input.destinationSplTokenAccount ?? null,\n isWritable: true,\n },\n destinationCtokenTokenAccount: {\n value: input.destinationCtokenTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n mint: { value: input.mint ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n compressedTokenProgramAuthority: {\n value: input.compressedTokenProgramAuthority ?? null,\n isWritable: false,\n },\n splInterfacePda: { value: input.splInterfacePda ?? null, isWritable: true },\n compressibleConfig: {\n value: input.compressibleConfig ?? null,\n isWritable: false,\n },\n rentSponsor: { value: input.rentSponsor ?? null, isWritable: true },\n compressedTokenProgram: {\n value: input.compressedTokenProgram ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n if (!accounts.source.value) {\n accounts.source.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 109, 117, 108, 116, 105, 95, 119, 97, 108, 108, 101, 116,\n ]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.settings.value)),\n getBytesEncoder().encode(new Uint8Array([118, 97, 117, 108, 116])),\n ],\n });\n }\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\n }\n if (!accounts.sourceSplTokenAccount.value) {\n accounts.sourceSplTokenAccount.value = await getProgramDerivedAddress({\n programAddress:\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\" as Address<\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.source.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n ],\n });\n }\n if (!accounts.sourceCtokenTokenAccount.value) {\n accounts.sourceCtokenTokenAccount.value = await getProgramDerivedAddress({\n programAddress:\n \"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\" as Address<\"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.source.value)),\n getBytesEncoder().encode(\n new Uint8Array([\n 9, 21, 163, 87, 35, 121, 78, 143, 182, 93, 7, 91, 107, 114, 105,\n 156, 56, 221, 2, 229, 148, 139, 117, 176, 229, 160, 65, 142, 128,\n 151, 91, 68,\n ]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n ],\n });\n }\n if (!accounts.destinationSplTokenAccount.value) {\n accounts.destinationSplTokenAccount.value = await getProgramDerivedAddress({\n programAddress:\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\" as Address<\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.destination.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n ],\n });\n }\n if (!accounts.destinationCtokenTokenAccount.value) {\n accounts.destinationCtokenTokenAccount.value =\n await getProgramDerivedAddress({\n programAddress:\n \"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\" as Address<\"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.destination.value)),\n getBytesEncoder().encode(\n new Uint8Array([\n 9, 21, 163, 87, 35, 121, 78, 143, 182, 93, 7, 91, 107, 114, 105,\n 156, 56, 221, 2, 229, 148, 139, 117, 176, 229, 160, 65, 142, 128,\n 151, 91, 68,\n ]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.compressedTokenProgramAuthority.value) {\n accounts.compressedTokenProgramAuthority.value =\n \"GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy\" as Address<\"GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy\">;\n }\n if (!accounts.compressedTokenProgram.value) {\n accounts.compressedTokenProgram.value =\n \"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\" as Address<\"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.sourceSplTokenAccount),\n getAccountMeta(accounts.sourceCtokenTokenAccount),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.destinationSplTokenAccount),\n getAccountMeta(accounts.destinationCtokenTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.compressedTokenProgramAuthority),\n getAccountMeta(accounts.splInterfacePda),\n getAccountMeta(accounts.compressibleConfig),\n getAccountMeta(accounts.rentSponsor),\n getAccountMeta(accounts.compressedTokenProgram),\n ...remainingAccounts,\n ],\n data: getTokenTransferIntentInstructionDataEncoder().encode(\n args as TokenTransferIntentInstructionDataArgs,\n ),\n programAddress,\n } as TokenTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount,\n TAccountDestination,\n TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram,\n TAccountMint,\n TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda,\n TAccountCompressibleConfig,\n TAccountRentSponsor,\n TAccountCompressedTokenProgram\n >);\n}\n\nexport type TokenTransferIntentInput<\n TAccountSettings extends string = string,\n TAccountPayer extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountSource extends string = string,\n TAccountSourceSplTokenAccount extends string = string,\n TAccountSourceCtokenTokenAccount extends string = string,\n TAccountDestination extends string = string,\n TAccountDestinationSplTokenAccount extends string = string,\n TAccountDestinationCtokenTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountMint extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountCompressedTokenProgramAuthority extends string = string,\n TAccountSplInterfacePda extends string = string,\n TAccountCompressibleConfig extends string = string,\n TAccountRentSponsor extends string = string,\n TAccountCompressedTokenProgram extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n payer: TransactionSigner<TAccountPayer>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n source: Address<TAccountSource>;\n sourceSplTokenAccount: Address<TAccountSourceSplTokenAccount>;\n sourceCtokenTokenAccount: Address<TAccountSourceCtokenTokenAccount>;\n destination: Address<TAccountDestination>;\n destinationSplTokenAccount?: Address<TAccountDestinationSplTokenAccount>;\n destinationCtokenTokenAccount?: Address<TAccountDestinationCtokenTokenAccount>;\n tokenProgram?: Address<TAccountTokenProgram>;\n mint: Address<TAccountMint>;\n systemProgram?: Address<TAccountSystemProgram>;\n compressedTokenProgramAuthority?: Address<TAccountCompressedTokenProgramAuthority>;\n splInterfacePda?: Address<TAccountSplInterfacePda>;\n compressibleConfig: Address<TAccountCompressibleConfig>;\n rentSponsor?: Address<TAccountRentSponsor>;\n compressedTokenProgram?: Address<TAccountCompressedTokenProgram>;\n splInterfacePdaArgs: TokenTransferIntentInstructionDataArgs[\"splInterfacePdaArgs\"];\n amount: TokenTransferIntentInstructionDataArgs[\"amount\"];\n sourceCompressedTokenAccounts: TokenTransferIntentInstructionDataArgs[\"sourceCompressedTokenAccounts\"];\n compressedProofArgs: TokenTransferIntentInstructionDataArgs[\"compressedProofArgs\"];\n signers: TokenTransferIntentInstructionDataArgs[\"signers\"];\n remainingAccounts: TokenTransferIntentInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTokenTransferIntentInstruction<\n TAccountSettings extends string,\n TAccountPayer extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TAccountSource extends string,\n TAccountSourceSplTokenAccount extends string,\n TAccountSourceCtokenTokenAccount extends string,\n TAccountDestination extends string,\n TAccountDestinationSplTokenAccount extends string,\n TAccountDestinationCtokenTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountMint extends string,\n TAccountSystemProgram extends string,\n TAccountCompressedTokenProgramAuthority extends string,\n TAccountSplInterfacePda extends string,\n TAccountCompressibleConfig extends string,\n TAccountRentSponsor extends string,\n TAccountCompressedTokenProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TokenTransferIntentInput<\n TAccountSettings,\n TAccountPayer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount,\n TAccountDestination,\n TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram,\n TAccountMint,\n TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda,\n TAccountCompressibleConfig,\n TAccountRentSponsor,\n TAccountCompressedTokenProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): TokenTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount,\n TAccountDestination,\n TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram,\n TAccountMint,\n TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda,\n TAccountCompressibleConfig,\n TAccountRentSponsor,\n TAccountCompressedTokenProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n source: { value: input.source ?? null, isWritable: false },\n sourceSplTokenAccount: {\n value: input.sourceSplTokenAccount ?? null,\n isWritable: true,\n },\n sourceCtokenTokenAccount: {\n value: input.sourceCtokenTokenAccount ?? null,\n isWritable: true,\n },\n destination: { value: input.destination ?? null, isWritable: false },\n destinationSplTokenAccount: {\n value: input.destinationSplTokenAccount ?? null,\n isWritable: true,\n },\n destinationCtokenTokenAccount: {\n value: input.destinationCtokenTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n mint: { value: input.mint ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n compressedTokenProgramAuthority: {\n value: input.compressedTokenProgramAuthority ?? null,\n isWritable: false,\n },\n splInterfacePda: { value: input.splInterfacePda ?? null, isWritable: true },\n compressibleConfig: {\n value: input.compressibleConfig ?? null,\n isWritable: false,\n },\n rentSponsor: { value: input.rentSponsor ?? null, isWritable: true },\n compressedTokenProgram: {\n value: input.compressedTokenProgram ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.compressedTokenProgramAuthority.value) {\n accounts.compressedTokenProgramAuthority.value =\n \"GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy\" as Address<\"GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy\">;\n }\n if (!accounts.compressedTokenProgram.value) {\n accounts.compressedTokenProgram.value =\n \"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\" as Address<\"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.sourceSplTokenAccount),\n getAccountMeta(accounts.sourceCtokenTokenAccount),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.destinationSplTokenAccount),\n getAccountMeta(accounts.destinationCtokenTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.compressedTokenProgramAuthority),\n getAccountMeta(accounts.splInterfacePda),\n getAccountMeta(accounts.compressibleConfig),\n getAccountMeta(accounts.rentSponsor),\n getAccountMeta(accounts.compressedTokenProgram),\n ...remainingAccounts,\n ],\n data: getTokenTransferIntentInstructionDataEncoder().encode(\n args as TokenTransferIntentInstructionDataArgs,\n ),\n programAddress,\n } as TokenTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount,\n TAccountDestination,\n TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram,\n TAccountMint,\n TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda,\n TAccountCompressibleConfig,\n TAccountRentSponsor,\n TAccountCompressedTokenProgram\n >);\n}\n\nexport type ParsedTokenTransferIntentInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n payer: TAccountMetas[1];\n slotHashSysvar?: TAccountMetas[2] | undefined;\n instructionsSysvar: TAccountMetas[3];\n source: TAccountMetas[4];\n sourceSplTokenAccount: TAccountMetas[5];\n sourceCtokenTokenAccount: TAccountMetas[6];\n destination: TAccountMetas[7];\n destinationSplTokenAccount?: TAccountMetas[8] | undefined;\n destinationCtokenTokenAccount?: TAccountMetas[9] | undefined;\n tokenProgram: TAccountMetas[10];\n mint: TAccountMetas[11];\n systemProgram: TAccountMetas[12];\n compressedTokenProgramAuthority: TAccountMetas[13];\n splInterfacePda?: TAccountMetas[14] | undefined;\n compressibleConfig: TAccountMetas[15];\n rentSponsor?: TAccountMetas[16] | undefined;\n compressedTokenProgram: TAccountMetas[17];\n };\n data: TokenTransferIntentInstructionData;\n};\n\nexport function parseTokenTransferIntentInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTokenTransferIntentInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 18) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n payer: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextAccount(),\n source: getNextAccount(),\n sourceSplTokenAccount: getNextAccount(),\n sourceCtokenTokenAccount: getNextAccount(),\n destination: getNextAccount(),\n destinationSplTokenAccount: getNextOptionalAccount(),\n destinationCtokenTokenAccount: getNextOptionalAccount(),\n tokenProgram: getNextAccount(),\n mint: getNextAccount(),\n systemProgram: getNextAccount(),\n compressedTokenProgramAuthority: getNextAccount(),\n splInterfacePda: getNextOptionalAccount(),\n compressibleConfig: getNextAccount(),\n rentSponsor: getNextOptionalAccount(),\n compressedTokenProgram: getNextAccount(),\n },\n data: getTokenTransferIntentInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getSecp256r1VerifyArgsDecoder,\n getSecp256r1VerifyArgsEncoder,\n type Secp256r1VerifyArgs,\n type Secp256r1VerifyArgsArgs,\n} from \"../types\";\n\nexport const TRANSACTION_BUFFER_CLOSE_DISCRIMINATOR = new Uint8Array([12]);\n\nexport function getTransactionBufferCloseDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_BUFFER_CLOSE_DISCRIMINATOR,\n );\n}\n\nexport type TransactionBufferCloseInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountTransactionBuffer extends string | AccountMeta<string> = string,\n TAccountCloser extends string | AccountMeta<string> = string,\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountPayer extends string\n ? WritableAccount<TAccountPayer>\n : TAccountPayer,\n TAccountDomainConfig extends string\n ? ReadonlyAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountTransactionBuffer extends string\n ? WritableAccount<TAccountTransactionBuffer>\n : TAccountTransactionBuffer,\n TAccountCloser extends string\n ? ReadonlySignerAccount<TAccountCloser> &\n AccountSignerMeta<TAccountCloser>\n : TAccountCloser,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionBufferCloseInstructionData = {\n discriminator: ReadonlyUint8Array;\n secp256r1VerifyArgs: Option<Secp256r1VerifyArgs>;\n};\n\nexport type TransactionBufferCloseInstructionDataArgs = {\n secp256r1VerifyArgs: OptionOrNullable<Secp256r1VerifyArgsArgs>;\n};\n\nexport function getTransactionBufferCloseInstructionDataEncoder(): Encoder<TransactionBufferCloseInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"secp256r1VerifyArgs\",\n getOptionEncoder(getSecp256r1VerifyArgsEncoder()),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSACTION_BUFFER_CLOSE_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTransactionBufferCloseInstructionDataDecoder(): Decoder<TransactionBufferCloseInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"secp256r1VerifyArgs\", getOptionDecoder(getSecp256r1VerifyArgsDecoder())],\n ]);\n}\n\nexport function getTransactionBufferCloseInstructionDataCodec(): Codec<\n TransactionBufferCloseInstructionDataArgs,\n TransactionBufferCloseInstructionData\n> {\n return combineCodec(\n getTransactionBufferCloseInstructionDataEncoder(),\n getTransactionBufferCloseInstructionDataDecoder(),\n );\n}\n\nexport type TransactionBufferCloseInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionBufferCloseInput<\n TAccountSettings extends string = string,\n TAccountPayer extends string = string,\n TAccountDomainConfig extends string = string,\n TAccountTransactionBuffer extends string = string,\n TAccountCloser extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n payer: Address<TAccountPayer>;\n domainConfig?: Address<TAccountDomainConfig>;\n transactionBuffer: Address<TAccountTransactionBuffer>;\n closer?: TransactionSigner<TAccountCloser>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n secp256r1VerifyArgs: TransactionBufferCloseInstructionDataArgs[\"secp256r1VerifyArgs\"];\n remainingAccounts: TransactionBufferCloseInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionBufferCloseInstruction<\n TAccountSettings extends string,\n TAccountPayer extends string,\n TAccountDomainConfig extends string,\n TAccountTransactionBuffer extends string,\n TAccountCloser extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionBufferCloseInput<\n TAccountSettings,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountCloser,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionBufferCloseInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountCloser,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n domainConfig: { value: input.domainConfig ?? null, isWritable: false },\n transactionBuffer: {\n value: input.transactionBuffer ?? null,\n isWritable: true,\n },\n closer: { value: input.closer ?? null, isWritable: false },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.transactionBuffer),\n getAccountMeta(accounts.closer),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n ...remainingAccounts,\n ],\n data: getTransactionBufferCloseInstructionDataEncoder().encode(\n args as TransactionBufferCloseInstructionDataArgs,\n ),\n programAddress,\n } as TransactionBufferCloseInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountCloser,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >);\n}\n\nexport type ParsedTransactionBufferCloseInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n payer: TAccountMetas[1];\n domainConfig?: TAccountMetas[2] | undefined;\n transactionBuffer: TAccountMetas[3];\n closer?: TAccountMetas[4] | undefined;\n slotHashSysvar?: TAccountMetas[5] | undefined;\n instructionsSysvar?: TAccountMetas[6] | undefined;\n };\n data: TransactionBufferCloseInstructionData;\n};\n\nexport function parseTransactionBufferCloseInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionBufferCloseInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n payer: getNextAccount(),\n domainConfig: getNextOptionalAccount(),\n transactionBuffer: getNextAccount(),\n closer: getNextOptionalAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextOptionalAccount(),\n },\n data: getTransactionBufferCloseInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getExpectedSignerDecoder,\n getExpectedSignerEncoder,\n getSecp256r1VerifyArgsDecoder,\n getSecp256r1VerifyArgsEncoder,\n type ExpectedSigner,\n type ExpectedSignerArgs,\n type Secp256r1VerifyArgs,\n type Secp256r1VerifyArgsArgs,\n} from \"../types\";\n\nexport const TRANSACTION_BUFFER_CREATE_DISCRIMINATOR = new Uint8Array([9]);\n\nexport function getTransactionBufferCreateDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_BUFFER_CREATE_DISCRIMINATOR,\n );\n}\n\nexport type TransactionBufferCreateInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountTransactionBuffer extends string | AccountMeta<string> = string,\n TAccountCreator extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? ReadonlyAccount<TAccountSettings>\n : TAccountSettings,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountDomainConfig extends string\n ? ReadonlyAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountTransactionBuffer extends string\n ? WritableAccount<TAccountTransactionBuffer>\n : TAccountTransactionBuffer,\n TAccountCreator extends string\n ? ReadonlySignerAccount<TAccountCreator> &\n AccountSignerMeta<TAccountCreator>\n : TAccountCreator,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionBufferCreateInstructionData = {\n discriminator: ReadonlyUint8Array;\n bufferIndex: number;\n preauthorizeExecution: boolean;\n bufferExtendHashes: Array<ReadonlyUint8Array>;\n finalBufferHash: ReadonlyUint8Array;\n finalBufferSize: number;\n expectedSigners: Array<ExpectedSigner>;\n secp256r1VerifyArgs: Option<Secp256r1VerifyArgs>;\n};\n\nexport type TransactionBufferCreateInstructionDataArgs = {\n bufferIndex: number;\n preauthorizeExecution: boolean;\n bufferExtendHashes: Array<ReadonlyUint8Array>;\n finalBufferHash: ReadonlyUint8Array;\n finalBufferSize: number;\n expectedSigners: Array<ExpectedSignerArgs>;\n secp256r1VerifyArgs: OptionOrNullable<Secp256r1VerifyArgsArgs>;\n};\n\nexport function getTransactionBufferCreateInstructionDataEncoder(): Encoder<TransactionBufferCreateInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"bufferIndex\", getU8Encoder()],\n [\"preauthorizeExecution\", getBooleanEncoder()],\n [\n \"bufferExtendHashes\",\n getArrayEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n ],\n [\"finalBufferHash\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"finalBufferSize\", getU16Encoder()],\n [\"expectedSigners\", getArrayEncoder(getExpectedSignerEncoder())],\n [\n \"secp256r1VerifyArgs\",\n getOptionEncoder(getSecp256r1VerifyArgsEncoder()),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSACTION_BUFFER_CREATE_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTransactionBufferCreateInstructionDataDecoder(): Decoder<TransactionBufferCreateInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"bufferIndex\", getU8Decoder()],\n [\"preauthorizeExecution\", getBooleanDecoder()],\n [\n \"bufferExtendHashes\",\n getArrayDecoder(fixDecoderSize(getBytesDecoder(), 32)),\n ],\n [\"finalBufferHash\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"finalBufferSize\", getU16Decoder()],\n [\"expectedSigners\", getArrayDecoder(getExpectedSignerDecoder())],\n [\"secp256r1VerifyArgs\", getOptionDecoder(getSecp256r1VerifyArgsDecoder())],\n ]);\n}\n\nexport function getTransactionBufferCreateInstructionDataCodec(): Codec<\n TransactionBufferCreateInstructionDataArgs,\n TransactionBufferCreateInstructionData\n> {\n return combineCodec(\n getTransactionBufferCreateInstructionDataEncoder(),\n getTransactionBufferCreateInstructionDataDecoder(),\n );\n}\n\nexport type TransactionBufferCreateInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionBufferCreateInput<\n TAccountSettings extends string = string,\n TAccountPayer extends string = string,\n TAccountDomainConfig extends string = string,\n TAccountTransactionBuffer extends string = string,\n TAccountCreator extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountSlotHashSysvar extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n payer: TransactionSigner<TAccountPayer>;\n domainConfig?: Address<TAccountDomainConfig>;\n transactionBuffer: Address<TAccountTransactionBuffer>;\n creator?: TransactionSigner<TAccountCreator>;\n systemProgram?: Address<TAccountSystemProgram>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n bufferIndex: TransactionBufferCreateInstructionDataArgs[\"bufferIndex\"];\n preauthorizeExecution: TransactionBufferCreateInstructionDataArgs[\"preauthorizeExecution\"];\n bufferExtendHashes: TransactionBufferCreateInstructionDataArgs[\"bufferExtendHashes\"];\n finalBufferHash: TransactionBufferCreateInstructionDataArgs[\"finalBufferHash\"];\n finalBufferSize: TransactionBufferCreateInstructionDataArgs[\"finalBufferSize\"];\n expectedSigners: TransactionBufferCreateInstructionDataArgs[\"expectedSigners\"];\n secp256r1VerifyArgs: TransactionBufferCreateInstructionDataArgs[\"secp256r1VerifyArgs\"];\n remainingAccounts: TransactionBufferCreateInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionBufferCreateInstruction<\n TAccountSettings extends string,\n TAccountPayer extends string,\n TAccountDomainConfig extends string,\n TAccountTransactionBuffer extends string,\n TAccountCreator extends string,\n TAccountSystemProgram extends string,\n TAccountInstructionsSysvar extends string,\n TAccountSlotHashSysvar extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionBufferCreateInput<\n TAccountSettings,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountCreator,\n TAccountSystemProgram,\n TAccountInstructionsSysvar,\n TAccountSlotHashSysvar\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionBufferCreateInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountCreator,\n TAccountSystemProgram,\n TAccountInstructionsSysvar,\n TAccountSlotHashSysvar\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: false },\n payer: { value: input.payer ?? null, isWritable: true },\n domainConfig: { value: input.domainConfig ?? null, isWritable: false },\n transactionBuffer: {\n value: input.transactionBuffer ?? null,\n isWritable: true,\n },\n creator: { value: input.creator ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.transactionBuffer),\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.slotHashSysvar),\n ...remainingAccounts,\n ],\n data: getTransactionBufferCreateInstructionDataEncoder().encode(\n args as TransactionBufferCreateInstructionDataArgs,\n ),\n programAddress,\n } as TransactionBufferCreateInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountCreator,\n TAccountSystemProgram,\n TAccountInstructionsSysvar,\n TAccountSlotHashSysvar\n >);\n}\n\nexport type ParsedTransactionBufferCreateInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n payer: TAccountMetas[1];\n domainConfig?: TAccountMetas[2] | undefined;\n transactionBuffer: TAccountMetas[3];\n creator?: TAccountMetas[4] | undefined;\n systemProgram: TAccountMetas[5];\n instructionsSysvar: TAccountMetas[6];\n slotHashSysvar?: TAccountMetas[7] | undefined;\n };\n data: TransactionBufferCreateInstructionData;\n};\n\nexport function parseTransactionBufferCreateInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionBufferCreateInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n payer: getNextAccount(),\n domainConfig: getNextOptionalAccount(),\n transactionBuffer: getNextAccount(),\n creator: getNextOptionalAccount(),\n systemProgram: getNextAccount(),\n instructionsSysvar: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n },\n data: getTransactionBufferCreateInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getSecp256r1VerifyArgsDecoder,\n getSecp256r1VerifyArgsEncoder,\n type Secp256r1VerifyArgs,\n type Secp256r1VerifyArgsArgs,\n} from \"../types\";\n\nexport const TRANSACTION_BUFFER_EXECUTE_DISCRIMINATOR = new Uint8Array([13]);\n\nexport function getTransactionBufferExecuteDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_BUFFER_EXECUTE_DISCRIMINATOR,\n );\n}\n\nexport type TransactionBufferExecuteInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountExecutor extends string | AccountMeta<string> = string,\n TAccountTransactionBuffer extends string | AccountMeta<string> = string,\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountDomainConfig extends string\n ? ReadonlyAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountExecutor extends string\n ? ReadonlySignerAccount<TAccountExecutor> &\n AccountSignerMeta<TAccountExecutor>\n : TAccountExecutor,\n TAccountTransactionBuffer extends string\n ? WritableAccount<TAccountTransactionBuffer>\n : TAccountTransactionBuffer,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionBufferExecuteInstructionData = {\n discriminator: ReadonlyUint8Array;\n secp256r1VerifyArgs: Option<Secp256r1VerifyArgs>;\n};\n\nexport type TransactionBufferExecuteInstructionDataArgs = {\n secp256r1VerifyArgs: OptionOrNullable<Secp256r1VerifyArgsArgs>;\n};\n\nexport function getTransactionBufferExecuteInstructionDataEncoder(): Encoder<TransactionBufferExecuteInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"secp256r1VerifyArgs\",\n getOptionEncoder(getSecp256r1VerifyArgsEncoder()),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSACTION_BUFFER_EXECUTE_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTransactionBufferExecuteInstructionDataDecoder(): Decoder<TransactionBufferExecuteInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"secp256r1VerifyArgs\", getOptionDecoder(getSecp256r1VerifyArgsDecoder())],\n ]);\n}\n\nexport function getTransactionBufferExecuteInstructionDataCodec(): Codec<\n TransactionBufferExecuteInstructionDataArgs,\n TransactionBufferExecuteInstructionData\n> {\n return combineCodec(\n getTransactionBufferExecuteInstructionDataEncoder(),\n getTransactionBufferExecuteInstructionDataDecoder(),\n );\n}\n\nexport type TransactionBufferExecuteInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionBufferExecuteInput<\n TAccountSettings extends string = string,\n TAccountDomainConfig extends string = string,\n TAccountExecutor extends string = string,\n TAccountTransactionBuffer extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n domainConfig?: Address<TAccountDomainConfig>;\n executor?: TransactionSigner<TAccountExecutor>;\n transactionBuffer: Address<TAccountTransactionBuffer>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n secp256r1VerifyArgs: TransactionBufferExecuteInstructionDataArgs[\"secp256r1VerifyArgs\"];\n remainingAccounts: TransactionBufferExecuteInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionBufferExecuteInstruction<\n TAccountSettings extends string,\n TAccountDomainConfig extends string,\n TAccountExecutor extends string,\n TAccountTransactionBuffer extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionBufferExecuteInput<\n TAccountSettings,\n TAccountDomainConfig,\n TAccountExecutor,\n TAccountTransactionBuffer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionBufferExecuteInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountDomainConfig,\n TAccountExecutor,\n TAccountTransactionBuffer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n domainConfig: { value: input.domainConfig ?? null, isWritable: false },\n executor: { value: input.executor ?? null, isWritable: false },\n transactionBuffer: {\n value: input.transactionBuffer ?? null,\n isWritable: true,\n },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.executor),\n getAccountMeta(accounts.transactionBuffer),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n ...remainingAccounts,\n ],\n data: getTransactionBufferExecuteInstructionDataEncoder().encode(\n args as TransactionBufferExecuteInstructionDataArgs,\n ),\n programAddress,\n } as TransactionBufferExecuteInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountDomainConfig,\n TAccountExecutor,\n TAccountTransactionBuffer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >);\n}\n\nexport type ParsedTransactionBufferExecuteInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n domainConfig?: TAccountMetas[1] | undefined;\n executor?: TAccountMetas[2] | undefined;\n transactionBuffer: TAccountMetas[3];\n slotHashSysvar?: TAccountMetas[4] | undefined;\n instructionsSysvar?: TAccountMetas[5] | undefined;\n };\n data: TransactionBufferExecuteInstructionData;\n};\n\nexport function parseTransactionBufferExecuteInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionBufferExecuteInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n domainConfig: getNextOptionalAccount(),\n executor: getNextOptionalAccount(),\n transactionBuffer: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextOptionalAccount(),\n },\n data: getTransactionBufferExecuteInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type AccountMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\n\nexport const TRANSACTION_BUFFER_EXTEND_DISCRIMINATOR = new Uint8Array([11]);\n\nexport function getTransactionBufferExtendDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_BUFFER_EXTEND_DISCRIMINATOR,\n );\n}\n\nexport type TransactionBufferExtendInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountTransactionBuffer extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? ReadonlyAccount<TAccountSettings>\n : TAccountSettings,\n TAccountTransactionBuffer extends string\n ? WritableAccount<TAccountTransactionBuffer>\n : TAccountTransactionBuffer,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionBufferExtendInstructionData = {\n discriminator: ReadonlyUint8Array;\n buffer: ReadonlyUint8Array;\n};\n\nexport type TransactionBufferExtendInstructionDataArgs = {\n buffer: ReadonlyUint8Array;\n};\n\nexport function getTransactionBufferExtendInstructionDataEncoder(): Encoder<TransactionBufferExtendInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"buffer\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSACTION_BUFFER_EXTEND_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTransactionBufferExtendInstructionDataDecoder(): Decoder<TransactionBufferExtendInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"buffer\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n ]);\n}\n\nexport function getTransactionBufferExtendInstructionDataCodec(): Codec<\n TransactionBufferExtendInstructionDataArgs,\n TransactionBufferExtendInstructionData\n> {\n return combineCodec(\n getTransactionBufferExtendInstructionDataEncoder(),\n getTransactionBufferExtendInstructionDataDecoder(),\n );\n}\n\nexport type TransactionBufferExtendInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionBufferExtendInput<\n TAccountSettings extends string = string,\n TAccountTransactionBuffer extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n transactionBuffer: Address<TAccountTransactionBuffer>;\n buffer: TransactionBufferExtendInstructionDataArgs[\"buffer\"];\n remainingAccounts: TransactionBufferExtendInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionBufferExtendInstruction<\n TAccountSettings extends string,\n TAccountTransactionBuffer extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionBufferExtendInput<\n TAccountSettings,\n TAccountTransactionBuffer\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionBufferExtendInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountTransactionBuffer\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: false },\n transactionBuffer: {\n value: input.transactionBuffer ?? null,\n isWritable: true,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.transactionBuffer),\n ...remainingAccounts,\n ],\n data: getTransactionBufferExtendInstructionDataEncoder().encode(\n args as TransactionBufferExtendInstructionDataArgs,\n ),\n programAddress,\n } as TransactionBufferExtendInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountTransactionBuffer\n >);\n}\n\nexport type ParsedTransactionBufferExtendInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n transactionBuffer: TAccountMetas[1];\n };\n data: TransactionBufferExtendInstructionData;\n};\n\nexport function parseTransactionBufferExtendInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionBufferExtendInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n transactionBuffer: getNextAccount(),\n },\n data: getTransactionBufferExtendInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getSecp256r1VerifyArgsDecoder,\n getSecp256r1VerifyArgsEncoder,\n type Secp256r1VerifyArgs,\n type Secp256r1VerifyArgsArgs,\n} from \"../types\";\n\nexport const TRANSACTION_BUFFER_VOTE_DISCRIMINATOR = new Uint8Array([10]);\n\nexport function getTransactionBufferVoteDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_BUFFER_VOTE_DISCRIMINATOR,\n );\n}\n\nexport type TransactionBufferVoteInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountTransactionBuffer extends string | AccountMeta<string> = string,\n TAccountVoter extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? ReadonlyAccount<TAccountSettings>\n : TAccountSettings,\n TAccountDomainConfig extends string\n ? ReadonlyAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountTransactionBuffer extends string\n ? WritableAccount<TAccountTransactionBuffer>\n : TAccountTransactionBuffer,\n TAccountVoter extends string\n ? ReadonlySignerAccount<TAccountVoter> &\n AccountSignerMeta<TAccountVoter>\n : TAccountVoter,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionBufferVoteInstructionData = {\n discriminator: ReadonlyUint8Array;\n secp256r1VerifyArgs: Option<Secp256r1VerifyArgs>;\n};\n\nexport type TransactionBufferVoteInstructionDataArgs = {\n secp256r1VerifyArgs: OptionOrNullable<Secp256r1VerifyArgsArgs>;\n};\n\nexport function getTransactionBufferVoteInstructionDataEncoder(): Encoder<TransactionBufferVoteInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"secp256r1VerifyArgs\",\n getOptionEncoder(getSecp256r1VerifyArgsEncoder()),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSACTION_BUFFER_VOTE_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTransactionBufferVoteInstructionDataDecoder(): Decoder<TransactionBufferVoteInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"secp256r1VerifyArgs\", getOptionDecoder(getSecp256r1VerifyArgsDecoder())],\n ]);\n}\n\nexport function getTransactionBufferVoteInstructionDataCodec(): Codec<\n TransactionBufferVoteInstructionDataArgs,\n TransactionBufferVoteInstructionData\n> {\n return combineCodec(\n getTransactionBufferVoteInstructionDataEncoder(),\n getTransactionBufferVoteInstructionDataDecoder(),\n );\n}\n\nexport type TransactionBufferVoteInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionBufferVoteInput<\n TAccountSettings extends string = string,\n TAccountDomainConfig extends string = string,\n TAccountTransactionBuffer extends string = string,\n TAccountVoter extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n domainConfig?: Address<TAccountDomainConfig>;\n transactionBuffer: Address<TAccountTransactionBuffer>;\n voter?: TransactionSigner<TAccountVoter>;\n systemProgram?: Address<TAccountSystemProgram>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n secp256r1VerifyArgs: TransactionBufferVoteInstructionDataArgs[\"secp256r1VerifyArgs\"];\n remainingAccounts: TransactionBufferVoteInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionBufferVoteInstruction<\n TAccountSettings extends string,\n TAccountDomainConfig extends string,\n TAccountTransactionBuffer extends string,\n TAccountVoter extends string,\n TAccountSystemProgram extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionBufferVoteInput<\n TAccountSettings,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountVoter,\n TAccountSystemProgram,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionBufferVoteInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountVoter,\n TAccountSystemProgram,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: false },\n domainConfig: { value: input.domainConfig ?? null, isWritable: false },\n transactionBuffer: {\n value: input.transactionBuffer ?? null,\n isWritable: true,\n },\n voter: { value: input.voter ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.transactionBuffer),\n getAccountMeta(accounts.voter),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n ...remainingAccounts,\n ],\n data: getTransactionBufferVoteInstructionDataEncoder().encode(\n args as TransactionBufferVoteInstructionDataArgs,\n ),\n programAddress,\n } as TransactionBufferVoteInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountVoter,\n TAccountSystemProgram,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >);\n}\n\nexport type ParsedTransactionBufferVoteInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n domainConfig?: TAccountMetas[1] | undefined;\n transactionBuffer: TAccountMetas[2];\n voter?: TAccountMetas[3] | undefined;\n systemProgram: TAccountMetas[4];\n slotHashSysvar?: TAccountMetas[5] | undefined;\n instructionsSysvar?: TAccountMetas[6] | undefined;\n };\n data: TransactionBufferVoteInstructionData;\n};\n\nexport function parseTransactionBufferVoteInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionBufferVoteInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n domainConfig: getNextOptionalAccount(),\n transactionBuffer: getNextAccount(),\n voter: getNextOptionalAccount(),\n systemProgram: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextOptionalAccount(),\n },\n data: getTransactionBufferVoteInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyUint8Array,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\n\nexport const TRANSACTION_EXECUTE_DISCRIMINATOR = new Uint8Array([14]);\n\nexport function getTransactionExecuteDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_EXECUTE_DISCRIMINATOR,\n );\n}\n\nexport type TransactionExecuteInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountTransactionBuffer extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountPayer extends string\n ? WritableAccount<TAccountPayer>\n : TAccountPayer,\n TAccountTransactionBuffer extends string\n ? WritableAccount<TAccountTransactionBuffer>\n : TAccountTransactionBuffer,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionExecuteInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type TransactionExecuteInstructionDataArgs = {};\n\nexport function getTransactionExecuteInstructionDataEncoder(): FixedSizeEncoder<TransactionExecuteInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([[\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)]]),\n (value) => ({ ...value, discriminator: TRANSACTION_EXECUTE_DISCRIMINATOR }),\n );\n}\n\nexport function getTransactionExecuteInstructionDataDecoder(): FixedSizeDecoder<TransactionExecuteInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n ]);\n}\n\nexport function getTransactionExecuteInstructionDataCodec(): FixedSizeCodec<\n TransactionExecuteInstructionDataArgs,\n TransactionExecuteInstructionData\n> {\n return combineCodec(\n getTransactionExecuteInstructionDataEncoder(),\n getTransactionExecuteInstructionDataDecoder(),\n );\n}\n\nexport type TransactionExecuteInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionExecuteInput<\n TAccountSettings extends string = string,\n TAccountPayer extends string = string,\n TAccountTransactionBuffer extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n payer: Address<TAccountPayer>;\n transactionBuffer: Address<TAccountTransactionBuffer>;\n remainingAccounts: TransactionExecuteInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionExecuteInstruction<\n TAccountSettings extends string,\n TAccountPayer extends string,\n TAccountTransactionBuffer extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionExecuteInput<\n TAccountSettings,\n TAccountPayer,\n TAccountTransactionBuffer\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionExecuteInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountTransactionBuffer\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n transactionBuffer: {\n value: input.transactionBuffer ?? null,\n isWritable: true,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts };\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.transactionBuffer),\n ...remainingAccounts,\n ],\n data: getTransactionExecuteInstructionDataEncoder().encode({}),\n programAddress,\n } as TransactionExecuteInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountTransactionBuffer\n >);\n}\n\nexport type ParsedTransactionExecuteInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n payer: TAccountMetas[1];\n transactionBuffer: TAccountMetas[2];\n };\n data: TransactionExecuteInstructionData;\n};\n\nexport function parseTransactionExecuteInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionExecuteInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n payer: getNextAccount(),\n transactionBuffer: getNextAccount(),\n },\n data: getTransactionExecuteInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type AccountMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getCompiledInstructionDecoder,\n getCompiledInstructionEncoder,\n getTransactionMessageAddressTableLookupDecoder,\n getTransactionMessageAddressTableLookupEncoder,\n getTransactionSyncSignersDecoder,\n getTransactionSyncSignersEncoder,\n type CompiledInstruction,\n type CompiledInstructionArgs,\n type TransactionMessageAddressTableLookup,\n type TransactionMessageAddressTableLookupArgs,\n type TransactionSyncSigners,\n type TransactionSyncSignersArgs,\n} from \"../types\";\n\nexport const TRANSACTION_EXECUTE_SYNC_DISCRIMINATOR = new Uint8Array([15]);\n\nexport function getTransactionExecuteSyncDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_EXECUTE_SYNC_DISCRIMINATOR,\n );\n}\n\nexport type TransactionExecuteSyncInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionExecuteSyncInstructionData = {\n discriminator: ReadonlyUint8Array;\n numSigners: number;\n numWritableSigners: number;\n numWritableNonSigners: number;\n numAccountKeys: number;\n instructions: Array<CompiledInstruction>;\n addressTableLookups: Array<TransactionMessageAddressTableLookup>;\n signers: Array<TransactionSyncSigners>;\n};\n\nexport type TransactionExecuteSyncInstructionDataArgs = {\n numSigners: number;\n numWritableSigners: number;\n numWritableNonSigners: number;\n numAccountKeys: number;\n instructions: Array<CompiledInstructionArgs>;\n addressTableLookups: Array<TransactionMessageAddressTableLookupArgs>;\n signers: Array<TransactionSyncSignersArgs>;\n};\n\nexport function getTransactionExecuteSyncInstructionDataEncoder(): Encoder<TransactionExecuteSyncInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"numSigners\", getU8Encoder()],\n [\"numWritableSigners\", getU8Encoder()],\n [\"numWritableNonSigners\", getU8Encoder()],\n [\"numAccountKeys\", getU8Encoder()],\n [\"instructions\", getArrayEncoder(getCompiledInstructionEncoder())],\n [\n \"addressTableLookups\",\n getArrayEncoder(getTransactionMessageAddressTableLookupEncoder()),\n ],\n [\"signers\", getArrayEncoder(getTransactionSyncSignersEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSACTION_EXECUTE_SYNC_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTransactionExecuteSyncInstructionDataDecoder(): Decoder<TransactionExecuteSyncInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"numSigners\", getU8Decoder()],\n [\"numWritableSigners\", getU8Decoder()],\n [\"numWritableNonSigners\", getU8Decoder()],\n [\"numAccountKeys\", getU8Decoder()],\n [\"instructions\", getArrayDecoder(getCompiledInstructionDecoder())],\n [\n \"addressTableLookups\",\n getArrayDecoder(getTransactionMessageAddressTableLookupDecoder()),\n ],\n [\"signers\", getArrayDecoder(getTransactionSyncSignersDecoder())],\n ]);\n}\n\nexport function getTransactionExecuteSyncInstructionDataCodec(): Codec<\n TransactionExecuteSyncInstructionDataArgs,\n TransactionExecuteSyncInstructionData\n> {\n return combineCodec(\n getTransactionExecuteSyncInstructionDataEncoder(),\n getTransactionExecuteSyncInstructionDataDecoder(),\n );\n}\n\nexport type TransactionExecuteSyncInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionExecuteSyncInput<\n TAccountSettings extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n numSigners: TransactionExecuteSyncInstructionDataArgs[\"numSigners\"];\n numWritableSigners: TransactionExecuteSyncInstructionDataArgs[\"numWritableSigners\"];\n numWritableNonSigners: TransactionExecuteSyncInstructionDataArgs[\"numWritableNonSigners\"];\n numAccountKeys: TransactionExecuteSyncInstructionDataArgs[\"numAccountKeys\"];\n instructions: TransactionExecuteSyncInstructionDataArgs[\"instructions\"];\n addressTableLookups: TransactionExecuteSyncInstructionDataArgs[\"addressTableLookups\"];\n signers: TransactionExecuteSyncInstructionDataArgs[\"signers\"];\n remainingAccounts: TransactionExecuteSyncInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionExecuteSyncInstruction<\n TAccountSettings extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionExecuteSyncInput<\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionExecuteSyncInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n ...remainingAccounts,\n ],\n data: getTransactionExecuteSyncInstructionDataEncoder().encode(\n args as TransactionExecuteSyncInstructionDataArgs,\n ),\n programAddress,\n } as TransactionExecuteSyncInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >);\n}\n\nexport type ParsedTransactionExecuteSyncInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n slotHashSysvar?: TAccountMetas[1] | undefined;\n instructionsSysvar: TAccountMetas[2];\n };\n data: TransactionExecuteSyncInstructionData;\n};\n\nexport function parseTransactionExecuteSyncInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionExecuteSyncInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextAccount(),\n },\n data: getTransactionExecuteSyncInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n containsBytes,\n fixEncoderSize,\n getBytesEncoder,\n type Address,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n type ParsedChangeConfigInstruction,\n type ParsedCreateDomainConfigInstruction,\n type ParsedCreateDomainUserAccountInstruction,\n type ParsedCreateGlobalCounterInstruction,\n type ParsedCreateUserAccountInstruction,\n type ParsedCreateWalletInstruction,\n type ParsedDisableDomainConfigInstruction,\n type ParsedEditDomainConfigInstruction,\n type ParsedEditTransactionManagerUrlInstruction,\n type ParsedEditUserDelegateInstruction,\n type ParsedNativeTransferIntentInstruction,\n type ParsedTokenTransferIntentInstruction,\n type ParsedTransactionBufferCloseInstruction,\n type ParsedTransactionBufferCreateInstruction,\n type ParsedTransactionBufferExecuteInstruction,\n type ParsedTransactionBufferExtendInstruction,\n type ParsedTransactionBufferVoteInstruction,\n type ParsedTransactionExecuteInstruction,\n type ParsedTransactionExecuteSyncInstruction,\n} from \"../instructions\";\n\nexport const MULTI_WALLET_PROGRAM_ADDRESS =\n \"reviR1xysEChySVSWGa43a6oJ2boJYTJhwRjo8KJhhT\" as Address<\"reviR1xysEChySVSWGa43a6oJ2boJYTJhwRjo8KJhhT\">;\n\nexport enum MultiWalletAccount {\n DomainConfig,\n GlobalCounter,\n Settings,\n TransactionBuffer,\n User,\n}\n\nexport function identifyMultiWalletAccount(\n account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): MultiWalletAccount {\n const data = \"data\" in account ? account.data : account;\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([201, 232, 212, 229, 59, 241, 106, 197]),\n ),\n 0,\n )\n ) {\n return MultiWalletAccount.DomainConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([42, 206, 176, 58, 175, 129, 130, 233]),\n ),\n 0,\n )\n ) {\n return MultiWalletAccount.GlobalCounter;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([223, 179, 163, 190, 177, 224, 67, 173]),\n ),\n 0,\n )\n ) {\n return MultiWalletAccount.Settings;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([90, 36, 35, 219, 93, 225, 110, 96]),\n ),\n 0,\n )\n ) {\n return MultiWalletAccount.TransactionBuffer;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([159, 117, 95, 227, 239, 151, 58, 236]),\n ),\n 0,\n )\n ) {\n return MultiWalletAccount.User;\n }\n throw new Error(\n \"The provided account could not be identified as a multiWallet account.\",\n );\n}\n\nexport enum MultiWalletInstruction {\n ChangeConfig,\n CreateDomainConfig,\n CreateDomainUserAccount,\n CreateGlobalCounter,\n CreateUserAccount,\n CreateWallet,\n DisableDomainConfig,\n EditDomainConfig,\n EditTransactionManagerUrl,\n EditUserDelegate,\n NativeTransferIntent,\n TokenTransferIntent,\n TransactionBufferClose,\n TransactionBufferCreate,\n TransactionBufferExecute,\n TransactionBufferExtend,\n TransactionBufferVote,\n TransactionExecute,\n TransactionExecuteSync,\n}\n\nexport function identifyMultiWalletInstruction(\n instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): MultiWalletInstruction {\n const data = \"data\" in instruction ? instruction.data : instruction;\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([8])),\n 0,\n )\n ) {\n return MultiWalletInstruction.ChangeConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([0])),\n 0,\n )\n ) {\n return MultiWalletInstruction.CreateDomainConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([4])),\n 0,\n )\n ) {\n return MultiWalletInstruction.CreateDomainUserAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([3])),\n 0,\n )\n ) {\n return MultiWalletInstruction.CreateGlobalCounter;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([5])),\n 0,\n )\n ) {\n return MultiWalletInstruction.CreateUserAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([16])),\n 0,\n )\n ) {\n return MultiWalletInstruction.CreateWallet;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([2])),\n 0,\n )\n ) {\n return MultiWalletInstruction.DisableDomainConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([1])),\n 0,\n )\n ) {\n return MultiWalletInstruction.EditDomainConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([6])),\n 0,\n )\n ) {\n return MultiWalletInstruction.EditTransactionManagerUrl;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([7])),\n 0,\n )\n ) {\n return MultiWalletInstruction.EditUserDelegate;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([17])),\n 0,\n )\n ) {\n return MultiWalletInstruction.NativeTransferIntent;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([18])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TokenTransferIntent;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([12])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionBufferClose;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([9])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionBufferCreate;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([13])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionBufferExecute;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([11])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionBufferExtend;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([10])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionBufferVote;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([14])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionExecute;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([15])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionExecuteSync;\n }\n throw new Error(\n \"The provided instruction could not be identified as a multiWallet instruction.\",\n );\n}\n\nexport type ParsedMultiWalletInstruction<\n TProgram extends string = \"reviR1xysEChySVSWGa43a6oJ2boJYTJhwRjo8KJhhT\",\n> =\n | ({\n instructionType: MultiWalletInstruction.ChangeConfig;\n } & ParsedChangeConfigInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.CreateDomainConfig;\n } & ParsedCreateDomainConfigInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.CreateDomainUserAccount;\n } & ParsedCreateDomainUserAccountInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.CreateGlobalCounter;\n } & ParsedCreateGlobalCounterInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.CreateUserAccount;\n } & ParsedCreateUserAccountInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.CreateWallet;\n } & ParsedCreateWalletInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.DisableDomainConfig;\n } & ParsedDisableDomainConfigInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.EditDomainConfig;\n } & ParsedEditDomainConfigInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.EditTransactionManagerUrl;\n } & ParsedEditTransactionManagerUrlInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.EditUserDelegate;\n } & ParsedEditUserDelegateInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.NativeTransferIntent;\n } & ParsedNativeTransferIntentInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TokenTransferIntent;\n } & ParsedTokenTransferIntentInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionBufferClose;\n } & ParsedTransactionBufferCloseInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionBufferCreate;\n } & ParsedTransactionBufferCreateInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionBufferExecute;\n } & ParsedTransactionBufferExecuteInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionBufferExtend;\n } & ParsedTransactionBufferExtendInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionBufferVote;\n } & ParsedTransactionBufferVoteInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionExecute;\n } & ParsedTransactionExecuteInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionExecuteSync;\n } & ParsedTransactionExecuteSyncInstruction<TProgram>);\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n isProgramError,\n type Address,\n type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n type SolanaError,\n} from \"gill\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\n\n/** InvalidSecp256r1VerifyArg: Malformed or missing WebAuthn verification parameters. Please provide valid secp256r1 signature arguments. */\nexport const MULTI_WALLET_ERROR__INVALID_SECP256R1_VERIFY_ARG = 0x1770; // 6000\n/** InvalidSecp256r1Instruction: The instruction preceding this program invocation is not a secp256r1 verification instruction. */\nexport const MULTI_WALLET_ERROR__INVALID_SECP256R1_INSTRUCTION = 0x1771; // 6001\n/** SignatureIndexOutOfBounds: The signature index provided is out of bounds for the secp256r1 instruction. */\nexport const MULTI_WALLET_ERROR__SIGNATURE_INDEX_OUT_OF_BOUNDS = 0x1772; // 6002\n/** InvalidSignatureOffsets: Failed to deserialize secp256r1 signature offsets from the instruction data. */\nexport const MULTI_WALLET_ERROR__INVALID_SIGNATURE_OFFSETS = 0x1773; // 6003\n/** InvalidSecp256r1PublicKey: The extracted public key has an invalid length or encoding. */\nexport const MULTI_WALLET_ERROR__INVALID_SECP256R1_PUBLIC_KEY = 0x1774; // 6004\n/** MalformedSignedMessage: The extracted WebAuthn signed message payload is malformed. */\nexport const MULTI_WALLET_ERROR__MALFORMED_SIGNED_MESSAGE = 0x1775; // 6005\n/** RpIdHashMismatch: The rpIdHash extracted from the signed message does not match the expected value. */\nexport const MULTI_WALLET_ERROR__RP_ID_HASH_MISMATCH = 0x1776; // 6006\n/** ClientDataHashMismatch: The clientDataJSON hash extracted from the signature does not match the generated hash. */\nexport const MULTI_WALLET_ERROR__CLIENT_DATA_HASH_MISMATCH = 0x1777; // 6007\n/** ExpectedMessageHashMismatch: The message hash associated with the signer does not match the pre-declared expected message hash. */\nexport const MULTI_WALLET_ERROR__EXPECTED_MESSAGE_HASH_MISMATCH = 0x1778; // 6008\n/** DurableNonceDetected: Durable nonce detected: this program does not support transactions using a durable nonce. */\nexport const MULTI_WALLET_ERROR__DURABLE_NONCE_DETECTED = 0x1779; // 6009\n/** DuplicateMember: Duplicate public keys detected among members. Each member must have a unique key. */\nexport const MULTI_WALLET_ERROR__DUPLICATE_MEMBER = 0x177a; // 6010\n/** PermanentMember: Permanent members cannot be removed from a wallet. */\nexport const MULTI_WALLET_ERROR__PERMANENT_MEMBER = 0x177b; // 6011\n/** OnlyOnePermanentMemberAllowed: Only one permanent member is allowed per wallet. */\nexport const MULTI_WALLET_ERROR__ONLY_ONE_PERMANENT_MEMBER_ALLOWED = 0x177c; // 6012\n/** InvalidPermanentMemberConfig: User with Permanent Member role must have a delegated wallet. */\nexport const MULTI_WALLET_ERROR__INVALID_PERMANENT_MEMBER_CONFIG = 0x177d; // 6013\n/** OnlyOneTransactionManagerAllowed: Only one transaction manager is allowed per wallet. */\nexport const MULTI_WALLET_ERROR__ONLY_ONE_TRANSACTION_MANAGER_ALLOWED = 0x177e; // 6014\n/** InvalidTransactionManagerPermission: Invalid Transaction Manager permissions. Only initiate is allowed. */\nexport const MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_PERMISSION = 0x177f; // 6015\n/** ExpectedTransactionManagerRoleMismatch: Expected a User with Transaction Manager role for this instruction. */\nexport const MULTI_WALLET_ERROR__EXPECTED_TRANSACTION_MANAGER_ROLE_MISMATCH = 0x1780; // 6016\n/** InvalidTransactionManagerConfig: User with Transaction Manager role requires a valid transaction manager url, be a ed25519 Signer and have no delegated wallet. */\nexport const MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_CONFIG = 0x1781; // 6017\n/** ExpectedAdministratorRoleMismatch: Expected a User with Administrator role for this instruction. */\nexport const MULTI_WALLET_ERROR__EXPECTED_ADMINISTRATOR_ROLE_MISMATCH = 0x1782; // 6018\n/** InvalidAdministratorConfig: User with Administrator role requires a valid domain config, be a ed25519 Signer and have no delegated wallet. */\nexport const MULTI_WALLET_ERROR__INVALID_ADMINISTRATOR_CONFIG = 0x1783; // 6019\n/** OnlyOneAdministratorAllowed: Only one administrator is allowed per wallet. */\nexport const MULTI_WALLET_ERROR__ONLY_ONE_ADMINISTRATOR_ALLOWED = 0x1784; // 6020\n/** EmptyMembers: No members provided. A multisig wallet must contain at least one member. */\nexport const MULTI_WALLET_ERROR__EMPTY_MEMBERS = 0x1785; // 6021\n/** TooManyMembers: Too many members: a maximum of 4 members are supported. */\nexport const MULTI_WALLET_ERROR__TOO_MANY_MEMBERS = 0x1786; // 6022\n/** InvalidThreshold: Invalid threshold: must be at least 1 and cannot exceed the number of voting-eligible members. */\nexport const MULTI_WALLET_ERROR__INVALID_THRESHOLD = 0x1787; // 6023\n/** InvalidTransactionMessage: Malformed transaction message: structure or formatting does not match the expected layout. */\nexport const MULTI_WALLET_ERROR__INVALID_TRANSACTION_MESSAGE = 0x1788; // 6024\n/** InvalidNumberOfAccounts: Unexpected number of accounts provided for this instruction. */\nexport const MULTI_WALLET_ERROR__INVALID_NUMBER_OF_ACCOUNTS = 0x1789; // 6025\n/** InvalidAccount: One or more provided accounts failed validation. Verify that all required accounts are included and correct. */\nexport const MULTI_WALLET_ERROR__INVALID_ACCOUNT = 0x178a; // 6026\n/** InvalidUserRole: One or more provided user accounts failed validation. Verify that only users with appropriate roles are allowed to perform this action. */\nexport const MULTI_WALLET_ERROR__INVALID_USER_ROLE = 0x178b; // 6027\n/** InvalidArguments: Invalid or missing instruction arguments. Ensure all required arguments are correctly provided. */\nexport const MULTI_WALLET_ERROR__INVALID_ARGUMENTS = 0x178c; // 6028\n/** MissingAccount: A required account is missing from the instruction context. */\nexport const MULTI_WALLET_ERROR__MISSING_ACCOUNT = 0x178d; // 6029\n/** AlreadyDelegated: This member is already delegated to another wallet. */\nexport const MULTI_WALLET_ERROR__ALREADY_DELEGATED = 0x178e; // 6030\n/** InsufficientSignerWithExecutePermission: At least one signer with execute permission is required to proceed. */\nexport const MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_EXECUTE_PERMISSION = 0x178f; // 6031\n/** InsufficientSignerWithInitiatePermission: At least one signer with initiate permission is required to perform this action. */\nexport const MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_INITIATE_PERMISSION = 0x1790; // 6032\n/** InsufficientSignersWithVotePermission: Not enough members with vote permission to meet the approval threshold. */\nexport const MULTI_WALLET_ERROR__INSUFFICIENT_SIGNERS_WITH_VOTE_PERMISSION = 0x1791; // 6033\n/** InvalidNonDelegatedSigners: Only delegated members are allowed for this transaction. */\nexport const MULTI_WALLET_ERROR__INVALID_NON_DELEGATED_SIGNERS = 0x1792; // 6034\n/** UnexpectedSigner: Member is not part of the expected signers for this transaction. */\nexport const MULTI_WALLET_ERROR__UNEXPECTED_SIGNER = 0x1793; // 6035\n/** NoSignerFound: No valid signer found in this transaction. */\nexport const MULTI_WALLET_ERROR__NO_SIGNER_FOUND = 0x1794; // 6036\n/** UnauthorisedToCloseTransactionBuffer: Only the transaction creator or rent payer may close this transaction buffer. */\nexport const MULTI_WALLET_ERROR__UNAUTHORISED_TO_CLOSE_TRANSACTION_BUFFER = 0x1795; // 6037\n/** InvalidBuffer: Buffer validation failed: contents do not match the expected hash (possible tampering detected). */\nexport const MULTI_WALLET_ERROR__INVALID_BUFFER = 0x1796; // 6038\n/** FinalBufferHashMismatch: Final buffer hash mismatch: the serialized data may be corrupted or altered. */\nexport const MULTI_WALLET_ERROR__FINAL_BUFFER_HASH_MISMATCH = 0x1797; // 6039\n/** FinalBufferSizeExceeded: The serialized transaction buffer exceeds the maximum size of 10,128 bytes. */\nexport const MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_EXCEEDED = 0x1798; // 6040\n/** FinalBufferSizeMismatch: Declared buffer size does not match the actual serialized size. */\nexport const MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_MISMATCH = 0x1799; // 6041\n/** TransactionHasExpired: This transaction has expired. It must be executed within 3 minutes of approval. */\nexport const MULTI_WALLET_ERROR__TRANSACTION_HAS_EXPIRED = 0x179a; // 6042\n/** TransactionNotApproved: This transaction has not yet reached the required approval threshold. */\nexport const MULTI_WALLET_ERROR__TRANSACTION_NOT_APPROVED = 0x179b; // 6043\n/** ProtectedAccount: Writable CPI calls to protected accounts are not permitted. */\nexport const MULTI_WALLET_ERROR__PROTECTED_ACCOUNT = 0x179c; // 6044\n/** MaxLengthExceeded: An input string exceeds the maximum allowed character length. */\nexport const MULTI_WALLET_ERROR__MAX_LENGTH_EXCEEDED = 0x179d; // 6045\n/** MissingSysvarSlotHistory: Missing required sysvar: Slot History must be included as an account in this instruction. */\nexport const MULTI_WALLET_ERROR__MISSING_SYSVAR_SLOT_HISTORY = 0x179e; // 6046\n/** InvalidSysvarDataFormat: Failed to parse the Slot History sysvar: data format is invalid or corrupted. */\nexport const MULTI_WALLET_ERROR__INVALID_SYSVAR_DATA_FORMAT = 0x179f; // 6047\n/** SlotNumberNotFound: The specified slot number was not found in the provided slot history. */\nexport const MULTI_WALLET_ERROR__SLOT_NUMBER_NOT_FOUND = 0x17a0; // 6048\n/** InvalidSlotNumber: The specified slot number is not recent enough. Slot must be within the recent slot history window. */\nexport const MULTI_WALLET_ERROR__INVALID_SLOT_NUMBER = 0x17a1; // 6049\n/** CredentialIdIsMissing: Missing credential id. */\nexport const MULTI_WALLET_ERROR__CREDENTIAL_ID_IS_MISSING = 0x17a2; // 6050\n/** TransportsIsMissing: Missing transports. */\nexport const MULTI_WALLET_ERROR__TRANSPORTS_IS_MISSING = 0x17a3; // 6051\n/** DomainConfigIsDisabled: The domain configuration account is disabled. Please contact support or try again later. */\nexport const MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_DISABLED = 0x17a4; // 6052\n/** DomainConfigIsMissing: Missing domain configuration account. */\nexport const MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_MISSING = 0x17a5; // 6053\n/** OriginIndexOutOfBounds: The given origin index is not in the whitelisted origins. */\nexport const MULTI_WALLET_ERROR__ORIGIN_INDEX_OUT_OF_BOUNDS = 0x17a6; // 6054\n/** HashComputationFailed: Failed to compute hash. This may indicate a system error. */\nexport const MULTI_WALLET_ERROR__HASH_COMPUTATION_FAILED = 0x17a7; // 6055\n/** InvalidMemberKeyFormat: Member key conversion failed. The provided key format is invalid. */\nexport const MULTI_WALLET_ERROR__INVALID_MEMBER_KEY_FORMAT = 0x17a8; // 6056\n/** MissingCompressedProofArgs: Compressed proof arguments are missing. Required for compressed account operations. */\nexport const MULTI_WALLET_ERROR__MISSING_COMPRESSED_PROOF_ARGS = 0x17a9; // 6057\n/** MissingLightCpiAccounts: Light CPI accounts are missing. Required for compressed account operations. */\nexport const MULTI_WALLET_ERROR__MISSING_LIGHT_CPI_ACCOUNTS = 0x17aa; // 6058\n/** MemberNotFound: Member not found in settings. Cannot remove a member that does not exist. */\nexport const MULTI_WALLET_ERROR__MEMBER_NOT_FOUND = 0x17ab; // 6059\n/** SettingsKeyMismatch: Settings key mismatch. The provided settings key does not match the expected value. */\nexport const MULTI_WALLET_ERROR__SETTINGS_KEY_MISMATCH = 0x17ac; // 6060\n/** PayerMismatch: Payer account mismatch. The provided payer does not match the transaction buffer payer. */\nexport const MULTI_WALLET_ERROR__PAYER_MISMATCH = 0x17ad; // 6061\n/** MissingCompressedTokenAccount: Missing compressed token account. Required for token transfer operations. */\nexport const MULTI_WALLET_ERROR__MISSING_COMPRESSED_TOKEN_ACCOUNT = 0x17ae; // 6062\n/** MissingSplInterfacePda: Missing SPL interface PDA. Required for token transfer operations. */\nexport const MULTI_WALLET_ERROR__MISSING_SPL_INTERFACE_PDA = 0x17af; // 6063\n/** MissingInstructionsSysvar: Missing instructions sysvar account. Required for secp256r1 signature verification. */\nexport const MULTI_WALLET_ERROR__MISSING_INSTRUCTIONS_SYSVAR = 0x17b0; // 6064\n/** LightCpiAccountError: Light CPI account operation failed. The account may be invalid or uninitialized. */\nexport const MULTI_WALLET_ERROR__LIGHT_CPI_ACCOUNT_ERROR = 0x17b1; // 6065\n/** InvalidTokenSourceType: Invalid source type for token transfer. The source account type is not supported. */\nexport const MULTI_WALLET_ERROR__INVALID_TOKEN_SOURCE_TYPE = 0x17b2; // 6066\n/** InvalidAccountIndex: Invalid account index in transaction message. The account index is out of bounds. */\nexport const MULTI_WALLET_ERROR__INVALID_ACCOUNT_INDEX = 0x17b3; // 6067\n/** DomainConfigKeyMismatch: Domain configuration account key mismatch. The provided domain config does not match the expected value. */\nexport const MULTI_WALLET_ERROR__DOMAIN_CONFIG_KEY_MISMATCH = 0x17b4; // 6068\n/** UnauthorizedAdminOnly: Unauthorized: Only the admin account is allowed to perform this action. */\nexport const MULTI_WALLET_ERROR__UNAUTHORIZED_ADMIN_ONLY = 0x17b5; // 6069\n/** InvalidUserTransactionManagerConfig: Invalid user configuration. Transaction manager URL must be empty for non-transaction-manager users. */\nexport const MULTI_WALLET_ERROR__INVALID_USER_TRANSACTION_MANAGER_CONFIG = 0x17b6; // 6070\n/** InvalidUserEd25519Config: Invalid user configuration. Credential ID and transports must be none for ed25519 members. */\nexport const MULTI_WALLET_ERROR__INVALID_USER_ED25519_CONFIG = 0x17b7; // 6071\n/** MissingDestinationTokenAccount: Missing destination token account. Required for token transfer operations. */\nexport const MULTI_WALLET_ERROR__MISSING_DESTINATION_TOKEN_ACCOUNT = 0x17b8; // 6072\n/** MissingSettingsAccountForDelegate: Missing settings account. Required for delegate operations. */\nexport const MULTI_WALLET_ERROR__MISSING_SETTINGS_ACCOUNT_FOR_DELEGATE = 0x17b9; // 6073\n/** MissingNewAuthority: Missing new authority account. Required for domain configuration updates. */\nexport const MULTI_WALLET_ERROR__MISSING_NEW_AUTHORITY = 0x17ba; // 6074\n\nexport type MultiWalletError =\n | typeof MULTI_WALLET_ERROR__ALREADY_DELEGATED\n | typeof MULTI_WALLET_ERROR__CLIENT_DATA_HASH_MISMATCH\n | typeof MULTI_WALLET_ERROR__CREDENTIAL_ID_IS_MISSING\n | typeof MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_DISABLED\n | typeof MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_MISSING\n | typeof MULTI_WALLET_ERROR__DOMAIN_CONFIG_KEY_MISMATCH\n | typeof MULTI_WALLET_ERROR__DUPLICATE_MEMBER\n | typeof MULTI_WALLET_ERROR__DURABLE_NONCE_DETECTED\n | typeof MULTI_WALLET_ERROR__EMPTY_MEMBERS\n | typeof MULTI_WALLET_ERROR__EXPECTED_ADMINISTRATOR_ROLE_MISMATCH\n | typeof MULTI_WALLET_ERROR__EXPECTED_MESSAGE_HASH_MISMATCH\n | typeof MULTI_WALLET_ERROR__EXPECTED_TRANSACTION_MANAGER_ROLE_MISMATCH\n | typeof MULTI_WALLET_ERROR__FINAL_BUFFER_HASH_MISMATCH\n | typeof MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_EXCEEDED\n | typeof MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_MISMATCH\n | typeof MULTI_WALLET_ERROR__HASH_COMPUTATION_FAILED\n | typeof MULTI_WALLET_ERROR__INSUFFICIENT_SIGNERS_WITH_VOTE_PERMISSION\n | typeof MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_EXECUTE_PERMISSION\n | typeof MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_INITIATE_PERMISSION\n | typeof MULTI_WALLET_ERROR__INVALID_ACCOUNT\n | typeof MULTI_WALLET_ERROR__INVALID_ACCOUNT_INDEX\n | typeof MULTI_WALLET_ERROR__INVALID_ADMINISTRATOR_CONFIG\n | typeof MULTI_WALLET_ERROR__INVALID_ARGUMENTS\n | typeof MULTI_WALLET_ERROR__INVALID_BUFFER\n | typeof MULTI_WALLET_ERROR__INVALID_MEMBER_KEY_FORMAT\n | typeof MULTI_WALLET_ERROR__INVALID_NON_DELEGATED_SIGNERS\n | typeof MULTI_WALLET_ERROR__INVALID_NUMBER_OF_ACCOUNTS\n | typeof MULTI_WALLET_ERROR__INVALID_PERMANENT_MEMBER_CONFIG\n | typeof MULTI_WALLET_ERROR__INVALID_SECP256R1_INSTRUCTION\n | typeof MULTI_WALLET_ERROR__INVALID_SECP256R1_PUBLIC_KEY\n | typeof MULTI_WALLET_ERROR__INVALID_SECP256R1_VERIFY_ARG\n | typeof MULTI_WALLET_ERROR__INVALID_SIGNATURE_OFFSETS\n | typeof MULTI_WALLET_ERROR__INVALID_SLOT_NUMBER\n | typeof MULTI_WALLET_ERROR__INVALID_SYSVAR_DATA_FORMAT\n | typeof MULTI_WALLET_ERROR__INVALID_THRESHOLD\n | typeof MULTI_WALLET_ERROR__INVALID_TOKEN_SOURCE_TYPE\n | typeof MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_CONFIG\n | typeof MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_PERMISSION\n | typeof MULTI_WALLET_ERROR__INVALID_TRANSACTION_MESSAGE\n | typeof MULTI_WALLET_ERROR__INVALID_USER_ED25519_CONFIG\n | typeof MULTI_WALLET_ERROR__INVALID_USER_ROLE\n | typeof MULTI_WALLET_ERROR__INVALID_USER_TRANSACTION_MANAGER_CONFIG\n | typeof MULTI_WALLET_ERROR__LIGHT_CPI_ACCOUNT_ERROR\n | typeof MULTI_WALLET_ERROR__MALFORMED_SIGNED_MESSAGE\n | typeof MULTI_WALLET_ERROR__MAX_LENGTH_EXCEEDED\n | typeof MULTI_WALLET_ERROR__MEMBER_NOT_FOUND\n | typeof MULTI_WALLET_ERROR__MISSING_ACCOUNT\n | typeof MULTI_WALLET_ERROR__MISSING_COMPRESSED_PROOF_ARGS\n | typeof MULTI_WALLET_ERROR__MISSING_COMPRESSED_TOKEN_ACCOUNT\n | typeof MULTI_WALLET_ERROR__MISSING_DESTINATION_TOKEN_ACCOUNT\n | typeof MULTI_WALLET_ERROR__MISSING_INSTRUCTIONS_SYSVAR\n | typeof MULTI_WALLET_ERROR__MISSING_LIGHT_CPI_ACCOUNTS\n | typeof MULTI_WALLET_ERROR__MISSING_NEW_AUTHORITY\n | typeof MULTI_WALLET_ERROR__MISSING_SETTINGS_ACCOUNT_FOR_DELEGATE\n | typeof MULTI_WALLET_ERROR__MISSING_SPL_INTERFACE_PDA\n | typeof MULTI_WALLET_ERROR__MISSING_SYSVAR_SLOT_HISTORY\n | typeof MULTI_WALLET_ERROR__NO_SIGNER_FOUND\n | typeof MULTI_WALLET_ERROR__ONLY_ONE_ADMINISTRATOR_ALLOWED\n | typeof MULTI_WALLET_ERROR__ONLY_ONE_PERMANENT_MEMBER_ALLOWED\n | typeof MULTI_WALLET_ERROR__ONLY_ONE_TRANSACTION_MANAGER_ALLOWED\n | typeof MULTI_WALLET_ERROR__ORIGIN_INDEX_OUT_OF_BOUNDS\n | typeof MULTI_WALLET_ERROR__PAYER_MISMATCH\n | typeof MULTI_WALLET_ERROR__PERMANENT_MEMBER\n | typeof MULTI_WALLET_ERROR__PROTECTED_ACCOUNT\n | typeof MULTI_WALLET_ERROR__RP_ID_HASH_MISMATCH\n | typeof MULTI_WALLET_ERROR__SETTINGS_KEY_MISMATCH\n | typeof MULTI_WALLET_ERROR__SIGNATURE_INDEX_OUT_OF_BOUNDS\n | typeof MULTI_WALLET_ERROR__SLOT_NUMBER_NOT_FOUND\n | typeof MULTI_WALLET_ERROR__TOO_MANY_MEMBERS\n | typeof MULTI_WALLET_ERROR__TRANSACTION_HAS_EXPIRED\n | typeof MULTI_WALLET_ERROR__TRANSACTION_NOT_APPROVED\n | typeof MULTI_WALLET_ERROR__TRANSPORTS_IS_MISSING\n | typeof MULTI_WALLET_ERROR__UNAUTHORISED_TO_CLOSE_TRANSACTION_BUFFER\n | typeof MULTI_WALLET_ERROR__UNAUTHORIZED_ADMIN_ONLY\n | typeof MULTI_WALLET_ERROR__UNEXPECTED_SIGNER;\n\nlet multiWalletErrorMessages: Record<MultiWalletError, string> | undefined;\nif (process.env.NODE_ENV !== \"production\") {\n multiWalletErrorMessages = {\n [MULTI_WALLET_ERROR__ALREADY_DELEGATED]: `This member is already delegated to another wallet.`,\n [MULTI_WALLET_ERROR__CLIENT_DATA_HASH_MISMATCH]: `The clientDataJSON hash extracted from the signature does not match the generated hash.`,\n [MULTI_WALLET_ERROR__CREDENTIAL_ID_IS_MISSING]: `Missing credential id.`,\n [MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_DISABLED]: `The domain configuration account is disabled. Please contact support or try again later.`,\n [MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_MISSING]: `Missing domain configuration account.`,\n [MULTI_WALLET_ERROR__DOMAIN_CONFIG_KEY_MISMATCH]: `Domain configuration account key mismatch. The provided domain config does not match the expected value.`,\n [MULTI_WALLET_ERROR__DUPLICATE_MEMBER]: `Duplicate public keys detected among members. Each member must have a unique key.`,\n [MULTI_WALLET_ERROR__DURABLE_NONCE_DETECTED]: `Durable nonce detected: this program does not support transactions using a durable nonce.`,\n [MULTI_WALLET_ERROR__EMPTY_MEMBERS]: `No members provided. A multisig wallet must contain at least one member.`,\n [MULTI_WALLET_ERROR__EXPECTED_ADMINISTRATOR_ROLE_MISMATCH]: `Expected a User with Administrator role for this instruction.`,\n [MULTI_WALLET_ERROR__EXPECTED_MESSAGE_HASH_MISMATCH]: `The message hash associated with the signer does not match the pre-declared expected message hash.`,\n [MULTI_WALLET_ERROR__EXPECTED_TRANSACTION_MANAGER_ROLE_MISMATCH]: `Expected a User with Transaction Manager role for this instruction.`,\n [MULTI_WALLET_ERROR__FINAL_BUFFER_HASH_MISMATCH]: `Final buffer hash mismatch: the serialized data may be corrupted or altered.`,\n [MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_EXCEEDED]: `The serialized transaction buffer exceeds the maximum size of 10,128 bytes.`,\n [MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_MISMATCH]: `Declared buffer size does not match the actual serialized size.`,\n [MULTI_WALLET_ERROR__HASH_COMPUTATION_FAILED]: `Failed to compute hash. This may indicate a system error.`,\n [MULTI_WALLET_ERROR__INSUFFICIENT_SIGNERS_WITH_VOTE_PERMISSION]: `Not enough members with vote permission to meet the approval threshold.`,\n [MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_EXECUTE_PERMISSION]: `At least one signer with execute permission is required to proceed.`,\n [MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_INITIATE_PERMISSION]: `At least one signer with initiate permission is required to perform this action.`,\n [MULTI_WALLET_ERROR__INVALID_ACCOUNT]: `One or more provided accounts failed validation. Verify that all required accounts are included and correct.`,\n [MULTI_WALLET_ERROR__INVALID_ACCOUNT_INDEX]: `Invalid account index in transaction message. The account index is out of bounds.`,\n [MULTI_WALLET_ERROR__INVALID_ADMINISTRATOR_CONFIG]: `User with Administrator role requires a valid domain config, be a ed25519 Signer and have no delegated wallet.`,\n [MULTI_WALLET_ERROR__INVALID_ARGUMENTS]: `Invalid or missing instruction arguments. Ensure all required arguments are correctly provided.`,\n [MULTI_WALLET_ERROR__INVALID_BUFFER]: `Buffer validation failed: contents do not match the expected hash (possible tampering detected).`,\n [MULTI_WALLET_ERROR__INVALID_MEMBER_KEY_FORMAT]: `Member key conversion failed. The provided key format is invalid.`,\n [MULTI_WALLET_ERROR__INVALID_NON_DELEGATED_SIGNERS]: `Only delegated members are allowed for this transaction.`,\n [MULTI_WALLET_ERROR__INVALID_NUMBER_OF_ACCOUNTS]: `Unexpected number of accounts provided for this instruction.`,\n [MULTI_WALLET_ERROR__INVALID_PERMANENT_MEMBER_CONFIG]: `User with Permanent Member role must have a delegated wallet.`,\n [MULTI_WALLET_ERROR__INVALID_SECP256R1_INSTRUCTION]: `The instruction preceding this program invocation is not a secp256r1 verification instruction.`,\n [MULTI_WALLET_ERROR__INVALID_SECP256R1_PUBLIC_KEY]: `The extracted public key has an invalid length or encoding.`,\n [MULTI_WALLET_ERROR__INVALID_SECP256R1_VERIFY_ARG]: `Malformed or missing WebAuthn verification parameters. Please provide valid secp256r1 signature arguments.`,\n [MULTI_WALLET_ERROR__INVALID_SIGNATURE_OFFSETS]: `Failed to deserialize secp256r1 signature offsets from the instruction data.`,\n [MULTI_WALLET_ERROR__INVALID_SLOT_NUMBER]: `The specified slot number is not recent enough. Slot must be within the recent slot history window.`,\n [MULTI_WALLET_ERROR__INVALID_SYSVAR_DATA_FORMAT]: `Failed to parse the Slot History sysvar: data format is invalid or corrupted.`,\n [MULTI_WALLET_ERROR__INVALID_THRESHOLD]: `Invalid threshold: must be at least 1 and cannot exceed the number of voting-eligible members.`,\n [MULTI_WALLET_ERROR__INVALID_TOKEN_SOURCE_TYPE]: `Invalid source type for token transfer. The source account type is not supported.`,\n [MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_CONFIG]: `User with Transaction Manager role requires a valid transaction manager url, be a ed25519 Signer and have no delegated wallet.`,\n [MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_PERMISSION]: `Invalid Transaction Manager permissions. Only initiate is allowed.`,\n [MULTI_WALLET_ERROR__INVALID_TRANSACTION_MESSAGE]: `Malformed transaction message: structure or formatting does not match the expected layout.`,\n [MULTI_WALLET_ERROR__INVALID_USER_ED25519_CONFIG]: `Invalid user configuration. Credential ID and transports must be none for ed25519 members.`,\n [MULTI_WALLET_ERROR__INVALID_USER_ROLE]: `One or more provided user accounts failed validation. Verify that only users with appropriate roles are allowed to perform this action.`,\n [MULTI_WALLET_ERROR__INVALID_USER_TRANSACTION_MANAGER_CONFIG]: `Invalid user configuration. Transaction manager URL must be empty for non-transaction-manager users.`,\n [MULTI_WALLET_ERROR__LIGHT_CPI_ACCOUNT_ERROR]: `Light CPI account operation failed. The account may be invalid or uninitialized.`,\n [MULTI_WALLET_ERROR__MALFORMED_SIGNED_MESSAGE]: `The extracted WebAuthn signed message payload is malformed.`,\n [MULTI_WALLET_ERROR__MAX_LENGTH_EXCEEDED]: `An input string exceeds the maximum allowed character length.`,\n [MULTI_WALLET_ERROR__MEMBER_NOT_FOUND]: `Member not found in settings. Cannot remove a member that does not exist.`,\n [MULTI_WALLET_ERROR__MISSING_ACCOUNT]: `A required account is missing from the instruction context.`,\n [MULTI_WALLET_ERROR__MISSING_COMPRESSED_PROOF_ARGS]: `Compressed proof arguments are missing. Required for compressed account operations.`,\n [MULTI_WALLET_ERROR__MISSING_COMPRESSED_TOKEN_ACCOUNT]: `Missing compressed token account. Required for token transfer operations.`,\n [MULTI_WALLET_ERROR__MISSING_DESTINATION_TOKEN_ACCOUNT]: `Missing destination token account. Required for token transfer operations.`,\n [MULTI_WALLET_ERROR__MISSING_INSTRUCTIONS_SYSVAR]: `Missing instructions sysvar account. Required for secp256r1 signature verification.`,\n [MULTI_WALLET_ERROR__MISSING_LIGHT_CPI_ACCOUNTS]: `Light CPI accounts are missing. Required for compressed account operations.`,\n [MULTI_WALLET_ERROR__MISSING_NEW_AUTHORITY]: `Missing new authority account. Required for domain configuration updates.`,\n [MULTI_WALLET_ERROR__MISSING_SETTINGS_ACCOUNT_FOR_DELEGATE]: `Missing settings account. Required for delegate operations.`,\n [MULTI_WALLET_ERROR__MISSING_SPL_INTERFACE_PDA]: `Missing SPL interface PDA. Required for token transfer operations.`,\n [MULTI_WALLET_ERROR__MISSING_SYSVAR_SLOT_HISTORY]: `Missing required sysvar: Slot History must be included as an account in this instruction.`,\n [MULTI_WALLET_ERROR__NO_SIGNER_FOUND]: `No valid signer found in this transaction.`,\n [MULTI_WALLET_ERROR__ONLY_ONE_ADMINISTRATOR_ALLOWED]: `Only one administrator is allowed per wallet.`,\n [MULTI_WALLET_ERROR__ONLY_ONE_PERMANENT_MEMBER_ALLOWED]: `Only one permanent member is allowed per wallet.`,\n [MULTI_WALLET_ERROR__ONLY_ONE_TRANSACTION_MANAGER_ALLOWED]: `Only one transaction manager is allowed per wallet.`,\n [MULTI_WALLET_ERROR__ORIGIN_INDEX_OUT_OF_BOUNDS]: `The given origin index is not in the whitelisted origins.`,\n [MULTI_WALLET_ERROR__PAYER_MISMATCH]: `Payer account mismatch. The provided payer does not match the transaction buffer payer.`,\n [MULTI_WALLET_ERROR__PERMANENT_MEMBER]: `Permanent members cannot be removed from a wallet.`,\n [MULTI_WALLET_ERROR__PROTECTED_ACCOUNT]: `Writable CPI calls to protected accounts are not permitted.`,\n [MULTI_WALLET_ERROR__RP_ID_HASH_MISMATCH]: `The rpIdHash extracted from the signed message does not match the expected value.`,\n [MULTI_WALLET_ERROR__SETTINGS_KEY_MISMATCH]: `Settings key mismatch. The provided settings key does not match the expected value.`,\n [MULTI_WALLET_ERROR__SIGNATURE_INDEX_OUT_OF_BOUNDS]: `The signature index provided is out of bounds for the secp256r1 instruction.`,\n [MULTI_WALLET_ERROR__SLOT_NUMBER_NOT_FOUND]: `The specified slot number was not found in the provided slot history.`,\n [MULTI_WALLET_ERROR__TOO_MANY_MEMBERS]: `Too many members: a maximum of 4 members are supported.`,\n [MULTI_WALLET_ERROR__TRANSACTION_HAS_EXPIRED]: `This transaction has expired. It must be executed within 3 minutes of approval.`,\n [MULTI_WALLET_ERROR__TRANSACTION_NOT_APPROVED]: `This transaction has not yet reached the required approval threshold.`,\n [MULTI_WALLET_ERROR__TRANSPORTS_IS_MISSING]: `Missing transports.`,\n [MULTI_WALLET_ERROR__UNAUTHORISED_TO_CLOSE_TRANSACTION_BUFFER]: `Only the transaction creator or rent payer may close this transaction buffer.`,\n [MULTI_WALLET_ERROR__UNAUTHORIZED_ADMIN_ONLY]: `Unauthorized: Only the admin account is allowed to perform this action.`,\n [MULTI_WALLET_ERROR__UNEXPECTED_SIGNER]: `Member is not part of the expected signers for this transaction.`,\n };\n}\n\nexport function getMultiWalletErrorMessage(code: MultiWalletError): string {\n if (process.env.NODE_ENV !== \"production\") {\n return (multiWalletErrorMessages as Record<MultiWalletError, string>)[code];\n }\n\n return \"Error message not available in production bundles.\";\n}\n\nexport function isMultiWalletError<TProgramErrorCode extends MultiWalletError>(\n error: unknown,\n transactionMessage: {\n instructions: Record<number, { programAddress: Address }>;\n },\n code?: TProgramErrorCode,\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n return isProgramError<TProgramErrorCode>(\n error,\n transactionMessage,\n MULTI_WALLET_PROGRAM_ADDRESS,\n code,\n );\n}\n","/**\n * Custom error classes for the SDK\n * Provides better error handling and debugging capabilities\n */\n\n/**\n * Base error class for all SDK errors\n */\nexport class RevibaseError extends Error {\n constructor(\n message: string,\n public readonly code?: string,\n public readonly cause?: unknown,\n ) {\n super(message);\n this.name = this.constructor.name;\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n\n/**\n * Error thrown when SDK is not properly initialized\n */\nexport class NotInitializedError extends RevibaseError {\n constructor(service: string) {\n super(\n `${service} is not initialized. Please call initialize() first.`,\n \"NOT_INITIALIZED\",\n );\n }\n}\n\n/**\n * Error thrown when a required account or data is not found\n */\nexport class NotFoundError extends RevibaseError {\n constructor(resource: string, details?: string) {\n super(`${resource} not found.${details ? ` ${details}` : \"\"}`, \"NOT_FOUND\");\n }\n}\n\n/**\n * Error thrown when validation fails\n */\nexport class ValidationError extends RevibaseError {\n constructor(message: string, field?: string) {\n super(message, \"VALIDATION_ERROR\", { field });\n }\n}\n\n/**\n * Error thrown when a network request fails\n */\nexport class NetworkError extends RevibaseError {\n constructor(\n message: string,\n public readonly statusCode?: number,\n public readonly url?: string,\n ) {\n super(message, \"NETWORK_ERROR\", { statusCode, url });\n }\n}\n\n/**\n * Error thrown when retry operations exhaust all attempts\n */\nexport class RetryExhaustedError extends RevibaseError {\n constructor(\n operation: string,\n public readonly attempts: number,\n public readonly lastError?: unknown,\n ) {\n super(\n `Operation \"${operation}\" failed after ${attempts} attempts.`,\n \"RETRY_EXHAUSTED\",\n { lastError },\n );\n }\n}\n\n/**\n * Error thrown when permissions are insufficient\n */\nexport class PermissionError extends RevibaseError {\n constructor(\n message: string,\n public readonly required?: string[],\n public readonly actual?: string[],\n ) {\n super(message, \"PERMISSION_ERROR\", { required, actual });\n }\n}\n","export type IKeyType = {\n keyType: number;\n};\n\nexport const KeyType = {\n Ed25519: 1 << 0,\n Secp256r1: 1 << 1,\n} as const;\n\nexport type KeyType = (typeof KeyType)[keyof typeof KeyType];\n","import type { AuthenticationResponseJSON } from \"@simplewebauthn/browser\";\nimport z from \"zod\";\n\nexport const UserInfoSchema = z.looseObject({\n publicKey: z.string(),\n walletAddress: z.string(),\n settingsIndexWithAddress: z.object({\n index: z.union([z.number(), z.bigint()]),\n }),\n});\n\nexport const DeviceProfileSchema = z\n .object({\n /**\n * Stable device identity key generated by the client/device.\n */\n devicePublicKey: z.string(),\n /**\n * Runtime platform.\n */\n platform: z.enum([\"web\", \"ios\", \"android\"]),\n /**\n * Full user agent string when available.\n * Typically only available on web.\n */\n userAgent: z.string().optional(),\n /**\n * Browser information.\n */\n browser: z\n .object({\n name: z.string().optional(),\n version: z.string().optional(),\n major: z.string().optional(),\n type: z.string().optional(),\n })\n .optional(),\n /**\n * Browser engine.\n */\n engine: z\n .object({\n name: z.string().optional(),\n version: z.string().optional(),\n })\n .optional(),\n /**\n * CPU architecture.\n */\n cpu: z\n .object({\n architecture: z.string().optional(),\n })\n .optional(),\n /**\n * Physical device information.\n */\n device: z\n .object({\n type: z.string().optional(), // mobile, tablet, desktop, etc.\n vendor: z.string().optional(), // Apple, Samsung, etc.\n model: z.string().optional(), // iPhone 15 Pro, Pixel 9, etc.\n })\n .optional(),\n /**\n * Operating system information.\n */\n os: z\n .object({\n name: z.string().optional(),\n version: z.string().optional(),\n })\n .optional(),\n /**\n * App metadata.\n */\n app: z\n .object({\n name: z.string().optional(),\n version: z.string().optional(),\n build: z.string().optional(),\n })\n .optional(),\n /**\n * Display/screen information.\n * Width/height should be CSS pixels.\n */\n display: z\n .object({\n screenWidth: z.number().optional(),\n screenHeight: z.number().optional(),\n viewportWidth: z.number().optional(),\n viewportHeight: z.number().optional(),\n devicePixelRatio: z.number().optional(),\n })\n .optional(),\n /**\n * Localization.\n */\n locale: z.string().optional(),\n timezone: z.string().optional(),\n /**\n * Push notification configuration.\n */\n push: z\n .object({\n provider: z.enum([\"expo\", \"fcm\", \"apns\"]),\n token: z.string(),\n })\n .optional(),\n /**\n * Originating website for web flows.\n */\n website: z.string().optional(),\n /**\n * Native app identifier / bundle ID.\n */\n nativeApp: z.string().optional(),\n /**\n * Timestamps.\n */\n createdAt: z.iso.datetime().optional(),\n })\n .strict();\n\nexport const TransactionActionTypeSchema = z.enum([\n \"create\",\n \"create_with_preauthorized_execution\",\n \"execute\",\n \"vote\",\n \"sync\",\n \"close\",\n \"transfer_intent\",\n \"change_delegate\",\n \"change_config\",\n]);\n\nexport const TransactionPayloadSchema = z\n .object({\n transactionActionType: TransactionActionTypeSchema,\n transactionAddress: z.string(),\n transactionMessageBytes: z\n .array(z.number().int().min(0).max(255))\n .transform((arr) => new Uint8Array(arr)),\n })\n .strict();\n\nexport const TransactionPayloadWithBase64MessageBytesSchema = z\n .object({\n transactionActionType: TransactionActionTypeSchema,\n transactionAddress: z.string(),\n transactionMessageBytes: z.base64(),\n })\n .strict();\n\nexport const StartMessageRequestSchema = z\n .object({\n phase: z.literal(\"start\"),\n clientOrigin: z.url(),\n signer: z.string().optional(),\n rid: z.string(),\n validTill: z.number(),\n providerOrigin: z.string(),\n rpId: z.string(),\n data: z\n .object({\n type: z.literal(\"message\"),\n payload: z.string(),\n requireTwoFactorAuthentication: z.boolean().default(false),\n })\n .strict(),\n })\n .strict();\n\nexport const StartTransactionRequestSchema = z\n .object({\n phase: z.literal(\"start\"),\n clientOrigin: z.url(),\n signer: z.string().optional(),\n rid: z.string(),\n validTill: z.number(),\n providerOrigin: z.string(),\n rpId: z.string(),\n data: z\n .object({\n type: z.literal(\"transaction\"),\n payload: TransactionPayloadWithBase64MessageBytesSchema,\n })\n .strict(),\n })\n .strict();\n\nexport const AuthenticationContextSchema = z\n .object({\n startRequest: z.union([\n StartMessageRequestSchema,\n StartTransactionRequestSchema,\n ]),\n authResponse: z.custom<AuthenticationResponseJSON>(),\n client: z\n .object({\n clientOrigin: z.url(),\n jws: z.string(),\n })\n .strict(),\n device: z\n .object({\n jwk: z.base64(),\n jws: z.string(),\n deviceProfile: DeviceProfileSchema,\n })\n .strict(),\n })\n .strict();\n\nexport const BaseResponseSchema = z\n .object({\n signer: z.string(),\n additionalInfo: z.looseObject({}).optional(),\n })\n .strict();\n\nexport const TransactionDetailsSchema = z\n .object({\n slotHash: z.string(),\n slotNumber: z.string(),\n estimatedSlotHashExpiry: z.number(),\n originIndex: z.number(),\n crossOrigin: z.boolean(),\n })\n .strict();\n\nexport const CompleteMessageRequestSchema = z\n .object({\n phase: z.literal(\"complete\"),\n data: z\n .object({\n type: z.literal(\"message\"),\n payload: BaseResponseSchema.extend(\n AuthenticationContextSchema.shape,\n ).extend({\n startRequest: StartMessageRequestSchema,\n transactionManager: z\n .object({\n publicKey: z.string(),\n signature: z.string(),\n })\n .optional(),\n }),\n })\n .strict(),\n })\n .strict();\n\nexport const CompleteTransactionRequestSchema = z\n .object({\n phase: z.literal(\"complete\"),\n data: z\n .object({\n type: z.literal(\"transaction\"),\n payload: BaseResponseSchema.extend(AuthenticationContextSchema.shape)\n .extend(TransactionDetailsSchema.shape)\n .extend({\n startRequest: StartTransactionRequestSchema,\n }),\n })\n .strict(),\n })\n .strict();\n\nexport type TransactionActionType = z.infer<typeof TransactionActionTypeSchema>;\nexport type TransactionPayload = z.infer<typeof TransactionPayloadSchema>;\nexport type TransactionPayloadWithBase64MessageBytes = z.infer<\n typeof TransactionPayloadWithBase64MessageBytesSchema\n>;\nexport type StartMessageRequest = z.infer<typeof StartMessageRequestSchema>;\nexport type StartTransactionRequest = z.infer<\n typeof StartTransactionRequestSchema\n>;\nexport type CompleteTransactionRequest = z.infer<\n typeof CompleteTransactionRequestSchema\n>;\n\nexport type CompleteMessageRequest = z.infer<\n typeof CompleteMessageRequestSchema\n>;\n\ntype AuthenticationContext = z.infer<typeof AuthenticationContextSchema>;\ntype BaseResponse = z.infer<typeof BaseResponseSchema>;\ntype TransactionDetails = z.infer<typeof TransactionDetailsSchema>;\nexport type TransactionAuthenticationResponse = TransactionDetails &\n AuthenticationContext &\n BaseResponse;\nexport type MessageAuthenticationResponse = AuthenticationContext &\n BaseResponse;\nexport type TransactionAuthDetails = TransactionDetails & AuthenticationContext;\nexport type UserInfo = z.infer<typeof UserInfoSchema>;\nexport type DeviceProfile = z.infer<typeof DeviceProfileSchema>;\n","import type { IPermissions } from \"../generated\";\n\nexport const Permission = {\n InitiateTransaction: 1 << 0,\n VoteTransaction: 1 << 1,\n ExecuteTransaction: 1 << 2,\n} as const;\n\nexport type IPermission = (typeof Permission)[keyof typeof Permission];\n\nexport class Permissions implements IPermissions {\n private constructor(readonly mask: number) {}\n\n static fromPermissions(permissions: IPermission[]) {\n return new Permissions(\n permissions.reduce((mask, permission) => mask | permission, 0)\n );\n }\n\n static all() {\n return new Permissions(\n Object.values(Permission).reduce(\n (mask, permission) => mask | permission,\n 0\n )\n );\n }\n\n static has(permissions: IPermissions, permission: IPermission) {\n return (permissions.mask & permission) === permission;\n }\n}\n","import type { AuthenticationResponseJSON } from \"@simplewebauthn/browser\";\nimport {\n getBase58Decoder,\n getBase58Encoder,\n type Address,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nconst SECP256R1_PUBLIC_KEY_LENGTH = 33;\ntype Secp256r1KeyInitData =\n | string\n | Uint8Array\n | Array<number>\n | ReadonlyUint8Array;\ntype SignedMessageDetails = {\n verifyArgs: {\n clientDataJson: Uint8Array<ArrayBuffer>;\n truncatedClientDataJson: Uint8Array<ArrayBuffer>;\n slotNumber: bigint;\n slotHash: Uint8Array<ArrayBuffer>;\n };\n domainConfig: Address;\n authData: Uint8Array<ArrayBuffer>;\n signature: Uint8Array<ArrayBuffer>;\n originIndex: number;\n crossOrigin: boolean;\n clientAndDeviceHash: Uint8Array<ArrayBuffer>;\n authResponse: AuthenticationResponseJSON;\n};\n\nexport class Secp256r1Key {\n protected _bn: Uint8Array<ArrayBuffer> | undefined;\n\n constructor(value: Secp256r1KeyInitData) {\n if (typeof value === \"string\") {\n this._bn = new Uint8Array(getBase58Encoder().encode(value));\n } else {\n this._bn = new Uint8Array(value);\n }\n this.validateKeyLength(this._bn);\n }\n\n protected validateKeyLength(key: Uint8Array<ArrayBuffer> | Array<number>) {\n if (key.length !== SECP256R1_PUBLIC_KEY_LENGTH) {\n throw new Error(\n `Invalid public key length, expected ${SECP256R1_PUBLIC_KEY_LENGTH} bytes but got ${key.length}`,\n );\n }\n }\n\n toBase58() {\n return getBase58Decoder().decode(this.toBytes());\n }\n\n toTruncatedBuffer() {\n const buf = this.toBuffer();\n return buf.subarray(1, buf.length);\n }\n\n toBuffer() {\n if (!this._bn) {\n throw new Error(`Invalid public key input`);\n }\n const buf = this._bn;\n if (buf.byteLength === SECP256R1_PUBLIC_KEY_LENGTH) {\n return buf;\n } else {\n throw new Error(`Invalid public key input`);\n }\n }\n\n toBytes() {\n const buf = this.toBuffer();\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n\n toString() {\n return this.toBase58();\n }\n\n toJSON() {\n return this.toBase58();\n }\n}\n\nexport class SignedSecp256r1Key extends Secp256r1Key {\n verifyArgs: SignedMessageDetails[\"verifyArgs\"];\n domainConfig: SignedMessageDetails[\"domainConfig\"];\n authData: SignedMessageDetails[\"authData\"];\n signature: SignedMessageDetails[\"signature\"];\n originIndex: SignedMessageDetails[\"originIndex\"];\n crossOrigin: SignedMessageDetails[\"crossOrigin\"];\n clientAndDeviceHash: SignedMessageDetails[\"clientAndDeviceHash\"];\n authResponse: SignedMessageDetails[\"authResponse\"];\n\n constructor(value: Secp256r1KeyInitData, signed: SignedMessageDetails) {\n super(value);\n this.verifyArgs = signed.verifyArgs;\n this.domainConfig = signed.domainConfig;\n this.authData = signed.authData;\n this.signature = signed.signature;\n this.originIndex = signed.originIndex;\n this.crossOrigin = signed.crossOrigin;\n this.clientAndDeviceHash = signed.clientAndDeviceHash;\n this.authResponse = signed.authResponse;\n }\n}\n","import {\n type CompiledTransactionMessage,\n type CompiledTransactionMessageWithLifetime,\n getAddressCodec,\n getArrayCodec,\n getStructCodec,\n getU8Codec,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../generated\";\n\nfunction getCompiledInstructionCodec() {\n return getStructCodec([\n [\"programAddressIndex\", getU8Codec()],\n [\"accountIndices\", getArrayCodec(getU8Codec())],\n [\"data\", getArrayCodec(getU8Codec())],\n ]);\n}\n\nfunction getMessageAddressTableLookupCodec() {\n return getStructCodec([\n [\"lookupTableAddress\", getAddressCodec()],\n [\"writableIndexes\", getArrayCodec(getU8Codec())],\n [\"readonlyIndexes\", getArrayCodec(getU8Codec())],\n ]);\n}\n\nconst vaultTransactionMessageCodec = getStructCodec([\n [\"numSigners\", getU8Codec()],\n [\"numWritableSigners\", getU8Codec()],\n [\"numWritableNonSigners\", getU8Codec()],\n [\"accountKeys\", getArrayCodec(getAddressCodec())],\n [\"instructions\", getArrayCodec(getCompiledInstructionCodec())],\n [\"addressTableLookups\", getArrayCodec(getMessageAddressTableLookupCodec())],\n]);\n\nexport function vaultTransactionMessageSerialize(\n compiledMessage: CompiledTransactionMessage,\n) {\n const transactionMessageBytes = vaultTransactionMessageCodec.encode({\n numSigners: compiledMessage.header.numSignerAccounts,\n numWritableSigners:\n compiledMessage.header.numSignerAccounts -\n compiledMessage.header.numReadonlySignerAccounts,\n numWritableNonSigners:\n compiledMessage.staticAccounts.length -\n compiledMessage.header.numSignerAccounts -\n compiledMessage.header.numReadonlyNonSignerAccounts,\n accountKeys: compiledMessage.staticAccounts,\n instructions: compiledMessage.instructions.map((ix) => {\n return {\n programAddressIndex: ix.programAddressIndex,\n accountIndices: ix.accountIndices ?? [],\n data: Array.from(ix.data ?? []),\n };\n }),\n addressTableLookups:\n compiledMessage.version !== \"legacy\"\n ? (compiledMessage.addressTableLookups?.map((x) => ({\n lookupTableAddress: x.lookupTableAddress,\n readonlyIndexes: x.readonlyIndexes as number[],\n writableIndexes: x.writableIndexes as number[],\n })) ?? [])\n : [],\n });\n\n return transactionMessageBytes;\n}\n\nexport function vaultTransactionMessageDeserialize(\n transactionMessageBytes: ReadonlyUint8Array,\n): CompiledTransactionMessage & CompiledTransactionMessageWithLifetime {\n const vaultTransactionMessage = vaultTransactionMessageCodec.decode(\n transactionMessageBytes,\n );\n return {\n header: {\n numSignerAccounts: vaultTransactionMessage.numSigners,\n numReadonlySignerAccounts:\n vaultTransactionMessage.numSigners -\n vaultTransactionMessage.numWritableSigners,\n numReadonlyNonSignerAccounts:\n vaultTransactionMessage.accountKeys.length -\n vaultTransactionMessage.numSigners -\n vaultTransactionMessage.numWritableNonSigners,\n },\n addressTableLookups: vaultTransactionMessage.addressTableLookups.map(\n (x) => ({\n lookupTableAddress: x.lookupTableAddress,\n readonlyIndexes: x.readonlyIndexes.map(Number),\n writableIndexes: x.writableIndexes.map(Number),\n readableIndices: x.readonlyIndexes.map(Number),\n writableIndices: x.writableIndexes.map(Number),\n }),\n ),\n instructions: vaultTransactionMessage.instructions.map((x) => ({\n accountIndices: x.accountIndices.map(Number),\n data: new Uint8Array(x.data),\n programAddressIndex: x.programAddressIndex,\n })),\n lifetimeToken: MULTI_WALLET_PROGRAM_ADDRESS,\n staticAccounts: vaultTransactionMessage.accountKeys,\n version: 0,\n };\n}\n","/**\n * Validation utilities for common input checks\n * Provides consistent validation across the SDK\n */\n\nimport { ValidationError } from \"../errors\";\n\n/**\n * Validates that a number is within a range\n * @param value - Number to validate\n * @param min - Minimum value (inclusive)\n * @param max - Maximum value (inclusive)\n * @param name - Name of the parameter for error messages\n * @throws {ValidationError} If value is out of range\n */\nexport function requireInRange(\n value: number,\n min: number,\n max: number,\n name: string\n): void {\n if (value < min || value > max) {\n throw new ValidationError(\n `${name} must be between ${min} and ${max} (inclusive), got ${value}`\n );\n }\n}\n\n/**\n * Validates that a number is non-negative\n * @param value - Number to validate\n * @param name - Name of the parameter for error messages\n * @throws {ValidationError} If value is negative\n */\nexport function requireNonNegative(value: number, name: string): void {\n if (value < 0) {\n throw new ValidationError(`${name} must be non-negative, got ${value}`);\n }\n}\n\n/**\n * Validates that an array is not empty\n * @param array - Array to validate\n * @param name - Name of the parameter for error messages\n * @throws {ValidationError} If array is empty\n */\nexport function requireNonEmpty<T>(\n array: readonly T[],\n name: string\n): asserts array is readonly [T, ...T[]] {\n if (array.length === 0) {\n throw new ValidationError(`${name} cannot be empty`);\n }\n}\n\n/**\n * Validates that a string is not empty\n * @param value - String to validate\n * @param name - Name of the parameter for error messages\n * @throws {ValidationError} If string is empty\n */\nexport function requireNonEmptyString(\n value: string,\n name: string\n): asserts value is string {\n if (value.trim().length === 0) {\n throw new ValidationError(`${name} cannot be empty`);\n }\n}\n","import { sha256 } from \"@noble/hashes/sha2.js\";\nimport {\n getAddressEncoder,\n getProgramDerivedAddress,\n getU128Encoder,\n getU8Encoder,\n getUtf8Encoder,\n type Address,\n} from \"gill\";\nimport { ValidationError } from \"../../errors\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../../generated\";\nimport { Secp256r1Key } from \"../../types\";\nimport { requireInRange } from \"../validation\";\n\nexport async function getUserAddress(user: Address | Secp256r1Key) {\n const [userAddress] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [\n getUtf8Encoder().encode(\"user\"),\n user instanceof Secp256r1Key\n ? user.toTruncatedBuffer()\n : getAddressEncoder().encode(user),\n ],\n });\n\n return userAddress;\n}\n\nexport async function getDomainConfigAddress({\n rpIdHash,\n rpId,\n}: {\n rpIdHash?: Uint8Array<ArrayBuffer>;\n rpId?: string;\n}) {\n if (!rpIdHash) {\n if (rpId) {\n rpIdHash = sha256(\n getUtf8Encoder().encode(rpId) as Uint8Array,\n ) as Uint8Array<ArrayBuffer>;\n } else {\n throw new ValidationError(\"Either rpId or rpIdHash must be provided\");\n }\n }\n const [domainConfig] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [getUtf8Encoder().encode(\"domain_config\"), rpIdHash],\n });\n\n return domainConfig;\n}\n\nexport async function getGlobalCounterAddress() {\n const [globalCounter] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [getUtf8Encoder().encode(\"global_counter\")],\n });\n\n return globalCounter;\n}\n\nexport async function getTransactionBufferAddress(\n settings: Address,\n creator: Address | Secp256r1Key,\n buffer_index: number,\n): Promise<Address> {\n requireInRange(buffer_index, 0, 255, \"buffer_index\");\n const [transactionBuffer] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [\n getUtf8Encoder().encode(\"multi_wallet\"),\n getAddressEncoder().encode(settings),\n getUtf8Encoder().encode(\"transaction_buffer\"),\n creator instanceof Secp256r1Key\n ? creator.toTruncatedBuffer()\n : getAddressEncoder().encode(creator),\n getU8Encoder().encode(buffer_index),\n ],\n });\n\n return transactionBuffer;\n}\n\nexport async function getWalletAddressFromSettings(settings: Address) {\n const [address] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [\n getUtf8Encoder().encode(\"multi_wallet\"),\n getAddressEncoder().encode(settings),\n getUtf8Encoder().encode(\"vault\"),\n ],\n });\n\n return address;\n}\n\nexport async function getSettingsFromIndex(index: number | bigint) {\n const [settings] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [\n getUtf8Encoder().encode(\"multi_wallet\"),\n getU128Encoder().encode(index),\n ],\n });\n\n return settings;\n}\n\nexport async function getWalletAddressFromIndex(index: number | bigint) {\n const settings = await getSettingsFromIndex(index);\n const address = await getWalletAddressFromSettings(settings);\n return address;\n}\n\nexport async function getLightCpiSigner() {\n const [lightCpiSigner] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [getUtf8Encoder().encode(\"cpi_authority\")],\n });\n return lightCpiSigner;\n}\n","import {\n createRpc,\n Rpc as LightProtocolRpc,\n} from \"@lightprotocol/stateless.js\";\nimport {\n createSolanaClient,\n type Rpc,\n type SendAndConfirmTransactionWithSignersFunction,\n type SolanaRpcApi,\n} from \"gill\";\nimport { NotInitializedError } from \"../errors\";\n\ntype RevibaseGlobalState = {\n solanaRpcEndpoint?: string;\n lightProtocolRpc?: LightProtocolRpc;\n solanaRpc?: Rpc<SolanaRpcApi>;\n sendAndConfirm?: SendAndConfirmTransactionWithSignersFunction;\n};\n\nconst state: RevibaseGlobalState = {};\n\nexport function getSolanaRpcEndpoint() {\n if (!state.solanaRpcEndpoint) {\n throw new NotInitializedError(\"RPC endpoint\");\n }\n return state.solanaRpcEndpoint;\n}\n\nexport function getLightProtocolRpc() {\n if (!state.lightProtocolRpc) {\n throw new NotInitializedError(\"Light Protocol RPC\");\n }\n return state.lightProtocolRpc;\n}\n\nexport function getSolanaRpc() {\n if (!state.solanaRpc) {\n throw new NotInitializedError(\"Solana RPC\");\n }\n return state.solanaRpc;\n}\n\nexport function getSendAndConfirmTransaction() {\n if (!state.sendAndConfirm) {\n throw new NotInitializedError(\"Send and confirm transaction function\");\n }\n return state.sendAndConfirm;\n}\n\nexport function initialize({\n rpcEndpoint,\n proverEndpoint,\n compressionApiEndpoint,\n}: {\n rpcEndpoint: string;\n proverEndpoint?: string;\n compressionApiEndpoint?: string;\n}): void {\n state.solanaRpcEndpoint = rpcEndpoint;\n state.lightProtocolRpc = createRpc(\n rpcEndpoint,\n compressionApiEndpoint,\n proverEndpoint,\n );\n const { rpc, sendAndConfirmTransaction } = createSolanaClient({\n urlOrMoniker: rpcEndpoint,\n });\n state.solanaRpc = rpc;\n state.sendAndConfirm = sendAndConfirmTransaction;\n}\n","import { p256 } from \"@noble/curves/nist.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport type { AuthenticationResponseJSON } from \"@simplewebauthn/browser\";\nimport type { ReadonlyUint8Array } from \"gill\";\nimport { base64URLStringToBuffer } from \"./helper\";\n\nexport function uint8ArrayToHex(bytes: Uint8Array<ArrayBuffer>) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\nexport function hexToUint8Array(hex: string): Uint8Array<ArrayBuffer> {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n}\n\nexport function extractAdditionalFields(\n clientData: Record<string, unknown>,\n): Uint8Array<ArrayBuffer> {\n const knownKeys = new Set([\"type\", \"challenge\", \"origin\", \"crossOrigin\"]);\n\n const remaining: Record<string, unknown> = {};\n for (const key in clientData) {\n if (!knownKeys.has(key)) {\n remaining[key] = clientData[key];\n }\n }\n\n if (Object.keys(remaining).length === 0) {\n return new Uint8Array([]);\n }\n\n const serialized = JSON.stringify(remaining);\n return new TextEncoder().encode(serialized.slice(1, -1));\n}\n\nexport function parseOrigins(\n originsBytes: ReadonlyUint8Array,\n numOrigins: number,\n): string[] {\n const origins: string[] = [];\n let cursor = 0;\n const decoder = new TextDecoder();\n\n for (let i = 0; i < numOrigins; i++) {\n if (cursor + 2 > originsBytes.length) {\n throw new Error(\"MaxLengthExceeded\");\n }\n\n const strLen = originsBytes[cursor] | (originsBytes[cursor + 1] << 8);\n cursor += 2;\n\n if (cursor + strLen > originsBytes.length) {\n throw new Error(\"MaxLengthExceeded\");\n }\n\n const strBytes = originsBytes.slice(cursor, cursor + strLen);\n const origin = decoder.decode(strBytes);\n origins.push(origin);\n\n cursor += strLen;\n }\n\n return origins;\n}\n\nexport function convertSignatureDERtoRS(\n signature: Uint8Array<ArrayBuffer>,\n): Uint8Array<ArrayBuffer> {\n if (signature.length === 64) {\n return signature;\n }\n\n if (signature[0] !== 0x30) throw new Error(\"Invalid DER sequence\");\n\n const totalLength = signature[1];\n let offset = 2;\n\n if (totalLength > 0x80) {\n const lengthBytes = totalLength & 0x7f;\n offset += lengthBytes;\n }\n\n if (signature[offset] !== 0x02) throw new Error(\"Expected INTEGER for r\");\n const rLen = signature[offset + 1];\n const rStart = offset + 2;\n const r = signature.slice(rStart, rStart + rLen);\n\n offset = rStart + rLen;\n if (signature[offset] !== 0x02) throw new Error(\"Expected INTEGER for s\");\n const sLen = signature[offset + 1];\n const sStart = offset + 2;\n const s = signature.slice(sStart, sStart + sLen);\n\n const rStripped = r[0] === 0x00 && r.length > 32 ? r.slice(1) : r;\n const sStripped = s[0] === 0x00 && s.length > 32 ? s.slice(1) : s;\n\n if (rStripped.length > 32 || sStripped.length > 32) {\n throw new Error(\"r or s length > 32 bytes\");\n }\n\n const rPad = new Uint8Array(32);\n rPad.set(rStripped, 32 - rStripped.length);\n\n const HALF_ORDER = p256.Point.CURVE().n >> 1n;\n const sBig = BigInt(\"0x\" + uint8ArrayToHex(sStripped));\n const sLow = sBig > HALF_ORDER ? p256.Point.CURVE().n - sBig : sBig;\n const sHex = sLow.toString(16).padStart(64, \"0\");\n const sPad = hexToUint8Array(sHex);\n\n return new Uint8Array([...rPad, ...sPad]);\n}\n\nexport function getSecp256r1Message(\n authResponse: AuthenticationResponseJSON,\n): Uint8Array<ArrayBuffer> {\n const clientDataJSON = base64URLStringToBuffer(\n authResponse.response.clientDataJSON,\n );\n const authenticatorData = base64URLStringToBuffer(\n authResponse.response.authenticatorData,\n );\n const clientDataHash = sha256(clientDataJSON);\n return new Uint8Array([...authenticatorData, ...clientDataHash]);\n}\n","import { decodeCBOR, encodeCBOR, type CBORType } from \"@levischuck/tiny-cbor\";\nimport { p256 } from \"@noble/curves/nist.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport type { AuthenticationResponseJSON } from \"@simplewebauthn/browser\";\nimport {\n address,\n getBase58Decoder,\n getBase58Encoder,\n getBase64Decoder,\n getBase64Encoder,\n getU64Decoder,\n getUtf8Decoder,\n getUtf8Encoder,\n type Address,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport { canonicalize } from \"json-canonicalize\";\nimport { NotFoundError } from \"../../errors\";\nimport { fetchDomainConfig } from \"../../generated\";\nimport {\n SignedSecp256r1Key,\n type CompleteMessageRequest,\n type CompleteTransactionRequest,\n type DeviceProfile,\n type StartMessageRequest,\n type StartTransactionRequest,\n type TransactionAuthenticationResponse,\n type TransactionPayload,\n type TransactionPayloadWithBase64MessageBytes,\n} from \"../../types\";\nimport { getDomainConfigAddress } from \"../addresses\";\nimport { getSolanaRpc } from \"../initialize\";\nimport {\n convertSignatureDERtoRS,\n extractAdditionalFields,\n getSecp256r1Message,\n parseOrigins,\n uint8ArrayToHex,\n} from \"./internal\";\n\nexport function convertPubkeyCoseToCompressed(\n publicKey: Uint8Array<ArrayBuffer>,\n) {\n const decodedPublicKey = decodeCBOR(publicKey) as Map<number, CBORType>;\n const uncompressedPublicKey = p256.Point.fromAffine({\n x: BigInt(\n \"0x\" +\n uint8ArrayToHex(decodedPublicKey.get(-2) as Uint8Array<ArrayBuffer>),\n ),\n y: BigInt(\n \"0x\" +\n uint8ArrayToHex(decodedPublicKey.get(-3) as Uint8Array<ArrayBuffer>),\n ),\n });\n const compressedPubKey = getBase58Decoder().decode(\n uncompressedPublicKey.toBytes(true),\n );\n return compressedPubKey;\n}\n\nexport function convertPubkeyCompressedToCose(\n publicKey: string,\n): Uint8Array<ArrayBuffer> {\n const compressedPublicKey = p256.Point.fromBytes(\n getBase58Encoder().encode(publicKey) as Uint8Array,\n );\n const uncompressedPublicKey = compressedPublicKey.toBytes(false);\n\n const coseDecodedPublicKey = new Map<string | number, CBORType>();\n coseDecodedPublicKey.set(1, 2);\n coseDecodedPublicKey.set(3, -7);\n coseDecodedPublicKey.set(-1, 1);\n coseDecodedPublicKey.set(-2, uncompressedPublicKey.slice(1, 33));\n coseDecodedPublicKey.set(-3, uncompressedPublicKey.slice(33, 65));\n\n return new Uint8Array(encodeCBOR(coseDecodedPublicKey));\n}\n\nexport async function getSignedSecp256r1Key(\n payload: TransactionAuthenticationResponse,\n): Promise<SignedSecp256r1Key> {\n const { authenticatorData, clientDataJSON, signature } = (\n payload.authResponse as AuthenticationResponseJSON\n ).response;\n\n const authData = base64URLStringToBuffer(authenticatorData);\n\n const clientDataJsonParsed = JSON.parse(\n getUtf8Decoder().decode(base64URLStringToBuffer(clientDataJSON)),\n ) as Record<string, unknown>;\n\n const truncatedClientDataJson = extractAdditionalFields(clientDataJsonParsed);\n\n const convertedSignature = convertSignatureDERtoRS(\n base64URLStringToBuffer(signature),\n );\n\n const domainConfig = await getDomainConfigAddress({\n rpIdHash: authData.subarray(0, 32),\n });\n\n return new SignedSecp256r1Key(payload.signer.toString(), {\n verifyArgs: {\n clientDataJson: base64URLStringToBuffer(clientDataJSON),\n truncatedClientDataJson,\n slotNumber: BigInt(payload.slotNumber),\n slotHash: getBase58Encoder().encode(\n payload.slotHash,\n ) as Uint8Array<ArrayBuffer>,\n },\n clientAndDeviceHash: getClientAndDeviceHash(\n payload.client.clientOrigin,\n payload.device.jwk,\n payload.startRequest.rid,\n ),\n domainConfig,\n authData,\n signature: convertedSignature,\n originIndex: payload.originIndex,\n crossOrigin: payload.crossOrigin,\n authResponse: payload.authResponse,\n });\n}\n\nexport function getClientAndDeviceHash(\n clientOrigin: string,\n deviceJwk: string,\n nonce: string,\n): Uint8Array<ArrayBuffer> {\n return sha256(\n new Uint8Array([\n ...getUtf8Encoder().encode(clientOrigin),\n ...getBase64Encoder().encode(deviceJwk),\n ...getBase64Encoder().encode(nonce),\n ]),\n ) as Uint8Array<ArrayBuffer>;\n}\n\nexport function createClientAuthorizationStartRequestChallenge(\n payload: StartTransactionRequest | StartMessageRequest,\n): Uint8Array<ArrayBuffer> {\n return sha256(\n getUtf8Encoder().encode(canonicalize(payload)) as Uint8Array,\n ) as Uint8Array<ArrayBuffer>;\n}\n\nexport function createClientAuthorizationCompleteRequestChallenge(\n payload: CompleteTransactionRequest | CompleteMessageRequest,\n): Uint8Array<ArrayBuffer> {\n return getSecp256r1MessageHash(payload.data.payload.authResponse);\n}\n\nexport function createMessageChallenge(\n payload: string,\n clientOrigin: string,\n deviceJwk: string,\n nonce: string,\n): Uint8Array<ArrayBuffer> {\n const clientDeviceHash = getClientAndDeviceHash(\n clientOrigin,\n deviceJwk,\n nonce,\n );\n return sha256(\n new Uint8Array([...getUtf8Encoder().encode(payload), ...clientDeviceHash]),\n ) as Uint8Array<ArrayBuffer>;\n}\n\nexport async function createTransactionChallenge(\n payload: TransactionPayloadWithBase64MessageBytes | TransactionPayload,\n clientOrigin: string,\n deviceJwk: string,\n nonce: string,\n slotHash?: string,\n slotNumber?: string,\n estimatedSlotHashExpiry?: number,\n) {\n let slotHashBytes: ReadonlyUint8Array;\n if (!slotHash || !slotNumber || !estimatedSlotHashExpiry) {\n const slotSysvarData = (\n await getSolanaRpc()\n .getAccountInfo(\n address(\"SysvarS1otHashes111111111111111111111111111\"),\n {\n encoding: \"base64\",\n commitment: \"confirmed\",\n dataSlice: { offset: 8, length: 40 },\n },\n )\n .send()\n ).value?.data;\n if (!slotSysvarData) {\n throw new NotFoundError(\n \"Slot sysvar\",\n \"Unable to fetch slot sysvar data\",\n );\n }\n const slotHashData = getBase64Encoder().encode(slotSysvarData[0]);\n slotNumber = getU64Decoder().decode(slotHashData.subarray(0, 8)).toString();\n slotHashBytes = slotHashData.subarray(8, 40);\n slotHash = getBase58Decoder().decode(slotHashBytes);\n estimatedSlotHashExpiry = Date.now() + 512 * 400;\n } else {\n slotHashBytes = getBase58Encoder().encode(slotHash);\n }\n\n const transactionMessageHash = sha256(\n typeof payload.transactionMessageBytes === \"string\"\n ? (getBase64Encoder().encode(\n payload.transactionMessageBytes,\n ) as Uint8Array<ArrayBuffer>)\n : payload.transactionMessageBytes,\n );\n const clientDeviceHash = getClientAndDeviceHash(\n clientOrigin,\n deviceJwk,\n nonce,\n );\n const challenge = sha256(\n new Uint8Array([\n ...getUtf8Encoder().encode(payload.transactionActionType),\n ...getBase58Encoder().encode(payload.transactionAddress),\n ...transactionMessageHash,\n ...slotHashBytes,\n ...clientDeviceHash,\n ]),\n ) as Uint8Array<ArrayBuffer>;\n return { slotNumber, slotHash, challenge, estimatedSlotHashExpiry };\n}\n\nexport function getDeviceMessageHash(\n authResponse: AuthenticationResponseJSON,\n deviceProfile: DeviceProfile,\n): Uint8Array<ArrayBuffer> {\n return new Uint8Array([\n ...getSecp256r1Message(authResponse),\n ...getUtf8Encoder().encode(canonicalize(deviceProfile)),\n ]);\n}\n\nexport function getSecp256r1MessageHash(\n authResponse: AuthenticationResponseJSON,\n): Uint8Array<ArrayBuffer> {\n const message = getSecp256r1Message(authResponse);\n return sha256(message) as Uint8Array<ArrayBuffer>;\n}\n\nexport function bufferToBase64URLString(buffer: Uint8Array<ArrayBuffer>) {\n let str = \"\";\n for (const charCode of buffer) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\n\nexport function base64URLStringToBuffer(base64URLString: Base64URLString) {\n const base64 = base64URLString.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, \"=\");\n const binary = atob(padded);\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n\nexport async function getOriginIndex(domainConfig: Address, origin: string) {\n const { data } = await fetchDomainConfig(getSolanaRpc(), domainConfig);\n const origins = parseOrigins(data.origins, data.numOrigins);\n const index = origins.findIndex((x) => x === origin);\n if (index === -1) {\n throw new NotFoundError(\"Origin\", \"Origin not found in domain config\");\n }\n return index;\n}\n/**\n * Converts a JSON Web Key (JWK) object into a Base64-encoded string.\n *\n * The JWK is first canonicalized (sorted and normalized) to ensure consistent\n * encoding, then UTF-8 encoded and finally converted to Base64 format.\n *\n * @param jwk - The JSON Web Key object to encode.\n * @returns The Base64-encoded string representation of the JWK.\n */\nexport function convertJWKToBase64String(jwk: JsonWebKey) {\n return getBase64Decoder().decode(\n getUtf8Encoder().encode(canonicalize(jwk)) as Uint8Array<ArrayBuffer>,\n );\n} /**\n * Converts a Base64-encoded JWK string back into a JSON Web Key (JWK) object.\n *\n * @param jwk - The Base64-encoded string representing the JWK.\n * @returns The decoded JSON Web Key object.\n */\nexport function convertBase64StringToJWK(jwk: string): JsonWebKey {\n return JSON.parse(getUtf8Decoder().decode(getBase64Encoder().encode(jwk)));\n}\n","import {\n address,\n getBase58Decoder,\n getBase58Encoder,\n getBase64Decoder,\n getTransactionEncoder,\n getU32Decoder,\n getU32Encoder,\n type Address,\n type ReadonlyUint8Array,\n type SignatureBytes,\n type TransactionSigner,\n} from \"gill\";\nimport {\n NetworkError,\n NotFoundError,\n PermissionError,\n ValidationError,\n} from \"../../errors\";\nimport {\n getConfigActionDecoder,\n getConfigActionEncoder,\n UserRole,\n type ConfigAction,\n type MemberKey,\n type Settings,\n} from \"../../generated\";\nimport {\n KeyType,\n Permission,\n Permissions,\n type TransactionAuthDetails,\n} from \"../../types\";\n\nexport function retrieveTransactionManager(\n signer: string,\n settingsData: Settings,\n): {\n transactionManagerAddress: Address;\n} | null {\n if (settingsData.threshold > 1) {\n throw new ValidationError(\n \"Multi-signature transactions with threshold > 1 are not supported yet.\",\n );\n }\n const member = settingsData.members.find(\n (m) => convertMemberKeyToString(m.pubkey) === signer,\n );\n if (!member) {\n throw new NotFoundError(\"Member\", `Signer ${signer} not found in settings`);\n }\n\n const { permissions } = member;\n if (!permissions) {\n throw new NotFoundError(\n \"Permissions\",\n \"No permissions found for the current member\",\n );\n }\n const hasInitiate = Permissions.has(\n permissions,\n Permission.InitiateTransaction,\n );\n const hasVote = Permissions.has(permissions, Permission.VoteTransaction);\n const hasExecute = Permissions.has(\n permissions,\n Permission.ExecuteTransaction,\n );\n if (hasInitiate && hasVote && hasExecute) {\n return null;\n }\n\n if (!hasVote || !hasExecute) {\n throw new PermissionError(\n \"Signer lacks the required Vote/Execute permissions.\",\n [\"VoteTransaction\", \"ExecuteTransaction\"],\n [\n hasVote ? \"VoteTransaction\" : undefined,\n hasExecute ? \"ExecuteTransaction\" : undefined,\n ].filter(Boolean) as string[],\n );\n }\n\n const transactionManager = settingsData.members.find(\n (m) => m.role === UserRole.TransactionManager,\n );\n if (!transactionManager) {\n throw new NotFoundError(\n \"Transaction manager\",\n \"No transaction manager available in wallet\",\n );\n }\n\n return {\n transactionManagerAddress: address(\n convertMemberKeyToString(transactionManager.pubkey),\n ),\n };\n}\n\nfunction toWebSocketUrl(httpUrl: string): string {\n const u = new URL(httpUrl);\n if (u.protocol === \"https:\") u.protocol = \"wss:\";\n else if (u.protocol === \"http:\") u.protocol = \"ws:\";\n return u.toString();\n}\n\nfunction openWebSocket(url: string, signal: AbortSignal): Promise<WebSocket> {\n return new Promise((resolve, reject) => {\n const ws = new WebSocket(url);\n\n const onAbort = () => {\n try {\n ws.close();\n } catch {\n /* ignore */\n }\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n\n ws.onopen = () => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve(ws);\n };\n ws.onerror = () => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(new Error(\"WebSocket connection failed\"));\n };\n });\n}\n\nasync function readWebSocketJsonEvents(\n ws: WebSocket,\n signal: AbortSignal,\n onEvent: (event: string, data: any) => boolean,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n let settled = false;\n\n const cleanup = () => {\n signal.removeEventListener(\"abort\", onAbort);\n ws.removeEventListener(\"message\", onMessage);\n ws.removeEventListener(\"error\", onError);\n ws.removeEventListener(\"close\", onClose);\n };\n\n const finish = (fn: () => void) => {\n if (settled) return;\n settled = true;\n cleanup();\n fn();\n };\n\n const onAbort = () => {\n try {\n ws.close();\n } catch {\n /* ignore */\n }\n };\n signal.addEventListener(\"abort\", onAbort);\n\n const onMessage = (ev: MessageEvent) => {\n if (typeof ev.data !== \"string\") return;\n let parsed: { event?: string; data?: unknown };\n try {\n parsed = JSON.parse(ev.data);\n } catch {\n return;\n }\n const event = typeof parsed.event === \"string\" ? parsed.event : \"message\";\n const data = parsed.data;\n try {\n if (onEvent(event, data)) {\n finish(() => resolve());\n }\n } catch (e) {\n finish(() => reject(e));\n }\n };\n\n const onError = () => {\n finish(() =>\n reject(\n new NetworkError(\"Transaction manager request failed\", 0, ws.url),\n ),\n );\n };\n\n const onClose = () => {\n finish(() => resolve());\n };\n\n ws.addEventListener(\"message\", onMessage);\n ws.addEventListener(\"error\", onError);\n ws.addEventListener(\"close\", onClose);\n });\n}\n\nfunction createAbortError(message = \"Aborted\"): Error {\n const err = new Error(message);\n err.name = \"AbortError\";\n return err;\n}\n\nconst sleep = (ms: number, s: AbortSignal) =>\n new Promise<void>((resolve, reject) => {\n if (s.aborted) return reject(createAbortError());\n const id = setTimeout(resolve, ms);\n s.addEventListener(\n \"abort\",\n () => {\n clearTimeout(id);\n reject(createAbortError());\n },\n { once: true },\n );\n });\n\nexport function createTransactionManagerSigner(args: {\n address: Address;\n url: string;\n authResponses?: TransactionAuthDetails[];\n transactionMessageBytes?: ReadonlyUint8Array;\n onPendingApprovalsCallback?: (validTill: number) => void;\n onPendingApprovalsSuccess?: () => void;\n abortController?: AbortController;\n opts?: { maxAttempts?: number; retryDelayMs?: number };\n}): TransactionSigner {\n const {\n address,\n url,\n authResponses,\n transactionMessageBytes,\n onPendingApprovalsCallback,\n onPendingApprovalsSuccess,\n abortController,\n opts,\n } = args;\n const controller = abortController ?? new AbortController();\n const maxAttempts = opts?.maxAttempts ?? 10;\n const retryDelayMs = opts?.retryDelayMs ?? 400;\n return {\n address,\n async signTransactions(transactions) {\n const { signal } = controller;\n const wsUrl = toWebSocketUrl(url);\n const payload = JSON.stringify({\n type: \"transaction\",\n data: {\n publicKey: address.toString(),\n payload: transactions.map((x) => ({\n transaction: getBase64Decoder().decode(\n getTransactionEncoder().encode(x),\n ),\n transactionMessageBytes: transactionMessageBytes\n ? getBase64Decoder().decode(transactionMessageBytes)\n : undefined,\n authResponses,\n })),\n },\n });\n for (let i = 0; i < maxAttempts; i++) {\n if (signal.aborted) throw createAbortError();\n let signatures: string[] | undefined;\n let ws: WebSocket | undefined;\n try {\n ws = await openWebSocket(wsUrl, signal);\n ws.send(payload);\n await readWebSocketJsonEvents(ws, signal, (event, data) => {\n if (event === \"error\") {\n const err =\n data &&\n typeof data === \"object\" &&\n typeof (data as { error?: string }).error === \"string\"\n ? (data as { error: string }).error\n : \"Unknown error\";\n const e = new Error(err) as Error & { noRetry: true };\n e.noRetry = true;\n throw e;\n }\n if (event === \"signatures\") {\n signatures = (data as { signatures?: string[] }).signatures;\n return true;\n }\n if (event === \"pending_transaction_approval\") {\n onPendingApprovalsCallback?.(\n (data as { validTill: number }).validTill,\n );\n } else if (event === \"transaction_approved\") {\n onPendingApprovalsSuccess?.();\n }\n return false;\n });\n } catch (e: unknown) {\n if (e && typeof e === \"object\" && (e as { noRetry?: true }).noRetry) {\n throw new NetworkError(`${(e as Error).message}`);\n }\n if (\n e &&\n typeof e === \"object\" &&\n (e as { name?: string }).name === \"AbortError\"\n )\n throw e;\n } finally {\n try {\n ws?.close();\n } catch {\n /* ignore */\n }\n }\n if (signatures?.length) {\n return signatures.map((sig) => ({\n [address]: getBase58Encoder().encode(sig) as SignatureBytes,\n }));\n }\n if (i < maxAttempts - 1) await sleep(retryDelayMs, signal);\n }\n throw new NetworkError(\"Transaction manager: missing signatures\");\n },\n };\n}\n\nexport function convertMemberKeyToString(memberKey: MemberKey): string {\n if (memberKey.keyType === KeyType.Ed25519) {\n return getBase58Decoder().decode(memberKey.key.subarray(1, 33));\n } else {\n return getBase58Decoder().decode(memberKey.key);\n }\n}\n\nexport function serializeConfigActions(\n configActions: ConfigAction[],\n): Uint8Array<ArrayBuffer> {\n const encodedActions = configActions.map((x) =>\n getConfigActionEncoder().encode(x),\n );\n\n const totalLength = 4 + encodedActions.reduce((sum, a) => sum + a.length, 0);\n\n const serializedConfigActions = new Uint8Array(totalLength);\n\n let offset = 0;\n\n serializedConfigActions.set(\n getU32Encoder().encode(configActions.length),\n offset,\n );\n offset += 4;\n\n for (const action of encodedActions) {\n serializedConfigActions.set(action, offset);\n offset += action.length;\n }\n\n return serializedConfigActions;\n}\n\nexport function deserializeConfigActions(\n bytes: Uint8Array<ArrayBuffer>,\n): ConfigAction[] {\n let offset = 0;\n const [count, u32offset] = getU32Decoder().read(bytes, offset);\n offset = u32offset;\n\n const out: ConfigAction[] = new Array(count);\n for (let i = 0; i < count; i++) {\n const r = getConfigActionDecoder().read(bytes, offset);\n out[i] = r[0];\n offset = r[1];\n }\n\n if (offset !== bytes.length) {\n throw new ValidationError(\n `Trailing bytes detected: expected ${bytes.length} bytes but consumed ${offset}`,\n );\n }\n return out;\n}\n","export const JITO_TIP_ACCOUNTS = [\n \"HFqU5x63VTqvQss8hp11i4wVV8bD44PvwucfZ2bU7gRe\",\n \"ADaUMid9yfUytqMBgopwjb2DTLSokTSzL1zt6iGPaS49\",\n \"96gYZGLnJYVFmbjzopPSU6QiEV5fGqZNyN9nmNhvrZU5\",\n \"Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY\",\n \"DfXygSm4jCyNCybVYYK6DwvWqjKee8pbDmJGcLWNDXjh\",\n \"ADuUkR4vqLUMWXxW9gh6D6L8pMSawimctcNZ5pGwDcEt\",\n \"3AVi9Tg9Uo68tJfuvoKvqKNWKkC5wPdSSdeBnizKZ6jT\",\n \"DttWaMuVvTiduZRnguLF7jNxTgiMBZ1hyAumKUiL2KRL\",\n] as const;\n","import {\n AccountRole,\n type Address,\n address,\n getAddressEncoder,\n type Instruction,\n none,\n type OptionOrNullable,\n some,\n type TransactionSigner,\n} from \"gill\";\nimport { getTransferSolInstruction } from \"gill/programs\";\nimport { JITO_TIP_ACCOUNTS } from \"../../constants\";\nimport { ValidationError } from \"../../errors\";\nimport type {\n MemberKey,\n Secp256r1VerifyArgsArgs,\n TransactionSyncSignersArgs,\n} from \"../../generated\";\nimport type { Secp256r1VerifyInput } from \"../../instructions/secp256r1Verify\";\nimport { KeyType, Secp256r1Key, SignedSecp256r1Key } from \"../../types\";\nimport { getSecp256r1Message } from \"../passkeys/internal\";\nimport type { PackedAccounts } from \"./packedAccounts\";\n\nexport function extractSecp256r1VerificationArgs(\n signer?: SignedSecp256r1Key | TransactionSigner,\n index = 0,\n) {\n const secp256r1PublicKey =\n signer instanceof SignedSecp256r1Key ? signer : undefined;\n const verifyArgs: OptionOrNullable<Secp256r1VerifyArgsArgs> =\n secp256r1PublicKey?.verifyArgs && index !== -1\n ? some({\n signedMessageIndex: index,\n truncatedClientDataJson:\n secp256r1PublicKey.verifyArgs.truncatedClientDataJson,\n slotNumber: secp256r1PublicKey.verifyArgs.slotNumber,\n originIndex: secp256r1PublicKey.originIndex,\n crossOrigin: secp256r1PublicKey.crossOrigin,\n clientAndDeviceHash: secp256r1PublicKey.clientAndDeviceHash,\n })\n : none();\n\n const domainConfig = secp256r1PublicKey?.domainConfig\n ? secp256r1PublicKey.domainConfig\n : undefined;\n const signature = secp256r1PublicKey?.verifyArgs\n ? secp256r1PublicKey.signature\n : undefined;\n const message =\n secp256r1PublicKey?.authData && secp256r1PublicKey.verifyArgs.clientDataJson\n ? getSecp256r1Message(secp256r1PublicKey.authResponse)\n : undefined;\n const publicKey = secp256r1PublicKey?.toBuffer();\n\n return {\n domainConfig,\n verifyArgs,\n signature,\n message,\n publicKey,\n };\n}\n\nexport function buildSignerAccounts(\n dedupSigners: (TransactionSigner | SignedSecp256r1Key)[],\n packedAccounts: PackedAccounts,\n secp256r1VerifyInput: Secp256r1VerifyInput = [],\n): {\n secp256r1VerifyInput: Secp256r1VerifyInput;\n transactionSyncSigners: TransactionSyncSignersArgs[];\n} {\n const transactionSyncSigners: TransactionSyncSignersArgs[] = [];\n\n for (const x of dedupSigners) {\n if (x instanceof SignedSecp256r1Key) {\n const index = secp256r1VerifyInput.length;\n const { domainConfig, verifyArgs, signature, publicKey, message } =\n extractSecp256r1VerificationArgs(x, index);\n if (message && signature && publicKey) {\n secp256r1VerifyInput.push({ message, signature, publicKey });\n }\n if (domainConfig) {\n const domainConfigIndex = packedAccounts\n .addPreAccounts([\n { address: domainConfig, role: AccountRole.READONLY },\n ])\n .get(domainConfig)?.index;\n if (verifyArgs.__option === \"Some\" && domainConfigIndex !== undefined) {\n transactionSyncSigners.push({\n __kind: \"Secp256r1\",\n fields: [{ domainConfigIndex, verifyArgs: verifyArgs.value }],\n });\n }\n }\n } else {\n const index = packedAccounts\n .addPreAccounts([\n { address: x.address, role: AccountRole.READONLY_SIGNER, signer: x },\n ])\n .get(x.address)?.index;\n if (index !== undefined) {\n transactionSyncSigners.push({\n __kind: \"Ed25519\",\n fields: [index],\n });\n }\n }\n }\n\n return { secp256r1VerifyInput, transactionSyncSigners };\n}\n\nexport function convertPubkeyToMemberkey(\n pubkey: TransactionSigner | Address | Secp256r1Key,\n): MemberKey {\n if (pubkey instanceof Secp256r1Key) {\n return { keyType: KeyType.Secp256r1, key: pubkey.toBytes() };\n } else {\n let address;\n try {\n address = \"address\" in pubkey ? pubkey.address : pubkey;\n } catch {\n address = pubkey as Address;\n }\n return {\n keyType: KeyType.Ed25519,\n key: new Uint8Array([\n 0, // pad start with zero to make it 33 bytes\n ...getAddressEncoder().encode(address),\n ]),\n };\n }\n}\n\nfunction getPubkeyString(pubkey: TransactionSigner | SignedSecp256r1Key) {\n if (pubkey instanceof SignedSecp256r1Key) {\n return pubkey.toString();\n } else {\n return pubkey.address.toString();\n }\n}\n\nexport function getDeduplicatedSigners(\n signers: (SignedSecp256r1Key | TransactionSigner)[],\n): (SignedSecp256r1Key | TransactionSigner)[] {\n const hashSet = new Set();\n const dedupSigners: (SignedSecp256r1Key | TransactionSigner)[] = [];\n for (const signer of signers) {\n if (!hashSet.has(getPubkeyString(signer))) {\n dedupSigners.push(signer);\n hashSet.add(getPubkeyString(signer));\n }\n }\n\n const secp256r1Signers = dedupSigners.filter(\n (x) => x instanceof SignedSecp256r1Key,\n );\n if (secp256r1Signers.length > 1) {\n throw new ValidationError(\n `More than 1 Secp256r1 signers in an instruction is not supported (found ${secp256r1Signers.length})`,\n );\n }\n return dedupSigners;\n}\n\nexport function addJitoTip({\n payer,\n tipAmount,\n}: {\n payer: TransactionSigner;\n tipAmount: number;\n}): Instruction {\n const tipAccount =\n JITO_TIP_ACCOUNTS[Math.floor(Math.random() * JITO_TIP_ACCOUNTS.length)];\n return getTransferSolInstruction({\n source: payer,\n destination: address(tipAccount),\n amount: tipAmount,\n });\n}\n","import {\n getBase58Decoder,\n getBase58Encoder,\n getBase64Decoder,\n getBase64Encoder,\n type Address,\n type Base58EncodedBytes,\n type Base64EncodedBytes,\n type GetProgramAccountsMemcmpFilter,\n} from \"gill\";\nimport {\n fetchSettings,\n fetchUser,\n getMemberKeyEncoder,\n getSettingsDecoder,\n getUserDecoder,\n MULTI_WALLET_PROGRAM_ADDRESS,\n UserRole,\n type Settings,\n} from \"../../generated\";\nimport type { Secp256r1Key } from \"../../types\";\nimport { getSettingsFromIndex, getUserAddress } from \"../addresses\";\nimport { getSolanaRpc } from \"../initialize\";\nimport { base64URLStringToBuffer } from \"../passkeys/helper\";\nimport { convertPubkeyToMemberkey } from \"../transaction/internal\";\n\n/** Anchor account discriminator size. */\nconst ACCOUNT_DISCRIMINATOR_SIZE = 8;\n/** `Option<Address>` tag byte when `Some`. */\nconst OPTION_SOME_TAG = 1;\n/** Serialized `MemberKey` size. */\nconst MEMBER_KEY_SIZE = 34;\n/** `Option<Vec<u8>>` length prefix size (tag + u32 len). */\nconst OPTION_VEC_PREFIX_SIZE = 5;\n\nconst USER_DOMAIN_CONFIG_OFFSET = ACCOUNT_DISCRIMINATOR_SIZE + OPTION_SOME_TAG;\nconst USER_MEMBER_OFFSET = ACCOUNT_DISCRIMINATOR_SIZE + OPTION_SOME_TAG + 32;\nconst USER_CREDENTIAL_ID_OFFSET =\n USER_MEMBER_OFFSET + MEMBER_KEY_SIZE + OPTION_VEC_PREFIX_SIZE;\nconst SETTINGS_MEMBER_OFFSET = 20;\n\nexport async function fetchUserAccountByFilters(\n domainConfigAddress: Address,\n {\n member,\n credentialId,\n }: {\n member?: Address | Secp256r1Key | null;\n credentialId?: string | null;\n },\n) {\n let filters: GetProgramAccountsMemcmpFilter[] = [\n {\n memcmp: {\n offset: BigInt(USER_DOMAIN_CONFIG_OFFSET),\n encoding: \"base58\",\n bytes: domainConfigAddress.toString() as Base58EncodedBytes,\n },\n },\n ];\n if (member) {\n filters.push({\n memcmp: {\n offset: BigInt(USER_MEMBER_OFFSET),\n encoding: \"base58\",\n bytes: getBase58Decoder().decode(\n getMemberKeyEncoder().encode(convertPubkeyToMemberkey(member)),\n ) as Base58EncodedBytes,\n },\n });\n } else if (credentialId) {\n filters.push({\n memcmp: {\n offset: BigInt(USER_CREDENTIAL_ID_OFFSET),\n encoding: \"base58\",\n bytes: getBase58Decoder().decode(\n base64URLStringToBuffer(credentialId),\n ) as Base58EncodedBytes,\n },\n });\n } else {\n return null;\n }\n const result = await getSolanaRpc()\n .getProgramAccounts(MULTI_WALLET_PROGRAM_ADDRESS, { filters })\n .send();\n if (!result.length) {\n return null;\n }\n return result.map((x) =>\n getUserDecoder().decode(getBase58Encoder().encode(x.account.data)),\n )[0];\n}\n\nexport async function fetchAllSettingsAccountByMember(\n member: Address | Secp256r1Key,\n) {\n const user = (await fetchUser(getSolanaRpc(), await getUserAddress(member)))\n .data;\n if (\n user.role === UserRole.Administrator ||\n user.role === UserRole.TransactionManager\n ) {\n const settingsAccount: Settings[] = [];\n const accounts = await getSolanaRpc()\n .getProgramAccounts(MULTI_WALLET_PROGRAM_ADDRESS, {\n encoding: \"base64\",\n filters: [\n {\n memcmp: {\n offset: BigInt(SETTINGS_MEMBER_OFFSET),\n encoding: \"base64\",\n bytes: getBase64Decoder().decode(\n getMemberKeyEncoder().encode(convertPubkeyToMemberkey(member)),\n ) as Base64EncodedBytes,\n },\n },\n ],\n })\n .send();\n\n accounts.forEach((x) => {\n const data = getSettingsDecoder().decode(\n getBase64Encoder().encode(x.account.data[0]),\n );\n settingsAccount.push({ ...data });\n });\n return settingsAccount;\n } else {\n return await Promise.all(\n user.wallets.map(async (x) =>\n fetchSettings(getSolanaRpc(), await getSettingsFromIndex(x.index)),\n ),\n );\n }\n}\n","import { type TransactionSigner } from \"gill\";\nimport { getCreateDomainConfigInstruction } from \"../../generated\";\nimport { getDomainConfigAddress, getUserAddress } from \"../../utils\";\n\nexport async function createDomainConfig({\n payer,\n rpId,\n origins,\n authority,\n}: {\n payer: TransactionSigner;\n rpId: string;\n origins: string[];\n authority: TransactionSigner;\n}) {\n const domainConfig = await getDomainConfigAddress({ rpId });\n\n return getCreateDomainConfigInstruction({\n origins,\n authority,\n payer,\n domainConfig,\n rpId,\n userAccount: await getUserAddress(authority.address),\n remainingAccounts: [],\n });\n}\n","import type { TransactionSigner } from \"gill\";\nimport { getCreateGlobalCounterInstructionAsync as getCreateGlobalCounterInstruction } from \"../../generated\";\nimport { getGlobalCounterAddress } from \"../../utils\";\n\nexport async function createGlobalCounter({\n payer,\n}: {\n payer: TransactionSigner;\n}) {\n const globalCounter = await getGlobalCounterAddress();\n return getCreateGlobalCounterInstruction({\n payer,\n globalCounter,\n remainingAccounts: [],\n });\n}\n","import type { TransactionSigner } from \"gill\";\nimport { getDisableDomainConfigInstruction } from \"../../generated\";\nimport { getDomainConfigAddress } from \"../../utils\";\n\nexport async function disableDomainConfig({\n admin,\n rpId,\n disable,\n}: {\n admin: TransactionSigner;\n disable: boolean;\n rpId: string;\n}) {\n const domainConfig = await getDomainConfigAddress({ rpId });\n return getDisableDomainConfigInstruction({\n domainConfig,\n admin,\n disable,\n remainingAccounts: [],\n });\n}\n","import {\n type AccountMeta,\n AccountRole,\n type AccountSignerMeta,\n type Address,\n type AddressesByLookupTableAddress,\n type CompiledTransactionMessage,\n fetchAddressesForLookupTables,\n type ReadonlyUint8Array,\n type TransactionSigner,\n} from \"gill\";\nimport { getSolanaRpc } from \"..\";\nimport { vaultTransactionMessageDeserialize } from \"../../types\";\n\nfunction getAccountRole(\n message: CompiledTransactionMessage,\n index: number,\n accountKey: Address,\n vaultPda: Address,\n) {\n const isWritable = isStaticWritableIndex(message, index);\n const isSigner = isSignerIndex(message, index) && accountKey !== vaultPda;\n if (isWritable && isSigner) {\n return AccountRole.WRITABLE_SIGNER;\n } else if (isWritable && !isSigner) {\n return AccountRole.WRITABLE;\n } else if (!isWritable && isSigner) {\n return AccountRole.READONLY_SIGNER;\n } else {\n return AccountRole.READONLY;\n }\n}\n\nfunction isStaticWritableIndex(\n message: CompiledTransactionMessage,\n index: number,\n) {\n const numAccountKeys = message.staticAccounts.length;\n const {\n numSignerAccounts,\n numReadonlySignerAccounts,\n numReadonlyNonSignerAccounts,\n } = message.header;\n\n const numWritableSigners = numSignerAccounts - numReadonlySignerAccounts;\n const numWritableNonSigners =\n numAccountKeys - numSignerAccounts - numReadonlyNonSignerAccounts;\n\n if (index >= numAccountKeys) {\n return false;\n }\n\n if (index < numWritableSigners) {\n return true;\n }\n\n if (index >= numSignerAccounts) {\n const indexIntoNonSigners = index - numSignerAccounts;\n return indexIntoNonSigners < numWritableNonSigners;\n }\n\n return false;\n}\n\nfunction isSignerIndex(message: CompiledTransactionMessage, index: number) {\n return index < message.header.numSignerAccounts;\n}\n\nexport async function accountsForTransactionExecute({\n walletAddress,\n transactionMessageBytes,\n addressesByLookupTableAddress,\n additionalSigners,\n}: {\n transactionMessageBytes: ReadonlyUint8Array;\n walletAddress: Address;\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n additionalSigners?: TransactionSigner[];\n}) {\n const transactionMessage = vaultTransactionMessageDeserialize(\n transactionMessageBytes,\n );\n\n if (transactionMessage.version === \"legacy\") {\n throw new Error(\"Only versioned transaction is allowed.\");\n }\n\n const addressLookupTableAccounts =\n addressesByLookupTableAddress ??\n (transactionMessage.addressTableLookups\n ? await fetchAddressesForLookupTables(\n transactionMessage.addressTableLookups.map(\n (x) => x.lookupTableAddress,\n ),\n getSolanaRpc(),\n )\n : {});\n\n const accountMetas: (AccountMeta | AccountSignerMeta)[] = [];\n\n accountMetas.push(\n ...(transactionMessage.addressTableLookups?.map((lookup) => {\n return {\n role: AccountRole.READONLY,\n address: lookup.lookupTableAddress,\n };\n }) ?? []),\n );\n\n for (const [\n accountIndex,\n accountKey,\n ] of transactionMessage.staticAccounts.entries()) {\n accountMetas.push({\n address: accountKey,\n role: getAccountRole(\n transactionMessage,\n accountIndex,\n accountKey,\n walletAddress,\n ),\n });\n }\n\n if (transactionMessage.addressTableLookups) {\n for (const lookup of transactionMessage.addressTableLookups) {\n const lookupTableAccount =\n addressLookupTableAccounts[lookup.lookupTableAddress];\n if (!lookupTableAccount) {\n throw new Error(\n `Address lookup table account ${lookup.lookupTableAddress} not found`,\n );\n }\n\n for (const accountIndex of lookup.writableIndexes) {\n const address = lookupTableAccount[accountIndex];\n if (!address) {\n throw new Error(\n `Address lookup table account ${lookup.lookupTableAddress} does not contain address at index ${accountIndex}`,\n );\n }\n\n accountMetas.push({\n address,\n role: AccountRole.WRITABLE,\n });\n }\n for (const accountIndex of lookup.readonlyIndexes) {\n const address = lookupTableAccount[accountIndex];\n if (!address) {\n throw new Error(\n `Address lookup table account ${lookup.lookupTableAddress} does not contain address at index ${accountIndex}`,\n );\n }\n accountMetas.push({\n address,\n role: AccountRole.READONLY,\n });\n }\n }\n }\n\n for (const signer of additionalSigners?.filter(\n (x) => x.address !== walletAddress,\n ) ?? []) {\n const index = accountMetas.findIndex(\n (meta) => meta.address === signer.address,\n );\n if (index === -1) {\n accountMetas.push({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n });\n } else {\n if (\n accountMetas[index].role === AccountRole.READONLY ||\n accountMetas[index].role === AccountRole.READONLY_SIGNER\n ) {\n accountMetas[index] = {\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n };\n } else if (\n accountMetas[index].role === AccountRole.WRITABLE ||\n accountMetas[index].role === AccountRole.WRITABLE_SIGNER\n ) {\n accountMetas[index] = {\n address: signer.address,\n role: AccountRole.WRITABLE_SIGNER,\n signer,\n };\n }\n }\n }\n return {\n accountMetas,\n addressLookupTableAccounts,\n transactionMessage,\n };\n}\n","import {\n address,\n combineCodec,\n createDecoder,\n createEncoder,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU8Decoder,\n getU8Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nconst COMPRESSED_PUBKEY_SERIALIZED_SIZE = 33;\nconst SIGNATURE_SERIALIZED_SIZE = 64;\nconst SIGNATURE_OFFSETS_SERIALIZED_SIZE = 14;\nconst SIGNATURE_OFFSETS_START = 2;\nconst SECP256R1_PROGRAM_ADDRESS = address(\n \"Secp256r1SigVerify1111111111111111111111111\",\n);\n\nexport type Secp256r1VerifyInput = {\n publicKey: ReadonlyUint8Array;\n signature: ReadonlyUint8Array;\n message: ReadonlyUint8Array;\n}[];\n\nexport type Secp256r1VerifyInstruction<\n TProgram extends string = typeof SECP256R1_PROGRAM_ADDRESS,\n> = Instruction<TProgram> &\n InstructionWithData<Uint8Array<ArrayBuffer>> &\n InstructionWithAccounts<[]>;\n\nexport type Secp256r1VerifyInstructionData = {\n numSignatures: number;\n padding: number;\n offsets: Secp256r1SignatureOffsetsDataArgs[];\n payload: Secp256r1VerifyInput;\n};\n\nexport type Secp256r1SignatureOffsetsDataArgs = {\n signatureOffset: number;\n signatureInstructionIndex: number;\n publicKeyOffset: number;\n publicKeyInstructionIndex: number;\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n};\n\nexport function getSecp256r1SignatureOffsetsDataEncoder(): Encoder<Secp256r1SignatureOffsetsDataArgs> {\n return getStructEncoder([\n [\"signatureOffset\", getU16Encoder()],\n [\"signatureInstructionIndex\", getU16Encoder()],\n [\"publicKeyOffset\", getU16Encoder()],\n [\"publicKeyInstructionIndex\", getU16Encoder()],\n [\"messageDataOffset\", getU16Encoder()],\n [\"messageDataSize\", getU16Encoder()],\n [\"messageInstructionIndex\", getU16Encoder()],\n ]);\n}\n\nexport function getSecp256r1SignatureOffsetsDataDecoder(): Decoder<Secp256r1SignatureOffsetsDataArgs> {\n return getStructDecoder([\n [\"signatureOffset\", getU16Decoder()],\n [\"signatureInstructionIndex\", getU16Decoder()],\n [\"publicKeyOffset\", getU16Decoder()],\n [\"publicKeyInstructionIndex\", getU16Decoder()],\n [\"messageDataOffset\", getU16Decoder()],\n [\"messageDataSize\", getU16Decoder()],\n [\"messageInstructionIndex\", getU16Decoder()],\n ]);\n}\n\nexport function getSecp256r1VerifyInstructionDataDecoder(): Decoder<Secp256r1VerifyInstructionData> {\n return createDecoder({\n read: (bytes, offset = 0) => {\n const numSignatures = getU8Decoder().decode(bytes, offset);\n offset += 1;\n\n const padding = getU8Decoder().decode(bytes, offset);\n offset += 1;\n\n const offsets: Secp256r1SignatureOffsetsDataArgs[] = [];\n const offsetDecoder = getSecp256r1SignatureOffsetsDataDecoder();\n for (let i = 0; i < numSignatures; i++) {\n offsets.push(offsetDecoder.decode(bytes, offset));\n offset += SIGNATURE_OFFSETS_SERIALIZED_SIZE;\n }\n const payload: Secp256r1VerifyInput = [];\n\n for (let i = 0; i < numSignatures; i++) {\n const publicKey = fixDecoderSize(\n getBytesDecoder(),\n COMPRESSED_PUBKEY_SERIALIZED_SIZE,\n ).decode(bytes, offset);\n offset += COMPRESSED_PUBKEY_SERIALIZED_SIZE;\n\n const signature = fixDecoderSize(\n getBytesDecoder(),\n SIGNATURE_SERIALIZED_SIZE,\n ).decode(bytes, offset);\n offset += SIGNATURE_SERIALIZED_SIZE;\n\n const messageSize = offsets[i].messageDataSize;\n const message = fixDecoderSize(getBytesDecoder(), messageSize).decode(\n bytes,\n offset,\n );\n offset += messageSize;\n\n payload.push({ publicKey, signature, message });\n }\n return [\n {\n numSignatures,\n padding,\n offsets,\n payload,\n },\n offset,\n ];\n },\n });\n}\n\nexport function getSecp256r1VerifyInstructionDataEncoder(): Encoder<Secp256r1VerifyInstructionDataArgs> {\n return createEncoder({\n getSizeFromValue: (value: Secp256r1VerifyInstructionData) => {\n const offsetSize =\n SIGNATURE_OFFSETS_SERIALIZED_SIZE * value.offsets.length;\n const payloadSize = value.payload.reduce((sum, p) => {\n return (\n sum +\n COMPRESSED_PUBKEY_SERIALIZED_SIZE +\n SIGNATURE_SERIALIZED_SIZE +\n p.message.length\n );\n }, 0);\n return 2 + offsetSize + payloadSize; // 1 byte for numSignatures, 1 for padding\n },\n write: (value: Secp256r1VerifyInstructionData, bytes, offset = 0) => {\n offset = getU8Encoder().write(value.numSignatures, bytes, offset);\n offset = getU8Encoder().write(value.padding, bytes, offset);\n\n const offsetEncoder = getSecp256r1SignatureOffsetsDataEncoder();\n for (const offsetEntry of value.offsets) {\n offset = offsetEncoder.write(offsetEntry, bytes, offset);\n }\n\n for (const entry of value.payload) {\n offset = fixEncoderSize(\n getBytesEncoder(),\n COMPRESSED_PUBKEY_SERIALIZED_SIZE,\n ).write(entry.publicKey, bytes, offset);\n\n offset = fixEncoderSize(\n getBytesEncoder(),\n SIGNATURE_SERIALIZED_SIZE,\n ).write(entry.signature, bytes, offset);\n\n offset = getBytesEncoder().write(entry.message, bytes, offset);\n }\n\n return offset;\n },\n });\n}\n\nexport type Secp256r1VerifyInstructionDataArgs = {\n numSignatures: number;\n padding: number;\n offsets: Secp256r1SignatureOffsetsDataArgs[];\n payload: Secp256r1VerifyInput;\n};\n\nexport function getSecp256r1VerifyInstructionDataCodec(): Codec<\n Secp256r1VerifyInstructionDataArgs,\n Secp256r1VerifyInstructionData\n> {\n return combineCodec(\n getSecp256r1VerifyInstructionDataEncoder(),\n getSecp256r1VerifyInstructionDataDecoder(),\n );\n}\n\nexport function getSecp256r1VerifyInstruction<\n TProgramAddress extends Address = typeof SECP256R1_PROGRAM_ADDRESS,\n>(\n input: Secp256r1VerifyInput,\n config?: { programAddress?: TProgramAddress },\n): Secp256r1VerifyInstruction<TProgramAddress> {\n let numSignatures = input.length;\n let currentOffset =\n SIGNATURE_OFFSETS_START + numSignatures * SIGNATURE_OFFSETS_SERIALIZED_SIZE;\n const offsets = [];\n for (let i = 0; i < numSignatures; i++) {\n const { message } = input[i];\n const publicKeyOffset = currentOffset;\n const signatureOffset = publicKeyOffset + COMPRESSED_PUBKEY_SERIALIZED_SIZE;\n const messageDataOffset = signatureOffset + SIGNATURE_SERIALIZED_SIZE;\n offsets.push({\n publicKeyOffset,\n publicKeyInstructionIndex: 0xffff,\n signatureOffset,\n signatureInstructionIndex: 0xffff,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: 0xffff,\n } as Secp256r1SignatureOffsetsDataArgs);\n currentOffset +=\n COMPRESSED_PUBKEY_SERIALIZED_SIZE +\n SIGNATURE_SERIALIZED_SIZE +\n message.length;\n }\n\n const programAddress = config?.programAddress ?? SECP256R1_PROGRAM_ADDRESS;\n\n const args = {\n numSignatures,\n padding: 0,\n offsets,\n payload: input,\n };\n\n const instruction = {\n accounts: [],\n programAddress,\n data: getSecp256r1VerifyInstructionDataEncoder().encode(\n args as Secp256r1VerifyInstructionDataArgs,\n ),\n } as Secp256r1VerifyInstruction<TProgramAddress>;\n\n return instruction;\n}\n\nexport type ParsedSecp256r1VerifyInstruction<\n TProgram extends string = typeof SECP256R1_PROGRAM_ADDRESS,\n> = {\n programAddress: Address<TProgram>;\n accounts: {};\n data: Secp256r1VerifyInstructionData;\n};\n\nexport function parseSecp256r1VerifyInstruction<TProgram extends string>(\n instruction: Instruction<TProgram> &\n InstructionWithData<Uint8Array<ArrayBuffer>>,\n): ParsedSecp256r1VerifyInstruction<TProgram> {\n return {\n programAddress: instruction.programAddress,\n accounts: {},\n data: getSecp256r1VerifyInstructionDataDecoder().decode(instruction.data),\n };\n}\n","import type {\n Address,\n AddressesByLookupTableAddress,\n Instruction,\n ReadonlyUint8Array,\n TransactionSigner,\n} from \"gill\";\nimport { getTransactionExecuteInstruction } from \"../generated\";\nimport { getWalletAddressFromSettings } from \"../utils\";\nimport { addJitoTip } from \"../utils/transaction/internal\";\nimport { accountsForTransactionExecute } from \"../utils/transactionMessage/internal\";\nimport {\n getSecp256r1VerifyInstruction,\n type Secp256r1VerifyInput,\n} from \"./secp256r1Verify\";\n\nexport async function executeTransaction({\n settings,\n transactionBufferAddress,\n transactionMessageBytes,\n payer,\n addressesByLookupTableAddress,\n secp256r1VerifyInput = [],\n additionalSigners = [],\n jitoBundlesTipAmount,\n}: {\n settings: Address;\n payer: TransactionSigner;\n transactionBufferAddress: Address;\n transactionMessageBytes: ReadonlyUint8Array;\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n secp256r1VerifyInput?: Secp256r1VerifyInput;\n additionalSigners?: TransactionSigner[];\n jitoBundlesTipAmount?: number;\n}) {\n const walletAddress = await getWalletAddressFromSettings(settings);\n\n const { accountMetas, addressLookupTableAccounts } =\n await accountsForTransactionExecute({\n transactionMessageBytes,\n walletAddress,\n additionalSigners,\n addressesByLookupTableAddress,\n });\n\n const instructions: Instruction[] = [];\n if (secp256r1VerifyInput.length > 0) {\n instructions.push(getSecp256r1VerifyInstruction(secp256r1VerifyInput));\n }\n\n instructions.push(\n getTransactionExecuteInstruction({\n transactionBuffer: transactionBufferAddress,\n payer: payer.address,\n remainingAccounts: accountMetas,\n settings,\n }),\n );\n\n if (jitoBundlesTipAmount) {\n instructions.push(addJitoTip({ payer, tipAmount: jitoBundlesTipAmount }));\n }\n\n return {\n instructions,\n addressLookupTableAccounts,\n };\n}\n","import {\n type AccountProofInput,\n getLightSystemAccountMetasV2,\n type NewAddressProofInput,\n type PackedAddressTreeInfo,\n type PackedStateTreeInfo,\n type PackedTreeInfos,\n selectStateTreeInfo,\n type TreeInfo,\n TreeType,\n} from \"@lightprotocol/stateless.js\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport {\n type AccountMeta,\n AccountRole,\n type AccountSignerMeta,\n address,\n} from \"gill\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../../generated\";\nimport { getLightProtocolRpc } from \"../initialize\";\n\ninterface MapData {\n index: number;\n accountMeta: AccountMeta;\n}\n\nexport class PackedAccounts {\n systemAccounts: AccountMeta[];\n\n nextPreIndex: number;\n preMap: Map<string, MapData>;\n\n nextPackedIndex: number;\n packedMap: Map<string, MapData>;\n outputTreeIndex: number;\n\n constructor() {\n this.systemAccounts = [];\n this.nextPreIndex = 0;\n this.preMap = new Map();\n this.nextPackedIndex = 0;\n this.packedMap = new Map();\n this.outputTreeIndex = -1;\n }\n\n addPreAccounts(\n accounts: (AccountMeta | AccountSignerMeta)[],\n ): Map<string, MapData> {\n for (const acc of accounts) {\n this.insertOrGet(acc.address.toString(), acc, false);\n }\n return this.preMap;\n }\n\n getAccountRole(isSigner: boolean, isWritable: boolean): AccountRole {\n if (isSigner) {\n return isWritable\n ? AccountRole.WRITABLE_SIGNER\n : AccountRole.READONLY_SIGNER;\n } else {\n return isWritable ? AccountRole.WRITABLE : AccountRole.READONLY;\n }\n }\n\n async addSystemAccounts(): Promise<void> {\n this.systemAccounts.push(\n ...getLightSystemAccountMetasV2({\n selfProgram: new PublicKey(MULTI_WALLET_PROGRAM_ADDRESS.toString()),\n }).map((x) => ({\n address: address(x.pubkey.toString()),\n role: this.getAccountRole(x.isSigner, x.isWritable),\n })),\n );\n }\n\n insertOrGet(\n pubkey: string,\n accountMeta: AccountMeta | AccountSignerMeta = {\n address: address(pubkey),\n role: AccountRole.WRITABLE,\n },\n isPacked = true,\n ): number {\n const map = isPacked ? this.packedMap : this.preMap;\n if (!map.has(pubkey)) {\n const index = isPacked ? this.nextPackedIndex++ : this.nextPreIndex++;\n map.set(pubkey, { index, accountMeta });\n }\n return map.get(pubkey)!.index;\n }\n\n packOutputTreeIndex(outputStateTreeInfo: TreeInfo) {\n if (outputStateTreeInfo.treeType === TreeType.StateV1) {\n return this.insertOrGet(outputStateTreeInfo.tree.toString());\n } else if (outputStateTreeInfo.treeType === TreeType.StateV2) {\n return this.insertOrGet(outputStateTreeInfo.queue.toString());\n }\n throw new Error(\"Tree type not supported\");\n }\n\n async getOutputTreeIndex() {\n if (this.outputTreeIndex !== -1) {\n return this.outputTreeIndex;\n }\n const stateTreeInfos = await getLightProtocolRpc().getStateTreeInfos();\n const selectedStateTree = selectStateTreeInfo(stateTreeInfos);\n const outputStateTreeIndex = this.packOutputTreeIndex(selectedStateTree);\n return outputStateTreeIndex;\n }\n\n packTreeInfos(\n accountProofInputs: AccountProofInput[],\n newAddressProofInputs: NewAddressProofInput[],\n ): PackedTreeInfos {\n const stateTreeInfos: PackedStateTreeInfo[] = [];\n const addressTreeInfos: PackedAddressTreeInfo[] = [];\n\n for (const account of accountProofInputs) {\n const merkleTreePubkeyIndex = this.insertOrGet(\n account.treeInfo.tree.toString(),\n );\n const queuePubkeyIndex = this.insertOrGet(\n account.treeInfo.queue.toString(),\n );\n\n stateTreeInfos.push({\n rootIndex: account.rootIndex,\n merkleTreePubkeyIndex,\n queuePubkeyIndex,\n leafIndex: account.leafIndex,\n proveByIndex: account.proveByIndex,\n });\n\n const treeToUse = account.treeInfo.nextTreeInfo ?? account.treeInfo;\n const index = this.packOutputTreeIndex(treeToUse);\n if (this.outputTreeIndex === -1) {\n this.outputTreeIndex = index;\n }\n }\n\n for (const account of newAddressProofInputs) {\n const addressMerkleTreePubkeyIndex = this.insertOrGet(\n account.treeInfo.tree.toString(),\n );\n const addressQueuePubkeyIndex = this.insertOrGet(\n account.treeInfo.queue.toString(),\n );\n\n addressTreeInfos.push({\n rootIndex: account.rootIndex,\n addressMerkleTreePubkeyIndex,\n addressQueuePubkeyIndex,\n });\n }\n\n return {\n stateTrees:\n stateTreeInfos.length > 0\n ? {\n packedTreeInfos: stateTreeInfos,\n outputTreeIndex: this.outputTreeIndex,\n }\n : undefined,\n addressTrees: addressTreeInfos,\n };\n }\n\n hashSetAccountsToMetas(map: Map<string, MapData>): AccountMeta[] {\n const packedAccounts: AccountMeta[] = Array.from(map.entries())\n .sort((a, b) => a[1].index - b[1].index)\n .map(([, { accountMeta }]) => ({ ...accountMeta }));\n return packedAccounts;\n }\n\n getOffsets(preAccountLength: number): [number, number] {\n const systemAccountsStartOffset = preAccountLength;\n const packedAccountsStartOffset =\n systemAccountsStartOffset + this.systemAccounts.length;\n return [systemAccountsStartOffset, packedAccountsStartOffset];\n }\n\n toAccountMetas(): {\n remainingAccounts: AccountMeta[];\n systemOffset: number;\n packedOffset: number;\n } {\n const preAccounts = this.hashSetAccountsToMetas(this.preMap);\n const packedAccounts = this.hashSetAccountsToMetas(this.packedMap);\n const [systemOffset, packedOffset] = this.getOffsets(preAccounts.length);\n const remainingAccounts = [\n ...preAccounts,\n ...this.systemAccounts,\n ...packedAccounts,\n ];\n return { remainingAccounts, systemOffset, packedOffset };\n }\n}\n","import {\n type AccountMeta,\n type Address,\n type AddressesByLookupTableAddress,\n type CompiledTransactionMessage,\n type Instruction,\n type ReadonlyUint8Array,\n type TransactionSigner,\n} from \"gill\";\nimport { ValidationError } from \"../errors\";\nimport { getTransactionExecuteSyncInstruction } from \"../generated\";\nimport { SignedSecp256r1Key } from \"../types\";\nimport { getWalletAddressFromSettings } from \"../utils\";\nimport {\n buildSignerAccounts,\n getDeduplicatedSigners,\n} from \"../utils/transaction/internal\";\nimport { PackedAccounts } from \"../utils/transaction/packedAccounts\";\nimport { accountsForTransactionExecute } from \"../utils/transactionMessage/internal\";\nimport {\n getSecp256r1VerifyInstruction,\n type Secp256r1VerifyInput,\n} from \"./secp256r1Verify\";\n\nexport async function executeTransactionSync({\n settings,\n transactionMessageBytes,\n additionalSigners,\n signers,\n addressesByLookupTableAddress,\n secp256r1VerifyInput = [],\n}: {\n settings: Address;\n signers: (TransactionSigner | SignedSecp256r1Key)[];\n transactionMessageBytes: ReadonlyUint8Array;\n additionalSigners?: TransactionSigner[];\n secp256r1VerifyInput?: Secp256r1VerifyInput;\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n}) {\n const dedupSigners = getDeduplicatedSigners(signers);\n const walletAddress = await getWalletAddressFromSettings(settings);\n const [{ accountMetas, addressLookupTableAccounts, transactionMessage }] =\n await Promise.all([\n accountsForTransactionExecute({\n transactionMessageBytes,\n walletAddress,\n additionalSigners,\n addressesByLookupTableAddress,\n }),\n ]);\n\n const packedAccounts = new PackedAccounts();\n packedAccounts.addPreAccounts(accountMetas);\n const {\n secp256r1VerifyInput: finalSecp256r1VerifyInput,\n transactionSyncSigners,\n } = buildSignerAccounts(dedupSigners, packedAccounts, secp256r1VerifyInput);\n\n const { remainingAccounts } = packedAccounts.toAccountMetas();\n\n const instructions: Instruction[] = [];\n\n if (finalSecp256r1VerifyInput.length > 0) {\n instructions.push(getSecp256r1VerifyInstruction(finalSecp256r1VerifyInput));\n }\n\n const customTransactionMessage = parseTransactionMessage(\n transactionMessage,\n accountMetas,\n );\n\n instructions.push(\n getTransactionExecuteSyncInstruction({\n signers: transactionSyncSigners,\n settings,\n ...customTransactionMessage,\n remainingAccounts,\n }),\n );\n\n return {\n instructions,\n addressLookupTableAccounts,\n };\n}\n\nfunction parseTransactionMessage(\n transactionMessage: CompiledTransactionMessage,\n accountMetas: AccountMeta[],\n) {\n if (transactionMessage.version === \"legacy\") {\n throw new ValidationError(\"Only versioned transaction is allowed.\");\n }\n return {\n numSigners: transactionMessage.header.numSignerAccounts,\n numWritableNonSigners:\n transactionMessage.staticAccounts.length -\n transactionMessage.header.numSignerAccounts -\n transactionMessage.header.numReadonlyNonSignerAccounts,\n numWritableSigners:\n transactionMessage.header.numSignerAccounts -\n transactionMessage.header.numReadonlySignerAccounts,\n numAccountKeys: transactionMessage.staticAccounts.length,\n instructions: transactionMessage.instructions.map((x) => ({\n ...x,\n accountIndices: new Uint8Array(x.accountIndices ?? []),\n data: (x.data ?? []) as Uint8Array,\n })),\n addressTableLookups:\n transactionMessage.addressTableLookups?.map((x) => ({\n lookupTableAddressIndex: accountMetas.findIndex(\n (y) => y.address === x.lookupTableAddress,\n ),\n writableIndexes: new Uint8Array(x.writableIndexes),\n readonlyIndexes: new Uint8Array(x.readonlyIndexes),\n })) ?? [],\n };\n}\n","import { type Address, type Instruction, type TransactionSigner } from \"gill\";\nimport { ValidationError } from \"../../errors\";\nimport { getNativeTransferIntentInstruction } from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport { getSolanaRpc, getWalletAddressFromSettings } from \"../../utils\";\nimport {\n buildSignerAccounts,\n getDeduplicatedSigners,\n} from \"../../utils/transaction/internal\";\nimport { PackedAccounts } from \"../../utils/transaction/packedAccounts\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nexport type NativeTransferIntentParams = {\n settings: Address;\n destination: Address;\n amount: number | bigint;\n signers: (TransactionSigner | SignedSecp256r1Key)[];\n};\n\nexport async function nativeTransferIntent({\n settings,\n destination,\n signers,\n amount,\n}: NativeTransferIntentParams): Promise<Instruction[]> {\n const dedupSigners = getDeduplicatedSigners(signers);\n const walletAddress = await getWalletAddressFromSettings(settings);\n\n const { value } = await getSolanaRpc()\n .getAccountInfo(walletAddress, { encoding: \"base64\" })\n .send();\n\n if ((value?.lamports ?? 0) < BigInt(amount)) {\n throw new ValidationError(\"Insufficient balance for native transfer.\");\n }\n const packedAccounts = new PackedAccounts();\n const { secp256r1VerifyInput, transactionSyncSigners } = buildSignerAccounts(\n dedupSigners,\n packedAccounts,\n );\n\n const { remainingAccounts } = packedAccounts.toAccountMetas();\n\n const instructions: Instruction[] = [];\n\n if (secp256r1VerifyInput.length > 0) {\n instructions.push(getSecp256r1VerifyInstruction(secp256r1VerifyInput));\n }\n\n instructions.push(\n getNativeTransferIntentInstruction({\n amount,\n signers: transactionSyncSigners,\n source: walletAddress,\n destination,\n settings,\n remainingAccounts,\n }),\n );\n\n return instructions;\n}\n","import { RetryExhaustedError } from \"../errors\";\n\nexport interface RetryConfig {\n maxRetries?: number;\n initialDelayMs?: number;\n backoffBase?: number;\n maxDelayMs?: number;\n retryOnRateLimit?: boolean;\n shouldRetry?: (error: unknown, attempt: number) => boolean;\n}\n\nconst DEFAULT_NETWORK_RETRY_MAX_RETRIES = 3;\nconst DEFAULT_NETWORK_RETRY_DELAY_MS = 500;\nconst EXPONENTIAL_BACKOFF_BASE = 2;\nconst BACKOFF_MAX_DELAY_MS = 30000;\n\nconst DEFAULT_RETRY_CONFIG: Required<\n Omit<RetryConfig, \"shouldRetry\" | \"retryOnRateLimit\">\n> & { retryOnRateLimit: boolean } = {\n backoffBase: EXPONENTIAL_BACKOFF_BASE,\n maxDelayMs: BACKOFF_MAX_DELAY_MS,\n retryOnRateLimit: true,\n initialDelayMs: DEFAULT_NETWORK_RETRY_DELAY_MS,\n maxRetries: DEFAULT_NETWORK_RETRY_MAX_RETRIES,\n};\n\nexport function calculateBackoffDelay(\n attempt: number,\n initialDelayMs: number,\n backoffBase: number,\n maxDelayMs: number,\n): number {\n const delay = initialDelayMs * Math.pow(backoffBase, attempt - 1);\n return Math.min(delay, maxDelayMs);\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function retryWithBackoff<T>(\n fn: () => Promise<T>,\n config?: RetryConfig,\n): Promise<T> {\n const { maxRetries, initialDelayMs, backoffBase, maxDelayMs, shouldRetry } = {\n ...DEFAULT_RETRY_CONFIG,\n ...config,\n };\n\n let lastError: unknown;\n\n for (let attempt = 1; attempt <= maxRetries; attempt++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error;\n\n if (shouldRetry && !shouldRetry(error, attempt)) {\n throw error;\n }\n\n if (attempt >= maxRetries) {\n break;\n }\n\n const delay = calculateBackoffDelay(\n attempt,\n initialDelayMs,\n backoffBase,\n maxDelayMs,\n );\n await sleep(delay);\n }\n }\n\n throw new RetryExhaustedError(\n fn.name || \"retryWithBackoff\",\n maxRetries,\n lastError,\n );\n}\n","import {\n TreeType,\n type AddressWithTree,\n type CompressedAccount,\n type HashWithTree,\n type ParsedTokenAccount,\n type ValidityProofWithContext,\n} from \"@lightprotocol/stateless.js\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport {\n AccountRole,\n address,\n getAddressEncoder,\n getArrayDecoder,\n getBase64Encoder,\n getProgramDerivedAddress,\n getU64Decoder,\n getU8Encoder,\n getUtf8Encoder,\n none,\n some,\n type Address,\n type Instruction,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n type TransactionSigner,\n} from \"gill\";\nimport {\n getAssociatedTokenAccountAddress,\n getTokenDecoder,\n} from \"gill/programs\";\nimport { ValidationError } from \"../../errors\";\nimport {\n getExtensionStructDecoder,\n getTokenTransferIntentInstruction,\n type CompressedProofArgs,\n type CompressedTokenArgsArgs,\n type SplInterfacePdaArgsArgs,\n} from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport {\n getLightProtocolRpc,\n getSolanaRpc,\n getWalletAddressFromSettings,\n} from \"../../utils\";\nimport { retryWithBackoff } from \"../../utils/retry\";\nimport {\n buildSignerAccounts,\n getDeduplicatedSigners,\n} from \"../../utils/transaction/internal\";\nimport { PackedAccounts } from \"../../utils/transaction/packedAccounts\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nconst compressibleConfig = address(\n \"ACXg8a7VaqecBWrSbdu73W4Pg9gsqXJ3EXAqkHyhvVXg\",\n);\nconst rentSponsor = address(\"r18WwUxfG8kQ69bQPAB2jV6zGNKy3GosFGctjQoV4ti\");\n\nconst ctokenProgramAddress = address(\n \"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\",\n);\n\n/** Input parameters for token transfer intent */\nexport type TokenTransferIntentParams = {\n settings: Address;\n destination: Address;\n mint: Address;\n amount: number | bigint;\n signers: (TransactionSigner | SignedSecp256r1Key)[];\n tokenProgram: Address;\n payer: TransactionSigner;\n splInterfacePdaArgs?: SplInterfacePdaArgsArgs;\n};\n\ntype HashWithTreeAndAccount = HashWithTree & {\n data: CompressedAccount[\"data\"];\n address: CompressedAccount[\"address\"];\n};\n\ntype ResolvedAddresses = {\n sourceSplAta: Address;\n sourceCtokenAta: Address;\n destinationSplAta: Address;\n destinationCTokenAta: Address;\n splInterfacePda: Address;\n};\n\ntype BalancesAndDestinations = {\n splBalance: bigint;\n cTokenBalance: bigint;\n destinationSplTokenAccount: Address | undefined;\n destinationCtokenTokenAccount: Address | undefined;\n requireSplInterface: boolean;\n requireRentSponsor: boolean;\n};\n\nexport async function tokenTransferIntent({\n settings,\n destination,\n mint,\n signers,\n amount,\n payer,\n tokenProgram,\n splInterfacePdaArgs = { index: 0, restricted: false },\n}: TokenTransferIntentParams): Promise<Instruction[]> {\n const dedupSigners = getDeduplicatedSigners(signers);\n const walletAddress = await getWalletAddressFromSettings(settings);\n\n const addresses = await resolveAddresses(\n mint,\n destination,\n walletAddress,\n tokenProgram,\n splInterfacePdaArgs,\n );\n\n const accountInfos = await fetchAccountInfos(addresses);\n\n const balances = computeBalancesAndDestinations(\n accountInfos,\n addresses,\n amount,\n );\n\n const [compressedTokenAccounts, splInterfaceNeedsInitialization] =\n await Promise.all([\n getCompressedTokenAccounts(\n walletAddress,\n mint,\n balances.splBalance,\n balances.cTokenBalance,\n BigInt(amount),\n ),\n checkIfSplInterfaceNeedsToBeInitialized(\n balances.requireSplInterface,\n addresses.splInterfacePda,\n ),\n ]);\n\n const compressedTotalBalance = BigInt(\n compressedTokenAccounts.reduce(\n (sum, x) => sum + (x.parsed.amount.toNumber() ?? 0),\n 0,\n ),\n );\n if (\n balances.splBalance + balances.cTokenBalance + compressedTotalBalance <\n BigInt(amount)\n ) {\n throw new ValidationError(\"Insufficient balance for token transfer.\");\n }\n\n const packedAccounts = new PackedAccounts();\n if (splInterfaceNeedsInitialization) {\n packedAccounts.addPreAccounts([\n { address: mint, role: AccountRole.WRITABLE },\n ]);\n }\n\n const hashesWithTree = buildHashesWithTree(compressedTokenAccounts);\n const { proof } = await resolveCompressedProofAndSettings(\n packedAccounts,\n hashesWithTree,\n );\n\n const sourceCompressedTokenAccounts = buildSourceCompressedTokenAccounts(\n compressedTokenAccounts,\n proof,\n packedAccounts,\n );\n\n const { secp256r1VerifyInput, transactionSyncSigners } = buildSignerAccounts(\n dedupSigners,\n packedAccounts,\n );\n\n const { remainingAccounts, systemOffset } = packedAccounts.toAccountMetas();\n const compressedProofArgs = convertToCompressedProofArgs(proof, systemOffset);\n\n const instructions: Instruction[] = [];\n if (secp256r1VerifyInput.length > 0) {\n instructions.push(getSecp256r1VerifyInstruction(secp256r1VerifyInput));\n }\n\n instructions.push(\n getTokenTransferIntentInstruction({\n settings,\n payer,\n source: walletAddress,\n sourceSplTokenAccount: addresses.sourceSplAta,\n sourceCtokenTokenAccount: addresses.sourceCtokenAta,\n destination,\n destinationSplTokenAccount: balances.destinationSplTokenAccount,\n destinationCtokenTokenAccount: balances.destinationCtokenTokenAccount,\n tokenProgram,\n mint,\n splInterfacePda: balances.requireSplInterface\n ? addresses.splInterfacePda\n : undefined,\n compressibleConfig,\n rentSponsor: balances.requireRentSponsor ? rentSponsor : undefined,\n amount,\n signers: transactionSyncSigners,\n sourceCompressedTokenAccounts,\n compressedProofArgs,\n splInterfacePdaArgs: balances.requireSplInterface\n ? some(splInterfacePdaArgs)\n : none(),\n remainingAccounts,\n }),\n );\n\n return instructions;\n}\n\nasync function resolveAddresses(\n mint: Address,\n destination: Address,\n walletAddress: Address,\n tokenProgram: Address,\n splInterfacePdaArgs: SplInterfacePdaArgsArgs,\n): Promise<ResolvedAddresses> {\n const getCtokenAta = (owner: Address) =>\n getProgramDerivedAddress({\n seeds: [\n getAddressEncoder().encode(owner),\n getAddressEncoder().encode(ctokenProgramAddress),\n getAddressEncoder().encode(mint),\n ],\n programAddress: ctokenProgramAddress,\n });\n\n const seeds = [\n getUtf8Encoder().encode(\"pool\"),\n getAddressEncoder().encode(mint),\n ];\n if (splInterfacePdaArgs.restricted) {\n seeds.push(getUtf8Encoder().encode(\"restricted\"));\n }\n if (splInterfacePdaArgs.index > 0) {\n seeds.push(getU8Encoder().encode(splInterfacePdaArgs.index));\n }\n\n const [\n sourceSplAta,\n [sourceCtokenAta],\n destinationSplAta,\n [destinationCTokenAta],\n [splInterfacePda],\n ] = await Promise.all([\n getAssociatedTokenAccountAddress(mint, walletAddress, tokenProgram),\n getCtokenAta(walletAddress),\n getAssociatedTokenAccountAddress(mint, destination, tokenProgram),\n getCtokenAta(destination),\n getProgramDerivedAddress({\n seeds,\n programAddress: ctokenProgramAddress,\n }),\n ]);\n\n return {\n sourceSplAta,\n sourceCtokenAta,\n destinationSplAta,\n destinationCTokenAta,\n splInterfacePda,\n };\n}\n\nasync function fetchAccountInfos(addresses: ResolvedAddresses) {\n const [destinationSplAtaInfo, sourceSplAtaInfo, sourceCTokenAtaInfo] =\n await Promise.all([\n getSolanaRpc()\n .getAccountInfo(addresses.destinationSplAta, { encoding: \"base64\" })\n .send(),\n getSolanaRpc()\n .getAccountInfo(addresses.sourceSplAta, { encoding: \"base64\" })\n .send(),\n getSolanaRpc()\n .getAccountInfo(addresses.sourceCtokenAta, { encoding: \"base64\" })\n .send(),\n ]);\n return {\n destinationSplAtaInfo,\n sourceSplAtaInfo,\n sourceCTokenAtaInfo,\n };\n}\n\nfunction computeBalancesAndDestinations(\n accountInfos: Awaited<ReturnType<typeof fetchAccountInfos>>,\n addresses: ResolvedAddresses,\n amount: number | bigint,\n): BalancesAndDestinations {\n const destinationSplExists = !!accountInfos.destinationSplAtaInfo.value;\n const sourceSplExists = !!accountInfos.sourceSplAtaInfo.value;\n const sourceCtokenExist = !!accountInfos.sourceCTokenAtaInfo.value;\n\n const splBalance = sourceSplExists\n ? getTokenDecoder().decode(\n getBase64Encoder().encode(accountInfos.sourceSplAtaInfo.value!.data[0]),\n ).amount\n : BigInt(0);\n\n const cTokenBalance = sourceCtokenExist\n ? BigInt(\n parseTokenAmount(\n getBase64Encoder().encode(\n accountInfos.sourceCTokenAtaInfo.value!.data[0],\n ),\n )?.amount ?? 0,\n )\n : BigInt(0);\n\n const destinationSplTokenAccount = destinationSplExists\n ? addresses.destinationSplAta\n : undefined;\n const destinationCtokenTokenAccount = destinationSplExists\n ? undefined\n : addresses.destinationCTokenAta;\n\n const requireSplInterface =\n (sourceSplExists &&\n (splBalance + cTokenBalance < BigInt(amount) ||\n cTokenBalance > BigInt(0) ||\n !destinationSplExists)) ||\n (!sourceSplExists && destinationSplExists);\n\n return {\n splBalance,\n cTokenBalance,\n destinationSplTokenAccount,\n destinationCtokenTokenAccount,\n requireSplInterface,\n requireRentSponsor:\n splBalance + cTokenBalance < BigInt(amount) || !destinationSplExists,\n };\n}\n\nfunction buildHashesWithTree(\n compressedTokenAccounts: ParsedTokenAccount[],\n): HashWithTreeAndAccount[] {\n const hashesWithTree: HashWithTreeAndAccount[] = [];\n compressedTokenAccounts.forEach((x) =>\n hashesWithTree.push({\n hash: x.compressedAccount.hash,\n tree: x.compressedAccount.treeInfo.tree,\n queue: x.compressedAccount.treeInfo.queue,\n data: x.compressedAccount.data,\n address: x.compressedAccount.address,\n }),\n );\n\n return hashesWithTree;\n}\n\nasync function resolveCompressedProofAndSettings(\n packedAccounts: PackedAccounts,\n hashesWithTree: HashWithTreeAndAccount[],\n): Promise<{\n proof: ValidityProofWithContext | null;\n}> {\n let proof: ValidityProofWithContext | null = null;\n\n if (hashesWithTree.length === 0) {\n return { proof };\n }\n\n await packedAccounts.addSystemAccounts();\n proof = await getValidityProofWithRetry(hashesWithTree, []);\n\n return { proof };\n}\n\nfunction buildSourceCompressedTokenAccounts(\n compressedTokenAccounts: ParsedTokenAccount[],\n proof: ValidityProofWithContext | null,\n packedAccounts: PackedAccounts,\n): CompressedTokenArgsArgs[] {\n if (!proof || !compressedTokenAccounts.length) {\n return [];\n }\n return compressedTokenAccounts.map((x) => ({\n amount: x.parsed.amount.toNumber(),\n merkleContext: {\n leafIndex: x.compressedAccount.leafIndex,\n merkleTreePubkeyIndex: packedAccounts.insertOrGet(\n x.compressedAccount.treeInfo.tree.toString(),\n ),\n queuePubkeyIndex: packedAccounts.insertOrGet(\n x.compressedAccount.treeInfo.queue.toString(),\n ),\n proveByIndex: x.compressedAccount.proveByIndex,\n },\n rootIndex: proof.rootIndices[0],\n version: getVersionFromDiscriminator(\n x.compressedAccount.data?.discriminator,\n ),\n tlv: x.parsed.tlv\n ? some(getArrayDecoder(getExtensionStructDecoder()).decode(x.parsed.tlv))\n : none(),\n state: x.parsed.state,\n }));\n}\n\nasync function checkIfSplInterfaceNeedsToBeInitialized(\n requireSplInterface: boolean,\n splInterfacePda: Address,\n): Promise<boolean> {\n if (!requireSplInterface) return false;\n const { value } = await getSolanaRpc()\n .getAccountInfo(splInterfacePda, { encoding: \"base64\" })\n .send();\n return !value;\n}\n\nasync function getCompressedTokenAccounts(\n walletAddress: string,\n mint: string,\n splBalance: bigint,\n cTokenBalance: bigint,\n total: bigint,\n) {\n const transferAmount = total - splBalance - cTokenBalance;\n if (transferAmount <= 0) {\n return [];\n }\n const compressedResult =\n await getLightProtocolRpc().getCompressedTokenAccountsByOwner(\n new PublicKey(walletAddress),\n { mint: new PublicKey(mint) },\n );\n\n const accounts = compressedResult.items.filter(\n (x) =>\n !!x.compressedAccount.data?.data.length &&\n x.compressedAccount.owner.toString() ===\n ctokenProgramAddress.toString() &&\n !x.parsed.amount.isZero(),\n );\n\n if (accounts.length === 0) {\n return [];\n }\n const selectedAccounts = selectMinCompressedTokenAccountsForDecompression(\n accounts,\n Number(transferAmount),\n 4,\n { treeType: TreeType.StateV2 },\n );\n\n return selectedAccounts;\n}\n\nfunction selectMinCompressedTokenAccountsForDecompression(\n accounts: ParsedTokenAccount[],\n transferAmount: number,\n maxInputs: number = 4,\n options?: { treeType: TreeType },\n) {\n const filteredAccounts = accounts.filter(\n (x) => x.compressedAccount.treeInfo.treeType === options?.treeType,\n );\n\n if (filteredAccounts.length === 0) {\n throw new Error(\"No accounts found\");\n }\n\n let accumulatedAmount = 0;\n let accumulatedLamports = 0;\n let maxPossibleAmount = 0;\n\n const selectedAccounts: ParsedTokenAccount[] = [];\n\n filteredAccounts.sort((a, b) => b.parsed.amount.cmp(a.parsed.amount));\n\n for (const account of filteredAccounts) {\n if (selectedAccounts.length >= maxInputs) break;\n if (accumulatedAmount >= transferAmount) break;\n\n if (\n !account.parsed.amount.isZero() ||\n !account.compressedAccount.lamports.isZero()\n ) {\n accumulatedAmount = accumulatedAmount + account.parsed.amount.toNumber();\n accumulatedLamports =\n accumulatedLamports + account.compressedAccount.lamports.toNumber();\n\n selectedAccounts.push(account);\n }\n }\n\n // Max, considering maxInputs\n maxPossibleAmount = filteredAccounts\n .slice(0, maxInputs)\n .reduce((total, account) => total + account.parsed.amount.toNumber(), 0);\n\n if (selectedAccounts.length === 0) {\n throw new Error(\"No accounts found.\");\n }\n\n if (accumulatedAmount < transferAmount) {\n const totalBalance = filteredAccounts.reduce(\n (acc, account) => acc + account.parsed.amount.toNumber(),\n 0,\n );\n if (selectedAccounts.length >= maxInputs) {\n throw new Error(\n `Account limit exceeded: max ${maxPossibleAmount.toString()} (${maxInputs} accounts) per transaction. Total balance: ${totalBalance.toString()} (${filteredAccounts.length} accounts). Consider multiple transfers to spend full balance.`,\n );\n } else {\n throw new Error(\n `Insufficient balance for transfer. Required: ${transferAmount.toString()}, available: ${totalBalance.toString()}.`,\n );\n }\n }\n\n if (selectedAccounts.length === 0) {\n throw new Error(\"No accounts found.\");\n }\n\n return selectedAccounts;\n}\n\nfunction parseTokenAmount(data: ReadonlyUint8Array): {\n amount: number | bigint;\n} | null {\n if (!data || data.length === 0) return null;\n try {\n const amount = getU64Decoder().decode(data.slice(64, 72));\n return {\n amount,\n };\n } catch (error) {\n console.error(\"Token data parsing error:\", error);\n return null;\n }\n}\nenum TokenDataVersion {\n V1 = 1,\n V2 = 2,\n ShaFlat = 3,\n}\n\nexport function getVersionFromDiscriminator(\n discriminator: number[] | undefined,\n): number {\n if (!discriminator || discriminator.length < 8) {\n return TokenDataVersion.ShaFlat;\n }\n if (discriminator[0] === 2) {\n return TokenDataVersion.V1;\n }\n const versionByte = discriminator[7];\n if (versionByte === 3) {\n return TokenDataVersion.V2;\n }\n if (versionByte === 4) {\n return TokenDataVersion.ShaFlat;\n }\n return TokenDataVersion.ShaFlat;\n}\n\nfunction convertToCompressedProofArgs(\n validityProof: ValidityProofWithContext | null,\n offset: number,\n) {\n const proof: OptionOrNullable<CompressedProofArgs> =\n validityProof?.compressedProof\n ? some({\n a: new Uint8Array(validityProof.compressedProof.a),\n b: new Uint8Array(validityProof.compressedProof.b),\n c: new Uint8Array(validityProof.compressedProof.c),\n })\n : null;\n return {\n proof,\n lightCpiAccountsStartIndex: offset,\n };\n}\n\nasync function getValidityProofWithRetry(\n hashes?: HashWithTree[] | undefined,\n newAddresses?: AddressWithTree[],\n): Promise<ValidityProofWithContext> {\n return retryWithBackoff(() =>\n getLightProtocolRpc().getValidityProofV0(hashes, newAddresses),\n );\n}\n","import { AccountRole, type Address, type TransactionSigner } from \"gill\";\nimport {\n getChangeConfigInstruction,\n type ConfigAction,\n type TransactionSyncSignersArgs,\n} from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport {\n extractSecp256r1VerificationArgs,\n getDeduplicatedSigners,\n} from \"../../utils/transaction/internal\";\nimport type { PackedAccounts } from \"../../utils/transaction/packedAccounts\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nexport function changeConfig({\n signers,\n payer,\n changeConfigArgs,\n}: {\n changeConfigArgs: {\n configActions: ConfigAction[];\n settings: Address;\n packedAccounts: PackedAccounts;\n };\n signers: (TransactionSigner | SignedSecp256r1Key)[];\n payer: TransactionSigner;\n}) {\n const { settings, configActions, packedAccounts } = changeConfigArgs;\n const dedupSigners = getDeduplicatedSigners(signers);\n const transactionSyncSigners: TransactionSyncSignersArgs[] = [];\n const secp256r1VerifyInput = [];\n for (const x of dedupSigners) {\n if (x instanceof SignedSecp256r1Key) {\n const index = secp256r1VerifyInput.length;\n const { domainConfig, verifyArgs, signature, publicKey, message } =\n extractSecp256r1VerificationArgs(x, index);\n if (message && signature && publicKey) {\n secp256r1VerifyInput.push({ message, signature, publicKey });\n }\n if (domainConfig) {\n const domainConfigIndex = packedAccounts\n .addPreAccounts([\n { address: domainConfig, role: AccountRole.READONLY },\n ])\n .get(domainConfig)?.index;\n if (verifyArgs.__option === \"Some\" && domainConfigIndex !== undefined) {\n transactionSyncSigners.push({\n __kind: \"Secp256r1\",\n fields: [{ domainConfigIndex, verifyArgs: verifyArgs.value }],\n });\n }\n }\n } else {\n const index = packedAccounts\n .addPreAccounts([\n { address: x.address, role: AccountRole.READONLY_SIGNER, signer: x },\n ])\n .get(x.address)?.index;\n\n if (index !== undefined) {\n transactionSyncSigners.push({\n __kind: \"Ed25519\",\n fields: [index],\n });\n }\n }\n }\n\n const { remainingAccounts } = packedAccounts.toAccountMetas();\n const instructions = [];\n if (secp256r1VerifyInput.length > 0) {\n instructions.push(getSecp256r1VerifyInstruction(secp256r1VerifyInput));\n }\n\n instructions.push(\n getChangeConfigInstruction({\n settings,\n configActions,\n payer,\n remainingAccounts,\n signers: transactionSyncSigners,\n }),\n );\n\n return instructions;\n}\n","import { type Address, type TransactionSigner } from \"gill\";\nimport {\n getCreateDomainUserAccountInstruction,\n getSecp256r1PubkeyDecoder,\n Transports,\n UserRole,\n} from \"../../generated\";\nimport { Secp256r1Key } from \"../../types\";\nimport { base64URLStringToBuffer, getUserAddress } from \"../../utils\";\n\ninterface UserCreationArgs {\n member: Secp256r1Key;\n role: UserRole.Member | UserRole.PermanentMember;\n credentialId: string;\n transports: Transports[];\n settings?: Address;\n transactionManagerAccount?: Address;\n}\n\nexport async function createDomainUserAccounts({\n authority,\n payer,\n createUserArgs,\n domainConfig,\n}: {\n domainConfig: Address;\n authority: TransactionSigner;\n payer: TransactionSigner;\n createUserArgs: UserCreationArgs;\n}) {\n return getCreateDomainUserAccountInstruction({\n payer,\n authority,\n member: getSecp256r1PubkeyDecoder().decode(\n createUserArgs.member.toBuffer(),\n ),\n credentialId: base64URLStringToBuffer(createUserArgs.credentialId),\n transports: createUserArgs.transports,\n role: createUserArgs.role,\n domainConfig,\n settings: createUserArgs.settings,\n transactionManagerAccount: createUserArgs.transactionManagerAccount,\n userAccount: await getUserAddress(createUserArgs.member),\n remainingAccounts: [],\n });\n}\n","import { type TransactionSigner } from \"gill\";\nimport { getCreateUserAccountInstruction, UserRole } from \"../../generated\";\nimport { getUserAddress } from \"../../utils\";\n\ntype UserCreationArgs =\n | {\n member: TransactionSigner;\n role: UserRole.TransactionManager;\n transactionManagerUrl: string;\n }\n | {\n member: TransactionSigner;\n role: UserRole.Member;\n };\n\nexport async function createUserAccounts({\n createUserArgs,\n payer,\n}: {\n payer: TransactionSigner;\n createUserArgs: UserCreationArgs;\n}) {\n return getCreateUserAccountInstruction({\n payer,\n member: createUserArgs.member,\n role: createUserArgs.role,\n transactionManagerUrl:\n createUserArgs.role === UserRole.TransactionManager\n ? createUserArgs.transactionManagerUrl\n : null,\n userAccount: await getUserAddress(createUserArgs.member.address),\n remainingAccounts: [],\n });\n}\n","import { type TransactionSigner } from \"gill\";\nimport { getCreateWalletInstruction } from \"../../generated\";\nimport {\n getGlobalCounterAddress,\n getSettingsFromIndex,\n getUserAddress,\n} from \"../../utils\";\n\ntype CreateWalletArgs = {\n index: number | bigint;\n payer: TransactionSigner;\n initialMember: TransactionSigner;\n};\nexport async function createWallet({\n index,\n payer,\n initialMember,\n}: CreateWalletArgs) {\n return getCreateWalletInstruction({\n globalCounter: await getGlobalCounterAddress(),\n userAccount: await getUserAddress(initialMember.address),\n settingsIndex: index,\n settings: await getSettingsFromIndex(index),\n payer,\n initialMember,\n remainingAccounts: [],\n });\n}\n","import { type Address, none, some, type TransactionSigner } from \"gill\";\nimport { getEditDomainConfigInstruction } from \"../../generated\";\nimport { getUserAddress } from \"../../utils\";\n\nexport async function editDomainConfig({\n authority,\n domainConfig,\n newAuthority,\n newOrigins,\n}: {\n domainConfig: Address;\n authority: TransactionSigner;\n newAuthority?: TransactionSigner;\n newOrigins?: string[];\n}) {\n return getEditDomainConfigInstruction({\n domainConfig,\n authority,\n newOrigins: newOrigins ? some(newOrigins) : none(),\n newAuthority,\n userAccount: newAuthority\n ? await getUserAddress(newAuthority.address)\n : undefined,\n remainingAccounts: [],\n });\n}\n","import type { TransactionSigner } from \"gill\";\nimport { getEditTransactionManagerUrlInstruction } from \"../../generated\";\nimport { getUserAddress } from \"../../utils\";\n\nexport async function editTransactionManagerUrl({\n signer,\n transactionManagerUrl,\n}: {\n signer: TransactionSigner;\n transactionManagerUrl: string;\n}) {\n return getEditTransactionManagerUrlInstruction({\n signer,\n transactionManagerAccount: await getUserAddress(signer.address),\n transactionManagerUrl,\n remainingAccounts: [],\n });\n}\n","import { none, some, type Instruction, type TransactionSigner } from \"gill\";\nimport { fetchUser, getEditUserDelegateInstruction } from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport {\n getSettingsFromIndex,\n getSolanaRpc,\n getUserAddress,\n} from \"../../utils\";\nimport { extractSecp256r1VerificationArgs } from \"../../utils/transaction/internal\";\nimport {\n getSecp256r1VerifyInstruction,\n type Secp256r1VerifyInput,\n} from \"../secp256r1Verify\";\n\nexport async function editUserDelegate({\n payer,\n user,\n newDelegate,\n}: {\n payer: TransactionSigner;\n user: TransactionSigner | SignedSecp256r1Key;\n newDelegate?: number;\n}) {\n const userAccount = (\n await fetchUser(\n getSolanaRpc(),\n await getUserAddress(\n user instanceof SignedSecp256r1Key ? user : user.address,\n ),\n )\n ).data;\n\n let oldSettings;\n let newSettings;\n const old_delegate = userAccount.wallets.find((x) => x.isDelegate);\n if (old_delegate) {\n oldSettings = await getSettingsFromIndex(old_delegate.index);\n }\n if (newDelegate !== undefined) {\n newSettings = await getSettingsFromIndex(newDelegate);\n }\n const { domainConfig, verifyArgs, message, signature, publicKey } =\n extractSecp256r1VerificationArgs(user);\n\n const secp256r1VerifyInput: Secp256r1VerifyInput = [];\n if (message && signature && publicKey) {\n secp256r1VerifyInput.push({\n message,\n signature,\n publicKey,\n });\n }\n\n const instructions: Instruction[] = [];\n if (secp256r1VerifyInput.length > 0) {\n instructions.push(getSecp256r1VerifyInstruction(secp256r1VerifyInput));\n }\n instructions.push(\n getEditUserDelegateInstruction({\n secp256r1VerifyArgs: verifyArgs,\n domainConfig,\n delegateTo: newDelegate !== undefined ? some(newDelegate) : none(),\n feePayer: payer,\n signer: user instanceof SignedSecp256r1Key ? undefined : user,\n oldSettings,\n newSettings,\n userAccount: await getUserAddress(\n user instanceof SignedSecp256r1Key ? user : user.address,\n ),\n remainingAccounts: [],\n }),\n );\n\n return instructions;\n}\n","import type { Address, TransactionSigner } from \"gill\";\nimport {\n fetchTransactionBuffer,\n getTransactionBufferCloseInstruction,\n} from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport { getSolanaRpc } from \"../../utils\";\nimport { extractSecp256r1VerificationArgs } from \"../../utils/transaction/internal\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nexport async function closeTransactionBuffer({\n closer,\n transactionBufferAddress,\n}: {\n closer: TransactionSigner | SignedSecp256r1Key;\n transactionBufferAddress: Address;\n}) {\n const transactionBuffer = await fetchTransactionBuffer(\n getSolanaRpc(),\n transactionBufferAddress,\n );\n const settings = transactionBuffer.data.multiWalletSettings;\n const { domainConfig, verifyArgs, message, signature, publicKey } =\n extractSecp256r1VerificationArgs(closer);\n\n const instructions = [];\n if (message && signature && publicKey) {\n instructions.push(\n getSecp256r1VerifyInstruction([\n {\n message,\n signature,\n publicKey,\n },\n ]),\n );\n }\n\n instructions.push(\n getTransactionBufferCloseInstruction({\n transactionBuffer: transactionBufferAddress,\n domainConfig,\n closer: closer instanceof SignedSecp256r1Key ? undefined : closer,\n settings,\n payer: transactionBuffer.data.payer,\n secp256r1VerifyArgs: verifyArgs,\n remainingAccounts: [],\n }),\n );\n\n return instructions;\n}\n","import type { Address, TransactionSigner } from \"gill\";\nimport {\n getTransactionBufferCreateInstruction,\n type ExpectedSignerArgs,\n} from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport { extractSecp256r1VerificationArgs } from \"../../utils/transaction/internal\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nexport function createTransactionBuffer({\n payer,\n creator,\n bufferIndex,\n settings,\n transactionBufferAddress,\n finalBufferHash,\n finalBufferSize,\n preauthorizeExecution,\n bufferExtendHashes,\n expectedSigners,\n}: {\n finalBufferHash: Uint8Array<ArrayBuffer>;\n finalBufferSize: number;\n payer: TransactionSigner;\n creator: TransactionSigner | SignedSecp256r1Key;\n settings: Address;\n bufferIndex: number;\n transactionBufferAddress: Address;\n preauthorizeExecution: boolean;\n bufferExtendHashes: Uint8Array<ArrayBuffer>[];\n expectedSigners: ExpectedSignerArgs[];\n}) {\n const { domainConfig, verifyArgs, message, signature, publicKey } =\n extractSecp256r1VerificationArgs(creator);\n const instructions = [];\n if (message && signature && publicKey) {\n instructions.push(\n getSecp256r1VerifyInstruction([\n {\n message,\n signature,\n publicKey,\n },\n ]),\n );\n }\n\n instructions.push(\n getTransactionBufferCreateInstruction({\n settings,\n transactionBuffer: transactionBufferAddress,\n payer,\n secp256r1VerifyArgs: verifyArgs,\n creator: creator instanceof SignedSecp256r1Key ? undefined : creator,\n domainConfig,\n bufferIndex,\n finalBufferHash,\n finalBufferSize,\n bufferExtendHashes,\n preauthorizeExecution,\n expectedSigners,\n remainingAccounts: [],\n }),\n );\n\n return instructions;\n}\n","import type { Address, TransactionSigner } from \"gill\";\nimport { getTransactionBufferExecuteInstruction } from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport { extractSecp256r1VerificationArgs } from \"../../utils/transaction/internal\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nexport function executeTransactionBuffer({\n executor,\n transactionBufferAddress,\n settings,\n}: {\n executor?: TransactionSigner | SignedSecp256r1Key;\n transactionBufferAddress: Address;\n settings: Address;\n}) {\n const { domainConfig, verifyArgs, signature, message, publicKey } =\n extractSecp256r1VerificationArgs(executor);\n const instructions = [];\n if (message && signature && publicKey) {\n instructions.push(\n getSecp256r1VerifyInstruction([\n {\n message,\n signature,\n publicKey,\n },\n ]),\n );\n }\n\n instructions.push(\n getTransactionBufferExecuteInstruction({\n settings,\n transactionBuffer: transactionBufferAddress,\n secp256r1VerifyArgs: verifyArgs,\n domainConfig,\n executor: executor instanceof SignedSecp256r1Key ? undefined : executor,\n remainingAccounts: [],\n }),\n );\n\n return instructions;\n}\n","import type { Address } from \"gill\";\nimport { getTransactionBufferExtendInstruction } from \"../../generated\";\n\nexport function extendTransactionBuffer({\n transactionMessageBytes,\n transactionBufferAddress,\n settings,\n}: {\n transactionMessageBytes: Uint8Array<ArrayBuffer>;\n transactionBufferAddress: Address;\n settings: Address;\n}) {\n return getTransactionBufferExtendInstruction({\n transactionBuffer: transactionBufferAddress,\n buffer: transactionMessageBytes,\n settings,\n remainingAccounts: [],\n });\n}\n","import type { Address, Instruction, TransactionSigner } from \"gill\";\nimport { getTransactionBufferVoteInstruction } from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport { extractSecp256r1VerificationArgs } from \"../../utils/transaction/internal\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nexport function voteTransactionBuffer({\n settings,\n voter,\n transactionBufferAddress,\n}: {\n settings: Address;\n voter: TransactionSigner | SignedSecp256r1Key;\n transactionBufferAddress: Address;\n}) {\n const { domainConfig, verifyArgs, signature, publicKey, message } =\n extractSecp256r1VerificationArgs(voter);\n const instructions: Instruction[] = [];\n if (message && signature && publicKey) {\n instructions.push(\n getSecp256r1VerifyInstruction([\n {\n message,\n signature,\n publicKey,\n },\n ]),\n );\n }\n\n instructions.push(\n getTransactionBufferVoteInstruction({\n settings,\n transactionBuffer: transactionBufferAddress,\n secp256r1VerifyArgs: verifyArgs,\n domainConfig,\n voter: voter instanceof SignedSecp256r1Key ? undefined : voter,\n remainingAccounts: [],\n }),\n );\n\n return instructions;\n}\n","import { AccountRole, type Address } from \"gill\";\nimport {\n type AddMemberArgs,\n type ConfigAction,\n type EditMemberArgs,\n type IPermissions,\n type RemoveMemberArgs,\n} from \"../generated\";\nimport {\n Permission,\n Permissions,\n Secp256r1Key,\n type ConfigurationArgs,\n type IPermission,\n type PermissionArgs,\n} from \"../types\";\nimport { getUserAddress } from \"../utils\";\nimport { convertPubkeyToMemberkey } from \"../utils/transaction/internal\";\nimport { PackedAccounts } from \"../utils/transaction/packedAccounts\";\n\nexport async function prepareChangeConfigArgs({\n settings,\n configActionsArgs,\n}: {\n settings: Address;\n configActionsArgs: ConfigurationArgs[];\n}): Promise<{\n configActions: ConfigAction[];\n settings: Address;\n packedAccounts: PackedAccounts;\n}> {\n const packedAccounts = new PackedAccounts();\n\n const configActions = await buildConfigActions({\n configActionsArgs,\n packedAccounts,\n });\n\n return {\n configActions,\n settings,\n packedAccounts,\n };\n}\n\nasync function buildConfigActions({\n configActionsArgs,\n packedAccounts,\n}: {\n configActionsArgs: ConfigurationArgs[];\n packedAccounts: PackedAccounts;\n}): Promise<ConfigAction[]> {\n const configActions: ConfigAction[] = [];\n\n for (const action of configActionsArgs) {\n switch (action.type) {\n case \"AddMembers\": {\n const field: AddMemberArgs[] = [];\n for (const m of action.members) {\n packedAccounts.addPreAccounts([\n {\n address: await getUserAddress(m.member),\n role: AccountRole.WRITABLE,\n },\n ]);\n field.push(\n convertAddMember({\n permissionArgs: m.permissions,\n pubkey: m.member,\n }),\n );\n }\n\n configActions.push({ __kind: action.type, fields: [field] });\n break;\n }\n\n case \"RemoveMembers\": {\n const field = await Promise.all(\n action.members.map(async (m) => {\n packedAccounts.addPreAccounts([\n {\n address: await getUserAddress(m.member),\n role: AccountRole.WRITABLE,\n },\n ]);\n return convertRemoveMember({\n pubkey: m.member,\n });\n }),\n );\n configActions.push({ __kind: action.type, fields: [field] });\n break;\n }\n\n case \"EditPermissions\": {\n const field = action.members.map((m) =>\n convertEditMember({\n permissionArgs: m.permissions,\n pubkey: m.member,\n }),\n );\n\n configActions.push({ __kind: action.type, fields: [field] });\n break;\n }\n\n default:\n configActions.push({ __kind: action.type, fields: [action.threshold] });\n }\n }\n\n return configActions;\n}\n\nfunction convertEditMember({\n pubkey,\n permissionArgs,\n}: {\n pubkey: Address | Secp256r1Key;\n permissionArgs: PermissionArgs;\n}): EditMemberArgs {\n return {\n memberKey: convertPubkeyToMemberkey(pubkey),\n permissions: convertPermissions(permissionArgs),\n };\n}\n\nfunction convertRemoveMember({\n pubkey,\n}: {\n pubkey: Address | Secp256r1Key;\n}): RemoveMemberArgs {\n return {\n memberKey: convertPubkeyToMemberkey(pubkey),\n };\n}\n\nfunction convertAddMember({\n pubkey,\n permissionArgs,\n}: {\n pubkey: Address | Secp256r1Key;\n permissionArgs: PermissionArgs;\n}): AddMemberArgs {\n return {\n memberKey: convertPubkeyToMemberkey(pubkey),\n permissions: convertPermissions(permissionArgs),\n };\n}\n\nfunction convertPermissions(p: PermissionArgs): IPermissions {\n const perms: IPermission[] = [];\n if (p.initiate) perms.push(Permission.InitiateTransaction);\n if (p.vote) perms.push(Permission.VoteTransaction);\n if (p.execute) perms.push(Permission.ExecuteTransaction);\n\n return Permissions.fromPermissions(perms);\n}\n","import { sha256 } from \"@noble/hashes/sha2.js\";\nimport type {\n Address,\n AddressesByLookupTableAddress,\n Instruction,\n TransactionSigner,\n} from \"gill\";\nimport {\n createTransactionBuffer,\n executeTransaction,\n executeTransactionBuffer,\n extendTransactionBuffer,\n voteTransactionBuffer,\n type Secp256r1VerifyInput,\n} from \"../instructions\";\nimport { SignedSecp256r1Key } from \"../types\";\nimport type { TransactionDetails } from \"../types/transaction\";\nimport { getSecp256r1MessageHash, getTransactionBufferAddress } from \"../utils\";\nimport {\n convertPubkeyToMemberkey,\n getDeduplicatedSigners,\n} from \"../utils/transaction/internal\";\n\ninterface CreateTransactionBundleArgs {\n payer: TransactionSigner;\n settings: Address;\n transactionMessageBytes: Uint8Array<ArrayBuffer>;\n creator: TransactionSigner | SignedSecp256r1Key;\n additionalVoters?: (TransactionSigner | SignedSecp256r1Key)[];\n executor?: TransactionSigner | SignedSecp256r1Key;\n additionalSigners?: TransactionSigner[];\n secp256r1VerifyInput?: Secp256r1VerifyInput;\n jitoBundlesTipAmount?: number;\n chunkSize?: number;\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n}\n\nexport async function prepareTransactionBundle({\n payer,\n settings,\n transactionMessageBytes,\n creator,\n executor,\n secp256r1VerifyInput,\n jitoBundlesTipAmount,\n addressesByLookupTableAddress,\n additionalVoters = [],\n additionalSigners = [],\n chunkSize = Math.ceil(transactionMessageBytes.length / 2),\n}: CreateTransactionBundleArgs): Promise<TransactionDetails[]> {\n const bufferIndex = Math.floor(Math.random() * 255);\n const transactionBufferAddress = await getTransactionBufferAddress(\n settings,\n creator instanceof SignedSecp256r1Key ? creator : creator.address,\n bufferIndex,\n );\n\n const chunks: Uint8Array<ArrayBuffer>[] = [];\n const chunksHash: Uint8Array<ArrayBuffer>[] = [];\n for (let i = 0; i < transactionMessageBytes.length; i += chunkSize) {\n const chunk = transactionMessageBytes.subarray(i, i + chunkSize);\n chunks.push(chunk);\n chunksHash.push(sha256(chunk) as Uint8Array<ArrayBuffer>);\n }\n const finalBufferHash = sha256(\n transactionMessageBytes,\n ) as Uint8Array<ArrayBuffer>;\n\n const expectedSigners = getDeduplicatedSigners([\n creator,\n ...(executor ? [executor] : []),\n ...additionalVoters,\n ]).map((x) => ({\n memberKey: convertPubkeyToMemberkey(x),\n messageHash:\n x instanceof SignedSecp256r1Key\n ? getSecp256r1MessageHash(x.authResponse)\n : null,\n }));\n\n const createIxs = createTransactionBuffer({\n finalBufferHash,\n finalBufferSize: transactionMessageBytes.length,\n bufferIndex,\n payer,\n transactionBufferAddress,\n settings,\n creator,\n preauthorizeExecution: !executor,\n bufferExtendHashes: chunksHash,\n\n expectedSigners,\n });\n\n const extendIxs = chunks.map((bytes) =>\n extendTransactionBuffer({\n transactionMessageBytes: bytes,\n transactionBufferAddress,\n settings,\n }),\n );\n\n const voteIxs = additionalVoters.map((voter) =>\n voteTransactionBuffer({\n voter,\n transactionBufferAddress,\n settings,\n }),\n );\n\n const executeApprovalIxs = executeTransactionBuffer({\n settings,\n executor,\n transactionBufferAddress,\n });\n\n const { instructions: executeIxs, addressLookupTableAccounts } =\n await executeTransaction({\n settings,\n transactionMessageBytes,\n transactionBufferAddress,\n payer,\n additionalSigners,\n secp256r1VerifyInput,\n jitoBundlesTipAmount,\n addressesByLookupTableAddress,\n });\n\n const buildTx = (instructions: Instruction[]): TransactionDetails => ({\n payer,\n instructions,\n addressesByLookupTableAddress: addressLookupTableAccounts,\n });\n\n const txs = [\n buildTx(createIxs),\n ...extendIxs.map((ix) => buildTx([ix])),\n ...(voteIxs.length ? [buildTx(voteIxs.flat())] : []),\n buildTx(executeApprovalIxs),\n buildTx(executeIxs),\n ];\n\n return txs;\n}\n","import { AccountRole, type Address, type Instruction } from \"gill\";\n\nexport type CompiledKeyMeta = {\n isSigner: boolean;\n isWritable: boolean;\n isInvoked: boolean;\n};\n\ntype KeyMetaMap = Map<Address, CompiledKeyMeta>;\n\n/** Adapted from solana-web3.js compiled-keys for wrapped vault transaction messages. @see https://github.com/solana-labs/solana-web3.js/blob/87d33ac68e2453b8a01cf8c425aa7623888434e8/packages/library-legacy/src/message/compiled-keys.ts */\nexport class CompiledKeys {\n payer: Address;\n keyMetaMap: KeyMetaMap;\n\n constructor(payer: Address, keyMetaMap: KeyMetaMap) {\n this.payer = payer;\n this.keyMetaMap = keyMetaMap;\n }\n\n static compile(\n instructions: Array<Instruction>,\n payer: Address,\n ): CompiledKeys {\n const keyMetaMap: KeyMetaMap = new Map();\n const getOrInsertDefault = (address: Address): CompiledKeyMeta => {\n let keyMeta = keyMetaMap.get(address);\n if (keyMeta === undefined) {\n keyMeta = {\n isSigner: false,\n isWritable: false,\n isInvoked: false,\n };\n keyMetaMap.set(address, keyMeta);\n }\n return keyMeta;\n };\n\n const payerKeyMeta = getOrInsertDefault(payer);\n payerKeyMeta.isSigner = true;\n payerKeyMeta.isWritable = true;\n\n for (const ix of instructions) {\n getOrInsertDefault(ix.programAddress).isInvoked = false;\n for (const accountMeta of ix.accounts ?? []) {\n const keyMeta = getOrInsertDefault(accountMeta.address);\n keyMeta.isSigner ||=\n accountMeta.role === AccountRole.READONLY_SIGNER ||\n accountMeta.role === AccountRole.WRITABLE_SIGNER;\n keyMeta.isWritable ||=\n accountMeta.role === AccountRole.WRITABLE ||\n accountMeta.role === AccountRole.WRITABLE_SIGNER;\n }\n }\n\n return new CompiledKeys(payer, keyMetaMap);\n }\n\n getMessageComponents(): [\n {\n numReadonlyNonSignerAccounts: number;\n numReadonlySignerAccounts: number;\n numSignerAccounts: number;\n },\n Array<Address>,\n ] {\n const mapEntries = [...this.keyMetaMap.entries()];\n if (mapEntries.length > 256) {\n throw new Error(\"Max static account keys length exceeded\");\n }\n\n const writableSigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && meta.isWritable,\n );\n const readonlySigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && !meta.isWritable,\n );\n const writableNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && meta.isWritable,\n );\n const readonlyNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && !meta.isWritable,\n );\n\n const header = {\n numSignerAccounts: writableSigners.length + readonlySigners.length,\n numReadonlySignerAccounts: readonlySigners.length,\n numReadonlyNonSignerAccounts: readonlyNonSigners.length,\n };\n\n if (writableSigners.length === 0) {\n throw new Error(\"Expected at least one writable signer key\");\n }\n\n const [payerAddress] = writableSigners[0];\n if (payerAddress !== this.payer) {\n throw new Error(\"Expected first writable signer key to be the fee payer\");\n }\n\n const staticAccountKeys = [\n ...writableSigners.map(([key]) => key),\n ...readonlySigners.map(([key]) => key),\n ...writableNonSigners.map(([key]) => key),\n ...readonlyNonSigners.map(([key]) => key),\n ];\n\n return [header, staticAccountKeys];\n }\n\n extractTableLookup(lookupTableAddresses: [string, Address[]]) {\n const [writableIndexes, drainedWritableKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTableAddresses[1],\n (keyMeta) =>\n !keyMeta.isSigner && !keyMeta.isInvoked && keyMeta.isWritable,\n );\n const [readonlyIndexes, drainedReadonlyKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTableAddresses[1],\n (keyMeta) =>\n !keyMeta.isSigner && !keyMeta.isInvoked && !keyMeta.isWritable,\n );\n\n if (writableIndexes.length === 0 && readonlyIndexes.length === 0) {\n return;\n }\n\n return {\n addressTableLookup: {\n lookupTableAddress: lookupTableAddresses[0],\n writableIndexes,\n readonlyIndexes,\n },\n drainedKeys: {\n writable: drainedWritableKeys,\n readonly: drainedReadonlyKeys,\n },\n };\n }\n\n private drainKeysFoundInLookupTable(\n lookupTableEntries: Array<Address>,\n keyMetaFilter: (keyMeta: CompiledKeyMeta) => boolean,\n ): [Array<number>, Array<Address>] {\n const lookupTableIndexes = new Array();\n const drainedKeys = new Array();\n\n for (const [addressKey, keyMeta] of this.keyMetaMap.entries()) {\n if (keyMetaFilter(keyMeta)) {\n const key = addressKey;\n const lookupTableIndex = lookupTableEntries.findIndex(\n (entry) => entry === key,\n );\n if (lookupTableIndex >= 0) {\n if (lookupTableIndex >= 256) {\n throw new Error(\"Max lookup table index exceeded\");\n }\n lookupTableIndexes.push(lookupTableIndex);\n drainedKeys.push(key);\n this.keyMetaMap.delete(addressKey);\n }\n }\n }\n\n return [lookupTableIndexes, drainedKeys];\n }\n}\n","import type { Address, Instruction } from \"gill\";\n\nexport class MessageAccountKeys {\n private staticAccountKeys: Address[];\n private accountKeysFromLookups: {\n writable: Address[];\n readonly: Address[];\n };\n constructor(\n staticAccountKeys: Address[],\n accountKeysFromLookups: {\n writable: Address[];\n readonly: Address[];\n },\n ) {\n this.staticAccountKeys = staticAccountKeys;\n this.accountKeysFromLookups = accountKeysFromLookups;\n }\n\n keySegments() {\n const keySegments = [this.staticAccountKeys];\n if (this.accountKeysFromLookups) {\n keySegments.push(this.accountKeysFromLookups.writable);\n keySegments.push(this.accountKeysFromLookups.readonly);\n }\n return keySegments;\n }\n\n get(index: number) {\n for (const keySegment of this.keySegments()) {\n if (index < keySegment.length) {\n return keySegment[index];\n } else {\n index -= keySegment.length;\n }\n }\n return;\n }\n\n get length() {\n return this.keySegments().flat().length;\n }\n\n compileInstructions(instructions: Instruction[]) {\n const U8_MAX = 255;\n if (this.length > U8_MAX + 1) {\n throw new Error(\"Account index overflow encountered during compilation\");\n }\n const keyIndexMap = new Map<Address, number>();\n this.keySegments()\n .flat()\n .forEach((key, index) => {\n keyIndexMap.set(key, index);\n });\n const findKeyIndex = (key: Address) => {\n const keyIndex = keyIndexMap.get(key);\n if (keyIndex === undefined)\n throw new Error(\n \"Encountered an unknown instruction account key during compilation\",\n );\n return keyIndex;\n };\n return instructions.map((instruction) => {\n return {\n programAddressIndex: findKeyIndex(instruction.programAddress),\n accountIndices:\n instruction.accounts?.map((meta) => findKeyIndex(meta.address)) ?? [],\n data: instruction.data,\n };\n });\n }\n}\n","import {\n address,\n type Address,\n type AddressesByLookupTableAddress,\n type CompiledTransactionMessage,\n type Instruction,\n} from \"gill\";\nimport { CompiledKeys } from \"./compiled-keys\";\nimport { MessageAccountKeys } from \"./message-account-keys\";\n\nexport function compileToWrappedMessageV0({\n payer,\n recentBlockhash,\n instructions,\n addressesByLookupTableAddress,\n}: {\n payer: Address;\n recentBlockhash: string;\n instructions: Instruction[];\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n}) {\n const compiledKeys = CompiledKeys.compile(instructions, payer);\n\n const addressTableLookups: {\n /** The address of the address lookup table account. */\n lookupTableAddress: Address;\n /** @deprecated Use `readonlyIndexes` */\n readableIndices: readonly number[];\n /** Indexes of accounts in a lookup table to load as read-only. */\n readonlyIndexes: readonly number[];\n /** Indexes of accounts in a lookup table to load as writable. */\n writableIndexes: readonly number[];\n /** @deprecated Use `writableIndexes` */\n writableIndices: readonly number[];\n }[] = new Array();\n const accountKeysFromLookups: { writable: Address[]; readonly: Address[] } = {\n writable: [],\n readonly: [],\n };\n const lookupTableAccounts = Object.entries(\n addressesByLookupTableAddress ?? {},\n );\n\n for (const lookupTable of lookupTableAccounts) {\n const extractResult = compiledKeys.extractTableLookup(lookupTable);\n if (extractResult !== undefined) {\n const { addressTableLookup, drainedKeys } = extractResult;\n addressTableLookups.push({\n readonlyIndexes: addressTableLookup.readonlyIndexes,\n readableIndices: addressTableLookup.readonlyIndexes,\n writableIndexes: addressTableLookup.writableIndexes,\n writableIndices: addressTableLookup.writableIndexes,\n lookupTableAddress: address(addressTableLookup.lookupTableAddress),\n });\n accountKeysFromLookups.writable.push(...drainedKeys.writable);\n accountKeysFromLookups.readonly.push(...drainedKeys.readonly);\n }\n }\n\n const [header, staticAccounts] = compiledKeys.getMessageComponents();\n\n const accountKeys = new MessageAccountKeys(\n staticAccounts,\n accountKeysFromLookups,\n );\n\n const compiledInstructions = accountKeys.compileInstructions(instructions);\n return {\n version: 0,\n header,\n instructions: compiledInstructions,\n lifetimeToken: recentBlockhash,\n staticAccounts,\n addressTableLookups,\n } as CompiledTransactionMessage;\n}\n","import {\n type Address,\n type AddressesByLookupTableAddress,\n type Instruction,\n} from \"gill\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../generated\";\nimport { vaultTransactionMessageSerialize } from \"../types\";\nimport { compileToWrappedMessageV0 } from \"../utils/transactionMessage/compileToWrappedMessageV0\";\ninterface PrepareTransactionMessageArgs {\n instructions: Instruction[];\n payer: Address;\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n}\nexport function prepareTransactionMessage({\n instructions,\n payer,\n addressesByLookupTableAddress,\n}: PrepareTransactionMessageArgs) {\n const compiledMessage = compileToWrappedMessageV0({\n instructions,\n payer,\n recentBlockhash: MULTI_WALLET_PROGRAM_ADDRESS,\n addressesByLookupTableAddress,\n });\n\n return new Uint8Array(vaultTransactionMessageSerialize(compiledMessage));\n}\n","import type {\n Address,\n AddressesByLookupTableAddress,\n ReadonlyUint8Array,\n TransactionSigner,\n} from \"gill\";\nimport {\n executeTransactionSync,\n type Secp256r1VerifyInput,\n} from \"../instructions\";\nimport { SignedSecp256r1Key, type TransactionDetails } from \"../types\";\n\ninterface CreateTransactionSyncArgs {\n payer: TransactionSigner;\n settings: Address;\n transactionMessageBytes: ReadonlyUint8Array;\n signers: (TransactionSigner | SignedSecp256r1Key)[];\n additionalSigners?: TransactionSigner[];\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n secp256r1VerifyInput?: Secp256r1VerifyInput;\n}\n\nexport async function prepareTransactionSync({\n payer,\n settings,\n transactionMessageBytes,\n signers,\n additionalSigners,\n secp256r1VerifyInput,\n addressesByLookupTableAddress,\n}: CreateTransactionSyncArgs): Promise<TransactionDetails> {\n const { instructions, addressLookupTableAccounts } =\n await executeTransactionSync({\n settings,\n signers,\n additionalSigners,\n transactionMessageBytes,\n secp256r1VerifyInput,\n addressesByLookupTableAddress,\n });\n\n return {\n payer,\n instructions,\n addressesByLookupTableAddress: addressLookupTableAccounts,\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/generated/accounts/domainConfig.ts","../src/generated/accounts/globalCounter.ts","../src/generated/types/accountState.ts","../src/generated/types/additionalMetadata.ts","../src/generated/types/addMemberArgs.ts","../src/generated/types/compiledInstruction.ts","../src/generated/types/compressedOnlyExtension.ts","../src/generated/types/compressedProof.ts","../src/generated/types/compressedTokenArgs.ts","../src/generated/types/compressibleExtension.ts","../src/generated/types/compressionInfo.ts","../src/generated/types/configAction.ts","../src/generated/types/editMemberArgs.ts","../src/generated/types/expectedSigner.ts","../src/generated/types/extensionStruct.ts","../src/generated/types/member.ts","../src/generated/types/memberKey.ts","../src/generated/types/packedMerkleContext.ts","../src/generated/types/pausableAccountExtension.ts","../src/generated/types/permanentDelegateAccountExtension.ts","../src/generated/types/permissions.ts","../src/generated/types/proofArgs.ts","../src/generated/types/removeMemberArgs.ts","../src/generated/types/rentConfig.ts","../src/generated/types/secp256r1Pubkey.ts","../src/generated/types/secp256r1VerifyArgs.ts","../src/generated/types/secp256r1VerifyArgsWithDomainConfigIndex.ts","../src/generated/types/settingsIndexWithDelegateInfo.ts","../src/generated/types/splInterfacePdaArgs.ts","../src/generated/types/tokenMetadata.ts","../src/generated/types/transactionMessageAddressTableLookup.ts","../src/generated/types/transactionSyncSigners.ts","../src/generated/types/transferFeeAccountExtension.ts","../src/generated/types/transferHookAccountExtension.ts","../src/generated/types/transports.ts","../src/generated/types/userRole.ts","../src/generated/accounts/settings.ts","../src/generated/accounts/transactionBuffer.ts","../src/generated/accounts/user.ts","../src/hooked/index.ts","../src/generated/shared/index.ts","../src/generated/instructions/changeConfig.ts","../src/generated/instructions/createDomainConfig.ts","../src/generated/instructions/createDomainUserAccount.ts","../src/generated/instructions/createGlobalCounter.ts","../src/generated/instructions/createUserAccount.ts","../src/generated/instructions/createWallet.ts","../src/generated/instructions/disableDomainConfig.ts","../src/generated/instructions/editDomainConfig.ts","../src/generated/instructions/editTransactionManagerUrl.ts","../src/generated/instructions/editUserDelegate.ts","../src/generated/instructions/nativeTransferIntent.ts","../src/generated/instructions/tokenTransferIntent.ts","../src/generated/instructions/transactionBufferClose.ts","../src/generated/instructions/transactionBufferCreate.ts","../src/generated/instructions/transactionBufferExecute.ts","../src/generated/instructions/transactionBufferExtend.ts","../src/generated/instructions/transactionBufferVote.ts","../src/generated/instructions/transactionExecute.ts","../src/generated/instructions/transactionExecuteSync.ts","../src/generated/programs/multiWallet.ts","../src/generated/errors/multiWallet.ts","../src/errors/index.ts","../src/types/keyType.ts","../src/types/passkeys.ts","../src/types/permissions.ts","../src/types/secp256r1.ts","../src/types/vaultTransactionMessage.ts","../src/utils/validation.ts","../src/utils/addresses/index.ts","../src/utils/initialize.ts","../src/utils/passkeys/internal.ts","../src/utils/passkeys/helper.ts","../src/utils/transaction/helper.ts","../src/constants.ts","../src/utils/transaction/internal.ts","../src/utils/user/helper.ts","../src/instructions/admin/createDomainConfig.ts","../src/instructions/admin/createGlobalCounter.ts","../src/instructions/admin/disableDomainConfig.ts","../src/utils/transactionMessage/internal.ts","../src/instructions/secp256r1Verify.ts","../src/instructions/executeTransaction.ts","../src/utils/transaction/packedAccounts.ts","../src/instructions/executeTransactionSync.ts","../src/instructions/intents/nativeTransferIntent.ts","../src/utils/retry.ts","../src/instructions/intents/tokenTransferIntent.ts","../src/instructions/shared/changeConfig.ts","../src/instructions/shared/createDomainUserAccounts.ts","../src/instructions/shared/createUserAccounts.ts","../src/instructions/shared/createWallet.ts","../src/instructions/shared/editDomainConfig.ts","../src/instructions/shared/editTransactionManagerUrl.ts","../src/instructions/shared/editUserDelegate.ts","../src/instructions/transactionBuffers/closeTransactionBuffer.ts","../src/instructions/transactionBuffers/createTransactionBuffer.ts","../src/instructions/transactionBuffers/executeTransactionBuffer.ts","../src/instructions/transactionBuffers/extendTransactionBuffer.ts","../src/instructions/transactionBuffers/voteTransactionBuffer.ts","../src/transaction/prepareChangeConfig.ts","../src/transaction/prepareTransactionBundle.ts","../src/utils/transactionMessage/compiled-keys.ts","../src/utils/transactionMessage/message-account-keys.ts","../src/utils/transactionMessage/compileToWrappedMessageV0.ts","../src/transaction/prepareTransactionMessage.ts","../src/transaction/prepareTransactionSync.ts"],"names":["DOMAIN_CONFIG_DISCRIMINATOR","getDomainConfigDiscriminatorBytes","fixEncoderSize","getBytesEncoder","getDomainConfigEncoder","transformEncoder","getStructEncoder","getAddressEncoder","getU8Encoder","value","getDomainConfigDecoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getAddressDecoder","getU8Decoder","getDomainConfigCodec","combineCodec","decodeDomainConfig","encodedAccount","decodeAccount","fetchDomainConfig","rpc","address","config","maybeAccount","fetchMaybeDomainConfig","assertAccountExists","fetchEncodedAccount","fetchAllDomainConfig","addresses","maybeAccounts","fetchAllMaybeDomainConfig","assertAccountsExist","fetchEncodedAccounts","getDomainConfigSize","GLOBAL_COUNTER_DISCRIMINATOR","getGlobalCounterDiscriminatorBytes","getGlobalCounterEncoder","getU128Encoder","getGlobalCounterDecoder","getU128Decoder","getGlobalCounterCodec","decodeGlobalCounter","fetchGlobalCounter","fetchMaybeGlobalCounter","fetchAllGlobalCounter","fetchAllMaybeGlobalCounter","getGlobalCounterSize","AccountState","getAccountStateEncoder","getEnumEncoder","getAccountStateDecoder","getEnumDecoder","getAccountStateCodec","getAdditionalMetadataEncoder","addEncoderSizePrefix","getU32Encoder","getAdditionalMetadataDecoder","addDecoderSizePrefix","getU32Decoder","getAdditionalMetadataCodec","getAddMemberArgsEncoder","getMemberKeyEncoder","getPermissionsEncoder","getAddMemberArgsDecoder","getMemberKeyDecoder","getPermissionsDecoder","getAddMemberArgsCodec","getCompiledInstructionEncoder","getCompiledInstructionDecoder","getCompiledInstructionCodec","getCompressedOnlyExtensionEncoder","getU64Encoder","getCompressedOnlyExtensionDecoder","getU64Decoder","getCompressedOnlyExtensionCodec","getCompressedProofEncoder","getCompressedProofDecoder","getCompressedProofCodec","getCompressedTokenArgsEncoder","getU16Encoder","getPackedMerkleContextEncoder","getOptionEncoder","getArrayEncoder","getExtensionStructEncoder","getCompressedTokenArgsDecoder","getU16Decoder","getPackedMerkleContextDecoder","getOptionDecoder","getArrayDecoder","getExtensionStructDecoder","getCompressedTokenArgsCodec","getCompressibleExtensionEncoder","getBooleanEncoder","getCompressionInfoEncoder","getCompressibleExtensionDecoder","getBooleanDecoder","getCompressionInfoDecoder","getCompressibleExtensionCodec","getRentConfigEncoder","getRentConfigDecoder","getCompressionInfoCodec","getConfigActionEncoder","getDiscriminatedUnionEncoder","getTupleEncoder","getEditMemberArgsEncoder","getRemoveMemberArgsEncoder","getConfigActionDecoder","getDiscriminatedUnionDecoder","getTupleDecoder","getEditMemberArgsDecoder","getRemoveMemberArgsDecoder","getConfigActionCodec","configAction","kind","data","isConfigAction","getEditMemberArgsCodec","getExpectedSignerEncoder","getExpectedSignerDecoder","getExpectedSignerCodec","getUnitEncoder","getTokenMetadataEncoder","getPausableAccountExtensionEncoder","getPermanentDelegateAccountExtensionEncoder","getTransferFeeAccountExtensionEncoder","getTransferHookAccountExtensionEncoder","getUnitDecoder","getTokenMetadataDecoder","getPausableAccountExtensionDecoder","getPermanentDelegateAccountExtensionDecoder","getTransferFeeAccountExtensionDecoder","getTransferHookAccountExtensionDecoder","getExtensionStructCodec","extensionStruct","isExtensionStruct","getMemberEncoder","getMemberDecoder","getMemberCodec","getMemberKeyCodec","getPackedMerkleContextCodec","getPausableAccountExtensionCodec","getPermanentDelegateAccountExtensionCodec","getPermissionsCodec","getProofArgsEncoder","getProofArgsDecoder","getProofArgsCodec","getRemoveMemberArgsCodec","getRentConfigCodec","getSecp256r1PubkeyEncoder","getSecp256r1PubkeyDecoder","getSecp256r1PubkeyCodec","getSecp256r1VerifyArgsEncoder","getSecp256r1VerifyArgsDecoder","getSecp256r1VerifyArgsCodec","getSecp256r1VerifyArgsWithDomainConfigIndexEncoder","getSecp256r1VerifyArgsWithDomainConfigIndexDecoder","getSecp256r1VerifyArgsWithDomainConfigIndexCodec","getSettingsIndexWithDelegateInfoEncoder","getSettingsIndexWithDelegateInfoDecoder","getSettingsIndexWithDelegateInfoCodec","getSplInterfacePdaArgsEncoder","getSplInterfacePdaArgsDecoder","getSplInterfacePdaArgsCodec","getTokenMetadataCodec","getTransactionMessageAddressTableLookupEncoder","getTransactionMessageAddressTableLookupDecoder","getTransactionMessageAddressTableLookupCodec","getTransactionSyncSignersEncoder","getTransactionSyncSignersDecoder","getTransactionSyncSignersCodec","transactionSyncSigners","isTransactionSyncSigners","getTransferFeeAccountExtensionCodec","getTransferHookAccountExtensionCodec","Transports","getTransportsEncoder","getTransportsDecoder","getTransportsCodec","UserRole","getUserRoleEncoder","getUserRoleDecoder","getUserRoleCodec","SETTINGS_DISCRIMINATOR","getSettingsDiscriminatorBytes","getSettingsEncoder","getSettingsDecoder","getSettingsCodec","decodeSettings","fetchSettings","fetchMaybeSettings","fetchAllSettings","fetchAllMaybeSettings","TRANSACTION_BUFFER_DISCRIMINATOR","getTransactionBufferDiscriminatorBytes","getTransactionBufferEncoder","getTransactionBufferDecoder","getTransactionBufferCodec","decodeTransactionBuffer","fetchTransactionBuffer","fetchMaybeTransactionBuffer","fetchAllTransactionBuffer","fetchAllMaybeTransactionBuffer","USER_DISCRIMINATOR","getUserDiscriminatorBytes","getUserEncoder","getUtf8Encoder","getUserDecoder","getUtf8Decoder","getUserCodec","decodeUser","fetchUser","fetchMaybeUser","fetchAllUser","fetchAllMaybeUser","parseRemainingAccounts","args","remainingAccounts","x","expectSome","expectAddress","getAccountMetaFactory","programAddress","optionalAccountStrategy","account","AccountRole","writableRole","isTransactionSigner","upgradeRoleToSigner","kitIsTransactionSigner","CHANGE_CONFIG_DISCRIMINATOR","getChangeConfigDiscriminatorBytes","getChangeConfigInstructionDataEncoder","getChangeConfigInstructionDataDecoder","getChangeConfigInstructionDataCodec","getChangeConfigInstruction","input","MULTI_WALLET_PROGRAM_ADDRESS","accounts","resolverScope","getAccountMeta","parseChangeConfigInstruction","instruction","accountIndex","getNextAccount","accountMeta","getNextOptionalAccount","CREATE_DOMAIN_CONFIG_DISCRIMINATOR","getCreateDomainConfigDiscriminatorBytes","getCreateDomainConfigInstructionDataEncoder","getCreateDomainConfigInstructionDataDecoder","getCreateDomainConfigInstructionDataCodec","getCreateDomainConfigInstructionAsync","getProgramDerivedAddress","getCreateDomainConfigInstruction","parseCreateDomainConfigInstruction","CREATE_DOMAIN_USER_ACCOUNT_DISCRIMINATOR","getCreateDomainUserAccountDiscriminatorBytes","getCreateDomainUserAccountInstructionDataEncoder","getCreateDomainUserAccountInstructionDataDecoder","getCreateDomainUserAccountInstructionDataCodec","getCreateDomainUserAccountInstruction","parseCreateDomainUserAccountInstruction","CREATE_GLOBAL_COUNTER_DISCRIMINATOR","getCreateGlobalCounterDiscriminatorBytes","getCreateGlobalCounterInstructionDataEncoder","getCreateGlobalCounterInstructionDataDecoder","getCreateGlobalCounterInstructionDataCodec","getCreateGlobalCounterInstructionAsync","getCreateGlobalCounterInstruction","parseCreateGlobalCounterInstruction","CREATE_USER_ACCOUNT_DISCRIMINATOR","getCreateUserAccountDiscriminatorBytes","getCreateUserAccountInstructionDataEncoder","getCreateUserAccountInstructionDataDecoder","getCreateUserAccountInstructionDataCodec","getCreateUserAccountInstructionAsync","getCreateUserAccountInstruction","parseCreateUserAccountInstruction","CREATE_WALLET_DISCRIMINATOR","getCreateWalletDiscriminatorBytes","getCreateWalletInstructionDataEncoder","getCreateWalletInstructionDataDecoder","getCreateWalletInstructionDataCodec","getCreateWalletInstructionAsync","getCreateWalletInstruction","parseCreateWalletInstruction","DISABLE_DOMAIN_CONFIG_DISCRIMINATOR","getDisableDomainConfigDiscriminatorBytes","getDisableDomainConfigInstructionDataEncoder","getDisableDomainConfigInstructionDataDecoder","getDisableDomainConfigInstructionDataCodec","getDisableDomainConfigInstruction","parseDisableDomainConfigInstruction","EDIT_DOMAIN_CONFIG_DISCRIMINATOR","getEditDomainConfigDiscriminatorBytes","getEditDomainConfigInstructionDataEncoder","getEditDomainConfigInstructionDataDecoder","getEditDomainConfigInstructionDataCodec","getEditDomainConfigInstruction","parseEditDomainConfigInstruction","EDIT_TRANSACTION_MANAGER_URL_DISCRIMINATOR","getEditTransactionManagerUrlDiscriminatorBytes","getEditTransactionManagerUrlInstructionDataEncoder","getEditTransactionManagerUrlInstructionDataDecoder","getEditTransactionManagerUrlInstructionDataCodec","getEditTransactionManagerUrlInstructionAsync","getEditTransactionManagerUrlInstruction","parseEditTransactionManagerUrlInstruction","EDIT_USER_DELEGATE_DISCRIMINATOR","getEditUserDelegateDiscriminatorBytes","getEditUserDelegateInstructionDataEncoder","getEditUserDelegateInstructionDataDecoder","getEditUserDelegateInstructionDataCodec","getEditUserDelegateInstruction","parseEditUserDelegateInstruction","NATIVE_TRANSFER_INTENT_DISCRIMINATOR","getNativeTransferIntentDiscriminatorBytes","getNativeTransferIntentInstructionDataEncoder","getNativeTransferIntentInstructionDataDecoder","getNativeTransferIntentInstructionDataCodec","getNativeTransferIntentInstructionAsync","getNativeTransferIntentInstruction","parseNativeTransferIntentInstruction","TOKEN_TRANSFER_INTENT_DISCRIMINATOR","getTokenTransferIntentDiscriminatorBytes","getTokenTransferIntentInstructionDataEncoder","getTokenTransferIntentInstructionDataDecoder","getTokenTransferIntentInstructionDataCodec","getTokenTransferIntentInstructionAsync","getTokenTransferIntentInstruction","parseTokenTransferIntentInstruction","TRANSACTION_BUFFER_CLOSE_DISCRIMINATOR","getTransactionBufferCloseDiscriminatorBytes","getTransactionBufferCloseInstructionDataEncoder","getTransactionBufferCloseInstructionDataDecoder","getTransactionBufferCloseInstructionDataCodec","getTransactionBufferCloseInstruction","parseTransactionBufferCloseInstruction","TRANSACTION_BUFFER_CREATE_DISCRIMINATOR","getTransactionBufferCreateDiscriminatorBytes","getTransactionBufferCreateInstructionDataEncoder","getTransactionBufferCreateInstructionDataDecoder","getTransactionBufferCreateInstructionDataCodec","getTransactionBufferCreateInstruction","parseTransactionBufferCreateInstruction","TRANSACTION_BUFFER_EXECUTE_DISCRIMINATOR","getTransactionBufferExecuteDiscriminatorBytes","getTransactionBufferExecuteInstructionDataEncoder","getTransactionBufferExecuteInstructionDataDecoder","getTransactionBufferExecuteInstructionDataCodec","getTransactionBufferExecuteInstruction","parseTransactionBufferExecuteInstruction","TRANSACTION_BUFFER_EXTEND_DISCRIMINATOR","getTransactionBufferExtendDiscriminatorBytes","getTransactionBufferExtendInstructionDataEncoder","getTransactionBufferExtendInstructionDataDecoder","getTransactionBufferExtendInstructionDataCodec","getTransactionBufferExtendInstruction","parseTransactionBufferExtendInstruction","TRANSACTION_BUFFER_VOTE_DISCRIMINATOR","getTransactionBufferVoteDiscriminatorBytes","getTransactionBufferVoteInstructionDataEncoder","getTransactionBufferVoteInstructionDataDecoder","getTransactionBufferVoteInstructionDataCodec","getTransactionBufferVoteInstruction","parseTransactionBufferVoteInstruction","TRANSACTION_EXECUTE_DISCRIMINATOR","getTransactionExecuteDiscriminatorBytes","getTransactionExecuteInstructionDataEncoder","getTransactionExecuteInstructionDataDecoder","getTransactionExecuteInstructionDataCodec","getTransactionExecuteInstruction","parseTransactionExecuteInstruction","TRANSACTION_EXECUTE_SYNC_DISCRIMINATOR","getTransactionExecuteSyncDiscriminatorBytes","getTransactionExecuteSyncInstructionDataEncoder","getTransactionExecuteSyncInstructionDataDecoder","getTransactionExecuteSyncInstructionDataCodec","getTransactionExecuteSyncInstruction","parseTransactionExecuteSyncInstruction","MultiWalletAccount","identifyMultiWalletAccount","containsBytes","MultiWalletInstruction","identifyMultiWalletInstruction","MULTI_WALLET_ERROR__INVALID_SECP256R1_VERIFY_ARG","MULTI_WALLET_ERROR__INVALID_SECP256R1_INSTRUCTION","MULTI_WALLET_ERROR__SIGNATURE_INDEX_OUT_OF_BOUNDS","MULTI_WALLET_ERROR__INVALID_SIGNATURE_OFFSETS","MULTI_WALLET_ERROR__INVALID_SECP256R1_PUBLIC_KEY","MULTI_WALLET_ERROR__MALFORMED_SIGNED_MESSAGE","MULTI_WALLET_ERROR__RP_ID_HASH_MISMATCH","MULTI_WALLET_ERROR__CLIENT_DATA_HASH_MISMATCH","MULTI_WALLET_ERROR__EXPECTED_MESSAGE_HASH_MISMATCH","MULTI_WALLET_ERROR__DURABLE_NONCE_DETECTED","MULTI_WALLET_ERROR__DUPLICATE_MEMBER","MULTI_WALLET_ERROR__PERMANENT_MEMBER","MULTI_WALLET_ERROR__ONLY_ONE_PERMANENT_MEMBER_ALLOWED","MULTI_WALLET_ERROR__INVALID_PERMANENT_MEMBER_CONFIG","MULTI_WALLET_ERROR__ONLY_ONE_TRANSACTION_MANAGER_ALLOWED","MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_PERMISSION","MULTI_WALLET_ERROR__EXPECTED_TRANSACTION_MANAGER_ROLE_MISMATCH","MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_CONFIG","MULTI_WALLET_ERROR__EXPECTED_ADMINISTRATOR_ROLE_MISMATCH","MULTI_WALLET_ERROR__INVALID_ADMINISTRATOR_CONFIG","MULTI_WALLET_ERROR__ONLY_ONE_ADMINISTRATOR_ALLOWED","MULTI_WALLET_ERROR__EMPTY_MEMBERS","MULTI_WALLET_ERROR__TOO_MANY_MEMBERS","MULTI_WALLET_ERROR__INVALID_THRESHOLD","MULTI_WALLET_ERROR__INVALID_TRANSACTION_MESSAGE","MULTI_WALLET_ERROR__INVALID_NUMBER_OF_ACCOUNTS","MULTI_WALLET_ERROR__INVALID_ACCOUNT","MULTI_WALLET_ERROR__INVALID_USER_ROLE","MULTI_WALLET_ERROR__INVALID_ARGUMENTS","MULTI_WALLET_ERROR__MISSING_ACCOUNT","MULTI_WALLET_ERROR__ALREADY_DELEGATED","MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_EXECUTE_PERMISSION","MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_INITIATE_PERMISSION","MULTI_WALLET_ERROR__INSUFFICIENT_SIGNERS_WITH_VOTE_PERMISSION","MULTI_WALLET_ERROR__INVALID_NON_DELEGATED_SIGNERS","MULTI_WALLET_ERROR__UNEXPECTED_SIGNER","MULTI_WALLET_ERROR__NO_SIGNER_FOUND","MULTI_WALLET_ERROR__UNAUTHORISED_TO_CLOSE_TRANSACTION_BUFFER","MULTI_WALLET_ERROR__INVALID_BUFFER","MULTI_WALLET_ERROR__FINAL_BUFFER_HASH_MISMATCH","MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_EXCEEDED","MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_MISMATCH","MULTI_WALLET_ERROR__TRANSACTION_HAS_EXPIRED","MULTI_WALLET_ERROR__TRANSACTION_NOT_APPROVED","MULTI_WALLET_ERROR__PROTECTED_ACCOUNT","MULTI_WALLET_ERROR__MAX_LENGTH_EXCEEDED","MULTI_WALLET_ERROR__MISSING_SYSVAR_SLOT_HISTORY","MULTI_WALLET_ERROR__INVALID_SYSVAR_DATA_FORMAT","MULTI_WALLET_ERROR__SLOT_NUMBER_NOT_FOUND","MULTI_WALLET_ERROR__INVALID_SLOT_NUMBER","MULTI_WALLET_ERROR__CREDENTIAL_ID_IS_MISSING","MULTI_WALLET_ERROR__TRANSPORTS_IS_MISSING","MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_DISABLED","MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_MISSING","MULTI_WALLET_ERROR__ORIGIN_INDEX_OUT_OF_BOUNDS","MULTI_WALLET_ERROR__HASH_COMPUTATION_FAILED","MULTI_WALLET_ERROR__INVALID_MEMBER_KEY_FORMAT","MULTI_WALLET_ERROR__MISSING_COMPRESSED_PROOF_ARGS","MULTI_WALLET_ERROR__MISSING_LIGHT_CPI_ACCOUNTS","MULTI_WALLET_ERROR__MEMBER_NOT_FOUND","MULTI_WALLET_ERROR__SETTINGS_KEY_MISMATCH","MULTI_WALLET_ERROR__PAYER_MISMATCH","MULTI_WALLET_ERROR__MISSING_COMPRESSED_TOKEN_ACCOUNT","MULTI_WALLET_ERROR__MISSING_SPL_INTERFACE_PDA","MULTI_WALLET_ERROR__MISSING_INSTRUCTIONS_SYSVAR","MULTI_WALLET_ERROR__LIGHT_CPI_ACCOUNT_ERROR","MULTI_WALLET_ERROR__INVALID_TOKEN_SOURCE_TYPE","MULTI_WALLET_ERROR__INVALID_ACCOUNT_INDEX","MULTI_WALLET_ERROR__DOMAIN_CONFIG_KEY_MISMATCH","MULTI_WALLET_ERROR__UNAUTHORIZED_ADMIN_ONLY","MULTI_WALLET_ERROR__INVALID_USER_TRANSACTION_MANAGER_CONFIG","MULTI_WALLET_ERROR__INVALID_USER_ED25519_CONFIG","MULTI_WALLET_ERROR__MISSING_DESTINATION_TOKEN_ACCOUNT","MULTI_WALLET_ERROR__MISSING_SETTINGS_ACCOUNT_FOR_DELEGATE","MULTI_WALLET_ERROR__MISSING_NEW_AUTHORITY","multiWalletErrorMessages","getMultiWalletErrorMessage","code","isMultiWalletError","error","transactionMessage","isProgramError","RevibaseError","message","cause","NotInitializedError","service","NotFoundError","resource","details","ValidationError","field","NetworkError","statusCode","url","RetryExhaustedError","operation","attempts","lastError","PermissionError","required","actual","KeyType","UserInfoSchema","z","DeviceProfileSchema","TransactionActionTypeSchema","TransactionPayloadSchema","arr","TransactionPayloadWithBase64MessageBytesSchema","StartMessageRequestSchema","StartTransactionRequestSchema","AuthenticationContextSchema","BaseResponseSchema","TransactionDetailsSchema","CompleteMessageRequestSchema","CompleteTransactionRequestSchema","Permission","Permissions","_Permissions","mask","permissions","permission","SECP256R1_PUBLIC_KEY_LENGTH","Secp256r1Key","getBase58Encoder","key","getBase58Decoder","buf","SignedSecp256r1Key","signed","getStructCodec","getU8Codec","getArrayCodec","getMessageAddressTableLookupCodec","getAddressCodec","vaultTransactionMessageCodec","vaultTransactionMessageSerialize","compiledMessage","ix","vaultTransactionMessageDeserialize","transactionMessageBytes","vaultTransactionMessage","requireInRange","min","max","name","getUserAddress","user","userAddress","getDomainConfigAddress","rpIdHash","rpId","sha256","domainConfig","getGlobalCounterAddress","globalCounter","getTransactionBufferAddress","settings","creator","buffer_index","transactionBuffer","getWalletAddressFromSettings","getSettingsFromIndex","index","getWalletAddressFromIndex","getLightCpiSigner","lightCpiSigner","state","getSolanaRpcEndpoint","getLightProtocolRpc","getSolanaRpc","getSendAndConfirmTransaction","initialize","rpcEndpoint","proverEndpoint","compressionApiEndpoint","createRpc","sendAndConfirmTransaction","createSolanaClient","uint8ArrayToHex","bytes","b","hexToUint8Array","hex","i","extractAdditionalFields","clientData","knownKeys","remaining","serialized","parseOrigins","originsBytes","numOrigins","origins","cursor","decoder","strLen","strBytes","origin","convertSignatureDERtoRS","signature","totalLength","offset","lengthBytes","rLen","rStart","r","sLen","sStart","rStripped","sStripped","rPad","HALF_ORDER","p256","sBig","sHex","sPad","getSecp256r1Message","authResponse","clientDataJSON","base64URLStringToBuffer","authenticatorData","clientDataHash","convertPubkeyCoseToCompressed","publicKey","decodedPublicKey","decodeCBOR","uncompressedPublicKey","convertPubkeyCompressedToCose","coseDecodedPublicKey","encodeCBOR","getSignedSecp256r1Key","payload","authData","clientDataJsonParsed","truncatedClientDataJson","convertedSignature","getClientAndDeviceHash","clientOrigin","deviceJwk","nonce","getBase64Encoder","createClientAuthorizationStartRequestChallenge","canonicalize","createClientAuthorizationCompleteRequestChallenge","getSecp256r1MessageHash","createMessageChallenge","clientDeviceHash","createTransactionChallenge","slotHash","slotNumber","estimatedSlotHashExpiry","slotHashBytes","slotSysvarData","slotHashData","transactionMessageHash","challenge","getDeviceMessageHash","deviceProfile","bufferToBase64URLString","buffer","str","charCode","base64URLString","base64","padLength","padded","binary","getOriginIndex","convertJWKToBase64String","jwk","getBase64Decoder","convertBase64StringToJWK","retrieveTransactionManager","signer","settingsData","member","m","convertMemberKeyToString","hasInitiate","hasVote","hasExecute","transactionManager","toWebSocketUrl","httpUrl","u","openWebSocket","signal","resolve","reject","ws","abort","readEvents","onEvent","done","cleanup","onMessage","onError","onClose","onAbort","finish","fn","ev","msg","event","e","abortErr","sleep","ms","id","createTransactionManagerSigner","authResponses","onPendingApprovalsCallback","onPendingApprovalsSuccess","abortController","opts","wsUrl","maxAttempts","retryDelayMs","transactions","payloadItems","getTransactionEncoder","signatures","errMsg","err","sig","memberKey","serializeConfigActions","configActions","encodedActions","sum","a","serializedConfigActions","action","deserializeConfigActions","count","u32offset","out","JITO_TIP_ACCOUNTS","extractSecp256r1VerificationArgs","secp256r1PublicKey","verifyArgs","some","none","buildSignerAccounts","dedupSigners","packedAccounts","secp256r1VerifyInput","domainConfigIndex","convertPubkeyToMemberkey","pubkey","getPubkeyString","getDeduplicatedSigners","signers","hashSet","secp256r1Signers","addJitoTip","payer","tipAmount","tipAccount","getTransferSolInstruction","ACCOUNT_DISCRIMINATOR_SIZE","OPTION_SOME_TAG","MEMBER_KEY_SIZE","OPTION_VEC_PREFIX_SIZE","USER_DOMAIN_CONFIG_OFFSET","USER_MEMBER_OFFSET","USER_CREDENTIAL_ID_OFFSET","SETTINGS_MEMBER_OFFSET","fetchUserAccountByFilters","domainConfigAddress","credentialId","filters","result","fetchAllSettingsAccountByMember","settingsAccount","createDomainConfig","authority","createGlobalCounter","disableDomainConfig","admin","disable","getAccountRole","accountKey","vaultPda","isWritable","isStaticWritableIndex","isSigner","isSignerIndex","numAccountKeys","numSignerAccounts","numReadonlySignerAccounts","numReadonlyNonSignerAccounts","numWritableSigners","numWritableNonSigners","accountsForTransactionExecute","walletAddress","addressesByLookupTableAddress","additionalSigners","addressLookupTableAccounts","fetchAddressesForLookupTables","accountMetas","lookup","lookupTableAccount","meta","COMPRESSED_PUBKEY_SERIALIZED_SIZE","SIGNATURE_SERIALIZED_SIZE","SIGNATURE_OFFSETS_SERIALIZED_SIZE","SIGNATURE_OFFSETS_START","SECP256R1_PROGRAM_ADDRESS","getSecp256r1SignatureOffsetsDataEncoder","getSecp256r1SignatureOffsetsDataDecoder","getSecp256r1VerifyInstructionDataDecoder","createDecoder","numSignatures","padding","offsets","offsetDecoder","messageSize","getSecp256r1VerifyInstructionDataEncoder","createEncoder","offsetSize","payloadSize","p","offsetEncoder","offsetEntry","entry","getSecp256r1VerifyInstructionDataCodec","getSecp256r1VerifyInstruction","currentOffset","publicKeyOffset","signatureOffset","messageDataOffset","parseSecp256r1VerifyInstruction","executeTransaction","transactionBufferAddress","jitoBundlesTipAmount","instructions","PackedAccounts","acc","getLightSystemAccountMetasV2","PublicKey","isPacked","map","outputStateTreeInfo","TreeType","stateTreeInfos","selectedStateTree","selectStateTreeInfo","accountProofInputs","newAddressProofInputs","addressTreeInfos","merkleTreePubkeyIndex","queuePubkeyIndex","treeToUse","addressMerkleTreePubkeyIndex","addressQueuePubkeyIndex","preAccountLength","systemAccountsStartOffset","packedAccountsStartOffset","preAccounts","systemOffset","packedOffset","executeTransactionSync","finalSecp256r1VerifyInput","customTransactionMessage","parseTransactionMessage","y","nativeTransferIntent","destination","amount","DEFAULT_NETWORK_RETRY_MAX_RETRIES","DEFAULT_NETWORK_RETRY_DELAY_MS","EXPONENTIAL_BACKOFF_BASE","BACKOFF_MAX_DELAY_MS","DEFAULT_RETRY_CONFIG","calculateBackoffDelay","attempt","initialDelayMs","backoffBase","maxDelayMs","delay","retryWithBackoff","maxRetries","shouldRetry","compressibleConfig","rentSponsor","ctokenProgramAddress","tokenTransferIntent","mint","tokenProgram","splInterfacePdaArgs","resolveAddresses","accountInfos","fetchAccountInfos","balances","computeBalancesAndDestinations","compressedTokenAccounts","splInterfaceNeedsInitialization","getCompressedTokenAccounts","checkIfSplInterfaceNeedsToBeInitialized","compressedTotalBalance","hashesWithTree","buildHashesWithTree","proof","resolveCompressedProofAndSettings","sourceCompressedTokenAccounts","buildSourceCompressedTokenAccounts","compressedProofArgs","convertToCompressedProofArgs","getCtokenAta","owner","seeds","sourceSplAta","sourceCtokenAta","destinationSplAta","destinationCTokenAta","splInterfacePda","getAssociatedTokenAccountAddress","destinationSplAtaInfo","sourceSplAtaInfo","sourceCTokenAtaInfo","destinationSplExists","sourceSplExists","sourceCtokenExist","splBalance","getTokenDecoder","cTokenBalance","parseTokenAmount","destinationSplTokenAccount","destinationCtokenTokenAccount","requireSplInterface","getValidityProofWithRetry","getVersionFromDiscriminator","total","transferAmount","selectMinCompressedTokenAccountsForDecompression","maxInputs","options","filteredAccounts","accumulatedAmount","accumulatedLamports","maxPossibleAmount","selectedAccounts","totalBalance","discriminator","versionByte","validityProof","hashes","newAddresses","changeConfig","changeConfigArgs","createDomainUserAccounts","createUserArgs","createUserAccounts","createWallet","initialMember","editDomainConfig","newAuthority","newOrigins","editTransactionManagerUrl","transactionManagerUrl","editUserDelegate","oldDelegate","newDelegate","oldSettings","newSettings","closeTransactionBuffer","closer","createTransactionBuffer","bufferIndex","finalBufferHash","finalBufferSize","preauthorizeExecution","bufferExtendHashes","expectedSigners","executeTransactionBuffer","executor","extendTransactionBuffer","voteTransactionBuffer","voter","prepareChangeConfigArgs","configActionsArgs","buildConfigActions","convertAddMember","convertRemoveMember","convertEditMember","permissionArgs","convertPermissions","perms","prepareTransactionBundle","additionalVoters","chunkSize","chunks","chunksHash","chunk","createIxs","extendIxs","voteIxs","executeApprovalIxs","executeIxs","buildTx","CompiledKeys","_CompiledKeys","keyMetaMap","getOrInsertDefault","keyMeta","payerKeyMeta","mapEntries","writableSigners","readonlySigners","writableNonSigners","readonlyNonSigners","header","payerAddress","staticAccountKeys","lookupTableAddresses","writableIndexes","drainedWritableKeys","readonlyIndexes","drainedReadonlyKeys","lookupTableEntries","keyMetaFilter","lookupTableIndexes","drainedKeys","addressKey","lookupTableIndex","MessageAccountKeys","accountKeysFromLookups","keySegments","keySegment","keyIndexMap","findKeyIndex","keyIndex","compileToWrappedMessageV0","recentBlockhash","compiledKeys","addressTableLookups","lookupTableAccounts","lookupTable","extractResult","addressTableLookup","staticAccounts","compiledInstructions","prepareTransactionMessage","prepareTransactionSync"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport const DOMAIN_CONFIG_DISCRIMINATOR = new Uint8Array([\n 201, 232, 212, 229, 59, 241, 106, 197,\n]);\n\nexport function getDomainConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n DOMAIN_CONFIG_DISCRIMINATOR,\n );\n}\n\nexport type DomainConfig = {\n discriminator: ReadonlyUint8Array;\n authority: Address;\n rpIdHash: ReadonlyUint8Array;\n bump: number;\n isDisabled: number;\n rpIdLength: number;\n numOrigins: number;\n rpId: ReadonlyUint8Array;\n origins: ReadonlyUint8Array;\n};\n\nexport type DomainConfigArgs = {\n authority: Address;\n rpIdHash: ReadonlyUint8Array;\n bump: number;\n isDisabled: number;\n rpIdLength: number;\n numOrigins: number;\n rpId: ReadonlyUint8Array;\n origins: ReadonlyUint8Array;\n};\n\nexport function getDomainConfigEncoder(): FixedSizeEncoder<DomainConfigArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"authority\", getAddressEncoder()],\n [\"rpIdHash\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"bump\", getU8Encoder()],\n [\"isDisabled\", getU8Encoder()],\n [\"rpIdLength\", getU8Encoder()],\n [\"numOrigins\", getU8Encoder()],\n [\"rpId\", fixEncoderSize(getBytesEncoder(), 255)],\n [\"origins\", fixEncoderSize(getBytesEncoder(), 515)],\n ]),\n (value) => ({ ...value, discriminator: DOMAIN_CONFIG_DISCRIMINATOR }),\n );\n}\n\nexport function getDomainConfigDecoder(): FixedSizeDecoder<DomainConfig> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"authority\", getAddressDecoder()],\n [\"rpIdHash\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"bump\", getU8Decoder()],\n [\"isDisabled\", getU8Decoder()],\n [\"rpIdLength\", getU8Decoder()],\n [\"numOrigins\", getU8Decoder()],\n [\"rpId\", fixDecoderSize(getBytesDecoder(), 255)],\n [\"origins\", fixDecoderSize(getBytesDecoder(), 515)],\n ]);\n}\n\nexport function getDomainConfigCodec(): FixedSizeCodec<\n DomainConfigArgs,\n DomainConfig\n> {\n return combineCodec(getDomainConfigEncoder(), getDomainConfigDecoder());\n}\n\nexport function decodeDomainConfig<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<DomainConfig, TAddress>;\nexport function decodeDomainConfig<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<DomainConfig, TAddress>;\nexport function decodeDomainConfig<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<DomainConfig, TAddress> | MaybeAccount<DomainConfig, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getDomainConfigDecoder(),\n );\n}\n\nexport async function fetchDomainConfig<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<DomainConfig, TAddress>> {\n const maybeAccount = await fetchMaybeDomainConfig(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeDomainConfig<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<DomainConfig, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeDomainConfig(maybeAccount);\n}\n\nexport async function fetchAllDomainConfig(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<DomainConfig>[]> {\n const maybeAccounts = await fetchAllMaybeDomainConfig(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeDomainConfig(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<DomainConfig>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeDomainConfig(maybeAccount));\n}\n\nexport function getDomainConfigSize(): number {\n return 846;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport const GLOBAL_COUNTER_DISCRIMINATOR = new Uint8Array([\n 42, 206, 176, 58, 175, 129, 130, 233,\n]);\n\nexport function getGlobalCounterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n GLOBAL_COUNTER_DISCRIMINATOR,\n );\n}\n\nexport type GlobalCounter = {\n discriminator: ReadonlyUint8Array;\n index: bigint;\n};\n\nexport type GlobalCounterArgs = { index: number | bigint };\n\nexport function getGlobalCounterEncoder(): FixedSizeEncoder<GlobalCounterArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"index\", getU128Encoder()],\n ]),\n (value) => ({ ...value, discriminator: GLOBAL_COUNTER_DISCRIMINATOR }),\n );\n}\n\nexport function getGlobalCounterDecoder(): FixedSizeDecoder<GlobalCounter> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"index\", getU128Decoder()],\n ]);\n}\n\nexport function getGlobalCounterCodec(): FixedSizeCodec<\n GlobalCounterArgs,\n GlobalCounter\n> {\n return combineCodec(getGlobalCounterEncoder(), getGlobalCounterDecoder());\n}\n\nexport function decodeGlobalCounter<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<GlobalCounter, TAddress>;\nexport function decodeGlobalCounter<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<GlobalCounter, TAddress>;\nexport function decodeGlobalCounter<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<GlobalCounter, TAddress> | MaybeAccount<GlobalCounter, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getGlobalCounterDecoder(),\n );\n}\n\nexport async function fetchGlobalCounter<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<GlobalCounter, TAddress>> {\n const maybeAccount = await fetchMaybeGlobalCounter(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeGlobalCounter<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<GlobalCounter, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeGlobalCounter(maybeAccount);\n}\n\nexport async function fetchAllGlobalCounter(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<GlobalCounter>[]> {\n const maybeAccounts = await fetchAllMaybeGlobalCounter(\n rpc,\n addresses,\n config,\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeGlobalCounter(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<GlobalCounter>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeGlobalCounter(maybeAccount));\n}\n\nexport function getGlobalCounterSize(): number {\n return 24;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\nexport enum AccountState {\n Initialized,\n Frozen,\n}\n\nexport type AccountStateArgs = AccountState;\n\nexport function getAccountStateEncoder(): FixedSizeEncoder<AccountStateArgs> {\n return getEnumEncoder(AccountState);\n}\n\nexport function getAccountStateDecoder(): FixedSizeDecoder<AccountState> {\n return getEnumDecoder(AccountState);\n}\n\nexport function getAccountStateCodec(): FixedSizeCodec<\n AccountStateArgs,\n AccountState\n> {\n return combineCodec(getAccountStateEncoder(), getAccountStateDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type AdditionalMetadata = {\n /** The key of the metadata */\n key: ReadonlyUint8Array;\n /** The value of the metadata */\n value: ReadonlyUint8Array;\n};\n\nexport type AdditionalMetadataArgs = AdditionalMetadata;\n\nexport function getAdditionalMetadataEncoder(): Encoder<AdditionalMetadataArgs> {\n return getStructEncoder([\n [\"key\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n [\"value\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n ]);\n}\n\nexport function getAdditionalMetadataDecoder(): Decoder<AdditionalMetadata> {\n return getStructDecoder([\n [\"key\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n [\"value\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n ]);\n}\n\nexport function getAdditionalMetadataCodec(): Codec<\n AdditionalMetadataArgs,\n AdditionalMetadata\n> {\n return combineCodec(\n getAdditionalMetadataEncoder(),\n getAdditionalMetadataDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\nimport {\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n getPermissionsDecoder,\n getPermissionsEncoder,\n type IPermissions,\n type MemberKey,\n type MemberKeyArgs,\n type PermissionsArgs,\n} from \".\";\n\nexport type AddMemberArgs = { memberKey: MemberKey; permissions: IPermissions };\n\nexport type AddMemberArgsArgs = {\n memberKey: MemberKeyArgs;\n permissions: PermissionsArgs;\n};\n\nexport function getAddMemberArgsEncoder(): FixedSizeEncoder<AddMemberArgsArgs> {\n return getStructEncoder([\n [\"memberKey\", getMemberKeyEncoder()],\n [\"permissions\", getPermissionsEncoder()],\n ]);\n}\n\nexport function getAddMemberArgsDecoder(): FixedSizeDecoder<AddMemberArgs> {\n return getStructDecoder([\n [\"memberKey\", getMemberKeyDecoder()],\n [\"permissions\", getPermissionsDecoder()],\n ]);\n}\n\nexport function getAddMemberArgsCodec(): FixedSizeCodec<\n AddMemberArgsArgs,\n AddMemberArgs\n> {\n return combineCodec(getAddMemberArgsEncoder(), getAddMemberArgsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type CompiledInstruction = {\n programAddressIndex: number;\n accountIndices: ReadonlyUint8Array;\n data: ReadonlyUint8Array;\n};\n\nexport type CompiledInstructionArgs = CompiledInstruction;\n\nexport function getCompiledInstructionEncoder(): Encoder<CompiledInstructionArgs> {\n return getStructEncoder([\n [\"programAddressIndex\", getU8Encoder()],\n [\n \"accountIndices\",\n addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n ],\n [\"data\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n ]);\n}\n\nexport function getCompiledInstructionDecoder(): Decoder<CompiledInstruction> {\n return getStructDecoder([\n [\"programAddressIndex\", getU8Decoder()],\n [\n \"accountIndices\",\n addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n ],\n [\"data\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n ]);\n}\n\nexport function getCompiledInstructionCodec(): Codec<\n CompiledInstructionArgs,\n CompiledInstruction\n> {\n return combineCodec(\n getCompiledInstructionEncoder(),\n getCompiledInstructionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/**\n * CompressedOnly extension for compressed token accounts.\n * This extension marks a compressed account as decompress-only (cannot be transferred).\n * It stores the delegated amount from the source Token account when it was compressed-and-closed.\n */\nexport type CompressedOnlyExtension = {\n /**\n * The delegated amount from the source Token account's delegate field.\n * When decompressing, the decompression amount must match this value.\n */\n delegatedAmount: bigint;\n /** Withheld transfer fee amount from the source Token account. */\n withheldTransferFee: bigint;\n /**\n * Whether the source was an ATA (1) or regular token account (0).\n * When is_ata=1, decompress must verify ATA derivation matches.\n */\n isAta: number;\n};\n\nexport type CompressedOnlyExtensionArgs = {\n /**\n * The delegated amount from the source Token account's delegate field.\n * When decompressing, the decompression amount must match this value.\n */\n delegatedAmount: number | bigint;\n /** Withheld transfer fee amount from the source Token account. */\n withheldTransferFee: number | bigint;\n /**\n * Whether the source was an ATA (1) or regular token account (0).\n * When is_ata=1, decompress must verify ATA derivation matches.\n */\n isAta: number;\n};\n\nexport function getCompressedOnlyExtensionEncoder(): FixedSizeEncoder<CompressedOnlyExtensionArgs> {\n return getStructEncoder([\n [\"delegatedAmount\", getU64Encoder()],\n [\"withheldTransferFee\", getU64Encoder()],\n [\"isAta\", getU8Encoder()],\n ]);\n}\n\nexport function getCompressedOnlyExtensionDecoder(): FixedSizeDecoder<CompressedOnlyExtension> {\n return getStructDecoder([\n [\"delegatedAmount\", getU64Decoder()],\n [\"withheldTransferFee\", getU64Decoder()],\n [\"isAta\", getU8Decoder()],\n ]);\n}\n\nexport function getCompressedOnlyExtensionCodec(): FixedSizeCodec<\n CompressedOnlyExtensionArgs,\n CompressedOnlyExtension\n> {\n return combineCodec(\n getCompressedOnlyExtensionEncoder(),\n getCompressedOnlyExtensionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type CompressedProof = {\n a: ReadonlyUint8Array;\n b: ReadonlyUint8Array;\n c: ReadonlyUint8Array;\n};\n\nexport type CompressedProofArgs = CompressedProof;\n\nexport function getCompressedProofEncoder(): FixedSizeEncoder<CompressedProofArgs> {\n return getStructEncoder([\n [\"a\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"b\", fixEncoderSize(getBytesEncoder(), 64)],\n [\"c\", fixEncoderSize(getBytesEncoder(), 32)],\n ]);\n}\n\nexport function getCompressedProofDecoder(): FixedSizeDecoder<CompressedProof> {\n return getStructDecoder([\n [\"a\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"b\", fixDecoderSize(getBytesDecoder(), 64)],\n [\"c\", fixDecoderSize(getBytesDecoder(), 32)],\n ]);\n}\n\nexport function getCompressedProofCodec(): FixedSizeCodec<\n CompressedProofArgs,\n CompressedProof\n> {\n return combineCodec(getCompressedProofEncoder(), getCompressedProofDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n} from \"gill\";\nimport {\n getAccountStateDecoder,\n getAccountStateEncoder,\n getExtensionStructDecoder,\n getExtensionStructEncoder,\n getPackedMerkleContextDecoder,\n getPackedMerkleContextEncoder,\n type AccountState,\n type AccountStateArgs,\n type ExtensionStruct,\n type ExtensionStructArgs,\n type PackedMerkleContext,\n type PackedMerkleContextArgs,\n} from \".\";\n\nexport type CompressedTokenArgs = {\n version: number;\n rootIndex: number;\n amount: bigint;\n merkleContext: PackedMerkleContext;\n tlv: Option<Array<ExtensionStruct>>;\n state: AccountState;\n};\n\nexport type CompressedTokenArgsArgs = {\n version: number;\n rootIndex: number;\n amount: number | bigint;\n merkleContext: PackedMerkleContextArgs;\n tlv: OptionOrNullable<Array<ExtensionStructArgs>>;\n state: AccountStateArgs;\n};\n\nexport function getCompressedTokenArgsEncoder(): Encoder<CompressedTokenArgsArgs> {\n return getStructEncoder([\n [\"version\", getU8Encoder()],\n [\"rootIndex\", getU16Encoder()],\n [\"amount\", getU64Encoder()],\n [\"merkleContext\", getPackedMerkleContextEncoder()],\n [\"tlv\", getOptionEncoder(getArrayEncoder(getExtensionStructEncoder()))],\n [\"state\", getAccountStateEncoder()],\n ]);\n}\n\nexport function getCompressedTokenArgsDecoder(): Decoder<CompressedTokenArgs> {\n return getStructDecoder([\n [\"version\", getU8Decoder()],\n [\"rootIndex\", getU16Decoder()],\n [\"amount\", getU64Decoder()],\n [\"merkleContext\", getPackedMerkleContextDecoder()],\n [\"tlv\", getOptionDecoder(getArrayDecoder(getExtensionStructDecoder()))],\n [\"state\", getAccountStateDecoder()],\n ]);\n}\n\nexport function getCompressedTokenArgsCodec(): Codec<\n CompressedTokenArgsArgs,\n CompressedTokenArgs\n> {\n return combineCodec(\n getCompressedTokenArgsEncoder(),\n getCompressedTokenArgsDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\nimport {\n getCompressionInfoDecoder,\n getCompressionInfoEncoder,\n type CompressionInfo,\n type CompressionInfoArgs,\n} from \".\";\n\n/**\n * Compressible extension for token accounts.\n * This extension contains compression configuration and timing data.\n */\nexport type CompressibleExtension = {\n /** Option discriminator for decimals (0 = None, 1 = Some) */\n decimalsOption: number;\n /** Token decimals (only valid when decimals_option == 1) */\n decimals: number;\n /** Whether this account is compression-only (cannot decompress) */\n compressionOnly: boolean;\n /**\n * Whether the source account is an ATA (1 = ATA, 0 = regular account)\n * Used during compress_and_close to set is_ata in CompressedOnlyExtension\n */\n isAta: number;\n /** Compression configuration and timing data */\n info: CompressionInfo;\n};\n\nexport type CompressibleExtensionArgs = {\n /** Option discriminator for decimals (0 = None, 1 = Some) */\n decimalsOption: number;\n /** Token decimals (only valid when decimals_option == 1) */\n decimals: number;\n /** Whether this account is compression-only (cannot decompress) */\n compressionOnly: boolean;\n /**\n * Whether the source account is an ATA (1 = ATA, 0 = regular account)\n * Used during compress_and_close to set is_ata in CompressedOnlyExtension\n */\n isAta: number;\n /** Compression configuration and timing data */\n info: CompressionInfoArgs;\n};\n\nexport function getCompressibleExtensionEncoder(): FixedSizeEncoder<CompressibleExtensionArgs> {\n return getStructEncoder([\n [\"decimalsOption\", getU8Encoder()],\n [\"decimals\", getU8Encoder()],\n [\"compressionOnly\", getBooleanEncoder()],\n [\"isAta\", getU8Encoder()],\n [\"info\", getCompressionInfoEncoder()],\n ]);\n}\n\nexport function getCompressibleExtensionDecoder(): FixedSizeDecoder<CompressibleExtension> {\n return getStructDecoder([\n [\"decimalsOption\", getU8Decoder()],\n [\"decimals\", getU8Decoder()],\n [\"compressionOnly\", getBooleanDecoder()],\n [\"isAta\", getU8Decoder()],\n [\"info\", getCompressionInfoDecoder()],\n ]);\n}\n\nexport function getCompressibleExtensionCodec(): FixedSizeCodec<\n CompressibleExtensionArgs,\n CompressibleExtension\n> {\n return combineCodec(\n getCompressibleExtensionEncoder(),\n getCompressibleExtensionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n getRentConfigDecoder,\n getRentConfigEncoder,\n type RentConfig,\n type RentConfigArgs,\n} from \".\";\n\n/** Compressible extension for ctoken accounts. */\nexport type CompressionInfo = {\n configAccountVersion: number;\n /** Compress to account pubkey instead of account owner. */\n compressToPubkey: number;\n /**\n * Version of the compressed token account when ctoken account is\n * compressed and closed. (The account_version specifies the hashing scheme.)\n */\n accountVersion: number;\n /**\n * Lamports amount the account is topped up with at every write\n * by the fee payer.\n */\n lamportsPerWrite: number;\n /** Authority that can compress and close the account. */\n compressionAuthority: ReadonlyUint8Array;\n /** Recipient for rent exemption lamports up on account closure. */\n rentSponsor: ReadonlyUint8Array;\n /** Last slot rent was claimed from this account. */\n lastClaimedSlot: bigint;\n /**\n * Rent exemption lamports paid at account creation.\n * Used instead of querying the Rent sysvar to ensure rent sponsor\n * gets back exactly what they paid regardless of future rent changes.\n */\n rentExemptionPaid: number;\n /** Reserved for future use. */\n reserved: number;\n /**\n * Rent function parameters,\n * used to calculate whether the account is compressible.\n */\n rentConfig: RentConfig;\n};\n\nexport type CompressionInfoArgs = {\n configAccountVersion: number;\n /** Compress to account pubkey instead of account owner. */\n compressToPubkey: number;\n /**\n * Version of the compressed token account when ctoken account is\n * compressed and closed. (The account_version specifies the hashing scheme.)\n */\n accountVersion: number;\n /**\n * Lamports amount the account is topped up with at every write\n * by the fee payer.\n */\n lamportsPerWrite: number;\n /** Authority that can compress and close the account. */\n compressionAuthority: ReadonlyUint8Array;\n /** Recipient for rent exemption lamports up on account closure. */\n rentSponsor: ReadonlyUint8Array;\n /** Last slot rent was claimed from this account. */\n lastClaimedSlot: number | bigint;\n /**\n * Rent exemption lamports paid at account creation.\n * Used instead of querying the Rent sysvar to ensure rent sponsor\n * gets back exactly what they paid regardless of future rent changes.\n */\n rentExemptionPaid: number;\n /** Reserved for future use. */\n reserved: number;\n /**\n * Rent function parameters,\n * used to calculate whether the account is compressible.\n */\n rentConfig: RentConfigArgs;\n};\n\nexport function getCompressionInfoEncoder(): FixedSizeEncoder<CompressionInfoArgs> {\n return getStructEncoder([\n [\"configAccountVersion\", getU16Encoder()],\n [\"compressToPubkey\", getU8Encoder()],\n [\"accountVersion\", getU8Encoder()],\n [\"lamportsPerWrite\", getU32Encoder()],\n [\"compressionAuthority\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"rentSponsor\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"lastClaimedSlot\", getU64Encoder()],\n [\"rentExemptionPaid\", getU32Encoder()],\n [\"reserved\", getU32Encoder()],\n [\"rentConfig\", getRentConfigEncoder()],\n ]);\n}\n\nexport function getCompressionInfoDecoder(): FixedSizeDecoder<CompressionInfo> {\n return getStructDecoder([\n [\"configAccountVersion\", getU16Decoder()],\n [\"compressToPubkey\", getU8Decoder()],\n [\"accountVersion\", getU8Decoder()],\n [\"lamportsPerWrite\", getU32Decoder()],\n [\"compressionAuthority\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"rentSponsor\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"lastClaimedSlot\", getU64Decoder()],\n [\"rentExemptionPaid\", getU32Decoder()],\n [\"reserved\", getU32Decoder()],\n [\"rentConfig\", getRentConfigDecoder()],\n ]);\n}\n\nexport function getCompressionInfoCodec(): FixedSizeCodec<\n CompressionInfoArgs,\n CompressionInfo\n> {\n return combineCodec(getCompressionInfoEncoder(), getCompressionInfoDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type GetDiscriminatedUnionVariant,\n type GetDiscriminatedUnionVariantContent,\n} from \"gill\";\nimport {\n getAddMemberArgsDecoder,\n getAddMemberArgsEncoder,\n getEditMemberArgsDecoder,\n getEditMemberArgsEncoder,\n getRemoveMemberArgsDecoder,\n getRemoveMemberArgsEncoder,\n type AddMemberArgs,\n type AddMemberArgsArgs,\n type EditMemberArgs,\n type EditMemberArgsArgs,\n type RemoveMemberArgs,\n type RemoveMemberArgsArgs,\n} from \".\";\n\nexport type ConfigAction =\n | { __kind: \"EditPermissions\"; fields: readonly [Array<EditMemberArgs>] }\n | { __kind: \"AddMembers\"; fields: readonly [Array<AddMemberArgs>] }\n | { __kind: \"RemoveMembers\"; fields: readonly [Array<RemoveMemberArgs>] }\n | { __kind: \"SetThreshold\"; fields: readonly [number] };\n\nexport type ConfigActionArgs =\n | { __kind: \"EditPermissions\"; fields: readonly [Array<EditMemberArgsArgs>] }\n | { __kind: \"AddMembers\"; fields: readonly [Array<AddMemberArgsArgs>] }\n | { __kind: \"RemoveMembers\"; fields: readonly [Array<RemoveMemberArgsArgs>] }\n | { __kind: \"SetThreshold\"; fields: readonly [number] };\n\nexport function getConfigActionEncoder(): Encoder<ConfigActionArgs> {\n return getDiscriminatedUnionEncoder([\n [\n \"EditPermissions\",\n getStructEncoder([\n [\n \"fields\",\n getTupleEncoder([getArrayEncoder(getEditMemberArgsEncoder())]),\n ],\n ]),\n ],\n [\n \"AddMembers\",\n getStructEncoder([\n [\n \"fields\",\n getTupleEncoder([getArrayEncoder(getAddMemberArgsEncoder())]),\n ],\n ]),\n ],\n [\n \"RemoveMembers\",\n getStructEncoder([\n [\n \"fields\",\n getTupleEncoder([getArrayEncoder(getRemoveMemberArgsEncoder())]),\n ],\n ]),\n ],\n [\n \"SetThreshold\",\n getStructEncoder([[\"fields\", getTupleEncoder([getU8Encoder()])]]),\n ],\n ]);\n}\n\nexport function getConfigActionDecoder(): Decoder<ConfigAction> {\n return getDiscriminatedUnionDecoder([\n [\n \"EditPermissions\",\n getStructDecoder([\n [\n \"fields\",\n getTupleDecoder([getArrayDecoder(getEditMemberArgsDecoder())]),\n ],\n ]),\n ],\n [\n \"AddMembers\",\n getStructDecoder([\n [\n \"fields\",\n getTupleDecoder([getArrayDecoder(getAddMemberArgsDecoder())]),\n ],\n ]),\n ],\n [\n \"RemoveMembers\",\n getStructDecoder([\n [\n \"fields\",\n getTupleDecoder([getArrayDecoder(getRemoveMemberArgsDecoder())]),\n ],\n ]),\n ],\n [\n \"SetThreshold\",\n getStructDecoder([[\"fields\", getTupleDecoder([getU8Decoder()])]]),\n ],\n ]);\n}\n\nexport function getConfigActionCodec(): Codec<ConfigActionArgs, ConfigAction> {\n return combineCodec(getConfigActionEncoder(), getConfigActionDecoder());\n}\n\n// Data Enum Helpers.\nexport function configAction(\n kind: \"EditPermissions\",\n data: GetDiscriminatedUnionVariantContent<\n ConfigActionArgs,\n \"__kind\",\n \"EditPermissions\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<ConfigActionArgs, \"__kind\", \"EditPermissions\">;\nexport function configAction(\n kind: \"AddMembers\",\n data: GetDiscriminatedUnionVariantContent<\n ConfigActionArgs,\n \"__kind\",\n \"AddMembers\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<ConfigActionArgs, \"__kind\", \"AddMembers\">;\nexport function configAction(\n kind: \"RemoveMembers\",\n data: GetDiscriminatedUnionVariantContent<\n ConfigActionArgs,\n \"__kind\",\n \"RemoveMembers\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<ConfigActionArgs, \"__kind\", \"RemoveMembers\">;\nexport function configAction(\n kind: \"SetThreshold\",\n data: GetDiscriminatedUnionVariantContent<\n ConfigActionArgs,\n \"__kind\",\n \"SetThreshold\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<ConfigActionArgs, \"__kind\", \"SetThreshold\">;\nexport function configAction<K extends ConfigActionArgs[\"__kind\"], Data>(\n kind: K,\n data?: Data,\n) {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isConfigAction<K extends ConfigAction[\"__kind\"]>(\n kind: K,\n value: ConfigAction,\n): value is ConfigAction & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\nimport {\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n getPermissionsDecoder,\n getPermissionsEncoder,\n type IPermissions,\n type MemberKey,\n type MemberKeyArgs,\n type PermissionsArgs,\n} from \".\";\n\nexport type EditMemberArgs = {\n memberKey: MemberKey;\n permissions: IPermissions;\n};\n\nexport type EditMemberArgsArgs = {\n memberKey: MemberKeyArgs;\n permissions: PermissionsArgs;\n};\n\nexport function getEditMemberArgsEncoder(): FixedSizeEncoder<EditMemberArgsArgs> {\n return getStructEncoder([\n [\"memberKey\", getMemberKeyEncoder()],\n [\"permissions\", getPermissionsEncoder()],\n ]);\n}\n\nexport function getEditMemberArgsDecoder(): FixedSizeDecoder<EditMemberArgs> {\n return getStructDecoder([\n [\"memberKey\", getMemberKeyDecoder()],\n [\"permissions\", getPermissionsDecoder()],\n ]);\n}\n\nexport function getEditMemberArgsCodec(): FixedSizeCodec<\n EditMemberArgsArgs,\n EditMemberArgs\n> {\n return combineCodec(getEditMemberArgsEncoder(), getEditMemberArgsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n type MemberKey,\n type MemberKeyArgs,\n} from \".\";\n\nexport type ExpectedSigner = {\n memberKey: MemberKey;\n messageHash: Option<ReadonlyUint8Array>;\n};\n\nexport type ExpectedSignerArgs = {\n memberKey: MemberKeyArgs;\n messageHash: OptionOrNullable<ReadonlyUint8Array>;\n};\n\nexport function getExpectedSignerEncoder(): Encoder<ExpectedSignerArgs> {\n return getStructEncoder([\n [\"memberKey\", getMemberKeyEncoder()],\n [\"messageHash\", getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32))],\n ]);\n}\n\nexport function getExpectedSignerDecoder(): Decoder<ExpectedSigner> {\n return getStructDecoder([\n [\"memberKey\", getMemberKeyDecoder()],\n [\"messageHash\", getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n ]);\n}\n\nexport function getExpectedSignerCodec(): Codec<\n ExpectedSignerArgs,\n ExpectedSigner\n> {\n return combineCodec(getExpectedSignerEncoder(), getExpectedSignerDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getUnitDecoder,\n getUnitEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n type GetDiscriminatedUnionVariant,\n type GetDiscriminatedUnionVariantContent,\n} from \"gill\";\nimport {\n getCompressedOnlyExtensionDecoder,\n getCompressedOnlyExtensionEncoder,\n getCompressibleExtensionDecoder,\n getCompressibleExtensionEncoder,\n getPausableAccountExtensionDecoder,\n getPausableAccountExtensionEncoder,\n getPermanentDelegateAccountExtensionDecoder,\n getPermanentDelegateAccountExtensionEncoder,\n getTokenMetadataDecoder,\n getTokenMetadataEncoder,\n getTransferFeeAccountExtensionDecoder,\n getTransferFeeAccountExtensionEncoder,\n getTransferHookAccountExtensionDecoder,\n getTransferHookAccountExtensionEncoder,\n type CompressedOnlyExtension,\n type CompressedOnlyExtensionArgs,\n type CompressibleExtension,\n type CompressibleExtensionArgs,\n type PausableAccountExtension,\n type PausableAccountExtensionArgs,\n type PermanentDelegateAccountExtension,\n type PermanentDelegateAccountExtensionArgs,\n type TokenMetadata,\n type TokenMetadataArgs,\n type TransferFeeAccountExtension,\n type TransferFeeAccountExtensionArgs,\n type TransferHookAccountExtension,\n type TransferHookAccountExtensionArgs,\n} from \".\";\n\nexport type ExtensionStruct =\n | { __kind: \"Placeholder0\" }\n | { __kind: \"Placeholder1\" }\n | { __kind: \"Placeholder2\" }\n | { __kind: \"Placeholder3\" }\n | { __kind: \"Placeholder4\" }\n | { __kind: \"Placeholder5\" }\n | { __kind: \"Placeholder6\" }\n | { __kind: \"Placeholder7\" }\n | { __kind: \"Placeholder8\" }\n | { __kind: \"Placeholder9\" }\n | { __kind: \"Placeholder10\" }\n | { __kind: \"Placeholder11\" }\n | { __kind: \"Placeholder12\" }\n | { __kind: \"Placeholder13\" }\n | { __kind: \"Placeholder14\" }\n | { __kind: \"Placeholder15\" }\n | { __kind: \"Placeholder16\" }\n | { __kind: \"Placeholder17\" }\n | { __kind: \"Placeholder18\" }\n | { __kind: \"TokenMetadata\"; fields: readonly [TokenMetadata] }\n | { __kind: \"Placeholder20\" }\n | { __kind: \"Placeholder21\" }\n | { __kind: \"Placeholder22\" }\n | { __kind: \"Placeholder23\" }\n | { __kind: \"Placeholder24\" }\n | { __kind: \"Placeholder25\" }\n | { __kind: \"Placeholder26\" }\n | { __kind: \"PausableAccount\"; fields: readonly [PausableAccountExtension] }\n | {\n __kind: \"PermanentDelegateAccount\";\n fields: readonly [PermanentDelegateAccountExtension];\n }\n | {\n __kind: \"TransferFeeAccount\";\n fields: readonly [TransferFeeAccountExtension];\n }\n | {\n __kind: \"TransferHookAccount\";\n fields: readonly [TransferHookAccountExtension];\n }\n | { __kind: \"CompressedOnly\"; fields: readonly [CompressedOnlyExtension] }\n | { __kind: \"Compressible\"; fields: readonly [CompressibleExtension] };\n\nexport type ExtensionStructArgs =\n | { __kind: \"Placeholder0\" }\n | { __kind: \"Placeholder1\" }\n | { __kind: \"Placeholder2\" }\n | { __kind: \"Placeholder3\" }\n | { __kind: \"Placeholder4\" }\n | { __kind: \"Placeholder5\" }\n | { __kind: \"Placeholder6\" }\n | { __kind: \"Placeholder7\" }\n | { __kind: \"Placeholder8\" }\n | { __kind: \"Placeholder9\" }\n | { __kind: \"Placeholder10\" }\n | { __kind: \"Placeholder11\" }\n | { __kind: \"Placeholder12\" }\n | { __kind: \"Placeholder13\" }\n | { __kind: \"Placeholder14\" }\n | { __kind: \"Placeholder15\" }\n | { __kind: \"Placeholder16\" }\n | { __kind: \"Placeholder17\" }\n | { __kind: \"Placeholder18\" }\n | { __kind: \"TokenMetadata\"; fields: readonly [TokenMetadataArgs] }\n | { __kind: \"Placeholder20\" }\n | { __kind: \"Placeholder21\" }\n | { __kind: \"Placeholder22\" }\n | { __kind: \"Placeholder23\" }\n | { __kind: \"Placeholder24\" }\n | { __kind: \"Placeholder25\" }\n | { __kind: \"Placeholder26\" }\n | {\n __kind: \"PausableAccount\";\n fields: readonly [PausableAccountExtensionArgs];\n }\n | {\n __kind: \"PermanentDelegateAccount\";\n fields: readonly [PermanentDelegateAccountExtensionArgs];\n }\n | {\n __kind: \"TransferFeeAccount\";\n fields: readonly [TransferFeeAccountExtensionArgs];\n }\n | {\n __kind: \"TransferHookAccount\";\n fields: readonly [TransferHookAccountExtensionArgs];\n }\n | { __kind: \"CompressedOnly\"; fields: readonly [CompressedOnlyExtensionArgs] }\n | { __kind: \"Compressible\"; fields: readonly [CompressibleExtensionArgs] };\n\nexport function getExtensionStructEncoder(): Encoder<ExtensionStructArgs> {\n return getDiscriminatedUnionEncoder([\n [\"Placeholder0\", getUnitEncoder()],\n [\"Placeholder1\", getUnitEncoder()],\n [\"Placeholder2\", getUnitEncoder()],\n [\"Placeholder3\", getUnitEncoder()],\n [\"Placeholder4\", getUnitEncoder()],\n [\"Placeholder5\", getUnitEncoder()],\n [\"Placeholder6\", getUnitEncoder()],\n [\"Placeholder7\", getUnitEncoder()],\n [\"Placeholder8\", getUnitEncoder()],\n [\"Placeholder9\", getUnitEncoder()],\n [\"Placeholder10\", getUnitEncoder()],\n [\"Placeholder11\", getUnitEncoder()],\n [\"Placeholder12\", getUnitEncoder()],\n [\"Placeholder13\", getUnitEncoder()],\n [\"Placeholder14\", getUnitEncoder()],\n [\"Placeholder15\", getUnitEncoder()],\n [\"Placeholder16\", getUnitEncoder()],\n [\"Placeholder17\", getUnitEncoder()],\n [\"Placeholder18\", getUnitEncoder()],\n [\n \"TokenMetadata\",\n getStructEncoder([\n [\"fields\", getTupleEncoder([getTokenMetadataEncoder()])],\n ]),\n ],\n [\"Placeholder20\", getUnitEncoder()],\n [\"Placeholder21\", getUnitEncoder()],\n [\"Placeholder22\", getUnitEncoder()],\n [\"Placeholder23\", getUnitEncoder()],\n [\"Placeholder24\", getUnitEncoder()],\n [\"Placeholder25\", getUnitEncoder()],\n [\"Placeholder26\", getUnitEncoder()],\n [\n \"PausableAccount\",\n getStructEncoder([\n [\"fields\", getTupleEncoder([getPausableAccountExtensionEncoder()])],\n ]),\n ],\n [\n \"PermanentDelegateAccount\",\n getStructEncoder([\n [\n \"fields\",\n getTupleEncoder([getPermanentDelegateAccountExtensionEncoder()]),\n ],\n ]),\n ],\n [\n \"TransferFeeAccount\",\n getStructEncoder([\n [\"fields\", getTupleEncoder([getTransferFeeAccountExtensionEncoder()])],\n ]),\n ],\n [\n \"TransferHookAccount\",\n getStructEncoder([\n [\"fields\", getTupleEncoder([getTransferHookAccountExtensionEncoder()])],\n ]),\n ],\n [\n \"CompressedOnly\",\n getStructEncoder([\n [\"fields\", getTupleEncoder([getCompressedOnlyExtensionEncoder()])],\n ]),\n ],\n [\n \"Compressible\",\n getStructEncoder([\n [\"fields\", getTupleEncoder([getCompressibleExtensionEncoder()])],\n ]),\n ],\n ]);\n}\n\nexport function getExtensionStructDecoder(): Decoder<ExtensionStruct> {\n return getDiscriminatedUnionDecoder([\n [\"Placeholder0\", getUnitDecoder()],\n [\"Placeholder1\", getUnitDecoder()],\n [\"Placeholder2\", getUnitDecoder()],\n [\"Placeholder3\", getUnitDecoder()],\n [\"Placeholder4\", getUnitDecoder()],\n [\"Placeholder5\", getUnitDecoder()],\n [\"Placeholder6\", getUnitDecoder()],\n [\"Placeholder7\", getUnitDecoder()],\n [\"Placeholder8\", getUnitDecoder()],\n [\"Placeholder9\", getUnitDecoder()],\n [\"Placeholder10\", getUnitDecoder()],\n [\"Placeholder11\", getUnitDecoder()],\n [\"Placeholder12\", getUnitDecoder()],\n [\"Placeholder13\", getUnitDecoder()],\n [\"Placeholder14\", getUnitDecoder()],\n [\"Placeholder15\", getUnitDecoder()],\n [\"Placeholder16\", getUnitDecoder()],\n [\"Placeholder17\", getUnitDecoder()],\n [\"Placeholder18\", getUnitDecoder()],\n [\n \"TokenMetadata\",\n getStructDecoder([\n [\"fields\", getTupleDecoder([getTokenMetadataDecoder()])],\n ]),\n ],\n [\"Placeholder20\", getUnitDecoder()],\n [\"Placeholder21\", getUnitDecoder()],\n [\"Placeholder22\", getUnitDecoder()],\n [\"Placeholder23\", getUnitDecoder()],\n [\"Placeholder24\", getUnitDecoder()],\n [\"Placeholder25\", getUnitDecoder()],\n [\"Placeholder26\", getUnitDecoder()],\n [\n \"PausableAccount\",\n getStructDecoder([\n [\"fields\", getTupleDecoder([getPausableAccountExtensionDecoder()])],\n ]),\n ],\n [\n \"PermanentDelegateAccount\",\n getStructDecoder([\n [\n \"fields\",\n getTupleDecoder([getPermanentDelegateAccountExtensionDecoder()]),\n ],\n ]),\n ],\n [\n \"TransferFeeAccount\",\n getStructDecoder([\n [\"fields\", getTupleDecoder([getTransferFeeAccountExtensionDecoder()])],\n ]),\n ],\n [\n \"TransferHookAccount\",\n getStructDecoder([\n [\"fields\", getTupleDecoder([getTransferHookAccountExtensionDecoder()])],\n ]),\n ],\n [\n \"CompressedOnly\",\n getStructDecoder([\n [\"fields\", getTupleDecoder([getCompressedOnlyExtensionDecoder()])],\n ]),\n ],\n [\n \"Compressible\",\n getStructDecoder([\n [\"fields\", getTupleDecoder([getCompressibleExtensionDecoder()])],\n ]),\n ],\n ]);\n}\n\nexport function getExtensionStructCodec(): Codec<\n ExtensionStructArgs,\n ExtensionStruct\n> {\n return combineCodec(getExtensionStructEncoder(), getExtensionStructDecoder());\n}\n\n// Data Enum Helpers.\nexport function extensionStruct(\n kind: \"Placeholder0\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder0\">;\nexport function extensionStruct(\n kind: \"Placeholder1\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder1\">;\nexport function extensionStruct(\n kind: \"Placeholder2\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder2\">;\nexport function extensionStruct(\n kind: \"Placeholder3\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder3\">;\nexport function extensionStruct(\n kind: \"Placeholder4\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder4\">;\nexport function extensionStruct(\n kind: \"Placeholder5\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder5\">;\nexport function extensionStruct(\n kind: \"Placeholder6\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder6\">;\nexport function extensionStruct(\n kind: \"Placeholder7\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder7\">;\nexport function extensionStruct(\n kind: \"Placeholder8\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder8\">;\nexport function extensionStruct(\n kind: \"Placeholder9\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder9\">;\nexport function extensionStruct(\n kind: \"Placeholder10\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder10\">;\nexport function extensionStruct(\n kind: \"Placeholder11\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder11\">;\nexport function extensionStruct(\n kind: \"Placeholder12\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder12\">;\nexport function extensionStruct(\n kind: \"Placeholder13\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder13\">;\nexport function extensionStruct(\n kind: \"Placeholder14\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder14\">;\nexport function extensionStruct(\n kind: \"Placeholder15\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder15\">;\nexport function extensionStruct(\n kind: \"Placeholder16\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder16\">;\nexport function extensionStruct(\n kind: \"Placeholder17\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder17\">;\nexport function extensionStruct(\n kind: \"Placeholder18\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder18\">;\nexport function extensionStruct(\n kind: \"TokenMetadata\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"TokenMetadata\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"TokenMetadata\">;\nexport function extensionStruct(\n kind: \"Placeholder20\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder20\">;\nexport function extensionStruct(\n kind: \"Placeholder21\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder21\">;\nexport function extensionStruct(\n kind: \"Placeholder22\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder22\">;\nexport function extensionStruct(\n kind: \"Placeholder23\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder23\">;\nexport function extensionStruct(\n kind: \"Placeholder24\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder24\">;\nexport function extensionStruct(\n kind: \"Placeholder25\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder25\">;\nexport function extensionStruct(\n kind: \"Placeholder26\",\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Placeholder26\">;\nexport function extensionStruct(\n kind: \"PausableAccount\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"PausableAccount\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n ExtensionStructArgs,\n \"__kind\",\n \"PausableAccount\"\n>;\nexport function extensionStruct(\n kind: \"PermanentDelegateAccount\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"PermanentDelegateAccount\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n ExtensionStructArgs,\n \"__kind\",\n \"PermanentDelegateAccount\"\n>;\nexport function extensionStruct(\n kind: \"TransferFeeAccount\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"TransferFeeAccount\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n ExtensionStructArgs,\n \"__kind\",\n \"TransferFeeAccount\"\n>;\nexport function extensionStruct(\n kind: \"TransferHookAccount\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"TransferHookAccount\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n ExtensionStructArgs,\n \"__kind\",\n \"TransferHookAccount\"\n>;\nexport function extensionStruct(\n kind: \"CompressedOnly\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"CompressedOnly\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n ExtensionStructArgs,\n \"__kind\",\n \"CompressedOnly\"\n>;\nexport function extensionStruct(\n kind: \"Compressible\",\n data: GetDiscriminatedUnionVariantContent<\n ExtensionStructArgs,\n \"__kind\",\n \"Compressible\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<ExtensionStructArgs, \"__kind\", \"Compressible\">;\nexport function extensionStruct<K extends ExtensionStructArgs[\"__kind\"], Data>(\n kind: K,\n data?: Data,\n) {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isExtensionStruct<K extends ExtensionStruct[\"__kind\"]>(\n kind: K,\n value: ExtensionStruct,\n): value is ExtensionStruct & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\nimport {\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n getPermissionsDecoder,\n getPermissionsEncoder,\n type IPermissions,\n type MemberKey,\n type MemberKeyArgs,\n type PermissionsArgs,\n} from \".\";\n\nexport type Member = {\n pubkey: MemberKey;\n role: number;\n permissions: IPermissions;\n padding: number;\n isDelegate: number;\n};\n\nexport type MemberArgs = {\n pubkey: MemberKeyArgs;\n role: number;\n permissions: PermissionsArgs;\n padding: number;\n isDelegate: number;\n};\n\nexport function getMemberEncoder(): FixedSizeEncoder<MemberArgs> {\n return getStructEncoder([\n [\"pubkey\", getMemberKeyEncoder()],\n [\"role\", getU8Encoder()],\n [\"permissions\", getPermissionsEncoder()],\n [\"padding\", getU8Encoder()],\n [\"isDelegate\", getU8Encoder()],\n ]);\n}\n\nexport function getMemberDecoder(): FixedSizeDecoder<Member> {\n return getStructDecoder([\n [\"pubkey\", getMemberKeyDecoder()],\n [\"role\", getU8Decoder()],\n [\"permissions\", getPermissionsDecoder()],\n [\"padding\", getU8Decoder()],\n [\"isDelegate\", getU8Decoder()],\n ]);\n}\n\nexport function getMemberCodec(): FixedSizeCodec<MemberArgs, Member> {\n return combineCodec(getMemberEncoder(), getMemberDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type MemberKey = { keyType: number; key: ReadonlyUint8Array };\n\nexport type MemberKeyArgs = MemberKey;\n\nexport function getMemberKeyEncoder(): FixedSizeEncoder<MemberKeyArgs> {\n return getStructEncoder([\n [\"keyType\", getU8Encoder()],\n [\"key\", fixEncoderSize(getBytesEncoder(), 33)],\n ]);\n}\n\nexport function getMemberKeyDecoder(): FixedSizeDecoder<MemberKey> {\n return getStructDecoder([\n [\"keyType\", getU8Decoder()],\n [\"key\", fixDecoderSize(getBytesDecoder(), 33)],\n ]);\n}\n\nexport function getMemberKeyCodec(): FixedSizeCodec<MemberKeyArgs, MemberKey> {\n return combineCodec(getMemberKeyEncoder(), getMemberKeyDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\nexport type PackedMerkleContext = {\n merkleTreePubkeyIndex: number;\n queuePubkeyIndex: number;\n leafIndex: number;\n proveByIndex: boolean;\n};\n\nexport type PackedMerkleContextArgs = PackedMerkleContext;\n\nexport function getPackedMerkleContextEncoder(): FixedSizeEncoder<PackedMerkleContextArgs> {\n return getStructEncoder([\n [\"merkleTreePubkeyIndex\", getU8Encoder()],\n [\"queuePubkeyIndex\", getU8Encoder()],\n [\"leafIndex\", getU32Encoder()],\n [\"proveByIndex\", getBooleanEncoder()],\n ]);\n}\n\nexport function getPackedMerkleContextDecoder(): FixedSizeDecoder<PackedMerkleContext> {\n return getStructDecoder([\n [\"merkleTreePubkeyIndex\", getU8Decoder()],\n [\"queuePubkeyIndex\", getU8Decoder()],\n [\"leafIndex\", getU32Decoder()],\n [\"proveByIndex\", getBooleanDecoder()],\n ]);\n}\n\nexport function getPackedMerkleContextCodec(): FixedSizeCodec<\n PackedMerkleContextArgs,\n PackedMerkleContext\n> {\n return combineCodec(\n getPackedMerkleContextEncoder(),\n getPackedMerkleContextDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/**\n * Marker extension indicating the account belongs to a pausable mint.\n * This is a zero-size marker (no data) that indicates the token account's\n * mint has the SPL Token 2022 Pausable extension.\n *\n * When present, token operations must check the SPL mint's PausableConfig\n * to determine if the mint is paused before allowing transfers.\n */\nexport type PausableAccountExtension = {};\n\nexport type PausableAccountExtensionArgs = PausableAccountExtension;\n\nexport function getPausableAccountExtensionEncoder(): FixedSizeEncoder<PausableAccountExtensionArgs> {\n return getStructEncoder([]);\n}\n\nexport function getPausableAccountExtensionDecoder(): FixedSizeDecoder<PausableAccountExtension> {\n return getStructDecoder([]);\n}\n\nexport function getPausableAccountExtensionCodec(): FixedSizeCodec<\n PausableAccountExtensionArgs,\n PausableAccountExtension\n> {\n return combineCodec(\n getPausableAccountExtensionEncoder(),\n getPausableAccountExtensionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/**\n * Marker extension indicating the account belongs to a mint with permanent delegate.\n * This is a zero-size marker (no data) that indicates the token account's\n * mint has the SPL Token 2022 Permanent Delegate extension.\n *\n * When present, token operations must check the SPL mint's PermanentDelegate\n * to determine the delegate authority before allowing transfers/burns.\n */\nexport type PermanentDelegateAccountExtension = {};\n\nexport type PermanentDelegateAccountExtensionArgs =\n PermanentDelegateAccountExtension;\n\nexport function getPermanentDelegateAccountExtensionEncoder(): FixedSizeEncoder<PermanentDelegateAccountExtensionArgs> {\n return getStructEncoder([]);\n}\n\nexport function getPermanentDelegateAccountExtensionDecoder(): FixedSizeDecoder<PermanentDelegateAccountExtension> {\n return getStructDecoder([]);\n}\n\nexport function getPermanentDelegateAccountExtensionCodec(): FixedSizeCodec<\n PermanentDelegateAccountExtensionArgs,\n PermanentDelegateAccountExtension\n> {\n return combineCodec(\n getPermanentDelegateAccountExtensionEncoder(),\n getPermanentDelegateAccountExtensionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/** Bitmask for permissions. */\nexport type IPermissions = { mask: number };\n\nexport type PermissionsArgs = IPermissions;\n\nexport function getPermissionsEncoder(): FixedSizeEncoder<PermissionsArgs> {\n return getStructEncoder([[\"mask\", getU8Encoder()]]);\n}\n\nexport function getPermissionsDecoder(): FixedSizeDecoder<IPermissions> {\n return getStructDecoder([[\"mask\", getU8Decoder()]]);\n}\n\nexport function getPermissionsCodec(): FixedSizeCodec<\n PermissionsArgs,\n IPermissions\n> {\n return combineCodec(getPermissionsEncoder(), getPermissionsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n} from \"gill\";\nimport {\n getCompressedProofDecoder,\n getCompressedProofEncoder,\n type CompressedProof,\n type CompressedProofArgs,\n} from \".\";\n\nexport type ProofArgs = {\n proof: Option<CompressedProof>;\n lightCpiAccountsStartIndex: number;\n};\n\nexport type ProofArgsArgs = {\n proof: OptionOrNullable<CompressedProofArgs>;\n lightCpiAccountsStartIndex: number;\n};\n\nexport function getProofArgsEncoder(): Encoder<ProofArgsArgs> {\n return getStructEncoder([\n [\"proof\", getOptionEncoder(getCompressedProofEncoder())],\n [\"lightCpiAccountsStartIndex\", getU8Encoder()],\n ]);\n}\n\nexport function getProofArgsDecoder(): Decoder<ProofArgs> {\n return getStructDecoder([\n [\"proof\", getOptionDecoder(getCompressedProofDecoder())],\n [\"lightCpiAccountsStartIndex\", getU8Decoder()],\n ]);\n}\n\nexport function getProofArgsCodec(): Codec<ProofArgsArgs, ProofArgs> {\n return combineCodec(getProofArgsEncoder(), getProofArgsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\nimport {\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n type MemberKey,\n type MemberKeyArgs,\n} from \".\";\n\nexport type RemoveMemberArgs = { memberKey: MemberKey };\n\nexport type RemoveMemberArgsArgs = { memberKey: MemberKeyArgs };\n\nexport function getRemoveMemberArgsEncoder(): FixedSizeEncoder<RemoveMemberArgsArgs> {\n return getStructEncoder([[\"memberKey\", getMemberKeyEncoder()]]);\n}\n\nexport function getRemoveMemberArgsDecoder(): FixedSizeDecoder<RemoveMemberArgs> {\n return getStructDecoder([[\"memberKey\", getMemberKeyDecoder()]]);\n}\n\nexport function getRemoveMemberArgsCodec(): FixedSizeCodec<\n RemoveMemberArgsArgs,\n RemoveMemberArgs\n> {\n return combineCodec(\n getRemoveMemberArgsEncoder(),\n getRemoveMemberArgsDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/**\n * Rent function parameters,\n * used to calculate whether the account is compressible.\n */\nexport type RentConfig = {\n /** Base rent constant: rent = base_rent + num_bytes * lamports_per_byte_per_epoch */\n baseRent: number;\n compressionCost: number;\n lamportsPerBytePerEpoch: number;\n maxFundedEpochs: number;\n /**\n * Maximum lamports that can be charged per top-up operation.\n * Protects against griefing by accounts with high lamports_per_write.\n */\n maxTopUp: number;\n};\n\nexport type RentConfigArgs = RentConfig;\n\nexport function getRentConfigEncoder(): FixedSizeEncoder<RentConfigArgs> {\n return getStructEncoder([\n [\"baseRent\", getU16Encoder()],\n [\"compressionCost\", getU16Encoder()],\n [\"lamportsPerBytePerEpoch\", getU8Encoder()],\n [\"maxFundedEpochs\", getU8Encoder()],\n [\"maxTopUp\", getU16Encoder()],\n ]);\n}\n\nexport function getRentConfigDecoder(): FixedSizeDecoder<RentConfig> {\n return getStructDecoder([\n [\"baseRent\", getU16Decoder()],\n [\"compressionCost\", getU16Decoder()],\n [\"lamportsPerBytePerEpoch\", getU8Decoder()],\n [\"maxFundedEpochs\", getU8Decoder()],\n [\"maxTopUp\", getU16Decoder()],\n ]);\n}\n\nexport function getRentConfigCodec(): FixedSizeCodec<\n RentConfigArgs,\n RentConfig\n> {\n return combineCodec(getRentConfigEncoder(), getRentConfigDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getTupleDecoder,\n getTupleEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type Secp256r1Pubkey = readonly [ReadonlyUint8Array];\n\nexport type Secp256r1PubkeyArgs = Secp256r1Pubkey;\n\nexport function getSecp256r1PubkeyEncoder(): FixedSizeEncoder<Secp256r1PubkeyArgs> {\n return getTupleEncoder([fixEncoderSize(getBytesEncoder(), 33)]);\n}\n\nexport function getSecp256r1PubkeyDecoder(): FixedSizeDecoder<Secp256r1Pubkey> {\n return getTupleDecoder([fixDecoderSize(getBytesDecoder(), 33)]);\n}\n\nexport function getSecp256r1PubkeyCodec(): FixedSizeCodec<\n Secp256r1PubkeyArgs,\n Secp256r1Pubkey\n> {\n return combineCodec(getSecp256r1PubkeyEncoder(), getSecp256r1PubkeyDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type Secp256r1VerifyArgs = {\n signedMessageIndex: number;\n slotNumber: bigint;\n originIndex: number;\n crossOrigin: boolean;\n truncatedClientDataJson: ReadonlyUint8Array;\n clientAndDeviceHash: ReadonlyUint8Array;\n};\n\nexport type Secp256r1VerifyArgsArgs = {\n signedMessageIndex: number;\n slotNumber: number | bigint;\n originIndex: number;\n crossOrigin: boolean;\n truncatedClientDataJson: ReadonlyUint8Array;\n clientAndDeviceHash: ReadonlyUint8Array;\n};\n\nexport function getSecp256r1VerifyArgsEncoder(): Encoder<Secp256r1VerifyArgsArgs> {\n return getStructEncoder([\n [\"signedMessageIndex\", getU8Encoder()],\n [\"slotNumber\", getU64Encoder()],\n [\"originIndex\", getU8Encoder()],\n [\"crossOrigin\", getBooleanEncoder()],\n [\n \"truncatedClientDataJson\",\n addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n ],\n [\"clientAndDeviceHash\", fixEncoderSize(getBytesEncoder(), 32)],\n ]);\n}\n\nexport function getSecp256r1VerifyArgsDecoder(): Decoder<Secp256r1VerifyArgs> {\n return getStructDecoder([\n [\"signedMessageIndex\", getU8Decoder()],\n [\"slotNumber\", getU64Decoder()],\n [\"originIndex\", getU8Decoder()],\n [\"crossOrigin\", getBooleanDecoder()],\n [\n \"truncatedClientDataJson\",\n addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n ],\n [\"clientAndDeviceHash\", fixDecoderSize(getBytesDecoder(), 32)],\n ]);\n}\n\nexport function getSecp256r1VerifyArgsCodec(): Codec<\n Secp256r1VerifyArgsArgs,\n Secp256r1VerifyArgs\n> {\n return combineCodec(\n getSecp256r1VerifyArgsEncoder(),\n getSecp256r1VerifyArgsDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from \"gill\";\nimport {\n getSecp256r1VerifyArgsDecoder,\n getSecp256r1VerifyArgsEncoder,\n type Secp256r1VerifyArgs,\n type Secp256r1VerifyArgsArgs,\n} from \".\";\n\nexport type Secp256r1VerifyArgsWithDomainConfigIndex = {\n verifyArgs: Secp256r1VerifyArgs;\n domainConfigIndex: number;\n};\n\nexport type Secp256r1VerifyArgsWithDomainConfigIndexArgs = {\n verifyArgs: Secp256r1VerifyArgsArgs;\n domainConfigIndex: number;\n};\n\nexport function getSecp256r1VerifyArgsWithDomainConfigIndexEncoder(): Encoder<Secp256r1VerifyArgsWithDomainConfigIndexArgs> {\n return getStructEncoder([\n [\"verifyArgs\", getSecp256r1VerifyArgsEncoder()],\n [\"domainConfigIndex\", getU8Encoder()],\n ]);\n}\n\nexport function getSecp256r1VerifyArgsWithDomainConfigIndexDecoder(): Decoder<Secp256r1VerifyArgsWithDomainConfigIndex> {\n return getStructDecoder([\n [\"verifyArgs\", getSecp256r1VerifyArgsDecoder()],\n [\"domainConfigIndex\", getU8Decoder()],\n ]);\n}\n\nexport function getSecp256r1VerifyArgsWithDomainConfigIndexCodec(): Codec<\n Secp256r1VerifyArgsWithDomainConfigIndexArgs,\n Secp256r1VerifyArgsWithDomainConfigIndex\n> {\n return combineCodec(\n getSecp256r1VerifyArgsWithDomainConfigIndexEncoder(),\n getSecp256r1VerifyArgsWithDomainConfigIndexDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\nexport type SettingsIndexWithDelegateInfo = {\n index: bigint;\n isDelegate: boolean;\n};\n\nexport type SettingsIndexWithDelegateInfoArgs = {\n index: number | bigint;\n isDelegate: boolean;\n};\n\nexport function getSettingsIndexWithDelegateInfoEncoder(): FixedSizeEncoder<SettingsIndexWithDelegateInfoArgs> {\n return getStructEncoder([\n [\"index\", getU128Encoder()],\n [\"isDelegate\", getBooleanEncoder()],\n ]);\n}\n\nexport function getSettingsIndexWithDelegateInfoDecoder(): FixedSizeDecoder<SettingsIndexWithDelegateInfo> {\n return getStructDecoder([\n [\"index\", getU128Decoder()],\n [\"isDelegate\", getBooleanDecoder()],\n ]);\n}\n\nexport function getSettingsIndexWithDelegateInfoCodec(): FixedSizeCodec<\n SettingsIndexWithDelegateInfoArgs,\n SettingsIndexWithDelegateInfo\n> {\n return combineCodec(\n getSettingsIndexWithDelegateInfoEncoder(),\n getSettingsIndexWithDelegateInfoDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\nexport type SplInterfacePdaArgs = { index: number; restricted: boolean };\n\nexport type SplInterfacePdaArgsArgs = SplInterfacePdaArgs;\n\nexport function getSplInterfacePdaArgsEncoder(): FixedSizeEncoder<SplInterfacePdaArgsArgs> {\n return getStructEncoder([\n [\"index\", getU8Encoder()],\n [\"restricted\", getBooleanEncoder()],\n ]);\n}\n\nexport function getSplInterfacePdaArgsDecoder(): FixedSizeDecoder<SplInterfacePdaArgs> {\n return getStructDecoder([\n [\"index\", getU8Decoder()],\n [\"restricted\", getBooleanDecoder()],\n ]);\n}\n\nexport function getSplInterfacePdaArgsCodec(): FixedSizeCodec<\n SplInterfacePdaArgsArgs,\n SplInterfacePdaArgs\n> {\n return combineCodec(\n getSplInterfacePdaArgsEncoder(),\n getSplInterfacePdaArgsDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n getAdditionalMetadataDecoder,\n getAdditionalMetadataEncoder,\n type AdditionalMetadata,\n type AdditionalMetadataArgs,\n} from \".\";\n\n/** Used for onchain serialization */\nexport type TokenMetadata = {\n /**\n * The authority that can sign to update the metadata\n * None if zero\n */\n updateAuthority: Address;\n /**\n * The associated mint, used to counter spoofing to be sure that metadata\n * belongs to a particular mint\n */\n mint: Address;\n /** The longer name of the token */\n name: ReadonlyUint8Array;\n /** The shortened symbol for the token */\n symbol: ReadonlyUint8Array;\n /** The URI pointing to richer metadata */\n uri: ReadonlyUint8Array;\n /**\n * Any additional metadata about the token as key-value pairs. The program\n * must avoid storing the same key twice.\n */\n additionalMetadata: Array<AdditionalMetadata>;\n};\n\nexport type TokenMetadataArgs = {\n /**\n * The authority that can sign to update the metadata\n * None if zero\n */\n updateAuthority: Address;\n /**\n * The associated mint, used to counter spoofing to be sure that metadata\n * belongs to a particular mint\n */\n mint: Address;\n /** The longer name of the token */\n name: ReadonlyUint8Array;\n /** The shortened symbol for the token */\n symbol: ReadonlyUint8Array;\n /** The URI pointing to richer metadata */\n uri: ReadonlyUint8Array;\n /**\n * Any additional metadata about the token as key-value pairs. The program\n * must avoid storing the same key twice.\n */\n additionalMetadata: Array<AdditionalMetadataArgs>;\n};\n\nexport function getTokenMetadataEncoder(): Encoder<TokenMetadataArgs> {\n return getStructEncoder([\n [\"updateAuthority\", getAddressEncoder()],\n [\"mint\", getAddressEncoder()],\n [\"name\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n [\"symbol\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n [\"uri\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n [\"additionalMetadata\", getArrayEncoder(getAdditionalMetadataEncoder())],\n ]);\n}\n\nexport function getTokenMetadataDecoder(): Decoder<TokenMetadata> {\n return getStructDecoder([\n [\"updateAuthority\", getAddressDecoder()],\n [\"mint\", getAddressDecoder()],\n [\"name\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n [\"symbol\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n [\"uri\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n [\"additionalMetadata\", getArrayDecoder(getAdditionalMetadataDecoder())],\n ]);\n}\n\nexport function getTokenMetadataCodec(): Codec<\n TokenMetadataArgs,\n TokenMetadata\n> {\n return combineCodec(getTokenMetadataEncoder(), getTokenMetadataDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nexport type TransactionMessageAddressTableLookup = {\n lookupTableAddressIndex: number;\n writableIndexes: ReadonlyUint8Array;\n readonlyIndexes: ReadonlyUint8Array;\n};\n\nexport type TransactionMessageAddressTableLookupArgs =\n TransactionMessageAddressTableLookup;\n\nexport function getTransactionMessageAddressTableLookupEncoder(): Encoder<TransactionMessageAddressTableLookupArgs> {\n return getStructEncoder([\n [\"lookupTableAddressIndex\", getU8Encoder()],\n [\n \"writableIndexes\",\n addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n ],\n [\n \"readonlyIndexes\",\n addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n ],\n ]);\n}\n\nexport function getTransactionMessageAddressTableLookupDecoder(): Decoder<TransactionMessageAddressTableLookup> {\n return getStructDecoder([\n [\"lookupTableAddressIndex\", getU8Decoder()],\n [\n \"writableIndexes\",\n addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n ],\n [\n \"readonlyIndexes\",\n addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n ],\n ]);\n}\n\nexport function getTransactionMessageAddressTableLookupCodec(): Codec<\n TransactionMessageAddressTableLookupArgs,\n TransactionMessageAddressTableLookup\n> {\n return combineCodec(\n getTransactionMessageAddressTableLookupEncoder(),\n getTransactionMessageAddressTableLookupDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type GetDiscriminatedUnionVariant,\n type GetDiscriminatedUnionVariantContent,\n} from \"gill\";\nimport {\n getSecp256r1VerifyArgsWithDomainConfigIndexDecoder,\n getSecp256r1VerifyArgsWithDomainConfigIndexEncoder,\n type Secp256r1VerifyArgsWithDomainConfigIndex,\n type Secp256r1VerifyArgsWithDomainConfigIndexArgs,\n} from \".\";\n\nexport type TransactionSyncSigners =\n | { __kind: \"Ed25519\"; fields: readonly [number] }\n | {\n __kind: \"Secp256r1\";\n fields: readonly [Secp256r1VerifyArgsWithDomainConfigIndex];\n };\n\nexport type TransactionSyncSignersArgs =\n | { __kind: \"Ed25519\"; fields: readonly [number] }\n | {\n __kind: \"Secp256r1\";\n fields: readonly [Secp256r1VerifyArgsWithDomainConfigIndexArgs];\n };\n\nexport function getTransactionSyncSignersEncoder(): Encoder<TransactionSyncSignersArgs> {\n return getDiscriminatedUnionEncoder([\n [\n \"Ed25519\",\n getStructEncoder([[\"fields\", getTupleEncoder([getU8Encoder()])]]),\n ],\n [\n \"Secp256r1\",\n getStructEncoder([\n [\n \"fields\",\n getTupleEncoder([\n getSecp256r1VerifyArgsWithDomainConfigIndexEncoder(),\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getTransactionSyncSignersDecoder(): Decoder<TransactionSyncSigners> {\n return getDiscriminatedUnionDecoder([\n [\n \"Ed25519\",\n getStructDecoder([[\"fields\", getTupleDecoder([getU8Decoder()])]]),\n ],\n [\n \"Secp256r1\",\n getStructDecoder([\n [\n \"fields\",\n getTupleDecoder([\n getSecp256r1VerifyArgsWithDomainConfigIndexDecoder(),\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getTransactionSyncSignersCodec(): Codec<\n TransactionSyncSignersArgs,\n TransactionSyncSigners\n> {\n return combineCodec(\n getTransactionSyncSignersEncoder(),\n getTransactionSyncSignersDecoder(),\n );\n}\n\n// Data Enum Helpers.\nexport function transactionSyncSigners(\n kind: \"Ed25519\",\n data: GetDiscriminatedUnionVariantContent<\n TransactionSyncSignersArgs,\n \"__kind\",\n \"Ed25519\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n TransactionSyncSignersArgs,\n \"__kind\",\n \"Ed25519\"\n>;\nexport function transactionSyncSigners(\n kind: \"Secp256r1\",\n data: GetDiscriminatedUnionVariantContent<\n TransactionSyncSignersArgs,\n \"__kind\",\n \"Secp256r1\"\n >[\"fields\"],\n): GetDiscriminatedUnionVariant<\n TransactionSyncSignersArgs,\n \"__kind\",\n \"Secp256r1\"\n>;\nexport function transactionSyncSigners<\n K extends TransactionSyncSignersArgs[\"__kind\"],\n Data,\n>(kind: K, data?: Data) {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isTransactionSyncSigners<\n K extends TransactionSyncSigners[\"__kind\"],\n>(\n kind: K,\n value: TransactionSyncSigners,\n): value is TransactionSyncSigners & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/**\n * Transfer fee extension for Token accounts.\n * Stores withheld fees that accumulate during transfers.\n * Mirrors SPL Token-2022's TransferFeeAmount extension.\n */\nexport type TransferFeeAccountExtension = {\n /** Amount withheld during transfers, to be harvested on decompress */\n withheldAmount: bigint;\n};\n\nexport type TransferFeeAccountExtensionArgs = {\n /** Amount withheld during transfers, to be harvested on decompress */\n withheldAmount: number | bigint;\n};\n\nexport function getTransferFeeAccountExtensionEncoder(): FixedSizeEncoder<TransferFeeAccountExtensionArgs> {\n return getStructEncoder([[\"withheldAmount\", getU64Encoder()]]);\n}\n\nexport function getTransferFeeAccountExtensionDecoder(): FixedSizeDecoder<TransferFeeAccountExtension> {\n return getStructDecoder([[\"withheldAmount\", getU64Decoder()]]);\n}\n\nexport function getTransferFeeAccountExtensionCodec(): FixedSizeCodec<\n TransferFeeAccountExtensionArgs,\n TransferFeeAccountExtension\n> {\n return combineCodec(\n getTransferFeeAccountExtensionEncoder(),\n getTransferFeeAccountExtensionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\n/**\n * Extension indicating the account belongs to a mint with transfer hook.\n * Contains a `transferring` flag used as a reentrancy guard during hook CPI.\n * Consistent with SPL Token-2022 TransferHookAccount layout.\n */\nexport type TransferHookAccountExtension = {\n /**\n * Flag to indicate that the account is in the middle of a transfer.\n * Used as reentrancy guard when transfer hook program is called via CPI.\n * Always false at rest since we only support nil program_id (no hook invoked).\n */\n transferring: number;\n};\n\nexport type TransferHookAccountExtensionArgs = TransferHookAccountExtension;\n\nexport function getTransferHookAccountExtensionEncoder(): FixedSizeEncoder<TransferHookAccountExtensionArgs> {\n return getStructEncoder([[\"transferring\", getU8Encoder()]]);\n}\n\nexport function getTransferHookAccountExtensionDecoder(): FixedSizeDecoder<TransferHookAccountExtension> {\n return getStructDecoder([[\"transferring\", getU8Decoder()]]);\n}\n\nexport function getTransferHookAccountExtensionCodec(): FixedSizeCodec<\n TransferHookAccountExtensionArgs,\n TransferHookAccountExtension\n> {\n return combineCodec(\n getTransferHookAccountExtensionEncoder(),\n getTransferHookAccountExtensionDecoder(),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\nexport enum Transports {\n Ble,\n Cable,\n Hybrid,\n Internal,\n Nfc,\n SmartCard,\n Usb,\n}\n\nexport type TransportsArgs = Transports;\n\nexport function getTransportsEncoder(): FixedSizeEncoder<TransportsArgs> {\n return getEnumEncoder(Transports);\n}\n\nexport function getTransportsDecoder(): FixedSizeDecoder<Transports> {\n return getEnumDecoder(Transports);\n}\n\nexport function getTransportsCodec(): FixedSizeCodec<\n TransportsArgs,\n Transports\n> {\n return combineCodec(getTransportsEncoder(), getTransportsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"gill\";\n\nexport enum UserRole {\n TransactionManager,\n Administrator,\n PermanentMember,\n Member,\n}\n\nexport type UserRoleArgs = UserRole;\n\nexport function getUserRoleEncoder(): FixedSizeEncoder<UserRoleArgs> {\n return getEnumEncoder(UserRole);\n}\n\nexport function getUserRoleDecoder(): FixedSizeDecoder<UserRole> {\n return getEnumDecoder(UserRole);\n}\n\nexport function getUserRoleCodec(): FixedSizeCodec<UserRoleArgs, UserRole> {\n return combineCodec(getUserRoleEncoder(), getUserRoleDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n getMemberDecoder,\n getMemberEncoder,\n type Member,\n type MemberArgs,\n} from \"../types\";\n\nexport const SETTINGS_DISCRIMINATOR = new Uint8Array([\n 223, 179, 163, 190, 177, 224, 67, 173,\n]);\n\nexport function getSettingsDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(SETTINGS_DISCRIMINATOR);\n}\n\nexport type Settings = {\n discriminator: ReadonlyUint8Array;\n index: bigint;\n members: Array<Member>;\n threshold: number;\n multiWalletBump: number;\n bump: number;\n padding: number;\n latestSlotNumber: bigint;\n};\n\nexport type SettingsArgs = {\n index: number | bigint;\n members: Array<MemberArgs>;\n threshold: number;\n multiWalletBump: number;\n bump: number;\n padding: number;\n latestSlotNumber: number | bigint;\n};\n\nexport function getSettingsEncoder(): Encoder<SettingsArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"index\", getU128Encoder()],\n [\"members\", getArrayEncoder(getMemberEncoder())],\n [\"threshold\", getU8Encoder()],\n [\"multiWalletBump\", getU8Encoder()],\n [\"bump\", getU8Encoder()],\n [\"padding\", getU8Encoder()],\n [\"latestSlotNumber\", getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: SETTINGS_DISCRIMINATOR }),\n );\n}\n\nexport function getSettingsDecoder(): Decoder<Settings> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"index\", getU128Decoder()],\n [\"members\", getArrayDecoder(getMemberDecoder())],\n [\"threshold\", getU8Decoder()],\n [\"multiWalletBump\", getU8Decoder()],\n [\"bump\", getU8Decoder()],\n [\"padding\", getU8Decoder()],\n [\"latestSlotNumber\", getU64Decoder()],\n ]);\n}\n\nexport function getSettingsCodec(): Codec<SettingsArgs, Settings> {\n return combineCodec(getSettingsEncoder(), getSettingsDecoder());\n}\n\nexport function decodeSettings<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<Settings, TAddress>;\nexport function decodeSettings<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Settings, TAddress>;\nexport function decodeSettings<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Settings, TAddress> | MaybeAccount<Settings, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getSettingsDecoder(),\n );\n}\n\nexport async function fetchSettings<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<Settings, TAddress>> {\n const maybeAccount = await fetchMaybeSettings(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeSettings<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<Settings, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeSettings(maybeAccount);\n}\n\nexport async function fetchAllSettings(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<Settings>[]> {\n const maybeAccounts = await fetchAllMaybeSettings(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeSettings(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Settings>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeSettings(maybeAccount));\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n getExpectedSignerDecoder,\n getExpectedSignerEncoder,\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n type ExpectedSigner,\n type ExpectedSignerArgs,\n type MemberKey,\n type MemberKeyArgs,\n} from \"../types\";\n\nexport const TRANSACTION_BUFFER_DISCRIMINATOR = new Uint8Array([\n 90, 36, 35, 219, 93, 225, 110, 96,\n]);\n\nexport function getTransactionBufferDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n TRANSACTION_BUFFER_DISCRIMINATOR,\n );\n}\n\nexport type TransactionBuffer = {\n discriminator: ReadonlyUint8Array;\n /** The multisig settings this belongs to. */\n multiWalletSettings: Address;\n /** The bump for the multi_wallet */\n multiWalletBump: number;\n /** Flag to allow transaction to be executed */\n canExecute: boolean;\n /** Flag to preauthorize execution before sufficient threshold is met */\n preauthorizeExecution: boolean;\n validTill: bigint;\n /** Payer for the transaction buffer */\n payer: Address;\n /** transaction bump */\n bump: number;\n /** Index to seed address derivation */\n bufferIndex: number;\n /** Hash of the final assembled transaction message. */\n finalBufferHash: ReadonlyUint8Array;\n /** The size of the final assembled transaction message. */\n finalBufferSize: number;\n /** Member of the Multisig who created the TransactionBuffer. */\n creator: MemberKey;\n /** Member of the Multisig who executed the TransactionBuffer. */\n executor: MemberKey;\n /** Buffer hash for all the buffer extend instruction */\n bufferExtendHashes: Array<ReadonlyUint8Array>;\n /** Members that voted for this transaction */\n voters: Array<MemberKey>;\n /** All Signers that are expected to initiate / vote / execute this transaction (used for off-chain inspection by the transaction manager) */\n expectedSigners: Array<ExpectedSigner>;\n /** The buffer of the transaction message. */\n buffer: ReadonlyUint8Array;\n};\n\nexport type TransactionBufferArgs = {\n /** The multisig settings this belongs to. */\n multiWalletSettings: Address;\n /** The bump for the multi_wallet */\n multiWalletBump: number;\n /** Flag to allow transaction to be executed */\n canExecute: boolean;\n /** Flag to preauthorize execution before sufficient threshold is met */\n preauthorizeExecution: boolean;\n validTill: number | bigint;\n /** Payer for the transaction buffer */\n payer: Address;\n /** transaction bump */\n bump: number;\n /** Index to seed address derivation */\n bufferIndex: number;\n /** Hash of the final assembled transaction message. */\n finalBufferHash: ReadonlyUint8Array;\n /** The size of the final assembled transaction message. */\n finalBufferSize: number;\n /** Member of the Multisig who created the TransactionBuffer. */\n creator: MemberKeyArgs;\n /** Member of the Multisig who executed the TransactionBuffer. */\n executor: MemberKeyArgs;\n /** Buffer hash for all the buffer extend instruction */\n bufferExtendHashes: Array<ReadonlyUint8Array>;\n /** Members that voted for this transaction */\n voters: Array<MemberKeyArgs>;\n /** All Signers that are expected to initiate / vote / execute this transaction (used for off-chain inspection by the transaction manager) */\n expectedSigners: Array<ExpectedSignerArgs>;\n /** The buffer of the transaction message. */\n buffer: ReadonlyUint8Array;\n};\n\nexport function getTransactionBufferEncoder(): Encoder<TransactionBufferArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"multiWalletSettings\", getAddressEncoder()],\n [\"multiWalletBump\", getU8Encoder()],\n [\"canExecute\", getBooleanEncoder()],\n [\"preauthorizeExecution\", getBooleanEncoder()],\n [\"validTill\", getU64Encoder()],\n [\"payer\", getAddressEncoder()],\n [\"bump\", getU8Encoder()],\n [\"bufferIndex\", getU8Encoder()],\n [\"finalBufferHash\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"finalBufferSize\", getU16Encoder()],\n [\"creator\", getMemberKeyEncoder()],\n [\"executor\", getMemberKeyEncoder()],\n [\n \"bufferExtendHashes\",\n getArrayEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n ],\n [\"voters\", getArrayEncoder(getMemberKeyEncoder())],\n [\"expectedSigners\", getArrayEncoder(getExpectedSignerEncoder())],\n [\"buffer\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n ]),\n (value) => ({ ...value, discriminator: TRANSACTION_BUFFER_DISCRIMINATOR }),\n );\n}\n\nexport function getTransactionBufferDecoder(): Decoder<TransactionBuffer> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"multiWalletSettings\", getAddressDecoder()],\n [\"multiWalletBump\", getU8Decoder()],\n [\"canExecute\", getBooleanDecoder()],\n [\"preauthorizeExecution\", getBooleanDecoder()],\n [\"validTill\", getU64Decoder()],\n [\"payer\", getAddressDecoder()],\n [\"bump\", getU8Decoder()],\n [\"bufferIndex\", getU8Decoder()],\n [\"finalBufferHash\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"finalBufferSize\", getU16Decoder()],\n [\"creator\", getMemberKeyDecoder()],\n [\"executor\", getMemberKeyDecoder()],\n [\n \"bufferExtendHashes\",\n getArrayDecoder(fixDecoderSize(getBytesDecoder(), 32)),\n ],\n [\"voters\", getArrayDecoder(getMemberKeyDecoder())],\n [\"expectedSigners\", getArrayDecoder(getExpectedSignerDecoder())],\n [\"buffer\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n ]);\n}\n\nexport function getTransactionBufferCodec(): Codec<\n TransactionBufferArgs,\n TransactionBuffer\n> {\n return combineCodec(\n getTransactionBufferEncoder(),\n getTransactionBufferDecoder(),\n );\n}\n\nexport function decodeTransactionBuffer<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<TransactionBuffer, TAddress>;\nexport function decodeTransactionBuffer<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<TransactionBuffer, TAddress>;\nexport function decodeTransactionBuffer<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n):\n | Account<TransactionBuffer, TAddress>\n | MaybeAccount<TransactionBuffer, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getTransactionBufferDecoder(),\n );\n}\n\nexport async function fetchTransactionBuffer<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<TransactionBuffer, TAddress>> {\n const maybeAccount = await fetchMaybeTransactionBuffer(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeTransactionBuffer<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<TransactionBuffer, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeTransactionBuffer(maybeAccount);\n}\n\nexport async function fetchAllTransactionBuffer(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<TransactionBuffer>[]> {\n const maybeAccounts = await fetchAllMaybeTransactionBuffer(\n rpc,\n addresses,\n config,\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeTransactionBuffer(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<TransactionBuffer>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeTransactionBuffer(maybeAccount),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type Option,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n getMemberKeyDecoder,\n getMemberKeyEncoder,\n getSettingsIndexWithDelegateInfoDecoder,\n getSettingsIndexWithDelegateInfoEncoder,\n getTransportsDecoder,\n getTransportsEncoder,\n getUserRoleDecoder,\n getUserRoleEncoder,\n type MemberKey,\n type MemberKeyArgs,\n type SettingsIndexWithDelegateInfo,\n type SettingsIndexWithDelegateInfoArgs,\n type Transports,\n type TransportsArgs,\n type UserRole,\n type UserRoleArgs,\n} from \"../types\";\n\nexport const USER_DISCRIMINATOR = new Uint8Array([\n 159, 117, 95, 227, 239, 151, 58, 236,\n]);\n\nexport function getUserDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(USER_DISCRIMINATOR);\n}\n\nexport type User = {\n discriminator: ReadonlyUint8Array;\n domainConfig: Option<Address>;\n member: MemberKey;\n credentialId: Option<ReadonlyUint8Array>;\n transports: Option<Array<Transports>>;\n wallets: Array<SettingsIndexWithDelegateInfo>;\n role: UserRole;\n transactionManagerUrl: Option<string>;\n bump: number;\n};\n\nexport type UserArgs = {\n domainConfig: OptionOrNullable<Address>;\n member: MemberKeyArgs;\n credentialId: OptionOrNullable<ReadonlyUint8Array>;\n transports: OptionOrNullable<Array<TransportsArgs>>;\n wallets: Array<SettingsIndexWithDelegateInfoArgs>;\n role: UserRoleArgs;\n transactionManagerUrl: OptionOrNullable<string>;\n bump: number;\n};\n\nexport function getUserEncoder(): Encoder<UserArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"domainConfig\", getOptionEncoder(getAddressEncoder())],\n [\"member\", getMemberKeyEncoder()],\n [\n \"credentialId\",\n getOptionEncoder(\n addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n ),\n ],\n [\"transports\", getOptionEncoder(getArrayEncoder(getTransportsEncoder()))],\n [\"wallets\", getArrayEncoder(getSettingsIndexWithDelegateInfoEncoder())],\n [\"role\", getUserRoleEncoder()],\n [\n \"transactionManagerUrl\",\n getOptionEncoder(\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ),\n ],\n [\"bump\", getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: USER_DISCRIMINATOR }),\n );\n}\n\nexport function getUserDecoder(): Decoder<User> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"domainConfig\", getOptionDecoder(getAddressDecoder())],\n [\"member\", getMemberKeyDecoder()],\n [\n \"credentialId\",\n getOptionDecoder(\n addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n ),\n ],\n [\"transports\", getOptionDecoder(getArrayDecoder(getTransportsDecoder()))],\n [\"wallets\", getArrayDecoder(getSettingsIndexWithDelegateInfoDecoder())],\n [\"role\", getUserRoleDecoder()],\n [\n \"transactionManagerUrl\",\n getOptionDecoder(addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())),\n ],\n [\"bump\", getU8Decoder()],\n ]);\n}\n\nexport function getUserCodec(): Codec<UserArgs, User> {\n return combineCodec(getUserEncoder(), getUserDecoder());\n}\n\nexport function decodeUser<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<User, TAddress>;\nexport function decodeUser<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<User, TAddress>;\nexport function decodeUser<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<User, TAddress> | MaybeAccount<User, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getUserDecoder(),\n );\n}\n\nexport async function fetchUser<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<User, TAddress>> {\n const maybeAccount = await fetchMaybeUser(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeUser<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<User, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeUser(maybeAccount);\n}\n\nexport async function fetchAllUser(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<User>[]> {\n const maybeAccounts = await fetchAllMaybeUser(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeUser(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<User>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeUser(maybeAccount));\n}\n","import {\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type TransactionSigner,\n} from \"gill\";\n\nexport function parseRemainingAccounts({\n args,\n}: {\n programAddress: Address;\n accounts?: any;\n args?: {\n remainingAccounts: {\n address: Address;\n role: number;\n signer?: TransactionSigner;\n }[];\n };\n}): AccountMeta[] {\n if (!args) {\n return [];\n }\n const { remainingAccounts } = args;\n return remainingAccounts.map((x) =>\n x.signer\n ? ({\n address: x.address,\n role: x.role,\n signer: x.signer,\n } as AccountSignerMeta)\n : ({ address: x.address, role: x.role } as AccountMeta),\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n isProgramDerivedAddress,\n isTransactionSigner as kitIsTransactionSigner,\n upgradeRoleToSigner,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type ProgramDerivedAddress,\n type TransactionSigner,\n} from \"gill\";\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n if (value === null || value === undefined) {\n throw new Error(\"Expected a value but received null or undefined.\");\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined,\n): Address<T> {\n if (!value) {\n throw new Error(\"Expected a Address.\");\n }\n if (typeof value === \"object\" && \"address\" in value) {\n return value.address;\n }\n if (Array.isArray(value)) {\n return value[0] as Address<T>;\n }\n return value as Address<T>;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined,\n): ProgramDerivedAddress<T> {\n if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n throw new Error(\"Expected a ProgramDerivedAddress.\");\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined,\n): TransactionSigner<T> {\n if (!value || !isTransactionSigner(value)) {\n throw new Error(\"Expected a TransactionSigner.\");\n }\n return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n T extends string = string,\n U extends\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null =\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null,\n> = {\n isWritable: boolean;\n value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type InstructionWithByteDelta = {\n byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(\n programAddress: Address,\n optionalAccountStrategy: \"omitted\" | \"programId\",\n) {\n return (\n account: ResolvedAccount,\n ): AccountMeta | AccountSignerMeta | undefined => {\n if (!account.value) {\n if (optionalAccountStrategy === \"omitted\") return;\n return Object.freeze({\n address: programAddress,\n role: AccountRole.READONLY,\n });\n }\n\n const writableRole = account.isWritable\n ? AccountRole.WRITABLE\n : AccountRole.READONLY;\n return Object.freeze({\n address: expectAddress(account.value),\n role: isTransactionSigner(account.value)\n ? upgradeRoleToSigner(writableRole)\n : writableRole,\n ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n });\n };\n}\n\nexport function isTransactionSigner<TAddress extends string = string>(\n value:\n | Address<TAddress>\n | ProgramDerivedAddress<TAddress>\n | TransactionSigner<TAddress>,\n): value is TransactionSigner<TAddress> {\n return (\n !!value &&\n typeof value === \"object\" &&\n \"address\" in value &&\n kitIsTransactionSigner(value)\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getConfigActionDecoder,\n getConfigActionEncoder,\n getTransactionSyncSignersDecoder,\n getTransactionSyncSignersEncoder,\n type ConfigAction,\n type ConfigActionArgs,\n type TransactionSyncSigners,\n type TransactionSyncSignersArgs,\n} from \"../types\";\n\nexport const CHANGE_CONFIG_DISCRIMINATOR = new Uint8Array([8]);\n\nexport function getChangeConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n CHANGE_CONFIG_DISCRIMINATOR,\n );\n}\n\nexport type ChangeConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ChangeConfigInstructionData = {\n discriminator: ReadonlyUint8Array;\n configActions: Array<ConfigAction>;\n signers: Array<TransactionSyncSigners>;\n};\n\nexport type ChangeConfigInstructionDataArgs = {\n configActions: Array<ConfigActionArgs>;\n signers: Array<TransactionSyncSignersArgs>;\n};\n\nexport function getChangeConfigInstructionDataEncoder(): Encoder<ChangeConfigInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"configActions\", getArrayEncoder(getConfigActionEncoder())],\n [\"signers\", getArrayEncoder(getTransactionSyncSignersEncoder())],\n ]),\n (value) => ({ ...value, discriminator: CHANGE_CONFIG_DISCRIMINATOR }),\n );\n}\n\nexport function getChangeConfigInstructionDataDecoder(): Decoder<ChangeConfigInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"configActions\", getArrayDecoder(getConfigActionDecoder())],\n [\"signers\", getArrayDecoder(getTransactionSyncSignersDecoder())],\n ]);\n}\n\nexport function getChangeConfigInstructionDataCodec(): Codec<\n ChangeConfigInstructionDataArgs,\n ChangeConfigInstructionData\n> {\n return combineCodec(\n getChangeConfigInstructionDataEncoder(),\n getChangeConfigInstructionDataDecoder(),\n );\n}\n\nexport type ChangeConfigInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type ChangeConfigInput<\n TAccountSettings extends string = string,\n TAccountPayer extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n payer: TransactionSigner<TAccountPayer>;\n systemProgram?: Address<TAccountSystemProgram>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n configActions: ChangeConfigInstructionDataArgs[\"configActions\"];\n signers: ChangeConfigInstructionDataArgs[\"signers\"];\n remainingAccounts: ChangeConfigInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getChangeConfigInstruction<\n TAccountSettings extends string,\n TAccountPayer extends string,\n TAccountSystemProgram extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: ChangeConfigInput<\n TAccountSettings,\n TAccountPayer,\n TAccountSystemProgram,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >,\n config?: { programAddress?: TProgramAddress },\n): ChangeConfigInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountSystemProgram,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n ...remainingAccounts,\n ],\n data: getChangeConfigInstructionDataEncoder().encode(\n args as ChangeConfigInstructionDataArgs,\n ),\n programAddress,\n } as ChangeConfigInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountSystemProgram,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >);\n}\n\nexport type ParsedChangeConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n payer: TAccountMetas[1];\n systemProgram: TAccountMetas[2];\n slotHashSysvar?: TAccountMetas[3] | undefined;\n instructionsSysvar: TAccountMetas[4];\n };\n data: ChangeConfigInstructionData;\n};\n\nexport function parseChangeConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedChangeConfigInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n payer: getNextAccount(),\n systemProgram: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextAccount(),\n },\n data: getChangeConfigInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const CREATE_DOMAIN_CONFIG_DISCRIMINATOR = new Uint8Array([0]);\n\nexport function getCreateDomainConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n CREATE_DOMAIN_CONFIG_DISCRIMINATOR,\n );\n}\n\nexport type CreateDomainConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountUserAccount extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountDomainConfig extends string\n ? WritableAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountUserAccount extends string\n ? WritableAccount<TAccountUserAccount>\n : TAccountUserAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateDomainConfigInstructionData = {\n discriminator: ReadonlyUint8Array;\n rpId: string;\n origins: Array<string>;\n};\n\nexport type CreateDomainConfigInstructionDataArgs = {\n rpId: string;\n origins: Array<string>;\n};\n\nexport function getCreateDomainConfigInstructionDataEncoder(): Encoder<CreateDomainConfigInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"rpId\", addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n [\n \"origins\",\n getArrayEncoder(\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: CREATE_DOMAIN_CONFIG_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getCreateDomainConfigInstructionDataDecoder(): Decoder<CreateDomainConfigInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"rpId\", addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n [\n \"origins\",\n getArrayDecoder(addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())),\n ],\n ]);\n}\n\nexport function getCreateDomainConfigInstructionDataCodec(): Codec<\n CreateDomainConfigInstructionDataArgs,\n CreateDomainConfigInstructionData\n> {\n return combineCodec(\n getCreateDomainConfigInstructionDataEncoder(),\n getCreateDomainConfigInstructionDataDecoder(),\n );\n}\n\nexport type CreateDomainConfigInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type CreateDomainConfigAsyncInput<\n TAccountDomainConfig extends string = string,\n TAccountPayer extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountUserAccount extends string = string,\n> = {\n domainConfig: Address<TAccountDomainConfig>;\n payer: TransactionSigner<TAccountPayer>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n userAccount?: Address<TAccountUserAccount>;\n rpId: CreateDomainConfigInstructionDataArgs[\"rpId\"];\n origins: CreateDomainConfigInstructionDataArgs[\"origins\"];\n remainingAccounts: CreateDomainConfigInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getCreateDomainConfigInstructionAsync<\n TAccountDomainConfig extends string,\n TAccountPayer extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TAccountUserAccount extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateDomainConfigAsyncInput<\n TAccountDomainConfig,\n TAccountPayer,\n TAccountAuthority,\n TAccountSystemProgram,\n TAccountUserAccount\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n CreateDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountPayer,\n TAccountAuthority,\n TAccountSystemProgram,\n TAccountUserAccount\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n domainConfig: { value: input.domainConfig ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.userAccount.value) {\n accounts.userAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([117, 115, 101, 114])),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\n ],\n });\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.userAccount),\n ...remainingAccounts,\n ],\n data: getCreateDomainConfigInstructionDataEncoder().encode(\n args as CreateDomainConfigInstructionDataArgs,\n ),\n programAddress,\n } as CreateDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountPayer,\n TAccountAuthority,\n TAccountSystemProgram,\n TAccountUserAccount\n >);\n}\n\nexport type CreateDomainConfigInput<\n TAccountDomainConfig extends string = string,\n TAccountPayer extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountUserAccount extends string = string,\n> = {\n domainConfig: Address<TAccountDomainConfig>;\n payer: TransactionSigner<TAccountPayer>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n userAccount: Address<TAccountUserAccount>;\n rpId: CreateDomainConfigInstructionDataArgs[\"rpId\"];\n origins: CreateDomainConfigInstructionDataArgs[\"origins\"];\n remainingAccounts: CreateDomainConfigInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getCreateDomainConfigInstruction<\n TAccountDomainConfig extends string,\n TAccountPayer extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TAccountUserAccount extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateDomainConfigInput<\n TAccountDomainConfig,\n TAccountPayer,\n TAccountAuthority,\n TAccountSystemProgram,\n TAccountUserAccount\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountPayer,\n TAccountAuthority,\n TAccountSystemProgram,\n TAccountUserAccount\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n domainConfig: { value: input.domainConfig ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.userAccount),\n ...remainingAccounts,\n ],\n data: getCreateDomainConfigInstructionDataEncoder().encode(\n args as CreateDomainConfigInstructionDataArgs,\n ),\n programAddress,\n } as CreateDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountPayer,\n TAccountAuthority,\n TAccountSystemProgram,\n TAccountUserAccount\n >);\n}\n\nexport type ParsedCreateDomainConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n domainConfig: TAccountMetas[0];\n payer: TAccountMetas[1];\n authority: TAccountMetas[2];\n systemProgram: TAccountMetas[3];\n userAccount: TAccountMetas[4];\n };\n data: CreateDomainConfigInstructionData;\n};\n\nexport function parseCreateDomainConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateDomainConfigInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n domainConfig: getNextAccount(),\n payer: getNextAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n userAccount: getNextAccount(),\n },\n data: getCreateDomainConfigInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getSecp256r1PubkeyDecoder,\n getSecp256r1PubkeyEncoder,\n getTransportsDecoder,\n getTransportsEncoder,\n getUserRoleDecoder,\n getUserRoleEncoder,\n type Secp256r1Pubkey,\n type Secp256r1PubkeyArgs,\n type Transports,\n type TransportsArgs,\n type UserRole,\n type UserRoleArgs,\n} from \"../types\";\n\nexport const CREATE_DOMAIN_USER_ACCOUNT_DISCRIMINATOR = new Uint8Array([4]);\n\nexport function getCreateDomainUserAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n CREATE_DOMAIN_USER_ACCOUNT_DISCRIMINATOR,\n );\n}\n\nexport type CreateDomainUserAccountInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountUserAccount extends string | AccountMeta<string> = string,\n TAccountTransactionManagerAccount extends\n | string\n | AccountMeta<string> = string,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountDomainConfig extends string\n ? ReadonlyAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountUserAccount extends string\n ? WritableAccount<TAccountUserAccount>\n : TAccountUserAccount,\n TAccountTransactionManagerAccount extends string\n ? ReadonlyAccount<TAccountTransactionManagerAccount>\n : TAccountTransactionManagerAccount,\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateDomainUserAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n member: Secp256r1Pubkey;\n role: UserRole;\n credentialId: ReadonlyUint8Array;\n transports: Array<Transports>;\n};\n\nexport type CreateDomainUserAccountInstructionDataArgs = {\n member: Secp256r1PubkeyArgs;\n role: UserRoleArgs;\n credentialId: ReadonlyUint8Array;\n transports: Array<TransportsArgs>;\n};\n\nexport function getCreateDomainUserAccountInstructionDataEncoder(): Encoder<CreateDomainUserAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"member\", getSecp256r1PubkeyEncoder()],\n [\"role\", getUserRoleEncoder()],\n [\n \"credentialId\",\n addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n ],\n [\"transports\", getArrayEncoder(getTransportsEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: CREATE_DOMAIN_USER_ACCOUNT_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getCreateDomainUserAccountInstructionDataDecoder(): Decoder<CreateDomainUserAccountInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"member\", getSecp256r1PubkeyDecoder()],\n [\"role\", getUserRoleDecoder()],\n [\"credentialId\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n [\"transports\", getArrayDecoder(getTransportsDecoder())],\n ]);\n}\n\nexport function getCreateDomainUserAccountInstructionDataCodec(): Codec<\n CreateDomainUserAccountInstructionDataArgs,\n CreateDomainUserAccountInstructionData\n> {\n return combineCodec(\n getCreateDomainUserAccountInstructionDataEncoder(),\n getCreateDomainUserAccountInstructionDataDecoder(),\n );\n}\n\nexport type CreateDomainUserAccountInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type CreateDomainUserAccountInput<\n TAccountPayer extends string = string,\n TAccountDomainConfig extends string = string,\n TAccountAuthority extends string = string,\n TAccountUserAccount extends string = string,\n TAccountTransactionManagerAccount extends string = string,\n TAccountSettings extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n domainConfig: Address<TAccountDomainConfig>;\n authority: TransactionSigner<TAccountAuthority>;\n userAccount: Address<TAccountUserAccount>;\n transactionManagerAccount?: Address<TAccountTransactionManagerAccount>;\n settings?: Address<TAccountSettings>;\n systemProgram?: Address<TAccountSystemProgram>;\n member: CreateDomainUserAccountInstructionDataArgs[\"member\"];\n role: CreateDomainUserAccountInstructionDataArgs[\"role\"];\n credentialId: CreateDomainUserAccountInstructionDataArgs[\"credentialId\"];\n transports: CreateDomainUserAccountInstructionDataArgs[\"transports\"];\n remainingAccounts: CreateDomainUserAccountInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getCreateDomainUserAccountInstruction<\n TAccountPayer extends string,\n TAccountDomainConfig extends string,\n TAccountAuthority extends string,\n TAccountUserAccount extends string,\n TAccountTransactionManagerAccount extends string,\n TAccountSettings extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateDomainUserAccountInput<\n TAccountPayer,\n TAccountDomainConfig,\n TAccountAuthority,\n TAccountUserAccount,\n TAccountTransactionManagerAccount,\n TAccountSettings,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateDomainUserAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountAuthority,\n TAccountUserAccount,\n TAccountTransactionManagerAccount,\n TAccountSettings,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n domainConfig: { value: input.domainConfig ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n transactionManagerAccount: {\n value: input.transactionManagerAccount ?? null,\n isWritable: false,\n },\n settings: { value: input.settings ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.userAccount),\n getAccountMeta(accounts.transactionManagerAccount),\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.systemProgram),\n ...remainingAccounts,\n ],\n data: getCreateDomainUserAccountInstructionDataEncoder().encode(\n args as CreateDomainUserAccountInstructionDataArgs,\n ),\n programAddress,\n } as CreateDomainUserAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountAuthority,\n TAccountUserAccount,\n TAccountTransactionManagerAccount,\n TAccountSettings,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCreateDomainUserAccountInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n domainConfig: TAccountMetas[1];\n authority: TAccountMetas[2];\n userAccount: TAccountMetas[3];\n transactionManagerAccount?: TAccountMetas[4] | undefined;\n settings?: TAccountMetas[5] | undefined;\n systemProgram: TAccountMetas[6];\n };\n data: CreateDomainUserAccountInstructionData;\n};\n\nexport function parseCreateDomainUserAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateDomainUserAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n domainConfig: getNextAccount(),\n authority: getNextAccount(),\n userAccount: getNextAccount(),\n transactionManagerAccount: getNextOptionalAccount(),\n settings: getNextOptionalAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCreateDomainUserAccountInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\n\nexport const CREATE_GLOBAL_COUNTER_DISCRIMINATOR = new Uint8Array([3]);\n\nexport function getCreateGlobalCounterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n CREATE_GLOBAL_COUNTER_DISCRIMINATOR,\n );\n}\n\nexport type CreateGlobalCounterInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountGlobalCounter extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountGlobalCounter extends string\n ? WritableAccount<TAccountGlobalCounter>\n : TAccountGlobalCounter,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateGlobalCounterInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type CreateGlobalCounterInstructionDataArgs = {};\n\nexport function getCreateGlobalCounterInstructionDataEncoder(): FixedSizeEncoder<CreateGlobalCounterInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([[\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)]]),\n (value) => ({\n ...value,\n discriminator: CREATE_GLOBAL_COUNTER_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getCreateGlobalCounterInstructionDataDecoder(): FixedSizeDecoder<CreateGlobalCounterInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n ]);\n}\n\nexport function getCreateGlobalCounterInstructionDataCodec(): FixedSizeCodec<\n CreateGlobalCounterInstructionDataArgs,\n CreateGlobalCounterInstructionData\n> {\n return combineCodec(\n getCreateGlobalCounterInstructionDataEncoder(),\n getCreateGlobalCounterInstructionDataDecoder(),\n );\n}\n\nexport type CreateGlobalCounterInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type CreateGlobalCounterAsyncInput<\n TAccountGlobalCounter extends string = string,\n TAccountPayer extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n globalCounter?: Address<TAccountGlobalCounter>;\n payer: TransactionSigner<TAccountPayer>;\n systemProgram?: Address<TAccountSystemProgram>;\n remainingAccounts: CreateGlobalCounterInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getCreateGlobalCounterInstructionAsync<\n TAccountGlobalCounter extends string,\n TAccountPayer extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateGlobalCounterAsyncInput<\n TAccountGlobalCounter,\n TAccountPayer,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n CreateGlobalCounterInstruction<\n TProgramAddress,\n TAccountGlobalCounter,\n TAccountPayer,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n globalCounter: { value: input.globalCounter ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts };\n\n // Resolve default values.\n if (!accounts.globalCounter.value) {\n accounts.globalCounter.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 103, 108, 111, 98, 97, 108, 95, 99, 111, 117, 110, 116, 101, 114,\n ]),\n ),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.globalCounter),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.systemProgram),\n ...remainingAccounts,\n ],\n data: getCreateGlobalCounterInstructionDataEncoder().encode({}),\n programAddress,\n } as CreateGlobalCounterInstruction<\n TProgramAddress,\n TAccountGlobalCounter,\n TAccountPayer,\n TAccountSystemProgram\n >);\n}\n\nexport type CreateGlobalCounterInput<\n TAccountGlobalCounter extends string = string,\n TAccountPayer extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n globalCounter: Address<TAccountGlobalCounter>;\n payer: TransactionSigner<TAccountPayer>;\n systemProgram?: Address<TAccountSystemProgram>;\n remainingAccounts: CreateGlobalCounterInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getCreateGlobalCounterInstruction<\n TAccountGlobalCounter extends string,\n TAccountPayer extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateGlobalCounterInput<\n TAccountGlobalCounter,\n TAccountPayer,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateGlobalCounterInstruction<\n TProgramAddress,\n TAccountGlobalCounter,\n TAccountPayer,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n globalCounter: { value: input.globalCounter ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.globalCounter),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.systemProgram),\n ...remainingAccounts,\n ],\n data: getCreateGlobalCounterInstructionDataEncoder().encode({}),\n programAddress,\n } as CreateGlobalCounterInstruction<\n TProgramAddress,\n TAccountGlobalCounter,\n TAccountPayer,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCreateGlobalCounterInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n globalCounter: TAccountMetas[0];\n payer: TAccountMetas[1];\n systemProgram: TAccountMetas[2];\n };\n data: CreateGlobalCounterInstructionData;\n};\n\nexport function parseCreateGlobalCounterInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateGlobalCounterInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n globalCounter: getNextAccount(),\n payer: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCreateGlobalCounterInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\nimport {\n getUserRoleDecoder,\n getUserRoleEncoder,\n type UserRole,\n type UserRoleArgs,\n} from \"../types\";\n\nexport const CREATE_USER_ACCOUNT_DISCRIMINATOR = new Uint8Array([5]);\n\nexport function getCreateUserAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n CREATE_USER_ACCOUNT_DISCRIMINATOR,\n );\n}\n\nexport type CreateUserAccountInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountMember extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountUserAccount extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountMember extends string\n ? ReadonlySignerAccount<TAccountMember> &\n AccountSignerMeta<TAccountMember>\n : TAccountMember,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountUserAccount extends string\n ? WritableAccount<TAccountUserAccount>\n : TAccountUserAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateUserAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n role: UserRole;\n transactionManagerUrl: Option<string>;\n};\n\nexport type CreateUserAccountInstructionDataArgs = {\n role: UserRoleArgs;\n transactionManagerUrl: OptionOrNullable<string>;\n};\n\nexport function getCreateUserAccountInstructionDataEncoder(): Encoder<CreateUserAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"role\", getUserRoleEncoder()],\n [\n \"transactionManagerUrl\",\n getOptionEncoder(\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ),\n ],\n ]),\n (value) => ({ ...value, discriminator: CREATE_USER_ACCOUNT_DISCRIMINATOR }),\n );\n}\n\nexport function getCreateUserAccountInstructionDataDecoder(): Decoder<CreateUserAccountInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"role\", getUserRoleDecoder()],\n [\n \"transactionManagerUrl\",\n getOptionDecoder(addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())),\n ],\n ]);\n}\n\nexport function getCreateUserAccountInstructionDataCodec(): Codec<\n CreateUserAccountInstructionDataArgs,\n CreateUserAccountInstructionData\n> {\n return combineCodec(\n getCreateUserAccountInstructionDataEncoder(),\n getCreateUserAccountInstructionDataDecoder(),\n );\n}\n\nexport type CreateUserAccountInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type CreateUserAccountAsyncInput<\n TAccountPayer extends string = string,\n TAccountMember extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountUserAccount extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n member: TransactionSigner<TAccountMember>;\n systemProgram?: Address<TAccountSystemProgram>;\n userAccount?: Address<TAccountUserAccount>;\n role: CreateUserAccountInstructionDataArgs[\"role\"];\n transactionManagerUrl: CreateUserAccountInstructionDataArgs[\"transactionManagerUrl\"];\n remainingAccounts: CreateUserAccountInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getCreateUserAccountInstructionAsync<\n TAccountPayer extends string,\n TAccountMember extends string,\n TAccountSystemProgram extends string,\n TAccountUserAccount extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateUserAccountAsyncInput<\n TAccountPayer,\n TAccountMember,\n TAccountSystemProgram,\n TAccountUserAccount\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n CreateUserAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMember,\n TAccountSystemProgram,\n TAccountUserAccount\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n member: { value: input.member ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.userAccount.value) {\n accounts.userAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([117, 115, 101, 114])),\n getAddressEncoder().encode(expectAddress(accounts.member.value)),\n ],\n });\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.member),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.userAccount),\n ...remainingAccounts,\n ],\n data: getCreateUserAccountInstructionDataEncoder().encode(\n args as CreateUserAccountInstructionDataArgs,\n ),\n programAddress,\n } as CreateUserAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMember,\n TAccountSystemProgram,\n TAccountUserAccount\n >);\n}\n\nexport type CreateUserAccountInput<\n TAccountPayer extends string = string,\n TAccountMember extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountUserAccount extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n member: TransactionSigner<TAccountMember>;\n systemProgram?: Address<TAccountSystemProgram>;\n userAccount: Address<TAccountUserAccount>;\n role: CreateUserAccountInstructionDataArgs[\"role\"];\n transactionManagerUrl: CreateUserAccountInstructionDataArgs[\"transactionManagerUrl\"];\n remainingAccounts: CreateUserAccountInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getCreateUserAccountInstruction<\n TAccountPayer extends string,\n TAccountMember extends string,\n TAccountSystemProgram extends string,\n TAccountUserAccount extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateUserAccountInput<\n TAccountPayer,\n TAccountMember,\n TAccountSystemProgram,\n TAccountUserAccount\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateUserAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMember,\n TAccountSystemProgram,\n TAccountUserAccount\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n member: { value: input.member ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.member),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.userAccount),\n ...remainingAccounts,\n ],\n data: getCreateUserAccountInstructionDataEncoder().encode(\n args as CreateUserAccountInstructionDataArgs,\n ),\n programAddress,\n } as CreateUserAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMember,\n TAccountSystemProgram,\n TAccountUserAccount\n >);\n}\n\nexport type ParsedCreateUserAccountInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n member: TAccountMetas[1];\n systemProgram: TAccountMetas[2];\n userAccount: TAccountMetas[3];\n };\n data: CreateUserAccountInstructionData;\n};\n\nexport function parseCreateUserAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateUserAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n member: getNextAccount(),\n systemProgram: getNextAccount(),\n userAccount: getNextAccount(),\n },\n data: getCreateUserAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const CREATE_WALLET_DISCRIMINATOR = new Uint8Array([16]);\n\nexport function getCreateWalletDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n CREATE_WALLET_DISCRIMINATOR,\n );\n}\n\nexport type CreateWalletInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountInitialMember extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountGlobalCounter extends string | AccountMeta<string> = string,\n TAccountUserAccount extends string | AccountMeta<string> = string,\n TAccountSettings extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountInitialMember extends string\n ? ReadonlySignerAccount<TAccountInitialMember> &\n AccountSignerMeta<TAccountInitialMember>\n : TAccountInitialMember,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountGlobalCounter extends string\n ? WritableAccount<TAccountGlobalCounter>\n : TAccountGlobalCounter,\n TAccountUserAccount extends string\n ? WritableAccount<TAccountUserAccount>\n : TAccountUserAccount,\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateWalletInstructionData = {\n discriminator: ReadonlyUint8Array;\n settingsIndex: bigint;\n};\n\nexport type CreateWalletInstructionDataArgs = {\n settingsIndex: number | bigint;\n};\n\nexport function getCreateWalletInstructionDataEncoder(): FixedSizeEncoder<CreateWalletInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"settingsIndex\", getU128Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CREATE_WALLET_DISCRIMINATOR }),\n );\n}\n\nexport function getCreateWalletInstructionDataDecoder(): FixedSizeDecoder<CreateWalletInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"settingsIndex\", getU128Decoder()],\n ]);\n}\n\nexport function getCreateWalletInstructionDataCodec(): FixedSizeCodec<\n CreateWalletInstructionDataArgs,\n CreateWalletInstructionData\n> {\n return combineCodec(\n getCreateWalletInstructionDataEncoder(),\n getCreateWalletInstructionDataDecoder(),\n );\n}\n\nexport type CreateWalletInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type CreateWalletAsyncInput<\n TAccountPayer extends string = string,\n TAccountInitialMember extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountGlobalCounter extends string = string,\n TAccountUserAccount extends string = string,\n TAccountSettings extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n initialMember: TransactionSigner<TAccountInitialMember>;\n systemProgram?: Address<TAccountSystemProgram>;\n globalCounter?: Address<TAccountGlobalCounter>;\n userAccount?: Address<TAccountUserAccount>;\n settings?: Address<TAccountSettings>;\n settingsIndex: CreateWalletInstructionDataArgs[\"settingsIndex\"];\n remainingAccounts: CreateWalletInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getCreateWalletInstructionAsync<\n TAccountPayer extends string,\n TAccountInitialMember extends string,\n TAccountSystemProgram extends string,\n TAccountGlobalCounter extends string,\n TAccountUserAccount extends string,\n TAccountSettings extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateWalletAsyncInput<\n TAccountPayer,\n TAccountInitialMember,\n TAccountSystemProgram,\n TAccountGlobalCounter,\n TAccountUserAccount,\n TAccountSettings\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n CreateWalletInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountInitialMember,\n TAccountSystemProgram,\n TAccountGlobalCounter,\n TAccountUserAccount,\n TAccountSettings\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n initialMember: { value: input.initialMember ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n globalCounter: { value: input.globalCounter ?? null, isWritable: true },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n settings: { value: input.settings ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.globalCounter.value) {\n accounts.globalCounter.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 103, 108, 111, 98, 97, 108, 95, 99, 111, 117, 110, 116, 101, 114,\n ]),\n ),\n ],\n });\n }\n if (!accounts.userAccount.value) {\n accounts.userAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([117, 115, 101, 114])),\n getAddressEncoder().encode(expectAddress(accounts.initialMember.value)),\n ],\n });\n }\n if (!accounts.settings.value) {\n accounts.settings.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 109, 117, 108, 116, 105, 95, 119, 97, 108, 108, 101, 116,\n ]),\n ),\n getU128Encoder().encode(expectSome(args.settingsIndex)),\n ],\n });\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.initialMember),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.globalCounter),\n getAccountMeta(accounts.userAccount),\n getAccountMeta(accounts.settings),\n ...remainingAccounts,\n ],\n data: getCreateWalletInstructionDataEncoder().encode(\n args as CreateWalletInstructionDataArgs,\n ),\n programAddress,\n } as CreateWalletInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountInitialMember,\n TAccountSystemProgram,\n TAccountGlobalCounter,\n TAccountUserAccount,\n TAccountSettings\n >);\n}\n\nexport type CreateWalletInput<\n TAccountPayer extends string = string,\n TAccountInitialMember extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountGlobalCounter extends string = string,\n TAccountUserAccount extends string = string,\n TAccountSettings extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n initialMember: TransactionSigner<TAccountInitialMember>;\n systemProgram?: Address<TAccountSystemProgram>;\n globalCounter: Address<TAccountGlobalCounter>;\n userAccount: Address<TAccountUserAccount>;\n settings: Address<TAccountSettings>;\n settingsIndex: CreateWalletInstructionDataArgs[\"settingsIndex\"];\n remainingAccounts: CreateWalletInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getCreateWalletInstruction<\n TAccountPayer extends string,\n TAccountInitialMember extends string,\n TAccountSystemProgram extends string,\n TAccountGlobalCounter extends string,\n TAccountUserAccount extends string,\n TAccountSettings extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: CreateWalletInput<\n TAccountPayer,\n TAccountInitialMember,\n TAccountSystemProgram,\n TAccountGlobalCounter,\n TAccountUserAccount,\n TAccountSettings\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateWalletInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountInitialMember,\n TAccountSystemProgram,\n TAccountGlobalCounter,\n TAccountUserAccount,\n TAccountSettings\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n initialMember: { value: input.initialMember ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n globalCounter: { value: input.globalCounter ?? null, isWritable: true },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n settings: { value: input.settings ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.initialMember),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.globalCounter),\n getAccountMeta(accounts.userAccount),\n getAccountMeta(accounts.settings),\n ...remainingAccounts,\n ],\n data: getCreateWalletInstructionDataEncoder().encode(\n args as CreateWalletInstructionDataArgs,\n ),\n programAddress,\n } as CreateWalletInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountInitialMember,\n TAccountSystemProgram,\n TAccountGlobalCounter,\n TAccountUserAccount,\n TAccountSettings\n >);\n}\n\nexport type ParsedCreateWalletInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n initialMember: TAccountMetas[1];\n systemProgram: TAccountMetas[2];\n globalCounter: TAccountMetas[3];\n userAccount: TAccountMetas[4];\n settings: TAccountMetas[5];\n };\n data: CreateWalletInstructionData;\n};\n\nexport function parseCreateWalletInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateWalletInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n initialMember: getNextAccount(),\n systemProgram: getNextAccount(),\n globalCounter: getNextAccount(),\n userAccount: getNextAccount(),\n settings: getNextAccount(),\n },\n data: getCreateWalletInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\n\nexport const DISABLE_DOMAIN_CONFIG_DISCRIMINATOR = new Uint8Array([2]);\n\nexport function getDisableDomainConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n DISABLE_DOMAIN_CONFIG_DISCRIMINATOR,\n );\n}\n\nexport type DisableDomainConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountAdmin extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountDomainConfig extends string\n ? WritableAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountAdmin extends string\n ? ReadonlySignerAccount<TAccountAdmin> &\n AccountSignerMeta<TAccountAdmin>\n : TAccountAdmin,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type DisableDomainConfigInstructionData = {\n discriminator: ReadonlyUint8Array;\n disable: boolean;\n};\n\nexport type DisableDomainConfigInstructionDataArgs = { disable: boolean };\n\nexport function getDisableDomainConfigInstructionDataEncoder(): FixedSizeEncoder<DisableDomainConfigInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"disable\", getBooleanEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: DISABLE_DOMAIN_CONFIG_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getDisableDomainConfigInstructionDataDecoder(): FixedSizeDecoder<DisableDomainConfigInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"disable\", getBooleanDecoder()],\n ]);\n}\n\nexport function getDisableDomainConfigInstructionDataCodec(): FixedSizeCodec<\n DisableDomainConfigInstructionDataArgs,\n DisableDomainConfigInstructionData\n> {\n return combineCodec(\n getDisableDomainConfigInstructionDataEncoder(),\n getDisableDomainConfigInstructionDataDecoder(),\n );\n}\n\nexport type DisableDomainConfigInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type DisableDomainConfigInput<\n TAccountDomainConfig extends string = string,\n TAccountAdmin extends string = string,\n> = {\n domainConfig: Address<TAccountDomainConfig>;\n admin: TransactionSigner<TAccountAdmin>;\n disable: DisableDomainConfigInstructionDataArgs[\"disable\"];\n remainingAccounts: DisableDomainConfigInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getDisableDomainConfigInstruction<\n TAccountDomainConfig extends string,\n TAccountAdmin extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: DisableDomainConfigInput<TAccountDomainConfig, TAccountAdmin>,\n config?: { programAddress?: TProgramAddress },\n): DisableDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountAdmin\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n domainConfig: { value: input.domainConfig ?? null, isWritable: true },\n admin: { value: input.admin ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.admin),\n ...remainingAccounts,\n ],\n data: getDisableDomainConfigInstructionDataEncoder().encode(\n args as DisableDomainConfigInstructionDataArgs,\n ),\n programAddress,\n } as DisableDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountAdmin\n >);\n}\n\nexport type ParsedDisableDomainConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n domainConfig: TAccountMetas[0];\n admin: TAccountMetas[1];\n };\n data: DisableDomainConfigInstructionData;\n};\n\nexport function parseDisableDomainConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedDisableDomainConfigInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: { domainConfig: getNextAccount(), admin: getNextAccount() },\n data: getDisableDomainConfigInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\n\nexport const EDIT_DOMAIN_CONFIG_DISCRIMINATOR = new Uint8Array([1]);\n\nexport function getEditDomainConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n EDIT_DOMAIN_CONFIG_DISCRIMINATOR,\n );\n}\n\nexport type EditDomainConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountNewAuthority extends string | AccountMeta<string> = string,\n TAccountUserAccount extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountDomainConfig extends string\n ? WritableAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountNewAuthority extends string\n ? ReadonlySignerAccount<TAccountNewAuthority> &\n AccountSignerMeta<TAccountNewAuthority>\n : TAccountNewAuthority,\n TAccountUserAccount extends string\n ? WritableAccount<TAccountUserAccount>\n : TAccountUserAccount,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EditDomainConfigInstructionData = {\n discriminator: ReadonlyUint8Array;\n newOrigins: Option<Array<string>>;\n};\n\nexport type EditDomainConfigInstructionDataArgs = {\n newOrigins: OptionOrNullable<Array<string>>;\n};\n\nexport function getEditDomainConfigInstructionDataEncoder(): Encoder<EditDomainConfigInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"newOrigins\",\n getOptionEncoder(\n getArrayEncoder(\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ),\n ),\n ],\n ]),\n (value) => ({ ...value, discriminator: EDIT_DOMAIN_CONFIG_DISCRIMINATOR }),\n );\n}\n\nexport function getEditDomainConfigInstructionDataDecoder(): Decoder<EditDomainConfigInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\n \"newOrigins\",\n getOptionDecoder(\n getArrayDecoder(\n addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()),\n ),\n ),\n ],\n ]);\n}\n\nexport function getEditDomainConfigInstructionDataCodec(): Codec<\n EditDomainConfigInstructionDataArgs,\n EditDomainConfigInstructionData\n> {\n return combineCodec(\n getEditDomainConfigInstructionDataEncoder(),\n getEditDomainConfigInstructionDataDecoder(),\n );\n}\n\nexport type EditDomainConfigInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type EditDomainConfigInput<\n TAccountDomainConfig extends string = string,\n TAccountAuthority extends string = string,\n TAccountNewAuthority extends string = string,\n TAccountUserAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n domainConfig: Address<TAccountDomainConfig>;\n authority: TransactionSigner<TAccountAuthority>;\n newAuthority?: TransactionSigner<TAccountNewAuthority>;\n userAccount?: Address<TAccountUserAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n newOrigins: EditDomainConfigInstructionDataArgs[\"newOrigins\"];\n remainingAccounts: EditDomainConfigInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getEditDomainConfigInstruction<\n TAccountDomainConfig extends string,\n TAccountAuthority extends string,\n TAccountNewAuthority extends string,\n TAccountUserAccount extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: EditDomainConfigInput<\n TAccountDomainConfig,\n TAccountAuthority,\n TAccountNewAuthority,\n TAccountUserAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): EditDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountAuthority,\n TAccountNewAuthority,\n TAccountUserAccount,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n domainConfig: { value: input.domainConfig ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n newAuthority: { value: input.newAuthority ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.newAuthority),\n getAccountMeta(accounts.userAccount),\n getAccountMeta(accounts.systemProgram),\n ...remainingAccounts,\n ],\n data: getEditDomainConfigInstructionDataEncoder().encode(\n args as EditDomainConfigInstructionDataArgs,\n ),\n programAddress,\n } as EditDomainConfigInstruction<\n TProgramAddress,\n TAccountDomainConfig,\n TAccountAuthority,\n TAccountNewAuthority,\n TAccountUserAccount,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedEditDomainConfigInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n domainConfig: TAccountMetas[0];\n authority: TAccountMetas[1];\n newAuthority?: TAccountMetas[2] | undefined;\n userAccount?: TAccountMetas[3] | undefined;\n systemProgram: TAccountMetas[4];\n };\n data: EditDomainConfigInstructionData;\n};\n\nexport function parseEditDomainConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedEditDomainConfigInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n domainConfig: getNextAccount(),\n authority: getNextAccount(),\n newAuthority: getNextOptionalAccount(),\n userAccount: getNextOptionalAccount(),\n systemProgram: getNextAccount(),\n },\n data: getEditDomainConfigInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const EDIT_TRANSACTION_MANAGER_URL_DISCRIMINATOR = new Uint8Array([6]);\n\nexport function getEditTransactionManagerUrlDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n EDIT_TRANSACTION_MANAGER_URL_DISCRIMINATOR,\n );\n}\n\nexport type EditTransactionManagerUrlInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountTransactionManagerAccount extends\n | string\n | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountTransactionManagerAccount extends string\n ? WritableAccount<TAccountTransactionManagerAccount>\n : TAccountTransactionManagerAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EditTransactionManagerUrlInstructionData = {\n discriminator: ReadonlyUint8Array;\n transactionManagerUrl: string;\n};\n\nexport type EditTransactionManagerUrlInstructionDataArgs = {\n transactionManagerUrl: string;\n};\n\nexport function getEditTransactionManagerUrlInstructionDataEncoder(): Encoder<EditTransactionManagerUrlInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"transactionManagerUrl\",\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: EDIT_TRANSACTION_MANAGER_URL_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getEditTransactionManagerUrlInstructionDataDecoder(): Decoder<EditTransactionManagerUrlInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\n \"transactionManagerUrl\",\n addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()),\n ],\n ]);\n}\n\nexport function getEditTransactionManagerUrlInstructionDataCodec(): Codec<\n EditTransactionManagerUrlInstructionDataArgs,\n EditTransactionManagerUrlInstructionData\n> {\n return combineCodec(\n getEditTransactionManagerUrlInstructionDataEncoder(),\n getEditTransactionManagerUrlInstructionDataDecoder(),\n );\n}\n\nexport type EditTransactionManagerUrlInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type EditTransactionManagerUrlAsyncInput<\n TAccountSigner extends string = string,\n TAccountTransactionManagerAccount extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n transactionManagerAccount?: Address<TAccountTransactionManagerAccount>;\n transactionManagerUrl: EditTransactionManagerUrlInstructionDataArgs[\"transactionManagerUrl\"];\n remainingAccounts: EditTransactionManagerUrlInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getEditTransactionManagerUrlInstructionAsync<\n TAccountSigner extends string,\n TAccountTransactionManagerAccount extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: EditTransactionManagerUrlAsyncInput<\n TAccountSigner,\n TAccountTransactionManagerAccount\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n EditTransactionManagerUrlInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTransactionManagerAccount\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n transactionManagerAccount: {\n value: input.transactionManagerAccount ?? null,\n isWritable: true,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.transactionManagerAccount.value) {\n accounts.transactionManagerAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([117, 115, 101, 114])),\n getAddressEncoder().encode(expectAddress(accounts.signer.value)),\n ],\n });\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.transactionManagerAccount),\n ...remainingAccounts,\n ],\n data: getEditTransactionManagerUrlInstructionDataEncoder().encode(\n args as EditTransactionManagerUrlInstructionDataArgs,\n ),\n programAddress,\n } as EditTransactionManagerUrlInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTransactionManagerAccount\n >);\n}\n\nexport type EditTransactionManagerUrlInput<\n TAccountSigner extends string = string,\n TAccountTransactionManagerAccount extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n transactionManagerAccount: Address<TAccountTransactionManagerAccount>;\n transactionManagerUrl: EditTransactionManagerUrlInstructionDataArgs[\"transactionManagerUrl\"];\n remainingAccounts: EditTransactionManagerUrlInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getEditTransactionManagerUrlInstruction<\n TAccountSigner extends string,\n TAccountTransactionManagerAccount extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: EditTransactionManagerUrlInput<\n TAccountSigner,\n TAccountTransactionManagerAccount\n >,\n config?: { programAddress?: TProgramAddress },\n): EditTransactionManagerUrlInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTransactionManagerAccount\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n transactionManagerAccount: {\n value: input.transactionManagerAccount ?? null,\n isWritable: true,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.transactionManagerAccount),\n ...remainingAccounts,\n ],\n data: getEditTransactionManagerUrlInstructionDataEncoder().encode(\n args as EditTransactionManagerUrlInstructionDataArgs,\n ),\n programAddress,\n } as EditTransactionManagerUrlInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTransactionManagerAccount\n >);\n}\n\nexport type ParsedEditTransactionManagerUrlInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n transactionManagerAccount: TAccountMetas[1];\n };\n data: EditTransactionManagerUrlInstructionData;\n};\n\nexport function parseEditTransactionManagerUrlInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedEditTransactionManagerUrlInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n transactionManagerAccount: getNextAccount(),\n },\n data: getEditTransactionManagerUrlInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getSecp256r1VerifyArgsDecoder,\n getSecp256r1VerifyArgsEncoder,\n type Secp256r1VerifyArgs,\n type Secp256r1VerifyArgsArgs,\n} from \"../types\";\n\nexport const EDIT_USER_DELEGATE_DISCRIMINATOR = new Uint8Array([7]);\n\nexport function getEditUserDelegateDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n EDIT_USER_DELEGATE_DISCRIMINATOR,\n );\n}\n\nexport type EditUserDelegateInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountFeePayer extends string | AccountMeta<string> = string,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountUserAccount extends string | AccountMeta<string> = string,\n TAccountOldSettings extends string | AccountMeta<string> = string,\n TAccountNewSettings extends string | AccountMeta<string> = string,\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountFeePayer extends string\n ? WritableSignerAccount<TAccountFeePayer> &\n AccountSignerMeta<TAccountFeePayer>\n : TAccountFeePayer,\n TAccountSigner extends string\n ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountUserAccount extends string\n ? WritableAccount<TAccountUserAccount>\n : TAccountUserAccount,\n TAccountOldSettings extends string\n ? WritableAccount<TAccountOldSettings>\n : TAccountOldSettings,\n TAccountNewSettings extends string\n ? WritableAccount<TAccountNewSettings>\n : TAccountNewSettings,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n TAccountDomainConfig extends string\n ? ReadonlyAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EditUserDelegateInstructionData = {\n discriminator: ReadonlyUint8Array;\n secp256r1VerifyArgs: Option<Secp256r1VerifyArgs>;\n delegateTo: Option<bigint>;\n};\n\nexport type EditUserDelegateInstructionDataArgs = {\n secp256r1VerifyArgs: OptionOrNullable<Secp256r1VerifyArgsArgs>;\n delegateTo: OptionOrNullable<number | bigint>;\n};\n\nexport function getEditUserDelegateInstructionDataEncoder(): Encoder<EditUserDelegateInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"secp256r1VerifyArgs\",\n getOptionEncoder(getSecp256r1VerifyArgsEncoder()),\n ],\n [\"delegateTo\", getOptionEncoder(getU128Encoder())],\n ]),\n (value) => ({ ...value, discriminator: EDIT_USER_DELEGATE_DISCRIMINATOR }),\n );\n}\n\nexport function getEditUserDelegateInstructionDataDecoder(): Decoder<EditUserDelegateInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"secp256r1VerifyArgs\", getOptionDecoder(getSecp256r1VerifyArgsDecoder())],\n [\"delegateTo\", getOptionDecoder(getU128Decoder())],\n ]);\n}\n\nexport function getEditUserDelegateInstructionDataCodec(): Codec<\n EditUserDelegateInstructionDataArgs,\n EditUserDelegateInstructionData\n> {\n return combineCodec(\n getEditUserDelegateInstructionDataEncoder(),\n getEditUserDelegateInstructionDataDecoder(),\n );\n}\n\nexport type EditUserDelegateInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type EditUserDelegateInput<\n TAccountFeePayer extends string = string,\n TAccountSigner extends string = string,\n TAccountUserAccount extends string = string,\n TAccountOldSettings extends string = string,\n TAccountNewSettings extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountDomainConfig extends string = string,\n> = {\n feePayer: TransactionSigner<TAccountFeePayer>;\n signer?: TransactionSigner<TAccountSigner>;\n userAccount: Address<TAccountUserAccount>;\n oldSettings?: Address<TAccountOldSettings>;\n newSettings?: Address<TAccountNewSettings>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n domainConfig?: Address<TAccountDomainConfig>;\n secp256r1VerifyArgs: EditUserDelegateInstructionDataArgs[\"secp256r1VerifyArgs\"];\n delegateTo: EditUserDelegateInstructionDataArgs[\"delegateTo\"];\n remainingAccounts: EditUserDelegateInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getEditUserDelegateInstruction<\n TAccountFeePayer extends string,\n TAccountSigner extends string,\n TAccountUserAccount extends string,\n TAccountOldSettings extends string,\n TAccountNewSettings extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TAccountDomainConfig extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: EditUserDelegateInput<\n TAccountFeePayer,\n TAccountSigner,\n TAccountUserAccount,\n TAccountOldSettings,\n TAccountNewSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountDomainConfig\n >,\n config?: { programAddress?: TProgramAddress },\n): EditUserDelegateInstruction<\n TProgramAddress,\n TAccountFeePayer,\n TAccountSigner,\n TAccountUserAccount,\n TAccountOldSettings,\n TAccountNewSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountDomainConfig\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n feePayer: { value: input.feePayer ?? null, isWritable: true },\n signer: { value: input.signer ?? null, isWritable: false },\n userAccount: { value: input.userAccount ?? null, isWritable: true },\n oldSettings: { value: input.oldSettings ?? null, isWritable: true },\n newSettings: { value: input.newSettings ?? null, isWritable: true },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n domainConfig: { value: input.domainConfig ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.feePayer),\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.userAccount),\n getAccountMeta(accounts.oldSettings),\n getAccountMeta(accounts.newSettings),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.domainConfig),\n ...remainingAccounts,\n ],\n data: getEditUserDelegateInstructionDataEncoder().encode(\n args as EditUserDelegateInstructionDataArgs,\n ),\n programAddress,\n } as EditUserDelegateInstruction<\n TProgramAddress,\n TAccountFeePayer,\n TAccountSigner,\n TAccountUserAccount,\n TAccountOldSettings,\n TAccountNewSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountDomainConfig\n >);\n}\n\nexport type ParsedEditUserDelegateInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n feePayer: TAccountMetas[0];\n signer?: TAccountMetas[1] | undefined;\n userAccount: TAccountMetas[2];\n oldSettings?: TAccountMetas[3] | undefined;\n newSettings?: TAccountMetas[4] | undefined;\n slotHashSysvar?: TAccountMetas[5] | undefined;\n instructionsSysvar?: TAccountMetas[6] | undefined;\n domainConfig?: TAccountMetas[7] | undefined;\n };\n data: EditUserDelegateInstructionData;\n};\n\nexport function parseEditUserDelegateInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedEditUserDelegateInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n feePayer: getNextAccount(),\n signer: getNextOptionalAccount(),\n userAccount: getNextAccount(),\n oldSettings: getNextOptionalAccount(),\n newSettings: getNextOptionalAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextOptionalAccount(),\n domainConfig: getNextOptionalAccount(),\n },\n data: getEditUserDelegateInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\nimport {\n getTransactionSyncSignersDecoder,\n getTransactionSyncSignersEncoder,\n type TransactionSyncSigners,\n type TransactionSyncSignersArgs,\n} from \"../types\";\n\nexport const NATIVE_TRANSFER_INTENT_DISCRIMINATOR = new Uint8Array([17]);\n\nexport function getNativeTransferIntentDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n NATIVE_TRANSFER_INTENT_DISCRIMINATOR,\n );\n}\n\nexport type NativeTransferIntentInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TAccountSource extends string | AccountMeta<string> = string,\n TAccountDestination extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n TAccountSource extends string\n ? WritableAccount<TAccountSource>\n : TAccountSource,\n TAccountDestination extends string\n ? WritableAccount<TAccountDestination>\n : TAccountDestination,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type NativeTransferIntentInstructionData = {\n discriminator: ReadonlyUint8Array;\n amount: bigint;\n signers: Array<TransactionSyncSigners>;\n};\n\nexport type NativeTransferIntentInstructionDataArgs = {\n amount: number | bigint;\n signers: Array<TransactionSyncSignersArgs>;\n};\n\nexport function getNativeTransferIntentInstructionDataEncoder(): Encoder<NativeTransferIntentInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"amount\", getU64Encoder()],\n [\"signers\", getArrayEncoder(getTransactionSyncSignersEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: NATIVE_TRANSFER_INTENT_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getNativeTransferIntentInstructionDataDecoder(): Decoder<NativeTransferIntentInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"amount\", getU64Decoder()],\n [\"signers\", getArrayDecoder(getTransactionSyncSignersDecoder())],\n ]);\n}\n\nexport function getNativeTransferIntentInstructionDataCodec(): Codec<\n NativeTransferIntentInstructionDataArgs,\n NativeTransferIntentInstructionData\n> {\n return combineCodec(\n getNativeTransferIntentInstructionDataEncoder(),\n getNativeTransferIntentInstructionDataDecoder(),\n );\n}\n\nexport type NativeTransferIntentInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type NativeTransferIntentAsyncInput<\n TAccountSettings extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountSource extends string = string,\n TAccountDestination extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n source?: Address<TAccountSource>;\n destination: Address<TAccountDestination>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: NativeTransferIntentInstructionDataArgs[\"amount\"];\n signers: NativeTransferIntentInstructionDataArgs[\"signers\"];\n remainingAccounts: NativeTransferIntentInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getNativeTransferIntentInstructionAsync<\n TAccountSettings extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TAccountSource extends string,\n TAccountDestination extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: NativeTransferIntentAsyncInput<\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountDestination,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n NativeTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountDestination,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n source: { value: input.source ?? null, isWritable: true },\n destination: { value: input.destination ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n if (!accounts.source.value) {\n accounts.source.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 109, 117, 108, 116, 105, 95, 119, 97, 108, 108, 101, 116,\n ]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.settings.value)),\n getBytesEncoder().encode(new Uint8Array([118, 97, 117, 108, 116])),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.systemProgram),\n ...remainingAccounts,\n ],\n data: getNativeTransferIntentInstructionDataEncoder().encode(\n args as NativeTransferIntentInstructionDataArgs,\n ),\n programAddress,\n } as NativeTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountDestination,\n TAccountSystemProgram\n >);\n}\n\nexport type NativeTransferIntentInput<\n TAccountSettings extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountSource extends string = string,\n TAccountDestination extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n source: Address<TAccountSource>;\n destination: Address<TAccountDestination>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: NativeTransferIntentInstructionDataArgs[\"amount\"];\n signers: NativeTransferIntentInstructionDataArgs[\"signers\"];\n remainingAccounts: NativeTransferIntentInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getNativeTransferIntentInstruction<\n TAccountSettings extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TAccountSource extends string,\n TAccountDestination extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: NativeTransferIntentInput<\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountDestination,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): NativeTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountDestination,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n source: { value: input.source ?? null, isWritable: true },\n destination: { value: input.destination ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.systemProgram),\n ...remainingAccounts,\n ],\n data: getNativeTransferIntentInstructionDataEncoder().encode(\n args as NativeTransferIntentInstructionDataArgs,\n ),\n programAddress,\n } as NativeTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountDestination,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedNativeTransferIntentInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n slotHashSysvar?: TAccountMetas[1] | undefined;\n instructionsSysvar: TAccountMetas[2];\n source: TAccountMetas[3];\n destination: TAccountMetas[4];\n systemProgram: TAccountMetas[5];\n };\n data: NativeTransferIntentInstructionData;\n};\n\nexport function parseNativeTransferIntentInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedNativeTransferIntentInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextAccount(),\n source: getNextAccount(),\n destination: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getNativeTransferIntentInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\nimport {\n getCompressedTokenArgsDecoder,\n getCompressedTokenArgsEncoder,\n getProofArgsDecoder,\n getProofArgsEncoder,\n getSplInterfacePdaArgsDecoder,\n getSplInterfacePdaArgsEncoder,\n getTransactionSyncSignersDecoder,\n getTransactionSyncSignersEncoder,\n type CompressedTokenArgs,\n type CompressedTokenArgsArgs,\n type ProofArgs,\n type ProofArgsArgs,\n type SplInterfacePdaArgs,\n type SplInterfacePdaArgsArgs,\n type TransactionSyncSigners,\n type TransactionSyncSignersArgs,\n} from \"../types\";\n\nexport const TOKEN_TRANSFER_INTENT_DISCRIMINATOR = new Uint8Array([18]);\n\nexport function getTokenTransferIntentDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TOKEN_TRANSFER_INTENT_DISCRIMINATOR,\n );\n}\n\nexport type TokenTransferIntentInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TAccountSource extends string | AccountMeta<string> = string,\n TAccountSourceSplTokenAccount extends string | AccountMeta<string> = string,\n TAccountSourceCtokenTokenAccount extends\n | string\n | AccountMeta<string> = string,\n TAccountDestination extends string | AccountMeta<string> = string,\n TAccountDestinationSplTokenAccount extends\n | string\n | AccountMeta<string> = string,\n TAccountDestinationCtokenTokenAccount extends\n | string\n | AccountMeta<string> = string,\n TAccountTokenProgram extends\n | string\n | AccountMeta<string> = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\n TAccountMint extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountCompressedTokenProgramAuthority extends\n | string\n | AccountMeta<string> = \"GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy\",\n TAccountSplInterfacePda extends string | AccountMeta<string> = string,\n TAccountCompressibleConfig extends string | AccountMeta<string> = string,\n TAccountRentSponsor extends string | AccountMeta<string> = string,\n TAccountCompressedTokenProgram extends\n | string\n | AccountMeta<string> = \"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n TAccountSource extends string\n ? ReadonlyAccount<TAccountSource>\n : TAccountSource,\n TAccountSourceSplTokenAccount extends string\n ? WritableAccount<TAccountSourceSplTokenAccount>\n : TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount extends string\n ? WritableAccount<TAccountSourceCtokenTokenAccount>\n : TAccountSourceCtokenTokenAccount,\n TAccountDestination extends string\n ? ReadonlyAccount<TAccountDestination>\n : TAccountDestination,\n TAccountDestinationSplTokenAccount extends string\n ? WritableAccount<TAccountDestinationSplTokenAccount>\n : TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount extends string\n ? WritableAccount<TAccountDestinationCtokenTokenAccount>\n : TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountMint extends string\n ? WritableAccount<TAccountMint>\n : TAccountMint,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority extends string\n ? ReadonlyAccount<TAccountCompressedTokenProgramAuthority>\n : TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda extends string\n ? WritableAccount<TAccountSplInterfacePda>\n : TAccountSplInterfacePda,\n TAccountCompressibleConfig extends string\n ? ReadonlyAccount<TAccountCompressibleConfig>\n : TAccountCompressibleConfig,\n TAccountRentSponsor extends string\n ? WritableAccount<TAccountRentSponsor>\n : TAccountRentSponsor,\n TAccountCompressedTokenProgram extends string\n ? ReadonlyAccount<TAccountCompressedTokenProgram>\n : TAccountCompressedTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TokenTransferIntentInstructionData = {\n discriminator: ReadonlyUint8Array;\n splInterfacePdaArgs: Option<SplInterfacePdaArgs>;\n amount: bigint;\n sourceCompressedTokenAccounts: Array<CompressedTokenArgs>;\n compressedProofArgs: Option<ProofArgs>;\n signers: Array<TransactionSyncSigners>;\n};\n\nexport type TokenTransferIntentInstructionDataArgs = {\n splInterfacePdaArgs: OptionOrNullable<SplInterfacePdaArgsArgs>;\n amount: number | bigint;\n sourceCompressedTokenAccounts: Array<CompressedTokenArgsArgs>;\n compressedProofArgs: OptionOrNullable<ProofArgsArgs>;\n signers: Array<TransactionSyncSignersArgs>;\n};\n\nexport function getTokenTransferIntentInstructionDataEncoder(): Encoder<TokenTransferIntentInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"splInterfacePdaArgs\",\n getOptionEncoder(getSplInterfacePdaArgsEncoder()),\n ],\n [\"amount\", getU64Encoder()],\n [\n \"sourceCompressedTokenAccounts\",\n getArrayEncoder(getCompressedTokenArgsEncoder()),\n ],\n [\"compressedProofArgs\", getOptionEncoder(getProofArgsEncoder())],\n [\"signers\", getArrayEncoder(getTransactionSyncSignersEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: TOKEN_TRANSFER_INTENT_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTokenTransferIntentInstructionDataDecoder(): Decoder<TokenTransferIntentInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"splInterfacePdaArgs\", getOptionDecoder(getSplInterfacePdaArgsDecoder())],\n [\"amount\", getU64Decoder()],\n [\n \"sourceCompressedTokenAccounts\",\n getArrayDecoder(getCompressedTokenArgsDecoder()),\n ],\n [\"compressedProofArgs\", getOptionDecoder(getProofArgsDecoder())],\n [\"signers\", getArrayDecoder(getTransactionSyncSignersDecoder())],\n ]);\n}\n\nexport function getTokenTransferIntentInstructionDataCodec(): Codec<\n TokenTransferIntentInstructionDataArgs,\n TokenTransferIntentInstructionData\n> {\n return combineCodec(\n getTokenTransferIntentInstructionDataEncoder(),\n getTokenTransferIntentInstructionDataDecoder(),\n );\n}\n\nexport type TokenTransferIntentInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TokenTransferIntentAsyncInput<\n TAccountSettings extends string = string,\n TAccountPayer extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountSource extends string = string,\n TAccountSourceSplTokenAccount extends string = string,\n TAccountSourceCtokenTokenAccount extends string = string,\n TAccountDestination extends string = string,\n TAccountDestinationSplTokenAccount extends string = string,\n TAccountDestinationCtokenTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountMint extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountCompressedTokenProgramAuthority extends string = string,\n TAccountSplInterfacePda extends string = string,\n TAccountCompressibleConfig extends string = string,\n TAccountRentSponsor extends string = string,\n TAccountCompressedTokenProgram extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n payer: TransactionSigner<TAccountPayer>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n source?: Address<TAccountSource>;\n sourceSplTokenAccount?: Address<TAccountSourceSplTokenAccount>;\n sourceCtokenTokenAccount?: Address<TAccountSourceCtokenTokenAccount>;\n destination: Address<TAccountDestination>;\n destinationSplTokenAccount?: Address<TAccountDestinationSplTokenAccount>;\n destinationCtokenTokenAccount?: Address<TAccountDestinationCtokenTokenAccount>;\n tokenProgram?: Address<TAccountTokenProgram>;\n mint: Address<TAccountMint>;\n systemProgram?: Address<TAccountSystemProgram>;\n compressedTokenProgramAuthority?: Address<TAccountCompressedTokenProgramAuthority>;\n splInterfacePda?: Address<TAccountSplInterfacePda>;\n compressibleConfig: Address<TAccountCompressibleConfig>;\n rentSponsor?: Address<TAccountRentSponsor>;\n compressedTokenProgram?: Address<TAccountCompressedTokenProgram>;\n splInterfacePdaArgs: TokenTransferIntentInstructionDataArgs[\"splInterfacePdaArgs\"];\n amount: TokenTransferIntentInstructionDataArgs[\"amount\"];\n sourceCompressedTokenAccounts: TokenTransferIntentInstructionDataArgs[\"sourceCompressedTokenAccounts\"];\n compressedProofArgs: TokenTransferIntentInstructionDataArgs[\"compressedProofArgs\"];\n signers: TokenTransferIntentInstructionDataArgs[\"signers\"];\n remainingAccounts: TokenTransferIntentInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport async function getTokenTransferIntentInstructionAsync<\n TAccountSettings extends string,\n TAccountPayer extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TAccountSource extends string,\n TAccountSourceSplTokenAccount extends string,\n TAccountSourceCtokenTokenAccount extends string,\n TAccountDestination extends string,\n TAccountDestinationSplTokenAccount extends string,\n TAccountDestinationCtokenTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountMint extends string,\n TAccountSystemProgram extends string,\n TAccountCompressedTokenProgramAuthority extends string,\n TAccountSplInterfacePda extends string,\n TAccountCompressibleConfig extends string,\n TAccountRentSponsor extends string,\n TAccountCompressedTokenProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TokenTransferIntentAsyncInput<\n TAccountSettings,\n TAccountPayer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount,\n TAccountDestination,\n TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram,\n TAccountMint,\n TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda,\n TAccountCompressibleConfig,\n TAccountRentSponsor,\n TAccountCompressedTokenProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n TokenTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount,\n TAccountDestination,\n TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram,\n TAccountMint,\n TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda,\n TAccountCompressibleConfig,\n TAccountRentSponsor,\n TAccountCompressedTokenProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n source: { value: input.source ?? null, isWritable: false },\n sourceSplTokenAccount: {\n value: input.sourceSplTokenAccount ?? null,\n isWritable: true,\n },\n sourceCtokenTokenAccount: {\n value: input.sourceCtokenTokenAccount ?? null,\n isWritable: true,\n },\n destination: { value: input.destination ?? null, isWritable: false },\n destinationSplTokenAccount: {\n value: input.destinationSplTokenAccount ?? null,\n isWritable: true,\n },\n destinationCtokenTokenAccount: {\n value: input.destinationCtokenTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n mint: { value: input.mint ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n compressedTokenProgramAuthority: {\n value: input.compressedTokenProgramAuthority ?? null,\n isWritable: false,\n },\n splInterfacePda: { value: input.splInterfacePda ?? null, isWritable: true },\n compressibleConfig: {\n value: input.compressibleConfig ?? null,\n isWritable: false,\n },\n rentSponsor: { value: input.rentSponsor ?? null, isWritable: true },\n compressedTokenProgram: {\n value: input.compressedTokenProgram ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n if (!accounts.source.value) {\n accounts.source.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 109, 117, 108, 116, 105, 95, 119, 97, 108, 108, 101, 116,\n ]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.settings.value)),\n getBytesEncoder().encode(new Uint8Array([118, 97, 117, 108, 116])),\n ],\n });\n }\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\n }\n if (!accounts.sourceSplTokenAccount.value) {\n accounts.sourceSplTokenAccount.value = await getProgramDerivedAddress({\n programAddress:\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\" as Address<\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.source.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n ],\n });\n }\n if (!accounts.sourceCtokenTokenAccount.value) {\n accounts.sourceCtokenTokenAccount.value = await getProgramDerivedAddress({\n programAddress:\n \"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\" as Address<\"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.source.value)),\n getBytesEncoder().encode(\n new Uint8Array([\n 9, 21, 163, 87, 35, 121, 78, 143, 182, 93, 7, 91, 107, 114, 105,\n 156, 56, 221, 2, 229, 148, 139, 117, 176, 229, 160, 65, 142, 128,\n 151, 91, 68,\n ]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n ],\n });\n }\n if (!accounts.destinationSplTokenAccount.value) {\n accounts.destinationSplTokenAccount.value = await getProgramDerivedAddress({\n programAddress:\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\" as Address<\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.destination.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n ],\n });\n }\n if (!accounts.destinationCtokenTokenAccount.value) {\n accounts.destinationCtokenTokenAccount.value =\n await getProgramDerivedAddress({\n programAddress:\n \"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\" as Address<\"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.destination.value)),\n getBytesEncoder().encode(\n new Uint8Array([\n 9, 21, 163, 87, 35, 121, 78, 143, 182, 93, 7, 91, 107, 114, 105,\n 156, 56, 221, 2, 229, 148, 139, 117, 176, 229, 160, 65, 142, 128,\n 151, 91, 68,\n ]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.compressedTokenProgramAuthority.value) {\n accounts.compressedTokenProgramAuthority.value =\n \"GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy\" as Address<\"GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy\">;\n }\n if (!accounts.compressedTokenProgram.value) {\n accounts.compressedTokenProgram.value =\n \"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\" as Address<\"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.sourceSplTokenAccount),\n getAccountMeta(accounts.sourceCtokenTokenAccount),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.destinationSplTokenAccount),\n getAccountMeta(accounts.destinationCtokenTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.compressedTokenProgramAuthority),\n getAccountMeta(accounts.splInterfacePda),\n getAccountMeta(accounts.compressibleConfig),\n getAccountMeta(accounts.rentSponsor),\n getAccountMeta(accounts.compressedTokenProgram),\n ...remainingAccounts,\n ],\n data: getTokenTransferIntentInstructionDataEncoder().encode(\n args as TokenTransferIntentInstructionDataArgs,\n ),\n programAddress,\n } as TokenTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount,\n TAccountDestination,\n TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram,\n TAccountMint,\n TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda,\n TAccountCompressibleConfig,\n TAccountRentSponsor,\n TAccountCompressedTokenProgram\n >);\n}\n\nexport type TokenTransferIntentInput<\n TAccountSettings extends string = string,\n TAccountPayer extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountSource extends string = string,\n TAccountSourceSplTokenAccount extends string = string,\n TAccountSourceCtokenTokenAccount extends string = string,\n TAccountDestination extends string = string,\n TAccountDestinationSplTokenAccount extends string = string,\n TAccountDestinationCtokenTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountMint extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountCompressedTokenProgramAuthority extends string = string,\n TAccountSplInterfacePda extends string = string,\n TAccountCompressibleConfig extends string = string,\n TAccountRentSponsor extends string = string,\n TAccountCompressedTokenProgram extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n payer: TransactionSigner<TAccountPayer>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n source: Address<TAccountSource>;\n sourceSplTokenAccount: Address<TAccountSourceSplTokenAccount>;\n sourceCtokenTokenAccount: Address<TAccountSourceCtokenTokenAccount>;\n destination: Address<TAccountDestination>;\n destinationSplTokenAccount?: Address<TAccountDestinationSplTokenAccount>;\n destinationCtokenTokenAccount?: Address<TAccountDestinationCtokenTokenAccount>;\n tokenProgram?: Address<TAccountTokenProgram>;\n mint: Address<TAccountMint>;\n systemProgram?: Address<TAccountSystemProgram>;\n compressedTokenProgramAuthority?: Address<TAccountCompressedTokenProgramAuthority>;\n splInterfacePda?: Address<TAccountSplInterfacePda>;\n compressibleConfig: Address<TAccountCompressibleConfig>;\n rentSponsor?: Address<TAccountRentSponsor>;\n compressedTokenProgram?: Address<TAccountCompressedTokenProgram>;\n splInterfacePdaArgs: TokenTransferIntentInstructionDataArgs[\"splInterfacePdaArgs\"];\n amount: TokenTransferIntentInstructionDataArgs[\"amount\"];\n sourceCompressedTokenAccounts: TokenTransferIntentInstructionDataArgs[\"sourceCompressedTokenAccounts\"];\n compressedProofArgs: TokenTransferIntentInstructionDataArgs[\"compressedProofArgs\"];\n signers: TokenTransferIntentInstructionDataArgs[\"signers\"];\n remainingAccounts: TokenTransferIntentInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTokenTransferIntentInstruction<\n TAccountSettings extends string,\n TAccountPayer extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TAccountSource extends string,\n TAccountSourceSplTokenAccount extends string,\n TAccountSourceCtokenTokenAccount extends string,\n TAccountDestination extends string,\n TAccountDestinationSplTokenAccount extends string,\n TAccountDestinationCtokenTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountMint extends string,\n TAccountSystemProgram extends string,\n TAccountCompressedTokenProgramAuthority extends string,\n TAccountSplInterfacePda extends string,\n TAccountCompressibleConfig extends string,\n TAccountRentSponsor extends string,\n TAccountCompressedTokenProgram extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TokenTransferIntentInput<\n TAccountSettings,\n TAccountPayer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount,\n TAccountDestination,\n TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram,\n TAccountMint,\n TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda,\n TAccountCompressibleConfig,\n TAccountRentSponsor,\n TAccountCompressedTokenProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): TokenTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount,\n TAccountDestination,\n TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram,\n TAccountMint,\n TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda,\n TAccountCompressibleConfig,\n TAccountRentSponsor,\n TAccountCompressedTokenProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n source: { value: input.source ?? null, isWritable: false },\n sourceSplTokenAccount: {\n value: input.sourceSplTokenAccount ?? null,\n isWritable: true,\n },\n sourceCtokenTokenAccount: {\n value: input.sourceCtokenTokenAccount ?? null,\n isWritable: true,\n },\n destination: { value: input.destination ?? null, isWritable: false },\n destinationSplTokenAccount: {\n value: input.destinationSplTokenAccount ?? null,\n isWritable: true,\n },\n destinationCtokenTokenAccount: {\n value: input.destinationCtokenTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n mint: { value: input.mint ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n compressedTokenProgramAuthority: {\n value: input.compressedTokenProgramAuthority ?? null,\n isWritable: false,\n },\n splInterfacePda: { value: input.splInterfacePda ?? null, isWritable: true },\n compressibleConfig: {\n value: input.compressibleConfig ?? null,\n isWritable: false,\n },\n rentSponsor: { value: input.rentSponsor ?? null, isWritable: true },\n compressedTokenProgram: {\n value: input.compressedTokenProgram ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.compressedTokenProgramAuthority.value) {\n accounts.compressedTokenProgramAuthority.value =\n \"GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy\" as Address<\"GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy\">;\n }\n if (!accounts.compressedTokenProgram.value) {\n accounts.compressedTokenProgram.value =\n \"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\" as Address<\"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.sourceSplTokenAccount),\n getAccountMeta(accounts.sourceCtokenTokenAccount),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.destinationSplTokenAccount),\n getAccountMeta(accounts.destinationCtokenTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.compressedTokenProgramAuthority),\n getAccountMeta(accounts.splInterfacePda),\n getAccountMeta(accounts.compressibleConfig),\n getAccountMeta(accounts.rentSponsor),\n getAccountMeta(accounts.compressedTokenProgram),\n ...remainingAccounts,\n ],\n data: getTokenTransferIntentInstructionDataEncoder().encode(\n args as TokenTransferIntentInstructionDataArgs,\n ),\n programAddress,\n } as TokenTransferIntentInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar,\n TAccountSource,\n TAccountSourceSplTokenAccount,\n TAccountSourceCtokenTokenAccount,\n TAccountDestination,\n TAccountDestinationSplTokenAccount,\n TAccountDestinationCtokenTokenAccount,\n TAccountTokenProgram,\n TAccountMint,\n TAccountSystemProgram,\n TAccountCompressedTokenProgramAuthority,\n TAccountSplInterfacePda,\n TAccountCompressibleConfig,\n TAccountRentSponsor,\n TAccountCompressedTokenProgram\n >);\n}\n\nexport type ParsedTokenTransferIntentInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n payer: TAccountMetas[1];\n slotHashSysvar?: TAccountMetas[2] | undefined;\n instructionsSysvar: TAccountMetas[3];\n source: TAccountMetas[4];\n sourceSplTokenAccount: TAccountMetas[5];\n sourceCtokenTokenAccount: TAccountMetas[6];\n destination: TAccountMetas[7];\n destinationSplTokenAccount?: TAccountMetas[8] | undefined;\n destinationCtokenTokenAccount?: TAccountMetas[9] | undefined;\n tokenProgram: TAccountMetas[10];\n mint: TAccountMetas[11];\n systemProgram: TAccountMetas[12];\n compressedTokenProgramAuthority: TAccountMetas[13];\n splInterfacePda?: TAccountMetas[14] | undefined;\n compressibleConfig: TAccountMetas[15];\n rentSponsor?: TAccountMetas[16] | undefined;\n compressedTokenProgram: TAccountMetas[17];\n };\n data: TokenTransferIntentInstructionData;\n};\n\nexport function parseTokenTransferIntentInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTokenTransferIntentInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 18) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n payer: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextAccount(),\n source: getNextAccount(),\n sourceSplTokenAccount: getNextAccount(),\n sourceCtokenTokenAccount: getNextAccount(),\n destination: getNextAccount(),\n destinationSplTokenAccount: getNextOptionalAccount(),\n destinationCtokenTokenAccount: getNextOptionalAccount(),\n tokenProgram: getNextAccount(),\n mint: getNextAccount(),\n systemProgram: getNextAccount(),\n compressedTokenProgramAuthority: getNextAccount(),\n splInterfacePda: getNextOptionalAccount(),\n compressibleConfig: getNextAccount(),\n rentSponsor: getNextOptionalAccount(),\n compressedTokenProgram: getNextAccount(),\n },\n data: getTokenTransferIntentInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getSecp256r1VerifyArgsDecoder,\n getSecp256r1VerifyArgsEncoder,\n type Secp256r1VerifyArgs,\n type Secp256r1VerifyArgsArgs,\n} from \"../types\";\n\nexport const TRANSACTION_BUFFER_CLOSE_DISCRIMINATOR = new Uint8Array([12]);\n\nexport function getTransactionBufferCloseDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_BUFFER_CLOSE_DISCRIMINATOR,\n );\n}\n\nexport type TransactionBufferCloseInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountTransactionBuffer extends string | AccountMeta<string> = string,\n TAccountCloser extends string | AccountMeta<string> = string,\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountPayer extends string\n ? WritableAccount<TAccountPayer>\n : TAccountPayer,\n TAccountDomainConfig extends string\n ? ReadonlyAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountTransactionBuffer extends string\n ? WritableAccount<TAccountTransactionBuffer>\n : TAccountTransactionBuffer,\n TAccountCloser extends string\n ? ReadonlySignerAccount<TAccountCloser> &\n AccountSignerMeta<TAccountCloser>\n : TAccountCloser,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionBufferCloseInstructionData = {\n discriminator: ReadonlyUint8Array;\n secp256r1VerifyArgs: Option<Secp256r1VerifyArgs>;\n};\n\nexport type TransactionBufferCloseInstructionDataArgs = {\n secp256r1VerifyArgs: OptionOrNullable<Secp256r1VerifyArgsArgs>;\n};\n\nexport function getTransactionBufferCloseInstructionDataEncoder(): Encoder<TransactionBufferCloseInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"secp256r1VerifyArgs\",\n getOptionEncoder(getSecp256r1VerifyArgsEncoder()),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSACTION_BUFFER_CLOSE_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTransactionBufferCloseInstructionDataDecoder(): Decoder<TransactionBufferCloseInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"secp256r1VerifyArgs\", getOptionDecoder(getSecp256r1VerifyArgsDecoder())],\n ]);\n}\n\nexport function getTransactionBufferCloseInstructionDataCodec(): Codec<\n TransactionBufferCloseInstructionDataArgs,\n TransactionBufferCloseInstructionData\n> {\n return combineCodec(\n getTransactionBufferCloseInstructionDataEncoder(),\n getTransactionBufferCloseInstructionDataDecoder(),\n );\n}\n\nexport type TransactionBufferCloseInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionBufferCloseInput<\n TAccountSettings extends string = string,\n TAccountPayer extends string = string,\n TAccountDomainConfig extends string = string,\n TAccountTransactionBuffer extends string = string,\n TAccountCloser extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n payer: Address<TAccountPayer>;\n domainConfig?: Address<TAccountDomainConfig>;\n transactionBuffer: Address<TAccountTransactionBuffer>;\n closer?: TransactionSigner<TAccountCloser>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n secp256r1VerifyArgs: TransactionBufferCloseInstructionDataArgs[\"secp256r1VerifyArgs\"];\n remainingAccounts: TransactionBufferCloseInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionBufferCloseInstruction<\n TAccountSettings extends string,\n TAccountPayer extends string,\n TAccountDomainConfig extends string,\n TAccountTransactionBuffer extends string,\n TAccountCloser extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionBufferCloseInput<\n TAccountSettings,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountCloser,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionBufferCloseInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountCloser,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n domainConfig: { value: input.domainConfig ?? null, isWritable: false },\n transactionBuffer: {\n value: input.transactionBuffer ?? null,\n isWritable: true,\n },\n closer: { value: input.closer ?? null, isWritable: false },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.transactionBuffer),\n getAccountMeta(accounts.closer),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n ...remainingAccounts,\n ],\n data: getTransactionBufferCloseInstructionDataEncoder().encode(\n args as TransactionBufferCloseInstructionDataArgs,\n ),\n programAddress,\n } as TransactionBufferCloseInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountCloser,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >);\n}\n\nexport type ParsedTransactionBufferCloseInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n payer: TAccountMetas[1];\n domainConfig?: TAccountMetas[2] | undefined;\n transactionBuffer: TAccountMetas[3];\n closer?: TAccountMetas[4] | undefined;\n slotHashSysvar?: TAccountMetas[5] | undefined;\n instructionsSysvar?: TAccountMetas[6] | undefined;\n };\n data: TransactionBufferCloseInstructionData;\n};\n\nexport function parseTransactionBufferCloseInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionBufferCloseInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n payer: getNextAccount(),\n domainConfig: getNextOptionalAccount(),\n transactionBuffer: getNextAccount(),\n closer: getNextOptionalAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextOptionalAccount(),\n },\n data: getTransactionBufferCloseInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getExpectedSignerDecoder,\n getExpectedSignerEncoder,\n getSecp256r1VerifyArgsDecoder,\n getSecp256r1VerifyArgsEncoder,\n type ExpectedSigner,\n type ExpectedSignerArgs,\n type Secp256r1VerifyArgs,\n type Secp256r1VerifyArgsArgs,\n} from \"../types\";\n\nexport const TRANSACTION_BUFFER_CREATE_DISCRIMINATOR = new Uint8Array([9]);\n\nexport function getTransactionBufferCreateDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_BUFFER_CREATE_DISCRIMINATOR,\n );\n}\n\nexport type TransactionBufferCreateInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountTransactionBuffer extends string | AccountMeta<string> = string,\n TAccountCreator extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? ReadonlyAccount<TAccountSettings>\n : TAccountSettings,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountDomainConfig extends string\n ? ReadonlyAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountTransactionBuffer extends string\n ? WritableAccount<TAccountTransactionBuffer>\n : TAccountTransactionBuffer,\n TAccountCreator extends string\n ? ReadonlySignerAccount<TAccountCreator> &\n AccountSignerMeta<TAccountCreator>\n : TAccountCreator,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionBufferCreateInstructionData = {\n discriminator: ReadonlyUint8Array;\n bufferIndex: number;\n preauthorizeExecution: boolean;\n bufferExtendHashes: Array<ReadonlyUint8Array>;\n finalBufferHash: ReadonlyUint8Array;\n finalBufferSize: number;\n expectedSigners: Array<ExpectedSigner>;\n secp256r1VerifyArgs: Option<Secp256r1VerifyArgs>;\n};\n\nexport type TransactionBufferCreateInstructionDataArgs = {\n bufferIndex: number;\n preauthorizeExecution: boolean;\n bufferExtendHashes: Array<ReadonlyUint8Array>;\n finalBufferHash: ReadonlyUint8Array;\n finalBufferSize: number;\n expectedSigners: Array<ExpectedSignerArgs>;\n secp256r1VerifyArgs: OptionOrNullable<Secp256r1VerifyArgsArgs>;\n};\n\nexport function getTransactionBufferCreateInstructionDataEncoder(): Encoder<TransactionBufferCreateInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"bufferIndex\", getU8Encoder()],\n [\"preauthorizeExecution\", getBooleanEncoder()],\n [\n \"bufferExtendHashes\",\n getArrayEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n ],\n [\"finalBufferHash\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"finalBufferSize\", getU16Encoder()],\n [\"expectedSigners\", getArrayEncoder(getExpectedSignerEncoder())],\n [\n \"secp256r1VerifyArgs\",\n getOptionEncoder(getSecp256r1VerifyArgsEncoder()),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSACTION_BUFFER_CREATE_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTransactionBufferCreateInstructionDataDecoder(): Decoder<TransactionBufferCreateInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"bufferIndex\", getU8Decoder()],\n [\"preauthorizeExecution\", getBooleanDecoder()],\n [\n \"bufferExtendHashes\",\n getArrayDecoder(fixDecoderSize(getBytesDecoder(), 32)),\n ],\n [\"finalBufferHash\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"finalBufferSize\", getU16Decoder()],\n [\"expectedSigners\", getArrayDecoder(getExpectedSignerDecoder())],\n [\"secp256r1VerifyArgs\", getOptionDecoder(getSecp256r1VerifyArgsDecoder())],\n ]);\n}\n\nexport function getTransactionBufferCreateInstructionDataCodec(): Codec<\n TransactionBufferCreateInstructionDataArgs,\n TransactionBufferCreateInstructionData\n> {\n return combineCodec(\n getTransactionBufferCreateInstructionDataEncoder(),\n getTransactionBufferCreateInstructionDataDecoder(),\n );\n}\n\nexport type TransactionBufferCreateInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionBufferCreateInput<\n TAccountSettings extends string = string,\n TAccountPayer extends string = string,\n TAccountDomainConfig extends string = string,\n TAccountTransactionBuffer extends string = string,\n TAccountCreator extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountSlotHashSysvar extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n payer: TransactionSigner<TAccountPayer>;\n domainConfig?: Address<TAccountDomainConfig>;\n transactionBuffer: Address<TAccountTransactionBuffer>;\n creator?: TransactionSigner<TAccountCreator>;\n systemProgram?: Address<TAccountSystemProgram>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n bufferIndex: TransactionBufferCreateInstructionDataArgs[\"bufferIndex\"];\n preauthorizeExecution: TransactionBufferCreateInstructionDataArgs[\"preauthorizeExecution\"];\n bufferExtendHashes: TransactionBufferCreateInstructionDataArgs[\"bufferExtendHashes\"];\n finalBufferHash: TransactionBufferCreateInstructionDataArgs[\"finalBufferHash\"];\n finalBufferSize: TransactionBufferCreateInstructionDataArgs[\"finalBufferSize\"];\n expectedSigners: TransactionBufferCreateInstructionDataArgs[\"expectedSigners\"];\n secp256r1VerifyArgs: TransactionBufferCreateInstructionDataArgs[\"secp256r1VerifyArgs\"];\n remainingAccounts: TransactionBufferCreateInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionBufferCreateInstruction<\n TAccountSettings extends string,\n TAccountPayer extends string,\n TAccountDomainConfig extends string,\n TAccountTransactionBuffer extends string,\n TAccountCreator extends string,\n TAccountSystemProgram extends string,\n TAccountInstructionsSysvar extends string,\n TAccountSlotHashSysvar extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionBufferCreateInput<\n TAccountSettings,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountCreator,\n TAccountSystemProgram,\n TAccountInstructionsSysvar,\n TAccountSlotHashSysvar\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionBufferCreateInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountCreator,\n TAccountSystemProgram,\n TAccountInstructionsSysvar,\n TAccountSlotHashSysvar\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: false },\n payer: { value: input.payer ?? null, isWritable: true },\n domainConfig: { value: input.domainConfig ?? null, isWritable: false },\n transactionBuffer: {\n value: input.transactionBuffer ?? null,\n isWritable: true,\n },\n creator: { value: input.creator ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.transactionBuffer),\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.slotHashSysvar),\n ...remainingAccounts,\n ],\n data: getTransactionBufferCreateInstructionDataEncoder().encode(\n args as TransactionBufferCreateInstructionDataArgs,\n ),\n programAddress,\n } as TransactionBufferCreateInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountCreator,\n TAccountSystemProgram,\n TAccountInstructionsSysvar,\n TAccountSlotHashSysvar\n >);\n}\n\nexport type ParsedTransactionBufferCreateInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n payer: TAccountMetas[1];\n domainConfig?: TAccountMetas[2] | undefined;\n transactionBuffer: TAccountMetas[3];\n creator?: TAccountMetas[4] | undefined;\n systemProgram: TAccountMetas[5];\n instructionsSysvar: TAccountMetas[6];\n slotHashSysvar?: TAccountMetas[7] | undefined;\n };\n data: TransactionBufferCreateInstructionData;\n};\n\nexport function parseTransactionBufferCreateInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionBufferCreateInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n payer: getNextAccount(),\n domainConfig: getNextOptionalAccount(),\n transactionBuffer: getNextAccount(),\n creator: getNextOptionalAccount(),\n systemProgram: getNextAccount(),\n instructionsSysvar: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n },\n data: getTransactionBufferCreateInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getSecp256r1VerifyArgsDecoder,\n getSecp256r1VerifyArgsEncoder,\n type Secp256r1VerifyArgs,\n type Secp256r1VerifyArgsArgs,\n} from \"../types\";\n\nexport const TRANSACTION_BUFFER_EXECUTE_DISCRIMINATOR = new Uint8Array([13]);\n\nexport function getTransactionBufferExecuteDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_BUFFER_EXECUTE_DISCRIMINATOR,\n );\n}\n\nexport type TransactionBufferExecuteInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountExecutor extends string | AccountMeta<string> = string,\n TAccountTransactionBuffer extends string | AccountMeta<string> = string,\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountDomainConfig extends string\n ? ReadonlyAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountExecutor extends string\n ? ReadonlySignerAccount<TAccountExecutor> &\n AccountSignerMeta<TAccountExecutor>\n : TAccountExecutor,\n TAccountTransactionBuffer extends string\n ? WritableAccount<TAccountTransactionBuffer>\n : TAccountTransactionBuffer,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionBufferExecuteInstructionData = {\n discriminator: ReadonlyUint8Array;\n secp256r1VerifyArgs: Option<Secp256r1VerifyArgs>;\n};\n\nexport type TransactionBufferExecuteInstructionDataArgs = {\n secp256r1VerifyArgs: OptionOrNullable<Secp256r1VerifyArgsArgs>;\n};\n\nexport function getTransactionBufferExecuteInstructionDataEncoder(): Encoder<TransactionBufferExecuteInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"secp256r1VerifyArgs\",\n getOptionEncoder(getSecp256r1VerifyArgsEncoder()),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSACTION_BUFFER_EXECUTE_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTransactionBufferExecuteInstructionDataDecoder(): Decoder<TransactionBufferExecuteInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"secp256r1VerifyArgs\", getOptionDecoder(getSecp256r1VerifyArgsDecoder())],\n ]);\n}\n\nexport function getTransactionBufferExecuteInstructionDataCodec(): Codec<\n TransactionBufferExecuteInstructionDataArgs,\n TransactionBufferExecuteInstructionData\n> {\n return combineCodec(\n getTransactionBufferExecuteInstructionDataEncoder(),\n getTransactionBufferExecuteInstructionDataDecoder(),\n );\n}\n\nexport type TransactionBufferExecuteInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionBufferExecuteInput<\n TAccountSettings extends string = string,\n TAccountDomainConfig extends string = string,\n TAccountExecutor extends string = string,\n TAccountTransactionBuffer extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n domainConfig?: Address<TAccountDomainConfig>;\n executor?: TransactionSigner<TAccountExecutor>;\n transactionBuffer: Address<TAccountTransactionBuffer>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n secp256r1VerifyArgs: TransactionBufferExecuteInstructionDataArgs[\"secp256r1VerifyArgs\"];\n remainingAccounts: TransactionBufferExecuteInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionBufferExecuteInstruction<\n TAccountSettings extends string,\n TAccountDomainConfig extends string,\n TAccountExecutor extends string,\n TAccountTransactionBuffer extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionBufferExecuteInput<\n TAccountSettings,\n TAccountDomainConfig,\n TAccountExecutor,\n TAccountTransactionBuffer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionBufferExecuteInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountDomainConfig,\n TAccountExecutor,\n TAccountTransactionBuffer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n domainConfig: { value: input.domainConfig ?? null, isWritable: false },\n executor: { value: input.executor ?? null, isWritable: false },\n transactionBuffer: {\n value: input.transactionBuffer ?? null,\n isWritable: true,\n },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.executor),\n getAccountMeta(accounts.transactionBuffer),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n ...remainingAccounts,\n ],\n data: getTransactionBufferExecuteInstructionDataEncoder().encode(\n args as TransactionBufferExecuteInstructionDataArgs,\n ),\n programAddress,\n } as TransactionBufferExecuteInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountDomainConfig,\n TAccountExecutor,\n TAccountTransactionBuffer,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >);\n}\n\nexport type ParsedTransactionBufferExecuteInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n domainConfig?: TAccountMetas[1] | undefined;\n executor?: TAccountMetas[2] | undefined;\n transactionBuffer: TAccountMetas[3];\n slotHashSysvar?: TAccountMetas[4] | undefined;\n instructionsSysvar?: TAccountMetas[5] | undefined;\n };\n data: TransactionBufferExecuteInstructionData;\n};\n\nexport function parseTransactionBufferExecuteInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionBufferExecuteInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n domainConfig: getNextOptionalAccount(),\n executor: getNextOptionalAccount(),\n transactionBuffer: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextOptionalAccount(),\n },\n data: getTransactionBufferExecuteInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type AccountMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\n\nexport const TRANSACTION_BUFFER_EXTEND_DISCRIMINATOR = new Uint8Array([11]);\n\nexport function getTransactionBufferExtendDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_BUFFER_EXTEND_DISCRIMINATOR,\n );\n}\n\nexport type TransactionBufferExtendInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountTransactionBuffer extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? ReadonlyAccount<TAccountSettings>\n : TAccountSettings,\n TAccountTransactionBuffer extends string\n ? WritableAccount<TAccountTransactionBuffer>\n : TAccountTransactionBuffer,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionBufferExtendInstructionData = {\n discriminator: ReadonlyUint8Array;\n buffer: ReadonlyUint8Array;\n};\n\nexport type TransactionBufferExtendInstructionDataArgs = {\n buffer: ReadonlyUint8Array;\n};\n\nexport function getTransactionBufferExtendInstructionDataEncoder(): Encoder<TransactionBufferExtendInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"buffer\", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSACTION_BUFFER_EXTEND_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTransactionBufferExtendInstructionDataDecoder(): Decoder<TransactionBufferExtendInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"buffer\", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n ]);\n}\n\nexport function getTransactionBufferExtendInstructionDataCodec(): Codec<\n TransactionBufferExtendInstructionDataArgs,\n TransactionBufferExtendInstructionData\n> {\n return combineCodec(\n getTransactionBufferExtendInstructionDataEncoder(),\n getTransactionBufferExtendInstructionDataDecoder(),\n );\n}\n\nexport type TransactionBufferExtendInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionBufferExtendInput<\n TAccountSettings extends string = string,\n TAccountTransactionBuffer extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n transactionBuffer: Address<TAccountTransactionBuffer>;\n buffer: TransactionBufferExtendInstructionDataArgs[\"buffer\"];\n remainingAccounts: TransactionBufferExtendInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionBufferExtendInstruction<\n TAccountSettings extends string,\n TAccountTransactionBuffer extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionBufferExtendInput<\n TAccountSettings,\n TAccountTransactionBuffer\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionBufferExtendInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountTransactionBuffer\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: false },\n transactionBuffer: {\n value: input.transactionBuffer ?? null,\n isWritable: true,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.transactionBuffer),\n ...remainingAccounts,\n ],\n data: getTransactionBufferExtendInstructionDataEncoder().encode(\n args as TransactionBufferExtendInstructionDataArgs,\n ),\n programAddress,\n } as TransactionBufferExtendInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountTransactionBuffer\n >);\n}\n\nexport type ParsedTransactionBufferExtendInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n transactionBuffer: TAccountMetas[1];\n };\n data: TransactionBufferExtendInstructionData;\n};\n\nexport function parseTransactionBufferExtendInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionBufferExtendInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n transactionBuffer: getNextAccount(),\n },\n data: getTransactionBufferExtendInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getSecp256r1VerifyArgsDecoder,\n getSecp256r1VerifyArgsEncoder,\n type Secp256r1VerifyArgs,\n type Secp256r1VerifyArgsArgs,\n} from \"../types\";\n\nexport const TRANSACTION_BUFFER_VOTE_DISCRIMINATOR = new Uint8Array([10]);\n\nexport function getTransactionBufferVoteDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_BUFFER_VOTE_DISCRIMINATOR,\n );\n}\n\nexport type TransactionBufferVoteInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountDomainConfig extends string | AccountMeta<string> = string,\n TAccountTransactionBuffer extends string | AccountMeta<string> = string,\n TAccountVoter extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | AccountMeta<string> = \"11111111111111111111111111111111\",\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? ReadonlyAccount<TAccountSettings>\n : TAccountSettings,\n TAccountDomainConfig extends string\n ? ReadonlyAccount<TAccountDomainConfig>\n : TAccountDomainConfig,\n TAccountTransactionBuffer extends string\n ? WritableAccount<TAccountTransactionBuffer>\n : TAccountTransactionBuffer,\n TAccountVoter extends string\n ? ReadonlySignerAccount<TAccountVoter> &\n AccountSignerMeta<TAccountVoter>\n : TAccountVoter,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionBufferVoteInstructionData = {\n discriminator: ReadonlyUint8Array;\n secp256r1VerifyArgs: Option<Secp256r1VerifyArgs>;\n};\n\nexport type TransactionBufferVoteInstructionDataArgs = {\n secp256r1VerifyArgs: OptionOrNullable<Secp256r1VerifyArgsArgs>;\n};\n\nexport function getTransactionBufferVoteInstructionDataEncoder(): Encoder<TransactionBufferVoteInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\n \"secp256r1VerifyArgs\",\n getOptionEncoder(getSecp256r1VerifyArgsEncoder()),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSACTION_BUFFER_VOTE_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTransactionBufferVoteInstructionDataDecoder(): Decoder<TransactionBufferVoteInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"secp256r1VerifyArgs\", getOptionDecoder(getSecp256r1VerifyArgsDecoder())],\n ]);\n}\n\nexport function getTransactionBufferVoteInstructionDataCodec(): Codec<\n TransactionBufferVoteInstructionDataArgs,\n TransactionBufferVoteInstructionData\n> {\n return combineCodec(\n getTransactionBufferVoteInstructionDataEncoder(),\n getTransactionBufferVoteInstructionDataDecoder(),\n );\n}\n\nexport type TransactionBufferVoteInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionBufferVoteInput<\n TAccountSettings extends string = string,\n TAccountDomainConfig extends string = string,\n TAccountTransactionBuffer extends string = string,\n TAccountVoter extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n domainConfig?: Address<TAccountDomainConfig>;\n transactionBuffer: Address<TAccountTransactionBuffer>;\n voter?: TransactionSigner<TAccountVoter>;\n systemProgram?: Address<TAccountSystemProgram>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n secp256r1VerifyArgs: TransactionBufferVoteInstructionDataArgs[\"secp256r1VerifyArgs\"];\n remainingAccounts: TransactionBufferVoteInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionBufferVoteInstruction<\n TAccountSettings extends string,\n TAccountDomainConfig extends string,\n TAccountTransactionBuffer extends string,\n TAccountVoter extends string,\n TAccountSystemProgram extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionBufferVoteInput<\n TAccountSettings,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountVoter,\n TAccountSystemProgram,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionBufferVoteInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountVoter,\n TAccountSystemProgram,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: false },\n domainConfig: { value: input.domainConfig ?? null, isWritable: false },\n transactionBuffer: {\n value: input.transactionBuffer ?? null,\n isWritable: true,\n },\n voter: { value: input.voter ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.domainConfig),\n getAccountMeta(accounts.transactionBuffer),\n getAccountMeta(accounts.voter),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n ...remainingAccounts,\n ],\n data: getTransactionBufferVoteInstructionDataEncoder().encode(\n args as TransactionBufferVoteInstructionDataArgs,\n ),\n programAddress,\n } as TransactionBufferVoteInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountDomainConfig,\n TAccountTransactionBuffer,\n TAccountVoter,\n TAccountSystemProgram,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >);\n}\n\nexport type ParsedTransactionBufferVoteInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n domainConfig?: TAccountMetas[1] | undefined;\n transactionBuffer: TAccountMetas[2];\n voter?: TAccountMetas[3] | undefined;\n systemProgram: TAccountMetas[4];\n slotHashSysvar?: TAccountMetas[5] | undefined;\n instructionsSysvar?: TAccountMetas[6] | undefined;\n };\n data: TransactionBufferVoteInstructionData;\n};\n\nexport function parseTransactionBufferVoteInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionBufferVoteInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n domainConfig: getNextOptionalAccount(),\n transactionBuffer: getNextAccount(),\n voter: getNextOptionalAccount(),\n systemProgram: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextOptionalAccount(),\n },\n data: getTransactionBufferVoteInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyUint8Array,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\n\nexport const TRANSACTION_EXECUTE_DISCRIMINATOR = new Uint8Array([14]);\n\nexport function getTransactionExecuteDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_EXECUTE_DISCRIMINATOR,\n );\n}\n\nexport type TransactionExecuteInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountTransactionBuffer extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountPayer extends string\n ? WritableAccount<TAccountPayer>\n : TAccountPayer,\n TAccountTransactionBuffer extends string\n ? WritableAccount<TAccountTransactionBuffer>\n : TAccountTransactionBuffer,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionExecuteInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type TransactionExecuteInstructionDataArgs = {};\n\nexport function getTransactionExecuteInstructionDataEncoder(): FixedSizeEncoder<TransactionExecuteInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([[\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)]]),\n (value) => ({ ...value, discriminator: TRANSACTION_EXECUTE_DISCRIMINATOR }),\n );\n}\n\nexport function getTransactionExecuteInstructionDataDecoder(): FixedSizeDecoder<TransactionExecuteInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n ]);\n}\n\nexport function getTransactionExecuteInstructionDataCodec(): FixedSizeCodec<\n TransactionExecuteInstructionDataArgs,\n TransactionExecuteInstructionData\n> {\n return combineCodec(\n getTransactionExecuteInstructionDataEncoder(),\n getTransactionExecuteInstructionDataDecoder(),\n );\n}\n\nexport type TransactionExecuteInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionExecuteInput<\n TAccountSettings extends string = string,\n TAccountPayer extends string = string,\n TAccountTransactionBuffer extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n payer: Address<TAccountPayer>;\n transactionBuffer: Address<TAccountTransactionBuffer>;\n remainingAccounts: TransactionExecuteInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionExecuteInstruction<\n TAccountSettings extends string,\n TAccountPayer extends string,\n TAccountTransactionBuffer extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionExecuteInput<\n TAccountSettings,\n TAccountPayer,\n TAccountTransactionBuffer\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionExecuteInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountTransactionBuffer\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n transactionBuffer: {\n value: input.transactionBuffer ?? null,\n isWritable: true,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.transactionBuffer),\n ...remainingAccounts,\n ],\n data: getTransactionExecuteInstructionDataEncoder().encode({}),\n programAddress,\n } as TransactionExecuteInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountPayer,\n TAccountTransactionBuffer\n >);\n}\n\nexport type ParsedTransactionExecuteInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n payer: TAccountMetas[1];\n transactionBuffer: TAccountMetas[2];\n };\n data: TransactionExecuteInstructionData;\n};\n\nexport function parseTransactionExecuteInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionExecuteInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n payer: getNextAccount(),\n transactionBuffer: getNextAccount(),\n },\n data: getTransactionExecuteInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type AccountMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type WritableAccount,\n} from \"gill\";\nimport { parseRemainingAccounts } from \"../../hooked\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getCompiledInstructionDecoder,\n getCompiledInstructionEncoder,\n getTransactionMessageAddressTableLookupDecoder,\n getTransactionMessageAddressTableLookupEncoder,\n getTransactionSyncSignersDecoder,\n getTransactionSyncSignersEncoder,\n type CompiledInstruction,\n type CompiledInstructionArgs,\n type TransactionMessageAddressTableLookup,\n type TransactionMessageAddressTableLookupArgs,\n type TransactionSyncSigners,\n type TransactionSyncSignersArgs,\n} from \"../types\";\n\nexport const TRANSACTION_EXECUTE_SYNC_DISCRIMINATOR = new Uint8Array([15]);\n\nexport function getTransactionExecuteSyncDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 1).encode(\n TRANSACTION_EXECUTE_SYNC_DISCRIMINATOR,\n );\n}\n\nexport type TransactionExecuteSyncInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountSettings extends string | AccountMeta<string> = string,\n TAccountSlotHashSysvar extends\n | string\n | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\",\n TAccountInstructionsSysvar extends\n | string\n | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSettings extends string\n ? WritableAccount<TAccountSettings>\n : TAccountSettings,\n TAccountSlotHashSysvar extends string\n ? ReadonlyAccount<TAccountSlotHashSysvar>\n : TAccountSlotHashSysvar,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransactionExecuteSyncInstructionData = {\n discriminator: ReadonlyUint8Array;\n numSigners: number;\n numWritableSigners: number;\n numWritableNonSigners: number;\n numAccountKeys: number;\n instructions: Array<CompiledInstruction>;\n addressTableLookups: Array<TransactionMessageAddressTableLookup>;\n signers: Array<TransactionSyncSigners>;\n};\n\nexport type TransactionExecuteSyncInstructionDataArgs = {\n numSigners: number;\n numWritableSigners: number;\n numWritableNonSigners: number;\n numAccountKeys: number;\n instructions: Array<CompiledInstructionArgs>;\n addressTableLookups: Array<TransactionMessageAddressTableLookupArgs>;\n signers: Array<TransactionSyncSignersArgs>;\n};\n\nexport function getTransactionExecuteSyncInstructionDataEncoder(): Encoder<TransactionExecuteSyncInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 1)],\n [\"numSigners\", getU8Encoder()],\n [\"numWritableSigners\", getU8Encoder()],\n [\"numWritableNonSigners\", getU8Encoder()],\n [\"numAccountKeys\", getU8Encoder()],\n [\"instructions\", getArrayEncoder(getCompiledInstructionEncoder())],\n [\n \"addressTableLookups\",\n getArrayEncoder(getTransactionMessageAddressTableLookupEncoder()),\n ],\n [\"signers\", getArrayEncoder(getTransactionSyncSignersEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSACTION_EXECUTE_SYNC_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getTransactionExecuteSyncInstructionDataDecoder(): Decoder<TransactionExecuteSyncInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 1)],\n [\"numSigners\", getU8Decoder()],\n [\"numWritableSigners\", getU8Decoder()],\n [\"numWritableNonSigners\", getU8Decoder()],\n [\"numAccountKeys\", getU8Decoder()],\n [\"instructions\", getArrayDecoder(getCompiledInstructionDecoder())],\n [\n \"addressTableLookups\",\n getArrayDecoder(getTransactionMessageAddressTableLookupDecoder()),\n ],\n [\"signers\", getArrayDecoder(getTransactionSyncSignersDecoder())],\n ]);\n}\n\nexport function getTransactionExecuteSyncInstructionDataCodec(): Codec<\n TransactionExecuteSyncInstructionDataArgs,\n TransactionExecuteSyncInstructionData\n> {\n return combineCodec(\n getTransactionExecuteSyncInstructionDataEncoder(),\n getTransactionExecuteSyncInstructionDataDecoder(),\n );\n}\n\nexport type TransactionExecuteSyncInstructionExtraArgs = {\n remainingAccounts: Array<{ address: Address; role: number }>;\n};\n\nexport type TransactionExecuteSyncInput<\n TAccountSettings extends string = string,\n TAccountSlotHashSysvar extends string = string,\n TAccountInstructionsSysvar extends string = string,\n> = {\n settings: Address<TAccountSettings>;\n slotHashSysvar?: Address<TAccountSlotHashSysvar>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n numSigners: TransactionExecuteSyncInstructionDataArgs[\"numSigners\"];\n numWritableSigners: TransactionExecuteSyncInstructionDataArgs[\"numWritableSigners\"];\n numWritableNonSigners: TransactionExecuteSyncInstructionDataArgs[\"numWritableNonSigners\"];\n numAccountKeys: TransactionExecuteSyncInstructionDataArgs[\"numAccountKeys\"];\n instructions: TransactionExecuteSyncInstructionDataArgs[\"instructions\"];\n addressTableLookups: TransactionExecuteSyncInstructionDataArgs[\"addressTableLookups\"];\n signers: TransactionExecuteSyncInstructionDataArgs[\"signers\"];\n remainingAccounts: TransactionExecuteSyncInstructionExtraArgs[\"remainingAccounts\"];\n};\n\nexport function getTransactionExecuteSyncInstruction<\n TAccountSettings extends string,\n TAccountSlotHashSysvar extends string,\n TAccountInstructionsSysvar extends string,\n TProgramAddress extends Address = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n>(\n input: TransactionExecuteSyncInput<\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >,\n config?: { programAddress?: TProgramAddress },\n): TransactionExecuteSyncInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n> {\n // Program address.\n const programAddress = config?.programAddress ?? MULTI_WALLET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n settings: { value: input.settings ?? null, isWritable: true },\n slotHashSysvar: { value: input.slotHashSysvar ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolver scope.\n const resolverScope = { programAddress, accounts, args };\n\n // Resolve default values.\n if (!accounts.slotHashSysvar.value) {\n accounts.slotHashSysvar.value =\n \"SysvarS1otHashes111111111111111111111111111\" as Address<\"SysvarS1otHashes111111111111111111111111111\">;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n \"Sysvar1nstructions1111111111111111111111111\" as Address<\"Sysvar1nstructions1111111111111111111111111\">;\n }\n\n // Remaining accounts.\n const remainingAccounts: AccountMeta[] =\n parseRemainingAccounts(resolverScope);\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.settings),\n getAccountMeta(accounts.slotHashSysvar),\n getAccountMeta(accounts.instructionsSysvar),\n ...remainingAccounts,\n ],\n data: getTransactionExecuteSyncInstructionDataEncoder().encode(\n args as TransactionExecuteSyncInstructionDataArgs,\n ),\n programAddress,\n } as TransactionExecuteSyncInstruction<\n TProgramAddress,\n TAccountSettings,\n TAccountSlotHashSysvar,\n TAccountInstructionsSysvar\n >);\n}\n\nexport type ParsedTransactionExecuteSyncInstruction<\n TProgram extends string = typeof MULTI_WALLET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n settings: TAccountMetas[0];\n slotHashSysvar?: TAccountMetas[1] | undefined;\n instructionsSysvar: TAccountMetas[2];\n };\n data: TransactionExecuteSyncInstructionData;\n};\n\nexport function parseTransactionExecuteSyncInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransactionExecuteSyncInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === MULTI_WALLET_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n settings: getNextAccount(),\n slotHashSysvar: getNextOptionalAccount(),\n instructionsSysvar: getNextAccount(),\n },\n data: getTransactionExecuteSyncInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n containsBytes,\n fixEncoderSize,\n getBytesEncoder,\n type Address,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport {\n type ParsedChangeConfigInstruction,\n type ParsedCreateDomainConfigInstruction,\n type ParsedCreateDomainUserAccountInstruction,\n type ParsedCreateGlobalCounterInstruction,\n type ParsedCreateUserAccountInstruction,\n type ParsedCreateWalletInstruction,\n type ParsedDisableDomainConfigInstruction,\n type ParsedEditDomainConfigInstruction,\n type ParsedEditTransactionManagerUrlInstruction,\n type ParsedEditUserDelegateInstruction,\n type ParsedNativeTransferIntentInstruction,\n type ParsedTokenTransferIntentInstruction,\n type ParsedTransactionBufferCloseInstruction,\n type ParsedTransactionBufferCreateInstruction,\n type ParsedTransactionBufferExecuteInstruction,\n type ParsedTransactionBufferExtendInstruction,\n type ParsedTransactionBufferVoteInstruction,\n type ParsedTransactionExecuteInstruction,\n type ParsedTransactionExecuteSyncInstruction,\n} from \"../instructions\";\n\nexport const MULTI_WALLET_PROGRAM_ADDRESS =\n \"reviR1xysEChySVSWGa43a6oJ2boJYTJhwRjo8KJhhT\" as Address<\"reviR1xysEChySVSWGa43a6oJ2boJYTJhwRjo8KJhhT\">;\n\nexport enum MultiWalletAccount {\n DomainConfig,\n GlobalCounter,\n Settings,\n TransactionBuffer,\n User,\n}\n\nexport function identifyMultiWalletAccount(\n account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): MultiWalletAccount {\n const data = \"data\" in account ? account.data : account;\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([201, 232, 212, 229, 59, 241, 106, 197]),\n ),\n 0,\n )\n ) {\n return MultiWalletAccount.DomainConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([42, 206, 176, 58, 175, 129, 130, 233]),\n ),\n 0,\n )\n ) {\n return MultiWalletAccount.GlobalCounter;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([223, 179, 163, 190, 177, 224, 67, 173]),\n ),\n 0,\n )\n ) {\n return MultiWalletAccount.Settings;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([90, 36, 35, 219, 93, 225, 110, 96]),\n ),\n 0,\n )\n ) {\n return MultiWalletAccount.TransactionBuffer;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([159, 117, 95, 227, 239, 151, 58, 236]),\n ),\n 0,\n )\n ) {\n return MultiWalletAccount.User;\n }\n throw new Error(\n \"The provided account could not be identified as a multiWallet account.\",\n );\n}\n\nexport enum MultiWalletInstruction {\n ChangeConfig,\n CreateDomainConfig,\n CreateDomainUserAccount,\n CreateGlobalCounter,\n CreateUserAccount,\n CreateWallet,\n DisableDomainConfig,\n EditDomainConfig,\n EditTransactionManagerUrl,\n EditUserDelegate,\n NativeTransferIntent,\n TokenTransferIntent,\n TransactionBufferClose,\n TransactionBufferCreate,\n TransactionBufferExecute,\n TransactionBufferExtend,\n TransactionBufferVote,\n TransactionExecute,\n TransactionExecuteSync,\n}\n\nexport function identifyMultiWalletInstruction(\n instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): MultiWalletInstruction {\n const data = \"data\" in instruction ? instruction.data : instruction;\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([8])),\n 0,\n )\n ) {\n return MultiWalletInstruction.ChangeConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([0])),\n 0,\n )\n ) {\n return MultiWalletInstruction.CreateDomainConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([4])),\n 0,\n )\n ) {\n return MultiWalletInstruction.CreateDomainUserAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([3])),\n 0,\n )\n ) {\n return MultiWalletInstruction.CreateGlobalCounter;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([5])),\n 0,\n )\n ) {\n return MultiWalletInstruction.CreateUserAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([16])),\n 0,\n )\n ) {\n return MultiWalletInstruction.CreateWallet;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([2])),\n 0,\n )\n ) {\n return MultiWalletInstruction.DisableDomainConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([1])),\n 0,\n )\n ) {\n return MultiWalletInstruction.EditDomainConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([6])),\n 0,\n )\n ) {\n return MultiWalletInstruction.EditTransactionManagerUrl;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([7])),\n 0,\n )\n ) {\n return MultiWalletInstruction.EditUserDelegate;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([17])),\n 0,\n )\n ) {\n return MultiWalletInstruction.NativeTransferIntent;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([18])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TokenTransferIntent;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([12])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionBufferClose;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([9])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionBufferCreate;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([13])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionBufferExecute;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([11])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionBufferExtend;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([10])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionBufferVote;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([14])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionExecute;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 1).encode(new Uint8Array([15])),\n 0,\n )\n ) {\n return MultiWalletInstruction.TransactionExecuteSync;\n }\n throw new Error(\n \"The provided instruction could not be identified as a multiWallet instruction.\",\n );\n}\n\nexport type ParsedMultiWalletInstruction<\n TProgram extends string = \"reviR1xysEChySVSWGa43a6oJ2boJYTJhwRjo8KJhhT\",\n> =\n | ({\n instructionType: MultiWalletInstruction.ChangeConfig;\n } & ParsedChangeConfigInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.CreateDomainConfig;\n } & ParsedCreateDomainConfigInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.CreateDomainUserAccount;\n } & ParsedCreateDomainUserAccountInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.CreateGlobalCounter;\n } & ParsedCreateGlobalCounterInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.CreateUserAccount;\n } & ParsedCreateUserAccountInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.CreateWallet;\n } & ParsedCreateWalletInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.DisableDomainConfig;\n } & ParsedDisableDomainConfigInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.EditDomainConfig;\n } & ParsedEditDomainConfigInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.EditTransactionManagerUrl;\n } & ParsedEditTransactionManagerUrlInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.EditUserDelegate;\n } & ParsedEditUserDelegateInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.NativeTransferIntent;\n } & ParsedNativeTransferIntentInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TokenTransferIntent;\n } & ParsedTokenTransferIntentInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionBufferClose;\n } & ParsedTransactionBufferCloseInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionBufferCreate;\n } & ParsedTransactionBufferCreateInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionBufferExecute;\n } & ParsedTransactionBufferExecuteInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionBufferExtend;\n } & ParsedTransactionBufferExtendInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionBufferVote;\n } & ParsedTransactionBufferVoteInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionExecute;\n } & ParsedTransactionExecuteInstruction<TProgram>)\n | ({\n instructionType: MultiWalletInstruction.TransactionExecuteSync;\n } & ParsedTransactionExecuteSyncInstruction<TProgram>);\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n isProgramError,\n type Address,\n type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n type SolanaError,\n} from \"gill\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../programs\";\n\n/** InvalidSecp256r1VerifyArg: Malformed or missing WebAuthn verification parameters. Please provide valid secp256r1 signature arguments. */\nexport const MULTI_WALLET_ERROR__INVALID_SECP256R1_VERIFY_ARG = 0x1770; // 6000\n/** InvalidSecp256r1Instruction: The instruction preceding this program invocation is not a secp256r1 verification instruction. */\nexport const MULTI_WALLET_ERROR__INVALID_SECP256R1_INSTRUCTION = 0x1771; // 6001\n/** SignatureIndexOutOfBounds: The signature index provided is out of bounds for the secp256r1 instruction. */\nexport const MULTI_WALLET_ERROR__SIGNATURE_INDEX_OUT_OF_BOUNDS = 0x1772; // 6002\n/** InvalidSignatureOffsets: Failed to deserialize secp256r1 signature offsets from the instruction data. */\nexport const MULTI_WALLET_ERROR__INVALID_SIGNATURE_OFFSETS = 0x1773; // 6003\n/** InvalidSecp256r1PublicKey: The extracted public key has an invalid length or encoding. */\nexport const MULTI_WALLET_ERROR__INVALID_SECP256R1_PUBLIC_KEY = 0x1774; // 6004\n/** MalformedSignedMessage: The extracted WebAuthn signed message payload is malformed. */\nexport const MULTI_WALLET_ERROR__MALFORMED_SIGNED_MESSAGE = 0x1775; // 6005\n/** RpIdHashMismatch: The rpIdHash extracted from the signed message does not match the expected value. */\nexport const MULTI_WALLET_ERROR__RP_ID_HASH_MISMATCH = 0x1776; // 6006\n/** ClientDataHashMismatch: The clientDataJSON hash extracted from the signature does not match the generated hash. */\nexport const MULTI_WALLET_ERROR__CLIENT_DATA_HASH_MISMATCH = 0x1777; // 6007\n/** ExpectedMessageHashMismatch: The message hash associated with the signer does not match the pre-declared expected message hash. */\nexport const MULTI_WALLET_ERROR__EXPECTED_MESSAGE_HASH_MISMATCH = 0x1778; // 6008\n/** DurableNonceDetected: Durable nonce detected: this program does not support transactions using a durable nonce. */\nexport const MULTI_WALLET_ERROR__DURABLE_NONCE_DETECTED = 0x1779; // 6009\n/** DuplicateMember: Duplicate public keys detected among members. Each member must have a unique key. */\nexport const MULTI_WALLET_ERROR__DUPLICATE_MEMBER = 0x177a; // 6010\n/** PermanentMember: Permanent members cannot be removed from a wallet. */\nexport const MULTI_WALLET_ERROR__PERMANENT_MEMBER = 0x177b; // 6011\n/** OnlyOnePermanentMemberAllowed: Only one permanent member is allowed per wallet. */\nexport const MULTI_WALLET_ERROR__ONLY_ONE_PERMANENT_MEMBER_ALLOWED = 0x177c; // 6012\n/** InvalidPermanentMemberConfig: User with Permanent Member role must have a delegated wallet. */\nexport const MULTI_WALLET_ERROR__INVALID_PERMANENT_MEMBER_CONFIG = 0x177d; // 6013\n/** OnlyOneTransactionManagerAllowed: Only one transaction manager is allowed per wallet. */\nexport const MULTI_WALLET_ERROR__ONLY_ONE_TRANSACTION_MANAGER_ALLOWED = 0x177e; // 6014\n/** InvalidTransactionManagerPermission: Invalid Transaction Manager permissions. Only initiate is allowed. */\nexport const MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_PERMISSION = 0x177f; // 6015\n/** ExpectedTransactionManagerRoleMismatch: Expected a User with Transaction Manager role for this instruction. */\nexport const MULTI_WALLET_ERROR__EXPECTED_TRANSACTION_MANAGER_ROLE_MISMATCH = 0x1780; // 6016\n/** InvalidTransactionManagerConfig: User with Transaction Manager role requires a valid transaction manager url, be a ed25519 Signer and have no delegated wallet. */\nexport const MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_CONFIG = 0x1781; // 6017\n/** ExpectedAdministratorRoleMismatch: Expected a User with Administrator role for this instruction. */\nexport const MULTI_WALLET_ERROR__EXPECTED_ADMINISTRATOR_ROLE_MISMATCH = 0x1782; // 6018\n/** InvalidAdministratorConfig: User with Administrator role requires a valid domain config, be a ed25519 Signer and have no delegated wallet. */\nexport const MULTI_WALLET_ERROR__INVALID_ADMINISTRATOR_CONFIG = 0x1783; // 6019\n/** OnlyOneAdministratorAllowed: Only one administrator is allowed per wallet. */\nexport const MULTI_WALLET_ERROR__ONLY_ONE_ADMINISTRATOR_ALLOWED = 0x1784; // 6020\n/** EmptyMembers: No members provided. A multisig wallet must contain at least one member. */\nexport const MULTI_WALLET_ERROR__EMPTY_MEMBERS = 0x1785; // 6021\n/** TooManyMembers: Too many members: a maximum of 4 members are supported. */\nexport const MULTI_WALLET_ERROR__TOO_MANY_MEMBERS = 0x1786; // 6022\n/** InvalidThreshold: Invalid threshold: must be at least 1 and cannot exceed the number of voting-eligible members. */\nexport const MULTI_WALLET_ERROR__INVALID_THRESHOLD = 0x1787; // 6023\n/** InvalidTransactionMessage: Malformed transaction message: structure or formatting does not match the expected layout. */\nexport const MULTI_WALLET_ERROR__INVALID_TRANSACTION_MESSAGE = 0x1788; // 6024\n/** InvalidNumberOfAccounts: Unexpected number of accounts provided for this instruction. */\nexport const MULTI_WALLET_ERROR__INVALID_NUMBER_OF_ACCOUNTS = 0x1789; // 6025\n/** InvalidAccount: One or more provided accounts failed validation. Verify that all required accounts are included and correct. */\nexport const MULTI_WALLET_ERROR__INVALID_ACCOUNT = 0x178a; // 6026\n/** InvalidUserRole: One or more provided user accounts failed validation. Verify that only users with appropriate roles are allowed to perform this action. */\nexport const MULTI_WALLET_ERROR__INVALID_USER_ROLE = 0x178b; // 6027\n/** InvalidArguments: Invalid or missing instruction arguments. Ensure all required arguments are correctly provided. */\nexport const MULTI_WALLET_ERROR__INVALID_ARGUMENTS = 0x178c; // 6028\n/** MissingAccount: A required account is missing from the instruction context. */\nexport const MULTI_WALLET_ERROR__MISSING_ACCOUNT = 0x178d; // 6029\n/** AlreadyDelegated: This member is already delegated to another wallet. */\nexport const MULTI_WALLET_ERROR__ALREADY_DELEGATED = 0x178e; // 6030\n/** InsufficientSignerWithExecutePermission: At least one signer with execute permission is required to proceed. */\nexport const MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_EXECUTE_PERMISSION = 0x178f; // 6031\n/** InsufficientSignerWithInitiatePermission: At least one signer with initiate permission is required to perform this action. */\nexport const MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_INITIATE_PERMISSION = 0x1790; // 6032\n/** InsufficientSignersWithVotePermission: Not enough members with vote permission to meet the approval threshold. */\nexport const MULTI_WALLET_ERROR__INSUFFICIENT_SIGNERS_WITH_VOTE_PERMISSION = 0x1791; // 6033\n/** InvalidNonDelegatedSigners: Only delegated members are allowed for this transaction. */\nexport const MULTI_WALLET_ERROR__INVALID_NON_DELEGATED_SIGNERS = 0x1792; // 6034\n/** UnexpectedSigner: Member is not part of the expected signers for this transaction. */\nexport const MULTI_WALLET_ERROR__UNEXPECTED_SIGNER = 0x1793; // 6035\n/** NoSignerFound: No valid signer found in this transaction. */\nexport const MULTI_WALLET_ERROR__NO_SIGNER_FOUND = 0x1794; // 6036\n/** UnauthorisedToCloseTransactionBuffer: Only the transaction creator or rent payer may close this transaction buffer. */\nexport const MULTI_WALLET_ERROR__UNAUTHORISED_TO_CLOSE_TRANSACTION_BUFFER = 0x1795; // 6037\n/** InvalidBuffer: Buffer validation failed: contents do not match the expected hash (possible tampering detected). */\nexport const MULTI_WALLET_ERROR__INVALID_BUFFER = 0x1796; // 6038\n/** FinalBufferHashMismatch: Final buffer hash mismatch: the serialized data may be corrupted or altered. */\nexport const MULTI_WALLET_ERROR__FINAL_BUFFER_HASH_MISMATCH = 0x1797; // 6039\n/** FinalBufferSizeExceeded: The serialized transaction buffer exceeds the maximum size of 10,128 bytes. */\nexport const MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_EXCEEDED = 0x1798; // 6040\n/** FinalBufferSizeMismatch: Declared buffer size does not match the actual serialized size. */\nexport const MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_MISMATCH = 0x1799; // 6041\n/** TransactionHasExpired: This transaction has expired. It must be executed within 3 minutes of approval. */\nexport const MULTI_WALLET_ERROR__TRANSACTION_HAS_EXPIRED = 0x179a; // 6042\n/** TransactionNotApproved: This transaction has not yet reached the required approval threshold. */\nexport const MULTI_WALLET_ERROR__TRANSACTION_NOT_APPROVED = 0x179b; // 6043\n/** ProtectedAccount: Writable CPI calls to protected accounts are not permitted. */\nexport const MULTI_WALLET_ERROR__PROTECTED_ACCOUNT = 0x179c; // 6044\n/** MaxLengthExceeded: An input string exceeds the maximum allowed character length. */\nexport const MULTI_WALLET_ERROR__MAX_LENGTH_EXCEEDED = 0x179d; // 6045\n/** MissingSysvarSlotHistory: Missing required sysvar: Slot History must be included as an account in this instruction. */\nexport const MULTI_WALLET_ERROR__MISSING_SYSVAR_SLOT_HISTORY = 0x179e; // 6046\n/** InvalidSysvarDataFormat: Failed to parse the Slot History sysvar: data format is invalid or corrupted. */\nexport const MULTI_WALLET_ERROR__INVALID_SYSVAR_DATA_FORMAT = 0x179f; // 6047\n/** SlotNumberNotFound: The specified slot number was not found in the provided slot history. */\nexport const MULTI_WALLET_ERROR__SLOT_NUMBER_NOT_FOUND = 0x17a0; // 6048\n/** InvalidSlotNumber: The specified slot number is not recent enough. Slot must be within the recent slot history window. */\nexport const MULTI_WALLET_ERROR__INVALID_SLOT_NUMBER = 0x17a1; // 6049\n/** CredentialIdIsMissing: Missing credential id. */\nexport const MULTI_WALLET_ERROR__CREDENTIAL_ID_IS_MISSING = 0x17a2; // 6050\n/** TransportsIsMissing: Missing transports. */\nexport const MULTI_WALLET_ERROR__TRANSPORTS_IS_MISSING = 0x17a3; // 6051\n/** DomainConfigIsDisabled: The domain configuration account is disabled. Please contact support or try again later. */\nexport const MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_DISABLED = 0x17a4; // 6052\n/** DomainConfigIsMissing: Missing domain configuration account. */\nexport const MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_MISSING = 0x17a5; // 6053\n/** OriginIndexOutOfBounds: The given origin index is not in the whitelisted origins. */\nexport const MULTI_WALLET_ERROR__ORIGIN_INDEX_OUT_OF_BOUNDS = 0x17a6; // 6054\n/** HashComputationFailed: Failed to compute hash. This may indicate a system error. */\nexport const MULTI_WALLET_ERROR__HASH_COMPUTATION_FAILED = 0x17a7; // 6055\n/** InvalidMemberKeyFormat: Member key conversion failed. The provided key format is invalid. */\nexport const MULTI_WALLET_ERROR__INVALID_MEMBER_KEY_FORMAT = 0x17a8; // 6056\n/** MissingCompressedProofArgs: Compressed proof arguments are missing. Required for compressed account operations. */\nexport const MULTI_WALLET_ERROR__MISSING_COMPRESSED_PROOF_ARGS = 0x17a9; // 6057\n/** MissingLightCpiAccounts: Light CPI accounts are missing. Required for compressed account operations. */\nexport const MULTI_WALLET_ERROR__MISSING_LIGHT_CPI_ACCOUNTS = 0x17aa; // 6058\n/** MemberNotFound: Member not found in settings. Cannot remove a member that does not exist. */\nexport const MULTI_WALLET_ERROR__MEMBER_NOT_FOUND = 0x17ab; // 6059\n/** SettingsKeyMismatch: Settings key mismatch. The provided settings key does not match the expected value. */\nexport const MULTI_WALLET_ERROR__SETTINGS_KEY_MISMATCH = 0x17ac; // 6060\n/** PayerMismatch: Payer account mismatch. The provided payer does not match the transaction buffer payer. */\nexport const MULTI_WALLET_ERROR__PAYER_MISMATCH = 0x17ad; // 6061\n/** MissingCompressedTokenAccount: Missing compressed token account. Required for token transfer operations. */\nexport const MULTI_WALLET_ERROR__MISSING_COMPRESSED_TOKEN_ACCOUNT = 0x17ae; // 6062\n/** MissingSplInterfacePda: Missing SPL interface PDA. Required for token transfer operations. */\nexport const MULTI_WALLET_ERROR__MISSING_SPL_INTERFACE_PDA = 0x17af; // 6063\n/** MissingInstructionsSysvar: Missing instructions sysvar account. Required for secp256r1 signature verification. */\nexport const MULTI_WALLET_ERROR__MISSING_INSTRUCTIONS_SYSVAR = 0x17b0; // 6064\n/** LightCpiAccountError: Light CPI account operation failed. The account may be invalid or uninitialized. */\nexport const MULTI_WALLET_ERROR__LIGHT_CPI_ACCOUNT_ERROR = 0x17b1; // 6065\n/** InvalidTokenSourceType: Invalid source type for token transfer. The source account type is not supported. */\nexport const MULTI_WALLET_ERROR__INVALID_TOKEN_SOURCE_TYPE = 0x17b2; // 6066\n/** InvalidAccountIndex: Invalid account index in transaction message. The account index is out of bounds. */\nexport const MULTI_WALLET_ERROR__INVALID_ACCOUNT_INDEX = 0x17b3; // 6067\n/** DomainConfigKeyMismatch: Domain configuration account key mismatch. The provided domain config does not match the expected value. */\nexport const MULTI_WALLET_ERROR__DOMAIN_CONFIG_KEY_MISMATCH = 0x17b4; // 6068\n/** UnauthorizedAdminOnly: Unauthorized: Only the admin account is allowed to perform this action. */\nexport const MULTI_WALLET_ERROR__UNAUTHORIZED_ADMIN_ONLY = 0x17b5; // 6069\n/** InvalidUserTransactionManagerConfig: Invalid user configuration. Transaction manager URL must be empty for non-transaction-manager users. */\nexport const MULTI_WALLET_ERROR__INVALID_USER_TRANSACTION_MANAGER_CONFIG = 0x17b6; // 6070\n/** InvalidUserEd25519Config: Invalid user configuration. Credential ID and transports must be none for ed25519 members. */\nexport const MULTI_WALLET_ERROR__INVALID_USER_ED25519_CONFIG = 0x17b7; // 6071\n/** MissingDestinationTokenAccount: Missing destination token account. Required for token transfer operations. */\nexport const MULTI_WALLET_ERROR__MISSING_DESTINATION_TOKEN_ACCOUNT = 0x17b8; // 6072\n/** MissingSettingsAccountForDelegate: Missing settings account. Required for delegate operations. */\nexport const MULTI_WALLET_ERROR__MISSING_SETTINGS_ACCOUNT_FOR_DELEGATE = 0x17b9; // 6073\n/** MissingNewAuthority: Missing new authority account. Required for domain configuration updates. */\nexport const MULTI_WALLET_ERROR__MISSING_NEW_AUTHORITY = 0x17ba; // 6074\n\nexport type MultiWalletError =\n | typeof MULTI_WALLET_ERROR__ALREADY_DELEGATED\n | typeof MULTI_WALLET_ERROR__CLIENT_DATA_HASH_MISMATCH\n | typeof MULTI_WALLET_ERROR__CREDENTIAL_ID_IS_MISSING\n | typeof MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_DISABLED\n | typeof MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_MISSING\n | typeof MULTI_WALLET_ERROR__DOMAIN_CONFIG_KEY_MISMATCH\n | typeof MULTI_WALLET_ERROR__DUPLICATE_MEMBER\n | typeof MULTI_WALLET_ERROR__DURABLE_NONCE_DETECTED\n | typeof MULTI_WALLET_ERROR__EMPTY_MEMBERS\n | typeof MULTI_WALLET_ERROR__EXPECTED_ADMINISTRATOR_ROLE_MISMATCH\n | typeof MULTI_WALLET_ERROR__EXPECTED_MESSAGE_HASH_MISMATCH\n | typeof MULTI_WALLET_ERROR__EXPECTED_TRANSACTION_MANAGER_ROLE_MISMATCH\n | typeof MULTI_WALLET_ERROR__FINAL_BUFFER_HASH_MISMATCH\n | typeof MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_EXCEEDED\n | typeof MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_MISMATCH\n | typeof MULTI_WALLET_ERROR__HASH_COMPUTATION_FAILED\n | typeof MULTI_WALLET_ERROR__INSUFFICIENT_SIGNERS_WITH_VOTE_PERMISSION\n | typeof MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_EXECUTE_PERMISSION\n | typeof MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_INITIATE_PERMISSION\n | typeof MULTI_WALLET_ERROR__INVALID_ACCOUNT\n | typeof MULTI_WALLET_ERROR__INVALID_ACCOUNT_INDEX\n | typeof MULTI_WALLET_ERROR__INVALID_ADMINISTRATOR_CONFIG\n | typeof MULTI_WALLET_ERROR__INVALID_ARGUMENTS\n | typeof MULTI_WALLET_ERROR__INVALID_BUFFER\n | typeof MULTI_WALLET_ERROR__INVALID_MEMBER_KEY_FORMAT\n | typeof MULTI_WALLET_ERROR__INVALID_NON_DELEGATED_SIGNERS\n | typeof MULTI_WALLET_ERROR__INVALID_NUMBER_OF_ACCOUNTS\n | typeof MULTI_WALLET_ERROR__INVALID_PERMANENT_MEMBER_CONFIG\n | typeof MULTI_WALLET_ERROR__INVALID_SECP256R1_INSTRUCTION\n | typeof MULTI_WALLET_ERROR__INVALID_SECP256R1_PUBLIC_KEY\n | typeof MULTI_WALLET_ERROR__INVALID_SECP256R1_VERIFY_ARG\n | typeof MULTI_WALLET_ERROR__INVALID_SIGNATURE_OFFSETS\n | typeof MULTI_WALLET_ERROR__INVALID_SLOT_NUMBER\n | typeof MULTI_WALLET_ERROR__INVALID_SYSVAR_DATA_FORMAT\n | typeof MULTI_WALLET_ERROR__INVALID_THRESHOLD\n | typeof MULTI_WALLET_ERROR__INVALID_TOKEN_SOURCE_TYPE\n | typeof MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_CONFIG\n | typeof MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_PERMISSION\n | typeof MULTI_WALLET_ERROR__INVALID_TRANSACTION_MESSAGE\n | typeof MULTI_WALLET_ERROR__INVALID_USER_ED25519_CONFIG\n | typeof MULTI_WALLET_ERROR__INVALID_USER_ROLE\n | typeof MULTI_WALLET_ERROR__INVALID_USER_TRANSACTION_MANAGER_CONFIG\n | typeof MULTI_WALLET_ERROR__LIGHT_CPI_ACCOUNT_ERROR\n | typeof MULTI_WALLET_ERROR__MALFORMED_SIGNED_MESSAGE\n | typeof MULTI_WALLET_ERROR__MAX_LENGTH_EXCEEDED\n | typeof MULTI_WALLET_ERROR__MEMBER_NOT_FOUND\n | typeof MULTI_WALLET_ERROR__MISSING_ACCOUNT\n | typeof MULTI_WALLET_ERROR__MISSING_COMPRESSED_PROOF_ARGS\n | typeof MULTI_WALLET_ERROR__MISSING_COMPRESSED_TOKEN_ACCOUNT\n | typeof MULTI_WALLET_ERROR__MISSING_DESTINATION_TOKEN_ACCOUNT\n | typeof MULTI_WALLET_ERROR__MISSING_INSTRUCTIONS_SYSVAR\n | typeof MULTI_WALLET_ERROR__MISSING_LIGHT_CPI_ACCOUNTS\n | typeof MULTI_WALLET_ERROR__MISSING_NEW_AUTHORITY\n | typeof MULTI_WALLET_ERROR__MISSING_SETTINGS_ACCOUNT_FOR_DELEGATE\n | typeof MULTI_WALLET_ERROR__MISSING_SPL_INTERFACE_PDA\n | typeof MULTI_WALLET_ERROR__MISSING_SYSVAR_SLOT_HISTORY\n | typeof MULTI_WALLET_ERROR__NO_SIGNER_FOUND\n | typeof MULTI_WALLET_ERROR__ONLY_ONE_ADMINISTRATOR_ALLOWED\n | typeof MULTI_WALLET_ERROR__ONLY_ONE_PERMANENT_MEMBER_ALLOWED\n | typeof MULTI_WALLET_ERROR__ONLY_ONE_TRANSACTION_MANAGER_ALLOWED\n | typeof MULTI_WALLET_ERROR__ORIGIN_INDEX_OUT_OF_BOUNDS\n | typeof MULTI_WALLET_ERROR__PAYER_MISMATCH\n | typeof MULTI_WALLET_ERROR__PERMANENT_MEMBER\n | typeof MULTI_WALLET_ERROR__PROTECTED_ACCOUNT\n | typeof MULTI_WALLET_ERROR__RP_ID_HASH_MISMATCH\n | typeof MULTI_WALLET_ERROR__SETTINGS_KEY_MISMATCH\n | typeof MULTI_WALLET_ERROR__SIGNATURE_INDEX_OUT_OF_BOUNDS\n | typeof MULTI_WALLET_ERROR__SLOT_NUMBER_NOT_FOUND\n | typeof MULTI_WALLET_ERROR__TOO_MANY_MEMBERS\n | typeof MULTI_WALLET_ERROR__TRANSACTION_HAS_EXPIRED\n | typeof MULTI_WALLET_ERROR__TRANSACTION_NOT_APPROVED\n | typeof MULTI_WALLET_ERROR__TRANSPORTS_IS_MISSING\n | typeof MULTI_WALLET_ERROR__UNAUTHORISED_TO_CLOSE_TRANSACTION_BUFFER\n | typeof MULTI_WALLET_ERROR__UNAUTHORIZED_ADMIN_ONLY\n | typeof MULTI_WALLET_ERROR__UNEXPECTED_SIGNER;\n\nlet multiWalletErrorMessages: Record<MultiWalletError, string> | undefined;\nif (process.env.NODE_ENV !== \"production\") {\n multiWalletErrorMessages = {\n [MULTI_WALLET_ERROR__ALREADY_DELEGATED]: `This member is already delegated to another wallet.`,\n [MULTI_WALLET_ERROR__CLIENT_DATA_HASH_MISMATCH]: `The clientDataJSON hash extracted from the signature does not match the generated hash.`,\n [MULTI_WALLET_ERROR__CREDENTIAL_ID_IS_MISSING]: `Missing credential id.`,\n [MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_DISABLED]: `The domain configuration account is disabled. Please contact support or try again later.`,\n [MULTI_WALLET_ERROR__DOMAIN_CONFIG_IS_MISSING]: `Missing domain configuration account.`,\n [MULTI_WALLET_ERROR__DOMAIN_CONFIG_KEY_MISMATCH]: `Domain configuration account key mismatch. The provided domain config does not match the expected value.`,\n [MULTI_WALLET_ERROR__DUPLICATE_MEMBER]: `Duplicate public keys detected among members. Each member must have a unique key.`,\n [MULTI_WALLET_ERROR__DURABLE_NONCE_DETECTED]: `Durable nonce detected: this program does not support transactions using a durable nonce.`,\n [MULTI_WALLET_ERROR__EMPTY_MEMBERS]: `No members provided. A multisig wallet must contain at least one member.`,\n [MULTI_WALLET_ERROR__EXPECTED_ADMINISTRATOR_ROLE_MISMATCH]: `Expected a User with Administrator role for this instruction.`,\n [MULTI_WALLET_ERROR__EXPECTED_MESSAGE_HASH_MISMATCH]: `The message hash associated with the signer does not match the pre-declared expected message hash.`,\n [MULTI_WALLET_ERROR__EXPECTED_TRANSACTION_MANAGER_ROLE_MISMATCH]: `Expected a User with Transaction Manager role for this instruction.`,\n [MULTI_WALLET_ERROR__FINAL_BUFFER_HASH_MISMATCH]: `Final buffer hash mismatch: the serialized data may be corrupted or altered.`,\n [MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_EXCEEDED]: `The serialized transaction buffer exceeds the maximum size of 10,128 bytes.`,\n [MULTI_WALLET_ERROR__FINAL_BUFFER_SIZE_MISMATCH]: `Declared buffer size does not match the actual serialized size.`,\n [MULTI_WALLET_ERROR__HASH_COMPUTATION_FAILED]: `Failed to compute hash. This may indicate a system error.`,\n [MULTI_WALLET_ERROR__INSUFFICIENT_SIGNERS_WITH_VOTE_PERMISSION]: `Not enough members with vote permission to meet the approval threshold.`,\n [MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_EXECUTE_PERMISSION]: `At least one signer with execute permission is required to proceed.`,\n [MULTI_WALLET_ERROR__INSUFFICIENT_SIGNER_WITH_INITIATE_PERMISSION]: `At least one signer with initiate permission is required to perform this action.`,\n [MULTI_WALLET_ERROR__INVALID_ACCOUNT]: `One or more provided accounts failed validation. Verify that all required accounts are included and correct.`,\n [MULTI_WALLET_ERROR__INVALID_ACCOUNT_INDEX]: `Invalid account index in transaction message. The account index is out of bounds.`,\n [MULTI_WALLET_ERROR__INVALID_ADMINISTRATOR_CONFIG]: `User with Administrator role requires a valid domain config, be a ed25519 Signer and have no delegated wallet.`,\n [MULTI_WALLET_ERROR__INVALID_ARGUMENTS]: `Invalid or missing instruction arguments. Ensure all required arguments are correctly provided.`,\n [MULTI_WALLET_ERROR__INVALID_BUFFER]: `Buffer validation failed: contents do not match the expected hash (possible tampering detected).`,\n [MULTI_WALLET_ERROR__INVALID_MEMBER_KEY_FORMAT]: `Member key conversion failed. The provided key format is invalid.`,\n [MULTI_WALLET_ERROR__INVALID_NON_DELEGATED_SIGNERS]: `Only delegated members are allowed for this transaction.`,\n [MULTI_WALLET_ERROR__INVALID_NUMBER_OF_ACCOUNTS]: `Unexpected number of accounts provided for this instruction.`,\n [MULTI_WALLET_ERROR__INVALID_PERMANENT_MEMBER_CONFIG]: `User with Permanent Member role must have a delegated wallet.`,\n [MULTI_WALLET_ERROR__INVALID_SECP256R1_INSTRUCTION]: `The instruction preceding this program invocation is not a secp256r1 verification instruction.`,\n [MULTI_WALLET_ERROR__INVALID_SECP256R1_PUBLIC_KEY]: `The extracted public key has an invalid length or encoding.`,\n [MULTI_WALLET_ERROR__INVALID_SECP256R1_VERIFY_ARG]: `Malformed or missing WebAuthn verification parameters. Please provide valid secp256r1 signature arguments.`,\n [MULTI_WALLET_ERROR__INVALID_SIGNATURE_OFFSETS]: `Failed to deserialize secp256r1 signature offsets from the instruction data.`,\n [MULTI_WALLET_ERROR__INVALID_SLOT_NUMBER]: `The specified slot number is not recent enough. Slot must be within the recent slot history window.`,\n [MULTI_WALLET_ERROR__INVALID_SYSVAR_DATA_FORMAT]: `Failed to parse the Slot History sysvar: data format is invalid or corrupted.`,\n [MULTI_WALLET_ERROR__INVALID_THRESHOLD]: `Invalid threshold: must be at least 1 and cannot exceed the number of voting-eligible members.`,\n [MULTI_WALLET_ERROR__INVALID_TOKEN_SOURCE_TYPE]: `Invalid source type for token transfer. The source account type is not supported.`,\n [MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_CONFIG]: `User with Transaction Manager role requires a valid transaction manager url, be a ed25519 Signer and have no delegated wallet.`,\n [MULTI_WALLET_ERROR__INVALID_TRANSACTION_MANAGER_PERMISSION]: `Invalid Transaction Manager permissions. Only initiate is allowed.`,\n [MULTI_WALLET_ERROR__INVALID_TRANSACTION_MESSAGE]: `Malformed transaction message: structure or formatting does not match the expected layout.`,\n [MULTI_WALLET_ERROR__INVALID_USER_ED25519_CONFIG]: `Invalid user configuration. Credential ID and transports must be none for ed25519 members.`,\n [MULTI_WALLET_ERROR__INVALID_USER_ROLE]: `One or more provided user accounts failed validation. Verify that only users with appropriate roles are allowed to perform this action.`,\n [MULTI_WALLET_ERROR__INVALID_USER_TRANSACTION_MANAGER_CONFIG]: `Invalid user configuration. Transaction manager URL must be empty for non-transaction-manager users.`,\n [MULTI_WALLET_ERROR__LIGHT_CPI_ACCOUNT_ERROR]: `Light CPI account operation failed. The account may be invalid or uninitialized.`,\n [MULTI_WALLET_ERROR__MALFORMED_SIGNED_MESSAGE]: `The extracted WebAuthn signed message payload is malformed.`,\n [MULTI_WALLET_ERROR__MAX_LENGTH_EXCEEDED]: `An input string exceeds the maximum allowed character length.`,\n [MULTI_WALLET_ERROR__MEMBER_NOT_FOUND]: `Member not found in settings. Cannot remove a member that does not exist.`,\n [MULTI_WALLET_ERROR__MISSING_ACCOUNT]: `A required account is missing from the instruction context.`,\n [MULTI_WALLET_ERROR__MISSING_COMPRESSED_PROOF_ARGS]: `Compressed proof arguments are missing. Required for compressed account operations.`,\n [MULTI_WALLET_ERROR__MISSING_COMPRESSED_TOKEN_ACCOUNT]: `Missing compressed token account. Required for token transfer operations.`,\n [MULTI_WALLET_ERROR__MISSING_DESTINATION_TOKEN_ACCOUNT]: `Missing destination token account. Required for token transfer operations.`,\n [MULTI_WALLET_ERROR__MISSING_INSTRUCTIONS_SYSVAR]: `Missing instructions sysvar account. Required for secp256r1 signature verification.`,\n [MULTI_WALLET_ERROR__MISSING_LIGHT_CPI_ACCOUNTS]: `Light CPI accounts are missing. Required for compressed account operations.`,\n [MULTI_WALLET_ERROR__MISSING_NEW_AUTHORITY]: `Missing new authority account. Required for domain configuration updates.`,\n [MULTI_WALLET_ERROR__MISSING_SETTINGS_ACCOUNT_FOR_DELEGATE]: `Missing settings account. Required for delegate operations.`,\n [MULTI_WALLET_ERROR__MISSING_SPL_INTERFACE_PDA]: `Missing SPL interface PDA. Required for token transfer operations.`,\n [MULTI_WALLET_ERROR__MISSING_SYSVAR_SLOT_HISTORY]: `Missing required sysvar: Slot History must be included as an account in this instruction.`,\n [MULTI_WALLET_ERROR__NO_SIGNER_FOUND]: `No valid signer found in this transaction.`,\n [MULTI_WALLET_ERROR__ONLY_ONE_ADMINISTRATOR_ALLOWED]: `Only one administrator is allowed per wallet.`,\n [MULTI_WALLET_ERROR__ONLY_ONE_PERMANENT_MEMBER_ALLOWED]: `Only one permanent member is allowed per wallet.`,\n [MULTI_WALLET_ERROR__ONLY_ONE_TRANSACTION_MANAGER_ALLOWED]: `Only one transaction manager is allowed per wallet.`,\n [MULTI_WALLET_ERROR__ORIGIN_INDEX_OUT_OF_BOUNDS]: `The given origin index is not in the whitelisted origins.`,\n [MULTI_WALLET_ERROR__PAYER_MISMATCH]: `Payer account mismatch. The provided payer does not match the transaction buffer payer.`,\n [MULTI_WALLET_ERROR__PERMANENT_MEMBER]: `Permanent members cannot be removed from a wallet.`,\n [MULTI_WALLET_ERROR__PROTECTED_ACCOUNT]: `Writable CPI calls to protected accounts are not permitted.`,\n [MULTI_WALLET_ERROR__RP_ID_HASH_MISMATCH]: `The rpIdHash extracted from the signed message does not match the expected value.`,\n [MULTI_WALLET_ERROR__SETTINGS_KEY_MISMATCH]: `Settings key mismatch. The provided settings key does not match the expected value.`,\n [MULTI_WALLET_ERROR__SIGNATURE_INDEX_OUT_OF_BOUNDS]: `The signature index provided is out of bounds for the secp256r1 instruction.`,\n [MULTI_WALLET_ERROR__SLOT_NUMBER_NOT_FOUND]: `The specified slot number was not found in the provided slot history.`,\n [MULTI_WALLET_ERROR__TOO_MANY_MEMBERS]: `Too many members: a maximum of 4 members are supported.`,\n [MULTI_WALLET_ERROR__TRANSACTION_HAS_EXPIRED]: `This transaction has expired. It must be executed within 3 minutes of approval.`,\n [MULTI_WALLET_ERROR__TRANSACTION_NOT_APPROVED]: `This transaction has not yet reached the required approval threshold.`,\n [MULTI_WALLET_ERROR__TRANSPORTS_IS_MISSING]: `Missing transports.`,\n [MULTI_WALLET_ERROR__UNAUTHORISED_TO_CLOSE_TRANSACTION_BUFFER]: `Only the transaction creator or rent payer may close this transaction buffer.`,\n [MULTI_WALLET_ERROR__UNAUTHORIZED_ADMIN_ONLY]: `Unauthorized: Only the admin account is allowed to perform this action.`,\n [MULTI_WALLET_ERROR__UNEXPECTED_SIGNER]: `Member is not part of the expected signers for this transaction.`,\n };\n}\n\nexport function getMultiWalletErrorMessage(code: MultiWalletError): string {\n if (process.env.NODE_ENV !== \"production\") {\n return (multiWalletErrorMessages as Record<MultiWalletError, string>)[code];\n }\n\n return \"Error message not available in production bundles.\";\n}\n\nexport function isMultiWalletError<TProgramErrorCode extends MultiWalletError>(\n error: unknown,\n transactionMessage: {\n instructions: Record<number, { programAddress: Address }>;\n },\n code?: TProgramErrorCode,\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n return isProgramError<TProgramErrorCode>(\n error,\n transactionMessage,\n MULTI_WALLET_PROGRAM_ADDRESS,\n code,\n );\n}\n","/**\n * Custom error classes for the SDK\n * Provides better error handling and debugging capabilities\n */\n\n/**\n * Base error class for all SDK errors\n */\nexport class RevibaseError extends Error {\n constructor(\n message: string,\n public readonly code?: string,\n public readonly cause?: unknown,\n ) {\n super(message);\n this.name = this.constructor.name;\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n\n/**\n * Error thrown when SDK is not properly initialized\n */\nexport class NotInitializedError extends RevibaseError {\n constructor(service: string) {\n super(\n `${service} is not initialized. Please call initialize() first.`,\n \"NOT_INITIALIZED\",\n );\n }\n}\n\n/**\n * Error thrown when a required account or data is not found\n */\nexport class NotFoundError extends RevibaseError {\n constructor(resource: string, details?: string) {\n super(`${resource} not found.${details ? ` ${details}` : \"\"}`, \"NOT_FOUND\");\n }\n}\n\n/**\n * Error thrown when validation fails\n */\nexport class ValidationError extends RevibaseError {\n constructor(message: string, field?: string) {\n super(message, \"VALIDATION_ERROR\", { field });\n }\n}\n\n/**\n * Error thrown when a network request fails\n */\nexport class NetworkError extends RevibaseError {\n constructor(\n message: string,\n public readonly statusCode?: number,\n public readonly url?: string,\n ) {\n super(message, \"NETWORK_ERROR\", { statusCode, url });\n }\n}\n\n/**\n * Error thrown when retry operations exhaust all attempts\n */\nexport class RetryExhaustedError extends RevibaseError {\n constructor(\n operation: string,\n public readonly attempts: number,\n public readonly lastError?: unknown,\n ) {\n super(\n `Operation \"${operation}\" failed after ${attempts} attempts.`,\n \"RETRY_EXHAUSTED\",\n { lastError },\n );\n }\n}\n\n/**\n * Error thrown when permissions are insufficient\n */\nexport class PermissionError extends RevibaseError {\n constructor(\n message: string,\n public readonly required?: string[],\n public readonly actual?: string[],\n ) {\n super(message, \"PERMISSION_ERROR\", { required, actual });\n }\n}\n","export type IKeyType = {\n keyType: number;\n};\n\nexport const KeyType = {\n Ed25519: 1 << 0,\n Secp256r1: 1 << 1,\n} as const;\n\nexport type KeyType = (typeof KeyType)[keyof typeof KeyType];\n","import type { AuthenticationResponseJSON } from \"@simplewebauthn/browser\";\nimport z from \"zod\";\n\nexport const UserInfoSchema = z.looseObject({\n publicKey: z.string(),\n walletAddress: z.string(),\n settingsIndexWithAddress: z.object({\n index: z.union([z.number(), z.bigint()]),\n }),\n});\n\nexport const DeviceProfileSchema = z\n .object({\n /**\n * Stable device identity key generated by the client/device.\n */\n devicePublicKey: z.string(),\n /**\n * Runtime platform.\n */\n platform: z.enum([\"web\", \"ios\", \"android\"]),\n /**\n * Full user agent string when available.\n * Typically only available on web.\n */\n userAgent: z.string().optional(),\n /**\n * Browser information.\n */\n browser: z\n .object({\n name: z.string().optional(),\n version: z.string().optional(),\n major: z.string().optional(),\n type: z.string().optional(),\n })\n .optional(),\n /**\n * Browser engine.\n */\n engine: z\n .object({\n name: z.string().optional(),\n version: z.string().optional(),\n })\n .optional(),\n /**\n * CPU architecture.\n */\n cpu: z\n .object({\n architecture: z.string().optional(),\n })\n .optional(),\n /**\n * Physical device information.\n */\n device: z\n .object({\n type: z.string().optional(), // mobile, tablet, desktop, etc.\n vendor: z.string().optional(), // Apple, Samsung, etc.\n model: z.string().optional(), // iPhone 15 Pro, Pixel 9, etc.\n })\n .optional(),\n /**\n * Operating system information.\n */\n os: z\n .object({\n name: z.string().optional(),\n version: z.string().optional(),\n })\n .optional(),\n /**\n * App metadata.\n */\n app: z\n .object({\n name: z.string().optional(),\n version: z.string().optional(),\n build: z.string().optional(),\n })\n .optional(),\n /**\n * Display/screen information.\n * Width/height should be CSS pixels.\n */\n display: z\n .object({\n screenWidth: z.number().optional(),\n screenHeight: z.number().optional(),\n viewportWidth: z.number().optional(),\n viewportHeight: z.number().optional(),\n devicePixelRatio: z.number().optional(),\n })\n .optional(),\n /**\n * Localization.\n */\n locale: z.string().optional(),\n timezone: z.string().optional(),\n /**\n * Push notification configuration.\n */\n push: z\n .object({\n provider: z.enum([\"expo\", \"fcm\", \"apns\"]),\n token: z.string(),\n })\n .optional(),\n /**\n * Originating website for web flows.\n */\n website: z.string().optional(),\n /**\n * Native app identifier / bundle ID.\n */\n nativeApp: z.string().optional(),\n /**\n * Timestamps.\n */\n createdAt: z.iso.datetime().optional(),\n })\n .strict();\n\nexport const TransactionActionTypeSchema = z.enum([\n \"create\",\n \"create_with_preauthorized_execution\",\n \"execute\",\n \"vote\",\n \"sync\",\n \"close\",\n \"transfer_intent\",\n \"change_delegate\",\n \"change_config\",\n]);\n\nexport const TransactionPayloadSchema = z\n .object({\n transactionActionType: TransactionActionTypeSchema,\n transactionAddress: z.string(),\n transactionMessageBytes: z\n .array(z.number().int().min(0).max(255))\n .transform((arr) => new Uint8Array(arr)),\n })\n .strict();\n\nexport const TransactionPayloadWithBase64MessageBytesSchema = z\n .object({\n transactionActionType: TransactionActionTypeSchema,\n transactionAddress: z.string(),\n transactionMessageBytes: z.base64(),\n })\n .strict();\n\nexport const StartMessageRequestSchema = z\n .object({\n phase: z.literal(\"start\"),\n clientOrigin: z.url(),\n signer: z.string().optional(),\n rid: z.string(),\n validTill: z.number(),\n providerOrigin: z.string(),\n rpId: z.string(),\n data: z\n .object({\n type: z.literal(\"message\"),\n payload: z.string(),\n requireTwoFactorAuthentication: z.boolean().default(false),\n })\n .strict(),\n })\n .strict();\n\nexport const StartTransactionRequestSchema = z\n .object({\n phase: z.literal(\"start\"),\n clientOrigin: z.url(),\n signer: z.string().optional(),\n rid: z.string(),\n validTill: z.number(),\n providerOrigin: z.string(),\n rpId: z.string(),\n data: z\n .object({\n type: z.literal(\"transaction\"),\n payload: TransactionPayloadWithBase64MessageBytesSchema,\n })\n .strict(),\n })\n .strict();\n\nexport const AuthenticationContextSchema = z\n .object({\n startRequest: z.union([\n StartMessageRequestSchema,\n StartTransactionRequestSchema,\n ]),\n authResponse: z.custom<AuthenticationResponseJSON>(),\n client: z\n .object({\n clientOrigin: z.url(),\n jws: z.string(),\n })\n .strict(),\n device: z\n .object({\n jwk: z.base64(),\n jws: z.string(),\n deviceProfile: DeviceProfileSchema,\n })\n .strict(),\n })\n .strict();\n\nexport const BaseResponseSchema = z\n .object({\n signer: z.string(),\n additionalInfo: z.looseObject({}).optional(),\n })\n .strict();\n\nexport const TransactionDetailsSchema = z\n .object({\n slotHash: z.string(),\n slotNumber: z.string(),\n estimatedSlotHashExpiry: z.number(),\n originIndex: z.number(),\n crossOrigin: z.boolean(),\n })\n .strict();\n\nexport const CompleteMessageRequestSchema = z\n .object({\n phase: z.literal(\"complete\"),\n data: z\n .object({\n type: z.literal(\"message\"),\n payload: BaseResponseSchema.extend(\n AuthenticationContextSchema.shape,\n ).extend({\n startRequest: StartMessageRequestSchema,\n transactionManager: z\n .object({\n publicKey: z.string(),\n signature: z.string(),\n })\n .optional(),\n }),\n })\n .strict(),\n })\n .strict();\n\nexport const CompleteTransactionRequestSchema = z\n .object({\n phase: z.literal(\"complete\"),\n data: z\n .object({\n type: z.literal(\"transaction\"),\n payload: BaseResponseSchema.extend(AuthenticationContextSchema.shape)\n .extend(TransactionDetailsSchema.shape)\n .extend({\n startRequest: StartTransactionRequestSchema,\n }),\n })\n .strict(),\n })\n .strict();\n\nexport type TransactionActionType = z.infer<typeof TransactionActionTypeSchema>;\nexport type TransactionPayload = z.infer<typeof TransactionPayloadSchema>;\nexport type TransactionPayloadWithBase64MessageBytes = z.infer<\n typeof TransactionPayloadWithBase64MessageBytesSchema\n>;\nexport type StartMessageRequest = z.infer<typeof StartMessageRequestSchema>;\nexport type StartTransactionRequest = z.infer<\n typeof StartTransactionRequestSchema\n>;\nexport type CompleteTransactionRequest = z.infer<\n typeof CompleteTransactionRequestSchema\n>;\n\nexport type CompleteMessageRequest = z.infer<\n typeof CompleteMessageRequestSchema\n>;\n\ntype AuthenticationContext = z.infer<typeof AuthenticationContextSchema>;\ntype BaseResponse = z.infer<typeof BaseResponseSchema>;\ntype TransactionDetails = z.infer<typeof TransactionDetailsSchema>;\nexport type TransactionAuthenticationResponse = TransactionDetails &\n AuthenticationContext &\n BaseResponse;\nexport type MessageAuthenticationResponse = AuthenticationContext &\n BaseResponse;\nexport type TransactionAuthDetails = TransactionDetails & AuthenticationContext;\nexport type UserInfo = z.infer<typeof UserInfoSchema>;\nexport type DeviceProfile = z.infer<typeof DeviceProfileSchema>;\n","import type { IPermissions } from \"../generated\";\n\nexport const Permission = {\n InitiateTransaction: 1 << 0,\n VoteTransaction: 1 << 1,\n ExecuteTransaction: 1 << 2,\n} as const;\n\nexport type IPermission = (typeof Permission)[keyof typeof Permission];\n\nexport class Permissions implements IPermissions {\n private constructor(readonly mask: number) {}\n\n static fromPermissions(permissions: IPermission[]) {\n return new Permissions(\n permissions.reduce((mask, permission) => mask | permission, 0)\n );\n }\n\n static all() {\n return new Permissions(\n Object.values(Permission).reduce(\n (mask, permission) => mask | permission,\n 0\n )\n );\n }\n\n static has(permissions: IPermissions, permission: IPermission) {\n return (permissions.mask & permission) === permission;\n }\n}\n","import type { AuthenticationResponseJSON } from \"@simplewebauthn/browser\";\nimport {\n getBase58Decoder,\n getBase58Encoder,\n type Address,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nconst SECP256R1_PUBLIC_KEY_LENGTH = 33;\ntype Secp256r1KeyInitData =\n | string\n | Uint8Array\n | Array<number>\n | ReadonlyUint8Array;\ntype SignedMessageDetails = {\n verifyArgs: {\n clientDataJson: Uint8Array<ArrayBuffer>;\n truncatedClientDataJson: Uint8Array<ArrayBuffer>;\n slotNumber: bigint;\n slotHash: Uint8Array<ArrayBuffer>;\n };\n domainConfig: Address;\n authData: Uint8Array<ArrayBuffer>;\n signature: Uint8Array<ArrayBuffer>;\n originIndex: number;\n crossOrigin: boolean;\n clientAndDeviceHash: Uint8Array<ArrayBuffer>;\n authResponse: AuthenticationResponseJSON;\n};\n\nexport class Secp256r1Key {\n protected _bn: Uint8Array<ArrayBuffer> | undefined;\n\n constructor(value: Secp256r1KeyInitData) {\n if (typeof value === \"string\") {\n this._bn = new Uint8Array(getBase58Encoder().encode(value));\n } else {\n this._bn = new Uint8Array(value);\n }\n this.validateKeyLength(this._bn);\n }\n\n protected validateKeyLength(key: Uint8Array<ArrayBuffer> | Array<number>) {\n if (key.length !== SECP256R1_PUBLIC_KEY_LENGTH) {\n throw new Error(\n `Invalid public key length, expected ${SECP256R1_PUBLIC_KEY_LENGTH} bytes but got ${key.length}`,\n );\n }\n }\n\n toBase58() {\n return getBase58Decoder().decode(this.toBytes());\n }\n\n toTruncatedBuffer() {\n const buf = this.toBuffer();\n return buf.subarray(1, buf.length);\n }\n\n toBuffer() {\n if (!this._bn) {\n throw new Error(`Invalid public key input`);\n }\n const buf = this._bn;\n if (buf.byteLength === SECP256R1_PUBLIC_KEY_LENGTH) {\n return buf;\n } else {\n throw new Error(`Invalid public key input`);\n }\n }\n\n toBytes() {\n const buf = this.toBuffer();\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n\n toString() {\n return this.toBase58();\n }\n\n toJSON() {\n return this.toBase58();\n }\n}\n\nexport class SignedSecp256r1Key extends Secp256r1Key {\n verifyArgs: SignedMessageDetails[\"verifyArgs\"];\n domainConfig: SignedMessageDetails[\"domainConfig\"];\n authData: SignedMessageDetails[\"authData\"];\n signature: SignedMessageDetails[\"signature\"];\n originIndex: SignedMessageDetails[\"originIndex\"];\n crossOrigin: SignedMessageDetails[\"crossOrigin\"];\n clientAndDeviceHash: SignedMessageDetails[\"clientAndDeviceHash\"];\n authResponse: SignedMessageDetails[\"authResponse\"];\n\n constructor(value: Secp256r1KeyInitData, signed: SignedMessageDetails) {\n super(value);\n this.verifyArgs = signed.verifyArgs;\n this.domainConfig = signed.domainConfig;\n this.authData = signed.authData;\n this.signature = signed.signature;\n this.originIndex = signed.originIndex;\n this.crossOrigin = signed.crossOrigin;\n this.clientAndDeviceHash = signed.clientAndDeviceHash;\n this.authResponse = signed.authResponse;\n }\n}\n","import {\n type CompiledTransactionMessage,\n type CompiledTransactionMessageWithLifetime,\n getAddressCodec,\n getArrayCodec,\n getStructCodec,\n getU8Codec,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../generated\";\n\nfunction getCompiledInstructionCodec() {\n return getStructCodec([\n [\"programAddressIndex\", getU8Codec()],\n [\"accountIndices\", getArrayCodec(getU8Codec())],\n [\"data\", getArrayCodec(getU8Codec())],\n ]);\n}\n\nfunction getMessageAddressTableLookupCodec() {\n return getStructCodec([\n [\"lookupTableAddress\", getAddressCodec()],\n [\"writableIndexes\", getArrayCodec(getU8Codec())],\n [\"readonlyIndexes\", getArrayCodec(getU8Codec())],\n ]);\n}\n\nconst vaultTransactionMessageCodec = getStructCodec([\n [\"numSigners\", getU8Codec()],\n [\"numWritableSigners\", getU8Codec()],\n [\"numWritableNonSigners\", getU8Codec()],\n [\"accountKeys\", getArrayCodec(getAddressCodec())],\n [\"instructions\", getArrayCodec(getCompiledInstructionCodec())],\n [\"addressTableLookups\", getArrayCodec(getMessageAddressTableLookupCodec())],\n]);\n\nexport function vaultTransactionMessageSerialize(\n compiledMessage: CompiledTransactionMessage,\n) {\n const transactionMessageBytes = vaultTransactionMessageCodec.encode({\n numSigners: compiledMessage.header.numSignerAccounts,\n numWritableSigners:\n compiledMessage.header.numSignerAccounts -\n compiledMessage.header.numReadonlySignerAccounts,\n numWritableNonSigners:\n compiledMessage.staticAccounts.length -\n compiledMessage.header.numSignerAccounts -\n compiledMessage.header.numReadonlyNonSignerAccounts,\n accountKeys: compiledMessage.staticAccounts,\n instructions: compiledMessage.instructions.map((ix) => {\n return {\n programAddressIndex: ix.programAddressIndex,\n accountIndices: ix.accountIndices ?? [],\n data: Array.from(ix.data ?? []),\n };\n }),\n addressTableLookups:\n compiledMessage.version !== \"legacy\"\n ? (compiledMessage.addressTableLookups?.map((x) => ({\n lookupTableAddress: x.lookupTableAddress,\n readonlyIndexes: x.readonlyIndexes as number[],\n writableIndexes: x.writableIndexes as number[],\n })) ?? [])\n : [],\n });\n\n return transactionMessageBytes;\n}\n\nexport function vaultTransactionMessageDeserialize(\n transactionMessageBytes: ReadonlyUint8Array,\n): CompiledTransactionMessage & CompiledTransactionMessageWithLifetime {\n const vaultTransactionMessage = vaultTransactionMessageCodec.decode(\n transactionMessageBytes,\n );\n return {\n header: {\n numSignerAccounts: vaultTransactionMessage.numSigners,\n numReadonlySignerAccounts:\n vaultTransactionMessage.numSigners -\n vaultTransactionMessage.numWritableSigners,\n numReadonlyNonSignerAccounts:\n vaultTransactionMessage.accountKeys.length -\n vaultTransactionMessage.numSigners -\n vaultTransactionMessage.numWritableNonSigners,\n },\n addressTableLookups: vaultTransactionMessage.addressTableLookups.map(\n (x) => ({\n lookupTableAddress: x.lookupTableAddress,\n readonlyIndexes: x.readonlyIndexes.map(Number),\n writableIndexes: x.writableIndexes.map(Number),\n readableIndices: x.readonlyIndexes.map(Number),\n writableIndices: x.writableIndexes.map(Number),\n }),\n ),\n instructions: vaultTransactionMessage.instructions.map((x) => ({\n accountIndices: x.accountIndices.map(Number),\n data: new Uint8Array(x.data),\n programAddressIndex: x.programAddressIndex,\n })),\n lifetimeToken: MULTI_WALLET_PROGRAM_ADDRESS,\n staticAccounts: vaultTransactionMessage.accountKeys,\n version: 0,\n };\n}\n","/**\n * Validation utilities for common input checks\n * Provides consistent validation across the SDK\n */\n\nimport { ValidationError } from \"../errors\";\n\n/**\n * Validates that a number is within a range\n * @param value - Number to validate\n * @param min - Minimum value (inclusive)\n * @param max - Maximum value (inclusive)\n * @param name - Name of the parameter for error messages\n * @throws {ValidationError} If value is out of range\n */\nexport function requireInRange(\n value: number,\n min: number,\n max: number,\n name: string\n): void {\n if (value < min || value > max) {\n throw new ValidationError(\n `${name} must be between ${min} and ${max} (inclusive), got ${value}`\n );\n }\n}\n\n/**\n * Validates that a number is non-negative\n * @param value - Number to validate\n * @param name - Name of the parameter for error messages\n * @throws {ValidationError} If value is negative\n */\nexport function requireNonNegative(value: number, name: string): void {\n if (value < 0) {\n throw new ValidationError(`${name} must be non-negative, got ${value}`);\n }\n}\n\n/**\n * Validates that an array is not empty\n * @param array - Array to validate\n * @param name - Name of the parameter for error messages\n * @throws {ValidationError} If array is empty\n */\nexport function requireNonEmpty<T>(\n array: readonly T[],\n name: string\n): asserts array is readonly [T, ...T[]] {\n if (array.length === 0) {\n throw new ValidationError(`${name} cannot be empty`);\n }\n}\n\n/**\n * Validates that a string is not empty\n * @param value - String to validate\n * @param name - Name of the parameter for error messages\n * @throws {ValidationError} If string is empty\n */\nexport function requireNonEmptyString(\n value: string,\n name: string\n): asserts value is string {\n if (value.trim().length === 0) {\n throw new ValidationError(`${name} cannot be empty`);\n }\n}\n","import { sha256 } from \"@noble/hashes/sha2.js\";\nimport {\n getAddressEncoder,\n getProgramDerivedAddress,\n getU128Encoder,\n getU8Encoder,\n getUtf8Encoder,\n type Address,\n} from \"gill\";\nimport { ValidationError } from \"../../errors\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../../generated\";\nimport { Secp256r1Key } from \"../../types\";\nimport { requireInRange } from \"../validation\";\n\nexport async function getUserAddress(user: Address | Secp256r1Key) {\n const [userAddress] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [\n getUtf8Encoder().encode(\"user\"),\n user instanceof Secp256r1Key\n ? user.toTruncatedBuffer()\n : getAddressEncoder().encode(user),\n ],\n });\n\n return userAddress;\n}\n\nexport async function getDomainConfigAddress({\n rpIdHash,\n rpId,\n}: {\n rpIdHash?: Uint8Array<ArrayBuffer>;\n rpId?: string;\n}) {\n if (!rpIdHash) {\n if (rpId) {\n rpIdHash = sha256(\n getUtf8Encoder().encode(rpId) as Uint8Array,\n ) as Uint8Array<ArrayBuffer>;\n } else {\n throw new ValidationError(\"Either rpId or rpIdHash must be provided\");\n }\n }\n const [domainConfig] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [getUtf8Encoder().encode(\"domain_config\"), rpIdHash],\n });\n\n return domainConfig;\n}\n\nexport async function getGlobalCounterAddress() {\n const [globalCounter] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [getUtf8Encoder().encode(\"global_counter\")],\n });\n\n return globalCounter;\n}\n\nexport async function getTransactionBufferAddress(\n settings: Address,\n creator: Address | Secp256r1Key,\n buffer_index: number,\n): Promise<Address> {\n requireInRange(buffer_index, 0, 255, \"buffer_index\");\n const [transactionBuffer] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [\n getUtf8Encoder().encode(\"multi_wallet\"),\n getAddressEncoder().encode(settings),\n getUtf8Encoder().encode(\"transaction_buffer\"),\n creator instanceof Secp256r1Key\n ? creator.toTruncatedBuffer()\n : getAddressEncoder().encode(creator),\n getU8Encoder().encode(buffer_index),\n ],\n });\n\n return transactionBuffer;\n}\n\nexport async function getWalletAddressFromSettings(settings: Address) {\n const [address] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [\n getUtf8Encoder().encode(\"multi_wallet\"),\n getAddressEncoder().encode(settings),\n getUtf8Encoder().encode(\"vault\"),\n ],\n });\n\n return address;\n}\n\nexport async function getSettingsFromIndex(index: number | bigint) {\n const [settings] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [\n getUtf8Encoder().encode(\"multi_wallet\"),\n getU128Encoder().encode(index),\n ],\n });\n\n return settings;\n}\n\nexport async function getWalletAddressFromIndex(index: number | bigint) {\n const settings = await getSettingsFromIndex(index);\n const address = await getWalletAddressFromSettings(settings);\n return address;\n}\n\nexport async function getLightCpiSigner() {\n const [lightCpiSigner] = await getProgramDerivedAddress({\n programAddress: MULTI_WALLET_PROGRAM_ADDRESS,\n seeds: [getUtf8Encoder().encode(\"cpi_authority\")],\n });\n return lightCpiSigner;\n}\n","import {\n createRpc,\n Rpc as LightProtocolRpc,\n} from \"@lightprotocol/stateless.js\";\nimport {\n createSolanaClient,\n type Rpc,\n type SendAndConfirmTransactionWithSignersFunction,\n type SolanaRpcApi,\n} from \"gill\";\nimport { NotInitializedError } from \"../errors\";\n\ntype RevibaseGlobalState = {\n solanaRpcEndpoint?: string;\n lightProtocolRpc?: LightProtocolRpc;\n solanaRpc?: Rpc<SolanaRpcApi>;\n sendAndConfirm?: SendAndConfirmTransactionWithSignersFunction;\n};\n\nconst state: RevibaseGlobalState = {};\n\nexport function getSolanaRpcEndpoint() {\n if (!state.solanaRpcEndpoint) {\n throw new NotInitializedError(\"RPC endpoint\");\n }\n return state.solanaRpcEndpoint;\n}\n\nexport function getLightProtocolRpc() {\n if (!state.lightProtocolRpc) {\n throw new NotInitializedError(\"Light Protocol RPC\");\n }\n return state.lightProtocolRpc;\n}\n\nexport function getSolanaRpc() {\n if (!state.solanaRpc) {\n throw new NotInitializedError(\"Solana RPC\");\n }\n return state.solanaRpc;\n}\n\nexport function getSendAndConfirmTransaction() {\n if (!state.sendAndConfirm) {\n throw new NotInitializedError(\"Send and confirm transaction function\");\n }\n return state.sendAndConfirm;\n}\n\nexport function initialize({\n rpcEndpoint,\n proverEndpoint,\n compressionApiEndpoint,\n}: {\n rpcEndpoint: string;\n proverEndpoint?: string;\n compressionApiEndpoint?: string;\n}): void {\n state.solanaRpcEndpoint = rpcEndpoint;\n state.lightProtocolRpc = createRpc(\n rpcEndpoint,\n compressionApiEndpoint,\n proverEndpoint,\n );\n const { rpc, sendAndConfirmTransaction } = createSolanaClient({\n urlOrMoniker: rpcEndpoint,\n });\n state.solanaRpc = rpc;\n state.sendAndConfirm = sendAndConfirmTransaction;\n}\n","import { p256 } from \"@noble/curves/nist.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport type { AuthenticationResponseJSON } from \"@simplewebauthn/browser\";\nimport type { ReadonlyUint8Array } from \"gill\";\nimport { base64URLStringToBuffer } from \"./helper\";\n\nexport function uint8ArrayToHex(bytes: Uint8Array<ArrayBuffer>) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\nexport function hexToUint8Array(hex: string): Uint8Array<ArrayBuffer> {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n}\n\nexport function extractAdditionalFields(\n clientData: Record<string, unknown>,\n): Uint8Array<ArrayBuffer> {\n const knownKeys = new Set([\"type\", \"challenge\", \"origin\", \"crossOrigin\"]);\n\n const remaining: Record<string, unknown> = {};\n for (const key in clientData) {\n if (!knownKeys.has(key)) {\n remaining[key] = clientData[key];\n }\n }\n\n if (Object.keys(remaining).length === 0) {\n return new Uint8Array([]);\n }\n\n const serialized = JSON.stringify(remaining);\n return new TextEncoder().encode(serialized.slice(1, -1));\n}\n\nexport function parseOrigins(\n originsBytes: ReadonlyUint8Array,\n numOrigins: number,\n): string[] {\n const origins: string[] = [];\n let cursor = 0;\n const decoder = new TextDecoder();\n\n for (let i = 0; i < numOrigins; i++) {\n if (cursor + 2 > originsBytes.length) {\n throw new Error(\"MaxLengthExceeded\");\n }\n\n const strLen = originsBytes[cursor] | (originsBytes[cursor + 1] << 8);\n cursor += 2;\n\n if (cursor + strLen > originsBytes.length) {\n throw new Error(\"MaxLengthExceeded\");\n }\n\n const strBytes = originsBytes.slice(cursor, cursor + strLen);\n const origin = decoder.decode(strBytes);\n origins.push(origin);\n\n cursor += strLen;\n }\n\n return origins;\n}\n\nexport function convertSignatureDERtoRS(\n signature: Uint8Array<ArrayBuffer>,\n): Uint8Array<ArrayBuffer> {\n if (signature.length === 64) {\n return signature;\n }\n\n if (signature[0] !== 0x30) throw new Error(\"Invalid DER sequence\");\n\n const totalLength = signature[1];\n let offset = 2;\n\n if (totalLength > 0x80) {\n const lengthBytes = totalLength & 0x7f;\n offset += lengthBytes;\n }\n\n if (signature[offset] !== 0x02) throw new Error(\"Expected INTEGER for r\");\n const rLen = signature[offset + 1];\n const rStart = offset + 2;\n const r = signature.slice(rStart, rStart + rLen);\n\n offset = rStart + rLen;\n if (signature[offset] !== 0x02) throw new Error(\"Expected INTEGER for s\");\n const sLen = signature[offset + 1];\n const sStart = offset + 2;\n const s = signature.slice(sStart, sStart + sLen);\n\n const rStripped = r[0] === 0x00 && r.length > 32 ? r.slice(1) : r;\n const sStripped = s[0] === 0x00 && s.length > 32 ? s.slice(1) : s;\n\n if (rStripped.length > 32 || sStripped.length > 32) {\n throw new Error(\"r or s length > 32 bytes\");\n }\n\n const rPad = new Uint8Array(32);\n rPad.set(rStripped, 32 - rStripped.length);\n\n const HALF_ORDER = p256.Point.CURVE().n >> 1n;\n const sBig = BigInt(\"0x\" + uint8ArrayToHex(sStripped));\n const sLow = sBig > HALF_ORDER ? p256.Point.CURVE().n - sBig : sBig;\n const sHex = sLow.toString(16).padStart(64, \"0\");\n const sPad = hexToUint8Array(sHex);\n\n return new Uint8Array([...rPad, ...sPad]);\n}\n\nexport function getSecp256r1Message(\n authResponse: AuthenticationResponseJSON,\n): Uint8Array<ArrayBuffer> {\n const clientDataJSON = base64URLStringToBuffer(\n authResponse.response.clientDataJSON,\n );\n const authenticatorData = base64URLStringToBuffer(\n authResponse.response.authenticatorData,\n );\n const clientDataHash = sha256(clientDataJSON);\n return new Uint8Array([...authenticatorData, ...clientDataHash]);\n}\n","import { decodeCBOR, encodeCBOR, type CBORType } from \"@levischuck/tiny-cbor\";\nimport { p256 } from \"@noble/curves/nist.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport type { AuthenticationResponseJSON } from \"@simplewebauthn/browser\";\nimport {\n address,\n getBase58Decoder,\n getBase58Encoder,\n getBase64Decoder,\n getBase64Encoder,\n getU64Decoder,\n getUtf8Decoder,\n getUtf8Encoder,\n type Address,\n type ReadonlyUint8Array,\n} from \"gill\";\nimport { canonicalize } from \"json-canonicalize\";\nimport { NotFoundError } from \"../../errors\";\nimport { fetchDomainConfig } from \"../../generated\";\nimport {\n SignedSecp256r1Key,\n type CompleteMessageRequest,\n type CompleteTransactionRequest,\n type DeviceProfile,\n type StartMessageRequest,\n type StartTransactionRequest,\n type TransactionAuthenticationResponse,\n type TransactionPayload,\n type TransactionPayloadWithBase64MessageBytes,\n} from \"../../types\";\nimport { getDomainConfigAddress } from \"../addresses\";\nimport { getSolanaRpc } from \"../initialize\";\nimport {\n convertSignatureDERtoRS,\n extractAdditionalFields,\n getSecp256r1Message,\n parseOrigins,\n uint8ArrayToHex,\n} from \"./internal\";\n\nexport function convertPubkeyCoseToCompressed(\n publicKey: Uint8Array<ArrayBuffer>,\n) {\n const decodedPublicKey = decodeCBOR(publicKey) as Map<number, CBORType>;\n const uncompressedPublicKey = p256.Point.fromAffine({\n x: BigInt(\n \"0x\" +\n uint8ArrayToHex(decodedPublicKey.get(-2) as Uint8Array<ArrayBuffer>),\n ),\n y: BigInt(\n \"0x\" +\n uint8ArrayToHex(decodedPublicKey.get(-3) as Uint8Array<ArrayBuffer>),\n ),\n });\n const compressedPubKey = getBase58Decoder().decode(\n uncompressedPublicKey.toBytes(true),\n );\n return compressedPubKey;\n}\n\nexport function convertPubkeyCompressedToCose(\n publicKey: string,\n): Uint8Array<ArrayBuffer> {\n const compressedPublicKey = p256.Point.fromBytes(\n getBase58Encoder().encode(publicKey) as Uint8Array,\n );\n const uncompressedPublicKey = compressedPublicKey.toBytes(false);\n\n const coseDecodedPublicKey = new Map<string | number, CBORType>();\n coseDecodedPublicKey.set(1, 2);\n coseDecodedPublicKey.set(3, -7);\n coseDecodedPublicKey.set(-1, 1);\n coseDecodedPublicKey.set(-2, uncompressedPublicKey.slice(1, 33));\n coseDecodedPublicKey.set(-3, uncompressedPublicKey.slice(33, 65));\n\n return new Uint8Array(encodeCBOR(coseDecodedPublicKey));\n}\n\nexport async function getSignedSecp256r1Key(\n payload: TransactionAuthenticationResponse,\n): Promise<SignedSecp256r1Key> {\n const { authenticatorData, clientDataJSON, signature } = (\n payload.authResponse as AuthenticationResponseJSON\n ).response;\n\n const authData = base64URLStringToBuffer(authenticatorData);\n\n const clientDataJsonParsed = JSON.parse(\n getUtf8Decoder().decode(base64URLStringToBuffer(clientDataJSON)),\n ) as Record<string, unknown>;\n\n const truncatedClientDataJson = extractAdditionalFields(clientDataJsonParsed);\n\n const convertedSignature = convertSignatureDERtoRS(\n base64URLStringToBuffer(signature),\n );\n\n const domainConfig = await getDomainConfigAddress({\n rpIdHash: authData.subarray(0, 32),\n });\n\n return new SignedSecp256r1Key(payload.signer.toString(), {\n verifyArgs: {\n clientDataJson: base64URLStringToBuffer(clientDataJSON),\n truncatedClientDataJson,\n slotNumber: BigInt(payload.slotNumber),\n slotHash: getBase58Encoder().encode(\n payload.slotHash,\n ) as Uint8Array<ArrayBuffer>,\n },\n clientAndDeviceHash: getClientAndDeviceHash(\n payload.client.clientOrigin,\n payload.device.jwk,\n payload.startRequest.rid,\n ),\n domainConfig,\n authData,\n signature: convertedSignature,\n originIndex: payload.originIndex,\n crossOrigin: payload.crossOrigin,\n authResponse: payload.authResponse,\n });\n}\n\nexport function getClientAndDeviceHash(\n clientOrigin: string,\n deviceJwk: string,\n nonce: string,\n): Uint8Array<ArrayBuffer> {\n return sha256(\n new Uint8Array([\n ...getUtf8Encoder().encode(clientOrigin),\n ...getBase64Encoder().encode(deviceJwk),\n ...getBase64Encoder().encode(nonce),\n ]),\n ) as Uint8Array<ArrayBuffer>;\n}\n\nexport function createClientAuthorizationStartRequestChallenge(\n payload: StartTransactionRequest | StartMessageRequest,\n): Uint8Array<ArrayBuffer> {\n return sha256(\n getUtf8Encoder().encode(canonicalize(payload)) as Uint8Array,\n ) as Uint8Array<ArrayBuffer>;\n}\n\nexport function createClientAuthorizationCompleteRequestChallenge(\n payload: CompleteTransactionRequest | CompleteMessageRequest,\n): Uint8Array<ArrayBuffer> {\n return getSecp256r1MessageHash(payload.data.payload.authResponse);\n}\n\nexport function createMessageChallenge(\n payload: string,\n clientOrigin: string,\n deviceJwk: string,\n nonce: string,\n): Uint8Array<ArrayBuffer> {\n const clientDeviceHash = getClientAndDeviceHash(\n clientOrigin,\n deviceJwk,\n nonce,\n );\n return sha256(\n new Uint8Array([...getUtf8Encoder().encode(payload), ...clientDeviceHash]),\n ) as Uint8Array<ArrayBuffer>;\n}\n\nexport async function createTransactionChallenge(\n payload: TransactionPayloadWithBase64MessageBytes | TransactionPayload,\n clientOrigin: string,\n deviceJwk: string,\n nonce: string,\n slotHash?: string,\n slotNumber?: string,\n estimatedSlotHashExpiry?: number,\n) {\n let slotHashBytes: ReadonlyUint8Array;\n if (!slotHash || !slotNumber || !estimatedSlotHashExpiry) {\n const slotSysvarData = (\n await getSolanaRpc()\n .getAccountInfo(\n address(\"SysvarS1otHashes111111111111111111111111111\"),\n {\n encoding: \"base64\",\n commitment: \"confirmed\",\n dataSlice: { offset: 8, length: 40 },\n },\n )\n .send()\n ).value?.data;\n if (!slotSysvarData) {\n throw new NotFoundError(\n \"Slot sysvar\",\n \"Unable to fetch slot sysvar data\",\n );\n }\n const slotHashData = getBase64Encoder().encode(slotSysvarData[0]);\n slotNumber = getU64Decoder().decode(slotHashData.subarray(0, 8)).toString();\n slotHashBytes = slotHashData.subarray(8, 40);\n slotHash = getBase58Decoder().decode(slotHashBytes);\n estimatedSlotHashExpiry = Date.now() + 512 * 400;\n } else {\n slotHashBytes = getBase58Encoder().encode(slotHash);\n }\n\n const transactionMessageHash = sha256(\n typeof payload.transactionMessageBytes === \"string\"\n ? (getBase64Encoder().encode(\n payload.transactionMessageBytes,\n ) as Uint8Array<ArrayBuffer>)\n : payload.transactionMessageBytes,\n );\n const clientDeviceHash = getClientAndDeviceHash(\n clientOrigin,\n deviceJwk,\n nonce,\n );\n const challenge = sha256(\n new Uint8Array([\n ...getUtf8Encoder().encode(payload.transactionActionType),\n ...getBase58Encoder().encode(payload.transactionAddress),\n ...transactionMessageHash,\n ...slotHashBytes,\n ...clientDeviceHash,\n ]),\n ) as Uint8Array<ArrayBuffer>;\n return { slotNumber, slotHash, challenge, estimatedSlotHashExpiry };\n}\n\nexport function getDeviceMessageHash(\n authResponse: AuthenticationResponseJSON,\n deviceProfile: DeviceProfile,\n): Uint8Array<ArrayBuffer> {\n return new Uint8Array([\n ...getSecp256r1Message(authResponse),\n ...getUtf8Encoder().encode(canonicalize(deviceProfile)),\n ]);\n}\n\nexport function getSecp256r1MessageHash(\n authResponse: AuthenticationResponseJSON,\n): Uint8Array<ArrayBuffer> {\n const message = getSecp256r1Message(authResponse);\n return sha256(message) as Uint8Array<ArrayBuffer>;\n}\n\nexport function bufferToBase64URLString(buffer: Uint8Array<ArrayBuffer>) {\n let str = \"\";\n for (const charCode of buffer) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\n\nexport function base64URLStringToBuffer(base64URLString: Base64URLString) {\n const base64 = base64URLString.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, \"=\");\n const binary = atob(padded);\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n\nexport async function getOriginIndex(domainConfig: Address, origin: string) {\n const { data } = await fetchDomainConfig(getSolanaRpc(), domainConfig);\n const origins = parseOrigins(data.origins, data.numOrigins);\n const index = origins.findIndex((x) => x === origin);\n if (index === -1) {\n throw new NotFoundError(\"Origin\", \"Origin not found in domain config\");\n }\n return index;\n}\n/**\n * Converts a JSON Web Key (JWK) object into a Base64-encoded string.\n *\n * The JWK is first canonicalized (sorted and normalized) to ensure consistent\n * encoding, then UTF-8 encoded and finally converted to Base64 format.\n *\n * @param jwk - The JSON Web Key object to encode.\n * @returns The Base64-encoded string representation of the JWK.\n */\nexport function convertJWKToBase64String(jwk: JsonWebKey) {\n return getBase64Decoder().decode(\n getUtf8Encoder().encode(canonicalize(jwk)) as Uint8Array<ArrayBuffer>,\n );\n} /**\n * Converts a Base64-encoded JWK string back into a JSON Web Key (JWK) object.\n *\n * @param jwk - The Base64-encoded string representing the JWK.\n * @returns The decoded JSON Web Key object.\n */\nexport function convertBase64StringToJWK(jwk: string): JsonWebKey {\n return JSON.parse(getUtf8Decoder().decode(getBase64Encoder().encode(jwk)));\n}\n","import {\n address,\n getBase58Decoder,\n getBase58Encoder,\n getBase64Decoder,\n getTransactionEncoder,\n getU32Decoder,\n getU32Encoder,\n type Address,\n type ReadonlyUint8Array,\n type SignatureBytes,\n type TransactionSigner,\n} from \"gill\";\nimport {\n NetworkError,\n NotFoundError,\n PermissionError,\n ValidationError,\n} from \"../../errors\";\nimport {\n getConfigActionDecoder,\n getConfigActionEncoder,\n UserRole,\n type ConfigAction,\n type MemberKey,\n type Settings,\n} from \"../../generated\";\nimport {\n KeyType,\n Permission,\n Permissions,\n type TransactionAuthDetails,\n} from \"../../types\";\n\nexport function retrieveTransactionManager(\n signer: string,\n settingsData: Settings,\n): {\n transactionManagerAddress: Address;\n} | null {\n if (settingsData.threshold > 1) {\n throw new ValidationError(\n \"Multi-signature transactions with threshold > 1 are not supported yet.\",\n );\n }\n const member = settingsData.members.find(\n (m) => convertMemberKeyToString(m.pubkey) === signer,\n );\n if (!member) {\n throw new NotFoundError(\"Member\", `Signer ${signer} not found in settings`);\n }\n\n const { permissions } = member;\n if (!permissions) {\n throw new NotFoundError(\n \"Permissions\",\n \"No permissions found for the current member\",\n );\n }\n const hasInitiate = Permissions.has(\n permissions,\n Permission.InitiateTransaction,\n );\n const hasVote = Permissions.has(permissions, Permission.VoteTransaction);\n const hasExecute = Permissions.has(\n permissions,\n Permission.ExecuteTransaction,\n );\n if (hasInitiate && hasVote && hasExecute) {\n return null;\n }\n\n if (!hasVote || !hasExecute) {\n throw new PermissionError(\n \"Signer lacks the required Vote/Execute permissions.\",\n [\"VoteTransaction\", \"ExecuteTransaction\"],\n [\n hasVote ? \"VoteTransaction\" : undefined,\n hasExecute ? \"ExecuteTransaction\" : undefined,\n ].filter(Boolean) as string[],\n );\n }\n\n const transactionManager = settingsData.members.find(\n (m) => m.role === UserRole.TransactionManager,\n );\n if (!transactionManager) {\n throw new NotFoundError(\n \"Transaction manager\",\n \"No transaction manager available in wallet\",\n );\n }\n\n return {\n transactionManagerAddress: address(\n convertMemberKeyToString(transactionManager.pubkey),\n ),\n };\n}\n\nfunction toWebSocketUrl(httpUrl: string) {\n const u = new URL(httpUrl);\n u.protocol = u.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n return u.toString();\n}\n\nfunction openWebSocket(url: string, signal: AbortSignal): Promise<WebSocket> {\n return new Promise((resolve, reject) => {\n const ws = new WebSocket(url);\n\n const abort = () => {\n try {\n ws.close();\n } catch {}\n };\n\n signal.addEventListener(\"abort\", abort, { once: true });\n\n ws.onopen = () => {\n signal.removeEventListener(\"abort\", abort);\n resolve(ws);\n };\n\n ws.onerror = () => {\n signal.removeEventListener(\"abort\", abort);\n reject(new Error(\"WebSocket connection failed\"));\n };\n });\n}\n\nasync function readEvents(\n ws: WebSocket,\n signal: AbortSignal,\n onEvent: (event: string, data: any) => boolean,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n let done = false;\n\n const cleanup = () => {\n ws.removeEventListener(\"message\", onMessage);\n ws.removeEventListener(\"error\", onError);\n ws.removeEventListener(\"close\", onClose);\n signal.removeEventListener(\"abort\", onAbort);\n };\n\n const finish = (fn: () => void) => {\n if (done) return;\n done = true;\n cleanup();\n fn();\n };\n\n const onAbort = () => {\n try {\n ws.close();\n } catch {}\n };\n\n const onMessage = (ev: MessageEvent) => {\n if (typeof ev.data !== \"string\") return;\n\n let msg: any;\n try {\n msg = JSON.parse(ev.data);\n } catch {\n return;\n }\n\n const event = msg.event ?? \"message\";\n\n try {\n if (onEvent(event, msg.data)) {\n finish(resolve);\n }\n } catch (e) {\n finish(() => reject(e));\n }\n };\n\n const onError = () =>\n finish(() =>\n reject(\n new NetworkError(\"Transaction manager request failed\", 0, ws.url),\n ),\n );\n\n const onClose = () => finish(resolve);\n\n signal.addEventListener(\"abort\", onAbort, { once: true });\n ws.addEventListener(\"message\", onMessage);\n ws.addEventListener(\"error\", onError);\n ws.addEventListener(\"close\", onClose);\n });\n}\n\nconst abortErr = () => {\n const e = new Error(\"Aborted\");\n e.name = \"AbortError\";\n return e;\n};\n\nconst sleep = (ms: number, signal: AbortSignal) =>\n new Promise<void>((resolve, reject) => {\n if (signal.aborted) return reject(abortErr());\n\n const id = setTimeout(resolve, ms);\n\n signal.addEventListener(\n \"abort\",\n () => {\n clearTimeout(id);\n reject(abortErr());\n },\n { once: true },\n );\n });\n\nexport function createTransactionManagerSigner(args: {\n address: Address;\n url: string;\n authResponses?: TransactionAuthDetails[];\n transactionMessageBytes?: ReadonlyUint8Array;\n onPendingApprovalsCallback?: (validTill: number) => void;\n onPendingApprovalsSuccess?: () => void;\n abortController?: AbortController;\n opts?: { maxAttempts?: number; retryDelayMs?: number };\n}): TransactionSigner {\n const {\n address,\n url,\n authResponses,\n transactionMessageBytes,\n onPendingApprovalsCallback,\n onPendingApprovalsSuccess,\n abortController,\n opts,\n } = args;\n\n const signal = abortController?.signal ?? new AbortController().signal;\n const wsUrl = toWebSocketUrl(url);\n\n const maxAttempts = opts?.maxAttempts ?? 10;\n const retryDelayMs = opts?.retryDelayMs ?? 400;\n\n return {\n address,\n async signTransactions(transactions) {\n if (signal.aborted) throw abortErr();\n\n const payloadItems = new Array(transactions.length);\n\n for (let i = 0; i < transactions.length; i++) {\n payloadItems[i] = {\n transaction: getBase64Decoder().decode(\n getTransactionEncoder().encode(transactions[i]),\n ),\n transactionMessageBytes: transactionMessageBytes\n ? getBase64Decoder().decode(transactionMessageBytes)\n : undefined,\n authResponses,\n };\n }\n\n const payload = JSON.stringify({\n type: \"transaction\",\n data: {\n publicKey: address.toString(),\n payload: payloadItems,\n },\n });\n\n for (let i = 0; i < maxAttempts; i++) {\n if (signal.aborted) throw abortErr();\n\n let ws: WebSocket | undefined;\n let signatures: string[] | undefined;\n\n try {\n ws = await openWebSocket(wsUrl, signal);\n ws.send(payload);\n\n await readEvents(ws, signal, (event, data) => {\n if (event === \"error\") {\n const errMsg =\n typeof data === \"object\" &&\n data &&\n typeof (data as any).error === \"string\"\n ? (data as any).error\n : \"Unknown error\";\n\n const err: any = new Error(errMsg);\n err.noRetry = true;\n throw err;\n }\n\n if (event === \"signatures\") {\n signatures = (data as any).signatures;\n return true;\n }\n\n if (event === \"pending_transaction_approval\") {\n onPendingApprovalsCallback?.((data as any).validTill);\n }\n\n if (event === \"transaction_approved\") {\n onPendingApprovalsSuccess?.();\n }\n\n return false;\n });\n } catch (e: any) {\n if (e?.noRetry) throw new NetworkError(e.message);\n if (e?.name === \"AbortError\") throw e;\n } finally {\n try {\n ws?.close();\n } catch {}\n }\n\n if (signatures?.length) {\n return signatures.map((sig) => ({\n [address]: getBase58Encoder().encode(sig) as SignatureBytes,\n }));\n }\n\n if (i < maxAttempts - 1) {\n await sleep(retryDelayMs, signal);\n }\n }\n\n throw new NetworkError(\"Transaction manager: missing signatures\");\n },\n };\n}\n\nexport function convertMemberKeyToString(memberKey: MemberKey): string {\n if (memberKey.keyType === KeyType.Ed25519) {\n return getBase58Decoder().decode(memberKey.key.subarray(1, 33));\n } else {\n return getBase58Decoder().decode(memberKey.key);\n }\n}\n\nexport function serializeConfigActions(\n configActions: ConfigAction[],\n): Uint8Array<ArrayBuffer> {\n const encodedActions = configActions.map((x) =>\n getConfigActionEncoder().encode(x),\n );\n\n const totalLength = 4 + encodedActions.reduce((sum, a) => sum + a.length, 0);\n\n const serializedConfigActions = new Uint8Array(totalLength);\n\n let offset = 0;\n\n serializedConfigActions.set(\n getU32Encoder().encode(configActions.length),\n offset,\n );\n offset += 4;\n\n for (const action of encodedActions) {\n serializedConfigActions.set(action, offset);\n offset += action.length;\n }\n\n return serializedConfigActions;\n}\n\nexport function deserializeConfigActions(\n bytes: Uint8Array<ArrayBuffer>,\n): ConfigAction[] {\n let offset = 0;\n const [count, u32offset] = getU32Decoder().read(bytes, offset);\n offset = u32offset;\n\n const out: ConfigAction[] = new Array(count);\n for (let i = 0; i < count; i++) {\n const r = getConfigActionDecoder().read(bytes, offset);\n out[i] = r[0];\n offset = r[1];\n }\n\n if (offset !== bytes.length) {\n throw new ValidationError(\n `Trailing bytes detected: expected ${bytes.length} bytes but consumed ${offset}`,\n );\n }\n return out;\n}\n","export const JITO_TIP_ACCOUNTS = [\n \"HFqU5x63VTqvQss8hp11i4wVV8bD44PvwucfZ2bU7gRe\",\n \"ADaUMid9yfUytqMBgopwjb2DTLSokTSzL1zt6iGPaS49\",\n \"96gYZGLnJYVFmbjzopPSU6QiEV5fGqZNyN9nmNhvrZU5\",\n \"Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY\",\n \"DfXygSm4jCyNCybVYYK6DwvWqjKee8pbDmJGcLWNDXjh\",\n \"ADuUkR4vqLUMWXxW9gh6D6L8pMSawimctcNZ5pGwDcEt\",\n \"3AVi9Tg9Uo68tJfuvoKvqKNWKkC5wPdSSdeBnizKZ6jT\",\n \"DttWaMuVvTiduZRnguLF7jNxTgiMBZ1hyAumKUiL2KRL\",\n] as const;\n","import {\n AccountRole,\n type Address,\n address,\n getAddressEncoder,\n type Instruction,\n none,\n type OptionOrNullable,\n some,\n type TransactionSigner,\n} from \"gill\";\nimport { getTransferSolInstruction } from \"gill/programs\";\nimport { JITO_TIP_ACCOUNTS } from \"../../constants\";\nimport { ValidationError } from \"../../errors\";\nimport type {\n MemberKey,\n Secp256r1VerifyArgsArgs,\n TransactionSyncSignersArgs,\n} from \"../../generated\";\nimport type { Secp256r1VerifyInput } from \"../../instructions/secp256r1Verify\";\nimport { KeyType, Secp256r1Key, SignedSecp256r1Key } from \"../../types\";\nimport { getSecp256r1Message } from \"../passkeys/internal\";\nimport type { PackedAccounts } from \"./packedAccounts\";\n\nexport function extractSecp256r1VerificationArgs(\n signer?: SignedSecp256r1Key | TransactionSigner,\n index = 0,\n) {\n const secp256r1PublicKey =\n signer instanceof SignedSecp256r1Key ? signer : undefined;\n const verifyArgs: OptionOrNullable<Secp256r1VerifyArgsArgs> =\n secp256r1PublicKey?.verifyArgs && index !== -1\n ? some({\n signedMessageIndex: index,\n truncatedClientDataJson:\n secp256r1PublicKey.verifyArgs.truncatedClientDataJson,\n slotNumber: secp256r1PublicKey.verifyArgs.slotNumber,\n originIndex: secp256r1PublicKey.originIndex,\n crossOrigin: secp256r1PublicKey.crossOrigin,\n clientAndDeviceHash: secp256r1PublicKey.clientAndDeviceHash,\n })\n : none();\n\n const domainConfig = secp256r1PublicKey?.domainConfig\n ? secp256r1PublicKey.domainConfig\n : undefined;\n const signature = secp256r1PublicKey?.verifyArgs\n ? secp256r1PublicKey.signature\n : undefined;\n const message =\n secp256r1PublicKey?.authData && secp256r1PublicKey.verifyArgs.clientDataJson\n ? getSecp256r1Message(secp256r1PublicKey.authResponse)\n : undefined;\n const publicKey = secp256r1PublicKey?.toBuffer();\n\n return {\n domainConfig,\n verifyArgs,\n signature,\n message,\n publicKey,\n };\n}\n\nexport function buildSignerAccounts(\n dedupSigners: (TransactionSigner | SignedSecp256r1Key)[],\n packedAccounts: PackedAccounts,\n secp256r1VerifyInput: Secp256r1VerifyInput = [],\n): {\n secp256r1VerifyInput: Secp256r1VerifyInput;\n transactionSyncSigners: TransactionSyncSignersArgs[];\n} {\n const transactionSyncSigners: TransactionSyncSignersArgs[] = [];\n\n for (const x of dedupSigners) {\n if (x instanceof SignedSecp256r1Key) {\n const index = secp256r1VerifyInput.length;\n const { domainConfig, verifyArgs, signature, publicKey, message } =\n extractSecp256r1VerificationArgs(x, index);\n if (message && signature && publicKey) {\n secp256r1VerifyInput.push({ message, signature, publicKey });\n }\n if (domainConfig) {\n const domainConfigIndex = packedAccounts\n .addPreAccounts([\n { address: domainConfig, role: AccountRole.READONLY },\n ])\n .get(domainConfig)?.index;\n if (verifyArgs.__option === \"Some\" && domainConfigIndex !== undefined) {\n transactionSyncSigners.push({\n __kind: \"Secp256r1\",\n fields: [{ domainConfigIndex, verifyArgs: verifyArgs.value }],\n });\n }\n }\n } else {\n const index = packedAccounts\n .addPreAccounts([\n { address: x.address, role: AccountRole.READONLY_SIGNER, signer: x },\n ])\n .get(x.address)?.index;\n if (index !== undefined) {\n transactionSyncSigners.push({\n __kind: \"Ed25519\",\n fields: [index],\n });\n }\n }\n }\n\n return { secp256r1VerifyInput, transactionSyncSigners };\n}\n\nexport function convertPubkeyToMemberkey(\n pubkey: TransactionSigner | Address | Secp256r1Key,\n): MemberKey {\n if (pubkey instanceof Secp256r1Key) {\n return { keyType: KeyType.Secp256r1, key: pubkey.toBytes() };\n } else {\n let address;\n try {\n address = \"address\" in pubkey ? pubkey.address : pubkey;\n } catch {\n address = pubkey as Address;\n }\n return {\n keyType: KeyType.Ed25519,\n key: new Uint8Array([\n 0, // pad start with zero to make it 33 bytes\n ...getAddressEncoder().encode(address),\n ]),\n };\n }\n}\n\nfunction getPubkeyString(pubkey: TransactionSigner | SignedSecp256r1Key) {\n if (pubkey instanceof SignedSecp256r1Key) {\n return pubkey.toString();\n } else {\n return pubkey.address.toString();\n }\n}\n\nexport function getDeduplicatedSigners(\n signers: (SignedSecp256r1Key | TransactionSigner)[],\n): (SignedSecp256r1Key | TransactionSigner)[] {\n const hashSet = new Set();\n const dedupSigners: (SignedSecp256r1Key | TransactionSigner)[] = [];\n for (const signer of signers) {\n if (!hashSet.has(getPubkeyString(signer))) {\n dedupSigners.push(signer);\n hashSet.add(getPubkeyString(signer));\n }\n }\n\n const secp256r1Signers = dedupSigners.filter(\n (x) => x instanceof SignedSecp256r1Key,\n );\n if (secp256r1Signers.length > 1) {\n throw new ValidationError(\n `More than 1 Secp256r1 signers in an instruction is not supported (found ${secp256r1Signers.length})`,\n );\n }\n return dedupSigners;\n}\n\nexport function addJitoTip({\n payer,\n tipAmount,\n}: {\n payer: TransactionSigner;\n tipAmount: number;\n}): Instruction {\n const tipAccount =\n JITO_TIP_ACCOUNTS[Math.floor(Math.random() * JITO_TIP_ACCOUNTS.length)];\n return getTransferSolInstruction({\n source: payer,\n destination: address(tipAccount),\n amount: tipAmount,\n });\n}\n","import {\n getAddressEncoder,\n getBase64Decoder,\n getBase64Encoder,\n type Address,\n type Base64EncodedBytes,\n type GetProgramAccountsMemcmpFilter,\n} from \"gill\";\nimport {\n fetchSettings,\n fetchUser,\n getMemberKeyEncoder,\n getSettingsDecoder,\n getUserDecoder,\n MULTI_WALLET_PROGRAM_ADDRESS,\n UserRole,\n type Settings,\n} from \"../../generated\";\nimport type { Secp256r1Key } from \"../../types\";\nimport { getSettingsFromIndex, getUserAddress } from \"../addresses\";\nimport { getSolanaRpc } from \"../initialize\";\nimport { base64URLStringToBuffer } from \"../passkeys/helper\";\nimport { convertPubkeyToMemberkey } from \"../transaction/internal\";\n\n/** Anchor account discriminator size. */\nconst ACCOUNT_DISCRIMINATOR_SIZE = 8;\n/** `Option<Address>` tag byte when `Some`. */\nconst OPTION_SOME_TAG = 1;\n/** Serialized `MemberKey` size. */\nconst MEMBER_KEY_SIZE = 34;\n/** `Option<Vec<u8>>` length prefix size (tag + u32 len). */\nconst OPTION_VEC_PREFIX_SIZE = 5;\n\nconst USER_DOMAIN_CONFIG_OFFSET = ACCOUNT_DISCRIMINATOR_SIZE + OPTION_SOME_TAG;\nconst USER_MEMBER_OFFSET = ACCOUNT_DISCRIMINATOR_SIZE + OPTION_SOME_TAG + 32;\nconst USER_CREDENTIAL_ID_OFFSET =\n USER_MEMBER_OFFSET + MEMBER_KEY_SIZE + OPTION_VEC_PREFIX_SIZE;\nconst SETTINGS_MEMBER_OFFSET = 20;\n\nexport async function fetchUserAccountByFilters(\n domainConfigAddress: Address,\n {\n member,\n credentialId,\n }: {\n member?: Address | Secp256r1Key | null;\n credentialId?: string | null;\n },\n) {\n let filters: GetProgramAccountsMemcmpFilter[] = [\n {\n memcmp: {\n offset: BigInt(USER_DOMAIN_CONFIG_OFFSET),\n encoding: \"base64\",\n bytes: getBase64Decoder().decode(\n getAddressEncoder().encode(domainConfigAddress),\n ) as Base64EncodedBytes,\n },\n },\n ];\n if (member) {\n filters.push({\n memcmp: {\n offset: BigInt(USER_MEMBER_OFFSET),\n encoding: \"base64\",\n bytes: getBase64Decoder().decode(\n getMemberKeyEncoder().encode(convertPubkeyToMemberkey(member)),\n ) as Base64EncodedBytes,\n },\n });\n } else if (credentialId) {\n filters.push({\n memcmp: {\n offset: BigInt(USER_CREDENTIAL_ID_OFFSET),\n encoding: \"base64\",\n bytes: getBase64Decoder().decode(\n base64URLStringToBuffer(credentialId),\n ) as Base64EncodedBytes,\n },\n });\n } else {\n return null;\n }\n\n const result = await getSolanaRpc()\n .getProgramAccounts(MULTI_WALLET_PROGRAM_ADDRESS, {\n filters,\n encoding: \"base64\",\n })\n .send();\n\n if (!result.length) {\n return null;\n }\n return result.map((x) =>\n getUserDecoder().decode(getBase64Encoder().encode(x.account.data[0])),\n )[0];\n}\n\nexport async function fetchAllSettingsAccountByMember(\n member: Address | Secp256r1Key,\n) {\n const user = (await fetchUser(getSolanaRpc(), await getUserAddress(member)))\n .data;\n if (\n user.role === UserRole.Administrator ||\n user.role === UserRole.TransactionManager\n ) {\n const settingsAccount: Settings[] = [];\n const accounts = await getSolanaRpc()\n .getProgramAccounts(MULTI_WALLET_PROGRAM_ADDRESS, {\n encoding: \"base64\",\n filters: [\n {\n memcmp: {\n offset: BigInt(SETTINGS_MEMBER_OFFSET),\n encoding: \"base64\",\n bytes: getBase64Decoder().decode(\n getMemberKeyEncoder().encode(convertPubkeyToMemberkey(member)),\n ) as Base64EncodedBytes,\n },\n },\n ],\n })\n .send();\n\n accounts.forEach((x) => {\n const data = getSettingsDecoder().decode(\n getBase64Encoder().encode(x.account.data[0]),\n );\n settingsAccount.push({ ...data });\n });\n return settingsAccount;\n } else {\n return await Promise.all(\n user.wallets.map(\n async (x) =>\n (\n await fetchSettings(\n getSolanaRpc(),\n await getSettingsFromIndex(x.index),\n )\n ).data,\n ),\n );\n }\n}\n","import { type TransactionSigner } from \"gill\";\nimport { getCreateDomainConfigInstruction } from \"../../generated\";\nimport { getDomainConfigAddress, getUserAddress } from \"../../utils\";\n\nexport async function createDomainConfig({\n payer,\n rpId,\n origins,\n authority,\n}: {\n payer: TransactionSigner;\n rpId: string;\n origins: string[];\n authority: TransactionSigner;\n}) {\n const domainConfig = await getDomainConfigAddress({ rpId });\n\n return getCreateDomainConfigInstruction({\n origins,\n authority,\n payer,\n domainConfig,\n rpId,\n userAccount: await getUserAddress(authority.address),\n remainingAccounts: [],\n });\n}\n","import type { TransactionSigner } from \"gill\";\nimport { getCreateGlobalCounterInstructionAsync as getCreateGlobalCounterInstruction } from \"../../generated\";\nimport { getGlobalCounterAddress } from \"../../utils\";\n\nexport async function createGlobalCounter({\n payer,\n}: {\n payer: TransactionSigner;\n}) {\n const globalCounter = await getGlobalCounterAddress();\n return getCreateGlobalCounterInstruction({\n payer,\n globalCounter,\n remainingAccounts: [],\n });\n}\n","import type { TransactionSigner } from \"gill\";\nimport { getDisableDomainConfigInstruction } from \"../../generated\";\nimport { getDomainConfigAddress } from \"../../utils\";\n\nexport async function disableDomainConfig({\n admin,\n rpId,\n disable,\n}: {\n admin: TransactionSigner;\n disable: boolean;\n rpId: string;\n}) {\n const domainConfig = await getDomainConfigAddress({ rpId });\n return getDisableDomainConfigInstruction({\n domainConfig,\n admin,\n disable,\n remainingAccounts: [],\n });\n}\n","import {\n type AccountMeta,\n AccountRole,\n type AccountSignerMeta,\n type Address,\n type AddressesByLookupTableAddress,\n type CompiledTransactionMessage,\n fetchAddressesForLookupTables,\n type ReadonlyUint8Array,\n type TransactionSigner,\n} from \"gill\";\nimport { getSolanaRpc } from \"..\";\nimport { vaultTransactionMessageDeserialize } from \"../../types\";\n\nfunction getAccountRole(\n message: CompiledTransactionMessage,\n index: number,\n accountKey: Address,\n vaultPda: Address,\n) {\n const isWritable = isStaticWritableIndex(message, index);\n const isSigner = isSignerIndex(message, index) && accountKey !== vaultPda;\n if (isWritable && isSigner) {\n return AccountRole.WRITABLE_SIGNER;\n } else if (isWritable && !isSigner) {\n return AccountRole.WRITABLE;\n } else if (!isWritable && isSigner) {\n return AccountRole.READONLY_SIGNER;\n } else {\n return AccountRole.READONLY;\n }\n}\n\nfunction isStaticWritableIndex(\n message: CompiledTransactionMessage,\n index: number,\n) {\n const numAccountKeys = message.staticAccounts.length;\n const {\n numSignerAccounts,\n numReadonlySignerAccounts,\n numReadonlyNonSignerAccounts,\n } = message.header;\n\n const numWritableSigners = numSignerAccounts - numReadonlySignerAccounts;\n const numWritableNonSigners =\n numAccountKeys - numSignerAccounts - numReadonlyNonSignerAccounts;\n\n if (index >= numAccountKeys) {\n return false;\n }\n\n if (index < numWritableSigners) {\n return true;\n }\n\n if (index >= numSignerAccounts) {\n const indexIntoNonSigners = index - numSignerAccounts;\n return indexIntoNonSigners < numWritableNonSigners;\n }\n\n return false;\n}\n\nfunction isSignerIndex(message: CompiledTransactionMessage, index: number) {\n return index < message.header.numSignerAccounts;\n}\n\nexport async function accountsForTransactionExecute({\n walletAddress,\n transactionMessageBytes,\n addressesByLookupTableAddress,\n additionalSigners,\n}: {\n transactionMessageBytes: ReadonlyUint8Array;\n walletAddress: Address;\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n additionalSigners?: TransactionSigner[];\n}) {\n const transactionMessage = vaultTransactionMessageDeserialize(\n transactionMessageBytes,\n );\n\n if (transactionMessage.version === \"legacy\") {\n throw new Error(\"Only versioned transaction is allowed.\");\n }\n\n const addressLookupTableAccounts =\n addressesByLookupTableAddress ??\n (transactionMessage.addressTableLookups\n ? await fetchAddressesForLookupTables(\n transactionMessage.addressTableLookups.map(\n (x) => x.lookupTableAddress,\n ),\n getSolanaRpc(),\n )\n : {});\n\n const accountMetas: (AccountMeta | AccountSignerMeta)[] = [];\n\n accountMetas.push(\n ...(transactionMessage.addressTableLookups?.map((lookup) => {\n return {\n role: AccountRole.READONLY,\n address: lookup.lookupTableAddress,\n };\n }) ?? []),\n );\n\n for (const [\n accountIndex,\n accountKey,\n ] of transactionMessage.staticAccounts.entries()) {\n accountMetas.push({\n address: accountKey,\n role: getAccountRole(\n transactionMessage,\n accountIndex,\n accountKey,\n walletAddress,\n ),\n });\n }\n\n if (transactionMessage.addressTableLookups) {\n for (const lookup of transactionMessage.addressTableLookups) {\n const lookupTableAccount =\n addressLookupTableAccounts[lookup.lookupTableAddress];\n if (!lookupTableAccount) {\n throw new Error(\n `Address lookup table account ${lookup.lookupTableAddress} not found`,\n );\n }\n\n for (const accountIndex of lookup.writableIndexes) {\n const address = lookupTableAccount[accountIndex];\n if (!address) {\n throw new Error(\n `Address lookup table account ${lookup.lookupTableAddress} does not contain address at index ${accountIndex}`,\n );\n }\n\n accountMetas.push({\n address,\n role: AccountRole.WRITABLE,\n });\n }\n for (const accountIndex of lookup.readonlyIndexes) {\n const address = lookupTableAccount[accountIndex];\n if (!address) {\n throw new Error(\n `Address lookup table account ${lookup.lookupTableAddress} does not contain address at index ${accountIndex}`,\n );\n }\n accountMetas.push({\n address,\n role: AccountRole.READONLY,\n });\n }\n }\n }\n\n for (const signer of additionalSigners?.filter(\n (x) => x.address !== walletAddress,\n ) ?? []) {\n const index = accountMetas.findIndex(\n (meta) => meta.address === signer.address,\n );\n if (index === -1) {\n accountMetas.push({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n });\n } else {\n if (\n accountMetas[index].role === AccountRole.READONLY ||\n accountMetas[index].role === AccountRole.READONLY_SIGNER\n ) {\n accountMetas[index] = {\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n };\n } else if (\n accountMetas[index].role === AccountRole.WRITABLE ||\n accountMetas[index].role === AccountRole.WRITABLE_SIGNER\n ) {\n accountMetas[index] = {\n address: signer.address,\n role: AccountRole.WRITABLE_SIGNER,\n signer,\n };\n }\n }\n }\n return {\n accountMetas,\n addressLookupTableAccounts,\n transactionMessage,\n };\n}\n","import {\n address,\n combineCodec,\n createDecoder,\n createEncoder,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU8Decoder,\n getU8Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyUint8Array,\n} from \"gill\";\n\nconst COMPRESSED_PUBKEY_SERIALIZED_SIZE = 33;\nconst SIGNATURE_SERIALIZED_SIZE = 64;\nconst SIGNATURE_OFFSETS_SERIALIZED_SIZE = 14;\nconst SIGNATURE_OFFSETS_START = 2;\nconst SECP256R1_PROGRAM_ADDRESS = address(\n \"Secp256r1SigVerify1111111111111111111111111\",\n);\n\nexport type Secp256r1VerifyInput = {\n publicKey: ReadonlyUint8Array;\n signature: ReadonlyUint8Array;\n message: ReadonlyUint8Array;\n}[];\n\nexport type Secp256r1VerifyInstruction<\n TProgram extends string = typeof SECP256R1_PROGRAM_ADDRESS,\n> = Instruction<TProgram> &\n InstructionWithData<Uint8Array<ArrayBuffer>> &\n InstructionWithAccounts<[]>;\n\nexport type Secp256r1VerifyInstructionData = {\n numSignatures: number;\n padding: number;\n offsets: Secp256r1SignatureOffsetsDataArgs[];\n payload: Secp256r1VerifyInput;\n};\n\nexport type Secp256r1SignatureOffsetsDataArgs = {\n signatureOffset: number;\n signatureInstructionIndex: number;\n publicKeyOffset: number;\n publicKeyInstructionIndex: number;\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n};\n\nexport function getSecp256r1SignatureOffsetsDataEncoder(): Encoder<Secp256r1SignatureOffsetsDataArgs> {\n return getStructEncoder([\n [\"signatureOffset\", getU16Encoder()],\n [\"signatureInstructionIndex\", getU16Encoder()],\n [\"publicKeyOffset\", getU16Encoder()],\n [\"publicKeyInstructionIndex\", getU16Encoder()],\n [\"messageDataOffset\", getU16Encoder()],\n [\"messageDataSize\", getU16Encoder()],\n [\"messageInstructionIndex\", getU16Encoder()],\n ]);\n}\n\nexport function getSecp256r1SignatureOffsetsDataDecoder(): Decoder<Secp256r1SignatureOffsetsDataArgs> {\n return getStructDecoder([\n [\"signatureOffset\", getU16Decoder()],\n [\"signatureInstructionIndex\", getU16Decoder()],\n [\"publicKeyOffset\", getU16Decoder()],\n [\"publicKeyInstructionIndex\", getU16Decoder()],\n [\"messageDataOffset\", getU16Decoder()],\n [\"messageDataSize\", getU16Decoder()],\n [\"messageInstructionIndex\", getU16Decoder()],\n ]);\n}\n\nexport function getSecp256r1VerifyInstructionDataDecoder(): Decoder<Secp256r1VerifyInstructionData> {\n return createDecoder({\n read: (bytes, offset = 0) => {\n const numSignatures = getU8Decoder().decode(bytes, offset);\n offset += 1;\n\n const padding = getU8Decoder().decode(bytes, offset);\n offset += 1;\n\n const offsets: Secp256r1SignatureOffsetsDataArgs[] = [];\n const offsetDecoder = getSecp256r1SignatureOffsetsDataDecoder();\n for (let i = 0; i < numSignatures; i++) {\n offsets.push(offsetDecoder.decode(bytes, offset));\n offset += SIGNATURE_OFFSETS_SERIALIZED_SIZE;\n }\n const payload: Secp256r1VerifyInput = [];\n\n for (let i = 0; i < numSignatures; i++) {\n const publicKey = fixDecoderSize(\n getBytesDecoder(),\n COMPRESSED_PUBKEY_SERIALIZED_SIZE,\n ).decode(bytes, offset);\n offset += COMPRESSED_PUBKEY_SERIALIZED_SIZE;\n\n const signature = fixDecoderSize(\n getBytesDecoder(),\n SIGNATURE_SERIALIZED_SIZE,\n ).decode(bytes, offset);\n offset += SIGNATURE_SERIALIZED_SIZE;\n\n const messageSize = offsets[i].messageDataSize;\n const message = fixDecoderSize(getBytesDecoder(), messageSize).decode(\n bytes,\n offset,\n );\n offset += messageSize;\n\n payload.push({ publicKey, signature, message });\n }\n return [\n {\n numSignatures,\n padding,\n offsets,\n payload,\n },\n offset,\n ];\n },\n });\n}\n\nexport function getSecp256r1VerifyInstructionDataEncoder(): Encoder<Secp256r1VerifyInstructionDataArgs> {\n return createEncoder({\n getSizeFromValue: (value: Secp256r1VerifyInstructionData) => {\n const offsetSize =\n SIGNATURE_OFFSETS_SERIALIZED_SIZE * value.offsets.length;\n const payloadSize = value.payload.reduce((sum, p) => {\n return (\n sum +\n COMPRESSED_PUBKEY_SERIALIZED_SIZE +\n SIGNATURE_SERIALIZED_SIZE +\n p.message.length\n );\n }, 0);\n return 2 + offsetSize + payloadSize; // 1 byte for numSignatures, 1 for padding\n },\n write: (value: Secp256r1VerifyInstructionData, bytes, offset = 0) => {\n offset = getU8Encoder().write(value.numSignatures, bytes, offset);\n offset = getU8Encoder().write(value.padding, bytes, offset);\n\n const offsetEncoder = getSecp256r1SignatureOffsetsDataEncoder();\n for (const offsetEntry of value.offsets) {\n offset = offsetEncoder.write(offsetEntry, bytes, offset);\n }\n\n for (const entry of value.payload) {\n offset = fixEncoderSize(\n getBytesEncoder(),\n COMPRESSED_PUBKEY_SERIALIZED_SIZE,\n ).write(entry.publicKey, bytes, offset);\n\n offset = fixEncoderSize(\n getBytesEncoder(),\n SIGNATURE_SERIALIZED_SIZE,\n ).write(entry.signature, bytes, offset);\n\n offset = getBytesEncoder().write(entry.message, bytes, offset);\n }\n\n return offset;\n },\n });\n}\n\nexport type Secp256r1VerifyInstructionDataArgs = {\n numSignatures: number;\n padding: number;\n offsets: Secp256r1SignatureOffsetsDataArgs[];\n payload: Secp256r1VerifyInput;\n};\n\nexport function getSecp256r1VerifyInstructionDataCodec(): Codec<\n Secp256r1VerifyInstructionDataArgs,\n Secp256r1VerifyInstructionData\n> {\n return combineCodec(\n getSecp256r1VerifyInstructionDataEncoder(),\n getSecp256r1VerifyInstructionDataDecoder(),\n );\n}\n\nexport function getSecp256r1VerifyInstruction<\n TProgramAddress extends Address = typeof SECP256R1_PROGRAM_ADDRESS,\n>(\n input: Secp256r1VerifyInput,\n config?: { programAddress?: TProgramAddress },\n): Secp256r1VerifyInstruction<TProgramAddress> {\n let numSignatures = input.length;\n let currentOffset =\n SIGNATURE_OFFSETS_START + numSignatures * SIGNATURE_OFFSETS_SERIALIZED_SIZE;\n const offsets = [];\n for (let i = 0; i < numSignatures; i++) {\n const { message } = input[i];\n const publicKeyOffset = currentOffset;\n const signatureOffset = publicKeyOffset + COMPRESSED_PUBKEY_SERIALIZED_SIZE;\n const messageDataOffset = signatureOffset + SIGNATURE_SERIALIZED_SIZE;\n offsets.push({\n publicKeyOffset,\n publicKeyInstructionIndex: 0xffff,\n signatureOffset,\n signatureInstructionIndex: 0xffff,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: 0xffff,\n } as Secp256r1SignatureOffsetsDataArgs);\n currentOffset +=\n COMPRESSED_PUBKEY_SERIALIZED_SIZE +\n SIGNATURE_SERIALIZED_SIZE +\n message.length;\n }\n\n const programAddress = config?.programAddress ?? SECP256R1_PROGRAM_ADDRESS;\n\n const args = {\n numSignatures,\n padding: 0,\n offsets,\n payload: input,\n };\n\n const instruction = {\n accounts: [],\n programAddress,\n data: getSecp256r1VerifyInstructionDataEncoder().encode(\n args as Secp256r1VerifyInstructionDataArgs,\n ),\n } as Secp256r1VerifyInstruction<TProgramAddress>;\n\n return instruction;\n}\n\nexport type ParsedSecp256r1VerifyInstruction<\n TProgram extends string = typeof SECP256R1_PROGRAM_ADDRESS,\n> = {\n programAddress: Address<TProgram>;\n accounts: {};\n data: Secp256r1VerifyInstructionData;\n};\n\nexport function parseSecp256r1VerifyInstruction<TProgram extends string>(\n instruction: Instruction<TProgram> &\n InstructionWithData<Uint8Array<ArrayBuffer>>,\n): ParsedSecp256r1VerifyInstruction<TProgram> {\n return {\n programAddress: instruction.programAddress,\n accounts: {},\n data: getSecp256r1VerifyInstructionDataDecoder().decode(instruction.data),\n };\n}\n","import type {\n Address,\n AddressesByLookupTableAddress,\n Instruction,\n ReadonlyUint8Array,\n TransactionSigner,\n} from \"gill\";\nimport { getTransactionExecuteInstruction } from \"../generated\";\nimport { getWalletAddressFromSettings } from \"../utils\";\nimport { addJitoTip } from \"../utils/transaction/internal\";\nimport { accountsForTransactionExecute } from \"../utils/transactionMessage/internal\";\nimport {\n getSecp256r1VerifyInstruction,\n type Secp256r1VerifyInput,\n} from \"./secp256r1Verify\";\n\nexport async function executeTransaction({\n settings,\n transactionBufferAddress,\n transactionMessageBytes,\n payer,\n addressesByLookupTableAddress,\n secp256r1VerifyInput = [],\n additionalSigners = [],\n jitoBundlesTipAmount,\n}: {\n settings: Address;\n payer: TransactionSigner;\n transactionBufferAddress: Address;\n transactionMessageBytes: ReadonlyUint8Array;\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n secp256r1VerifyInput?: Secp256r1VerifyInput;\n additionalSigners?: TransactionSigner[];\n jitoBundlesTipAmount?: number;\n}) {\n const walletAddress = await getWalletAddressFromSettings(settings);\n\n const { accountMetas, addressLookupTableAccounts } =\n await accountsForTransactionExecute({\n transactionMessageBytes,\n walletAddress,\n additionalSigners,\n addressesByLookupTableAddress,\n });\n\n const instructions: Instruction[] = [];\n if (secp256r1VerifyInput.length > 0) {\n instructions.push(getSecp256r1VerifyInstruction(secp256r1VerifyInput));\n }\n\n instructions.push(\n getTransactionExecuteInstruction({\n transactionBuffer: transactionBufferAddress,\n payer: payer.address,\n remainingAccounts: accountMetas,\n settings,\n }),\n );\n\n if (jitoBundlesTipAmount) {\n instructions.push(addJitoTip({ payer, tipAmount: jitoBundlesTipAmount }));\n }\n\n return {\n instructions,\n addressLookupTableAccounts,\n };\n}\n","import {\n type AccountProofInput,\n getLightSystemAccountMetasV2,\n type NewAddressProofInput,\n type PackedAddressTreeInfo,\n type PackedStateTreeInfo,\n type PackedTreeInfos,\n selectStateTreeInfo,\n type TreeInfo,\n TreeType,\n} from \"@lightprotocol/stateless.js\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport {\n type AccountMeta,\n AccountRole,\n type AccountSignerMeta,\n address,\n} from \"gill\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../../generated\";\nimport { getLightProtocolRpc } from \"../initialize\";\n\ninterface MapData {\n index: number;\n accountMeta: AccountMeta;\n}\n\nexport class PackedAccounts {\n systemAccounts: AccountMeta[];\n\n nextPreIndex: number;\n preMap: Map<string, MapData>;\n\n nextPackedIndex: number;\n packedMap: Map<string, MapData>;\n outputTreeIndex: number;\n\n constructor() {\n this.systemAccounts = [];\n this.nextPreIndex = 0;\n this.preMap = new Map();\n this.nextPackedIndex = 0;\n this.packedMap = new Map();\n this.outputTreeIndex = -1;\n }\n\n addPreAccounts(\n accounts: (AccountMeta | AccountSignerMeta)[],\n ): Map<string, MapData> {\n for (const acc of accounts) {\n this.insertOrGet(acc.address.toString(), acc, false);\n }\n return this.preMap;\n }\n\n getAccountRole(isSigner: boolean, isWritable: boolean): AccountRole {\n if (isSigner) {\n return isWritable\n ? AccountRole.WRITABLE_SIGNER\n : AccountRole.READONLY_SIGNER;\n } else {\n return isWritable ? AccountRole.WRITABLE : AccountRole.READONLY;\n }\n }\n\n async addSystemAccounts(): Promise<void> {\n this.systemAccounts.push(\n ...getLightSystemAccountMetasV2({\n selfProgram: new PublicKey(MULTI_WALLET_PROGRAM_ADDRESS.toString()),\n }).map((x) => ({\n address: address(x.pubkey.toString()),\n role: this.getAccountRole(x.isSigner, x.isWritable),\n })),\n );\n }\n\n insertOrGet(\n pubkey: string,\n accountMeta: AccountMeta | AccountSignerMeta = {\n address: address(pubkey),\n role: AccountRole.WRITABLE,\n },\n isPacked = true,\n ): number {\n const map = isPacked ? this.packedMap : this.preMap;\n if (!map.has(pubkey)) {\n const index = isPacked ? this.nextPackedIndex++ : this.nextPreIndex++;\n map.set(pubkey, { index, accountMeta });\n }\n return map.get(pubkey)!.index;\n }\n\n packOutputTreeIndex(outputStateTreeInfo: TreeInfo) {\n if (outputStateTreeInfo.treeType === TreeType.StateV1) {\n return this.insertOrGet(outputStateTreeInfo.tree.toString());\n } else if (outputStateTreeInfo.treeType === TreeType.StateV2) {\n return this.insertOrGet(outputStateTreeInfo.queue.toString());\n }\n throw new Error(\"Tree type not supported\");\n }\n\n async getOutputTreeIndex() {\n if (this.outputTreeIndex !== -1) {\n return this.outputTreeIndex;\n }\n const stateTreeInfos = await getLightProtocolRpc().getStateTreeInfos();\n const selectedStateTree = selectStateTreeInfo(stateTreeInfos);\n const outputStateTreeIndex = this.packOutputTreeIndex(selectedStateTree);\n return outputStateTreeIndex;\n }\n\n packTreeInfos(\n accountProofInputs: AccountProofInput[],\n newAddressProofInputs: NewAddressProofInput[],\n ): PackedTreeInfos {\n const stateTreeInfos: PackedStateTreeInfo[] = [];\n const addressTreeInfos: PackedAddressTreeInfo[] = [];\n\n for (const account of accountProofInputs) {\n const merkleTreePubkeyIndex = this.insertOrGet(\n account.treeInfo.tree.toString(),\n );\n const queuePubkeyIndex = this.insertOrGet(\n account.treeInfo.queue.toString(),\n );\n\n stateTreeInfos.push({\n rootIndex: account.rootIndex,\n merkleTreePubkeyIndex,\n queuePubkeyIndex,\n leafIndex: account.leafIndex,\n proveByIndex: account.proveByIndex,\n });\n\n const treeToUse = account.treeInfo.nextTreeInfo ?? account.treeInfo;\n const index = this.packOutputTreeIndex(treeToUse);\n if (this.outputTreeIndex === -1) {\n this.outputTreeIndex = index;\n }\n }\n\n for (const account of newAddressProofInputs) {\n const addressMerkleTreePubkeyIndex = this.insertOrGet(\n account.treeInfo.tree.toString(),\n );\n const addressQueuePubkeyIndex = this.insertOrGet(\n account.treeInfo.queue.toString(),\n );\n\n addressTreeInfos.push({\n rootIndex: account.rootIndex,\n addressMerkleTreePubkeyIndex,\n addressQueuePubkeyIndex,\n });\n }\n\n return {\n stateTrees:\n stateTreeInfos.length > 0\n ? {\n packedTreeInfos: stateTreeInfos,\n outputTreeIndex: this.outputTreeIndex,\n }\n : undefined,\n addressTrees: addressTreeInfos,\n };\n }\n\n hashSetAccountsToMetas(map: Map<string, MapData>): AccountMeta[] {\n const packedAccounts: AccountMeta[] = Array.from(map.entries())\n .sort((a, b) => a[1].index - b[1].index)\n .map(([, { accountMeta }]) => ({ ...accountMeta }));\n return packedAccounts;\n }\n\n getOffsets(preAccountLength: number): [number, number] {\n const systemAccountsStartOffset = preAccountLength;\n const packedAccountsStartOffset =\n systemAccountsStartOffset + this.systemAccounts.length;\n return [systemAccountsStartOffset, packedAccountsStartOffset];\n }\n\n toAccountMetas(): {\n remainingAccounts: AccountMeta[];\n systemOffset: number;\n packedOffset: number;\n } {\n const preAccounts = this.hashSetAccountsToMetas(this.preMap);\n const packedAccounts = this.hashSetAccountsToMetas(this.packedMap);\n const [systemOffset, packedOffset] = this.getOffsets(preAccounts.length);\n const remainingAccounts = [\n ...preAccounts,\n ...this.systemAccounts,\n ...packedAccounts,\n ];\n return { remainingAccounts, systemOffset, packedOffset };\n }\n}\n","import {\n type AccountMeta,\n type Address,\n type AddressesByLookupTableAddress,\n type CompiledTransactionMessage,\n type Instruction,\n type ReadonlyUint8Array,\n type TransactionSigner,\n} from \"gill\";\nimport { ValidationError } from \"../errors\";\nimport { getTransactionExecuteSyncInstruction } from \"../generated\";\nimport { SignedSecp256r1Key } from \"../types\";\nimport { getWalletAddressFromSettings } from \"../utils\";\nimport {\n buildSignerAccounts,\n getDeduplicatedSigners,\n} from \"../utils/transaction/internal\";\nimport { PackedAccounts } from \"../utils/transaction/packedAccounts\";\nimport { accountsForTransactionExecute } from \"../utils/transactionMessage/internal\";\nimport {\n getSecp256r1VerifyInstruction,\n type Secp256r1VerifyInput,\n} from \"./secp256r1Verify\";\n\nexport async function executeTransactionSync({\n settings,\n transactionMessageBytes,\n additionalSigners,\n signers,\n addressesByLookupTableAddress,\n secp256r1VerifyInput = [],\n}: {\n settings: Address;\n signers: (TransactionSigner | SignedSecp256r1Key)[];\n transactionMessageBytes: ReadonlyUint8Array;\n additionalSigners?: TransactionSigner[];\n secp256r1VerifyInput?: Secp256r1VerifyInput;\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n}) {\n const dedupSigners = getDeduplicatedSigners(signers);\n const walletAddress = await getWalletAddressFromSettings(settings);\n const [{ accountMetas, addressLookupTableAccounts, transactionMessage }] =\n await Promise.all([\n accountsForTransactionExecute({\n transactionMessageBytes,\n walletAddress,\n additionalSigners,\n addressesByLookupTableAddress,\n }),\n ]);\n\n const packedAccounts = new PackedAccounts();\n packedAccounts.addPreAccounts(accountMetas);\n const {\n secp256r1VerifyInput: finalSecp256r1VerifyInput,\n transactionSyncSigners,\n } = buildSignerAccounts(dedupSigners, packedAccounts, secp256r1VerifyInput);\n\n const { remainingAccounts } = packedAccounts.toAccountMetas();\n\n const instructions: Instruction[] = [];\n\n if (finalSecp256r1VerifyInput.length > 0) {\n instructions.push(getSecp256r1VerifyInstruction(finalSecp256r1VerifyInput));\n }\n\n const customTransactionMessage = parseTransactionMessage(\n transactionMessage,\n accountMetas,\n );\n\n instructions.push(\n getTransactionExecuteSyncInstruction({\n signers: transactionSyncSigners,\n settings,\n ...customTransactionMessage,\n remainingAccounts,\n }),\n );\n\n return {\n instructions,\n addressLookupTableAccounts,\n };\n}\n\nfunction parseTransactionMessage(\n transactionMessage: CompiledTransactionMessage,\n accountMetas: AccountMeta[],\n) {\n if (transactionMessage.version === \"legacy\") {\n throw new ValidationError(\"Only versioned transaction is allowed.\");\n }\n return {\n numSigners: transactionMessage.header.numSignerAccounts,\n numWritableNonSigners:\n transactionMessage.staticAccounts.length -\n transactionMessage.header.numSignerAccounts -\n transactionMessage.header.numReadonlyNonSignerAccounts,\n numWritableSigners:\n transactionMessage.header.numSignerAccounts -\n transactionMessage.header.numReadonlySignerAccounts,\n numAccountKeys: transactionMessage.staticAccounts.length,\n instructions: transactionMessage.instructions.map((x) => ({\n ...x,\n accountIndices: new Uint8Array(x.accountIndices ?? []),\n data: (x.data ?? []) as Uint8Array,\n })),\n addressTableLookups:\n transactionMessage.addressTableLookups?.map((x) => ({\n lookupTableAddressIndex: accountMetas.findIndex(\n (y) => y.address === x.lookupTableAddress,\n ),\n writableIndexes: new Uint8Array(x.writableIndexes),\n readonlyIndexes: new Uint8Array(x.readonlyIndexes),\n })) ?? [],\n };\n}\n","import { type Address, type Instruction, type TransactionSigner } from \"gill\";\nimport { ValidationError } from \"../../errors\";\nimport { getNativeTransferIntentInstruction } from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport { getSolanaRpc, getWalletAddressFromSettings } from \"../../utils\";\nimport {\n buildSignerAccounts,\n getDeduplicatedSigners,\n} from \"../../utils/transaction/internal\";\nimport { PackedAccounts } from \"../../utils/transaction/packedAccounts\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nexport type NativeTransferIntentParams = {\n settings: Address;\n destination: Address;\n amount: number | bigint;\n signers: (TransactionSigner | SignedSecp256r1Key)[];\n};\n\nexport async function nativeTransferIntent({\n settings,\n destination,\n signers,\n amount,\n}: NativeTransferIntentParams): Promise<Instruction[]> {\n const dedupSigners = getDeduplicatedSigners(signers);\n const walletAddress = await getWalletAddressFromSettings(settings);\n\n const { value } = await getSolanaRpc()\n .getAccountInfo(walletAddress, { encoding: \"base64\" })\n .send();\n\n if ((value?.lamports ?? 0) < BigInt(amount)) {\n throw new ValidationError(\"Insufficient balance for native transfer.\");\n }\n const packedAccounts = new PackedAccounts();\n const { secp256r1VerifyInput, transactionSyncSigners } = buildSignerAccounts(\n dedupSigners,\n packedAccounts,\n );\n\n const { remainingAccounts } = packedAccounts.toAccountMetas();\n\n const instructions: Instruction[] = [];\n\n if (secp256r1VerifyInput.length > 0) {\n instructions.push(getSecp256r1VerifyInstruction(secp256r1VerifyInput));\n }\n\n instructions.push(\n getNativeTransferIntentInstruction({\n amount,\n signers: transactionSyncSigners,\n source: walletAddress,\n destination,\n settings,\n remainingAccounts,\n }),\n );\n\n return instructions;\n}\n","import { RetryExhaustedError } from \"../errors\";\n\nexport interface RetryConfig {\n maxRetries?: number;\n initialDelayMs?: number;\n backoffBase?: number;\n maxDelayMs?: number;\n retryOnRateLimit?: boolean;\n shouldRetry?: (error: unknown, attempt: number) => boolean;\n}\n\nconst DEFAULT_NETWORK_RETRY_MAX_RETRIES = 3;\nconst DEFAULT_NETWORK_RETRY_DELAY_MS = 500;\nconst EXPONENTIAL_BACKOFF_BASE = 2;\nconst BACKOFF_MAX_DELAY_MS = 30000;\n\nconst DEFAULT_RETRY_CONFIG: Required<\n Omit<RetryConfig, \"shouldRetry\" | \"retryOnRateLimit\">\n> & { retryOnRateLimit: boolean } = {\n backoffBase: EXPONENTIAL_BACKOFF_BASE,\n maxDelayMs: BACKOFF_MAX_DELAY_MS,\n retryOnRateLimit: true,\n initialDelayMs: DEFAULT_NETWORK_RETRY_DELAY_MS,\n maxRetries: DEFAULT_NETWORK_RETRY_MAX_RETRIES,\n};\n\nexport function calculateBackoffDelay(\n attempt: number,\n initialDelayMs: number,\n backoffBase: number,\n maxDelayMs: number,\n): number {\n const delay = initialDelayMs * Math.pow(backoffBase, attempt - 1);\n return Math.min(delay, maxDelayMs);\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function retryWithBackoff<T>(\n fn: () => Promise<T>,\n config?: RetryConfig,\n): Promise<T> {\n const { maxRetries, initialDelayMs, backoffBase, maxDelayMs, shouldRetry } = {\n ...DEFAULT_RETRY_CONFIG,\n ...config,\n };\n\n let lastError: unknown;\n\n for (let attempt = 1; attempt <= maxRetries; attempt++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error;\n\n if (shouldRetry && !shouldRetry(error, attempt)) {\n throw error;\n }\n\n if (attempt >= maxRetries) {\n break;\n }\n\n const delay = calculateBackoffDelay(\n attempt,\n initialDelayMs,\n backoffBase,\n maxDelayMs,\n );\n await sleep(delay);\n }\n }\n\n throw new RetryExhaustedError(\n fn.name || \"retryWithBackoff\",\n maxRetries,\n lastError,\n );\n}\n","import {\n TreeType,\n type AddressWithTree,\n type CompressedAccount,\n type HashWithTree,\n type ParsedTokenAccount,\n type ValidityProofWithContext,\n} from \"@lightprotocol/stateless.js\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport {\n AccountRole,\n address,\n getAddressEncoder,\n getArrayDecoder,\n getBase64Encoder,\n getProgramDerivedAddress,\n getU64Decoder,\n getU8Encoder,\n getUtf8Encoder,\n none,\n some,\n type Address,\n type Instruction,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n type TransactionSigner,\n} from \"gill\";\nimport {\n getAssociatedTokenAccountAddress,\n getTokenDecoder,\n} from \"gill/programs\";\nimport { ValidationError } from \"../../errors\";\nimport {\n getExtensionStructDecoder,\n getTokenTransferIntentInstruction,\n type CompressedProofArgs,\n type CompressedTokenArgsArgs,\n type SplInterfacePdaArgsArgs,\n} from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport {\n getLightProtocolRpc,\n getSolanaRpc,\n getWalletAddressFromSettings,\n} from \"../../utils\";\nimport { retryWithBackoff } from \"../../utils/retry\";\nimport {\n buildSignerAccounts,\n getDeduplicatedSigners,\n} from \"../../utils/transaction/internal\";\nimport { PackedAccounts } from \"../../utils/transaction/packedAccounts\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nconst compressibleConfig = address(\n \"ACXg8a7VaqecBWrSbdu73W4Pg9gsqXJ3EXAqkHyhvVXg\",\n);\nconst rentSponsor = address(\"r18WwUxfG8kQ69bQPAB2jV6zGNKy3GosFGctjQoV4ti\");\n\nconst ctokenProgramAddress = address(\n \"cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m\",\n);\n\n/** Input parameters for token transfer intent */\nexport type TokenTransferIntentParams = {\n settings: Address;\n destination: Address;\n mint: Address;\n amount: number | bigint;\n signers: (TransactionSigner | SignedSecp256r1Key)[];\n tokenProgram: Address;\n payer: TransactionSigner;\n splInterfacePdaArgs?: SplInterfacePdaArgsArgs;\n};\n\ntype HashWithTreeAndAccount = HashWithTree & {\n data: CompressedAccount[\"data\"];\n address: CompressedAccount[\"address\"];\n};\n\ntype ResolvedAddresses = {\n sourceSplAta: Address;\n sourceCtokenAta: Address;\n destinationSplAta: Address;\n destinationCTokenAta: Address;\n splInterfacePda: Address;\n};\n\ntype BalancesAndDestinations = {\n splBalance: bigint;\n cTokenBalance: bigint;\n destinationSplTokenAccount: Address | undefined;\n destinationCtokenTokenAccount: Address | undefined;\n requireSplInterface: boolean;\n requireRentSponsor: boolean;\n};\n\nexport async function tokenTransferIntent({\n settings,\n destination,\n mint,\n signers,\n amount,\n payer,\n tokenProgram,\n splInterfacePdaArgs = { index: 0, restricted: false },\n}: TokenTransferIntentParams): Promise<Instruction[]> {\n const dedupSigners = getDeduplicatedSigners(signers);\n const walletAddress = await getWalletAddressFromSettings(settings);\n\n const addresses = await resolveAddresses(\n mint,\n destination,\n walletAddress,\n tokenProgram,\n splInterfacePdaArgs,\n );\n\n const accountInfos = await fetchAccountInfos(addresses);\n\n const balances = computeBalancesAndDestinations(\n accountInfos,\n addresses,\n amount,\n );\n\n const [compressedTokenAccounts, splInterfaceNeedsInitialization] =\n await Promise.all([\n getCompressedTokenAccounts(\n walletAddress,\n mint,\n balances.splBalance,\n balances.cTokenBalance,\n BigInt(amount),\n ),\n checkIfSplInterfaceNeedsToBeInitialized(\n balances.requireSplInterface,\n addresses.splInterfacePda,\n ),\n ]);\n\n const compressedTotalBalance = BigInt(\n compressedTokenAccounts.reduce(\n (sum, x) => sum + (x.parsed.amount.toNumber() ?? 0),\n 0,\n ),\n );\n if (\n balances.splBalance + balances.cTokenBalance + compressedTotalBalance <\n BigInt(amount)\n ) {\n throw new ValidationError(\"Insufficient balance for token transfer.\");\n }\n\n const packedAccounts = new PackedAccounts();\n if (splInterfaceNeedsInitialization) {\n packedAccounts.addPreAccounts([\n { address: mint, role: AccountRole.WRITABLE },\n ]);\n }\n\n const hashesWithTree = buildHashesWithTree(compressedTokenAccounts);\n const { proof } = await resolveCompressedProofAndSettings(\n packedAccounts,\n hashesWithTree,\n );\n\n const sourceCompressedTokenAccounts = buildSourceCompressedTokenAccounts(\n compressedTokenAccounts,\n proof,\n packedAccounts,\n );\n\n const { secp256r1VerifyInput, transactionSyncSigners } = buildSignerAccounts(\n dedupSigners,\n packedAccounts,\n );\n\n const { remainingAccounts, systemOffset } = packedAccounts.toAccountMetas();\n const compressedProofArgs = convertToCompressedProofArgs(proof, systemOffset);\n\n const instructions: Instruction[] = [];\n if (secp256r1VerifyInput.length > 0) {\n instructions.push(getSecp256r1VerifyInstruction(secp256r1VerifyInput));\n }\n\n instructions.push(\n getTokenTransferIntentInstruction({\n settings,\n payer,\n source: walletAddress,\n sourceSplTokenAccount: addresses.sourceSplAta,\n sourceCtokenTokenAccount: addresses.sourceCtokenAta,\n destination,\n destinationSplTokenAccount: balances.destinationSplTokenAccount,\n destinationCtokenTokenAccount: balances.destinationCtokenTokenAccount,\n tokenProgram,\n mint,\n splInterfacePda: balances.requireSplInterface\n ? addresses.splInterfacePda\n : undefined,\n compressibleConfig,\n rentSponsor: balances.requireRentSponsor ? rentSponsor : undefined,\n amount,\n signers: transactionSyncSigners,\n sourceCompressedTokenAccounts,\n compressedProofArgs,\n splInterfacePdaArgs: balances.requireSplInterface\n ? some(splInterfacePdaArgs)\n : none(),\n remainingAccounts,\n }),\n );\n\n return instructions;\n}\n\nasync function resolveAddresses(\n mint: Address,\n destination: Address,\n walletAddress: Address,\n tokenProgram: Address,\n splInterfacePdaArgs: SplInterfacePdaArgsArgs,\n): Promise<ResolvedAddresses> {\n const getCtokenAta = (owner: Address) =>\n getProgramDerivedAddress({\n seeds: [\n getAddressEncoder().encode(owner),\n getAddressEncoder().encode(ctokenProgramAddress),\n getAddressEncoder().encode(mint),\n ],\n programAddress: ctokenProgramAddress,\n });\n\n const seeds = [\n getUtf8Encoder().encode(\"pool\"),\n getAddressEncoder().encode(mint),\n ];\n if (splInterfacePdaArgs.restricted) {\n seeds.push(getUtf8Encoder().encode(\"restricted\"));\n }\n if (splInterfacePdaArgs.index > 0) {\n seeds.push(getU8Encoder().encode(splInterfacePdaArgs.index));\n }\n\n const [\n sourceSplAta,\n [sourceCtokenAta],\n destinationSplAta,\n [destinationCTokenAta],\n [splInterfacePda],\n ] = await Promise.all([\n getAssociatedTokenAccountAddress(mint, walletAddress, tokenProgram),\n getCtokenAta(walletAddress),\n getAssociatedTokenAccountAddress(mint, destination, tokenProgram),\n getCtokenAta(destination),\n getProgramDerivedAddress({\n seeds,\n programAddress: ctokenProgramAddress,\n }),\n ]);\n\n return {\n sourceSplAta,\n sourceCtokenAta,\n destinationSplAta,\n destinationCTokenAta,\n splInterfacePda,\n };\n}\n\nasync function fetchAccountInfos(addresses: ResolvedAddresses) {\n const [destinationSplAtaInfo, sourceSplAtaInfo, sourceCTokenAtaInfo] =\n await Promise.all([\n getSolanaRpc()\n .getAccountInfo(addresses.destinationSplAta, { encoding: \"base64\" })\n .send(),\n getSolanaRpc()\n .getAccountInfo(addresses.sourceSplAta, { encoding: \"base64\" })\n .send(),\n getSolanaRpc()\n .getAccountInfo(addresses.sourceCtokenAta, { encoding: \"base64\" })\n .send(),\n ]);\n return {\n destinationSplAtaInfo,\n sourceSplAtaInfo,\n sourceCTokenAtaInfo,\n };\n}\n\nfunction computeBalancesAndDestinations(\n accountInfos: Awaited<ReturnType<typeof fetchAccountInfos>>,\n addresses: ResolvedAddresses,\n amount: number | bigint,\n): BalancesAndDestinations {\n const destinationSplExists = !!accountInfos.destinationSplAtaInfo.value;\n const sourceSplExists = !!accountInfos.sourceSplAtaInfo.value;\n const sourceCtokenExist = !!accountInfos.sourceCTokenAtaInfo.value;\n\n const splBalance = sourceSplExists\n ? getTokenDecoder().decode(\n getBase64Encoder().encode(accountInfos.sourceSplAtaInfo.value!.data[0]),\n ).amount\n : BigInt(0);\n\n const cTokenBalance = sourceCtokenExist\n ? BigInt(\n parseTokenAmount(\n getBase64Encoder().encode(\n accountInfos.sourceCTokenAtaInfo.value!.data[0],\n ),\n )?.amount ?? 0,\n )\n : BigInt(0);\n\n const destinationSplTokenAccount = destinationSplExists\n ? addresses.destinationSplAta\n : undefined;\n const destinationCtokenTokenAccount = destinationSplExists\n ? undefined\n : addresses.destinationCTokenAta;\n\n const requireSplInterface =\n (sourceSplExists &&\n (splBalance + cTokenBalance < BigInt(amount) ||\n cTokenBalance > BigInt(0) ||\n !destinationSplExists)) ||\n (!sourceSplExists && destinationSplExists);\n\n return {\n splBalance,\n cTokenBalance,\n destinationSplTokenAccount,\n destinationCtokenTokenAccount,\n requireSplInterface,\n requireRentSponsor:\n splBalance + cTokenBalance < BigInt(amount) || !destinationSplExists,\n };\n}\n\nfunction buildHashesWithTree(\n compressedTokenAccounts: ParsedTokenAccount[],\n): HashWithTreeAndAccount[] {\n const hashesWithTree: HashWithTreeAndAccount[] = [];\n compressedTokenAccounts.forEach((x) =>\n hashesWithTree.push({\n hash: x.compressedAccount.hash,\n tree: x.compressedAccount.treeInfo.tree,\n queue: x.compressedAccount.treeInfo.queue,\n data: x.compressedAccount.data,\n address: x.compressedAccount.address,\n }),\n );\n\n return hashesWithTree;\n}\n\nasync function resolveCompressedProofAndSettings(\n packedAccounts: PackedAccounts,\n hashesWithTree: HashWithTreeAndAccount[],\n): Promise<{\n proof: ValidityProofWithContext | null;\n}> {\n let proof: ValidityProofWithContext | null = null;\n\n if (hashesWithTree.length === 0) {\n return { proof };\n }\n\n await packedAccounts.addSystemAccounts();\n proof = await getValidityProofWithRetry(hashesWithTree, []);\n\n return { proof };\n}\n\nfunction buildSourceCompressedTokenAccounts(\n compressedTokenAccounts: ParsedTokenAccount[],\n proof: ValidityProofWithContext | null,\n packedAccounts: PackedAccounts,\n): CompressedTokenArgsArgs[] {\n if (!proof || !compressedTokenAccounts.length) {\n return [];\n }\n return compressedTokenAccounts.map((x) => ({\n amount: x.parsed.amount.toNumber(),\n merkleContext: {\n leafIndex: x.compressedAccount.leafIndex,\n merkleTreePubkeyIndex: packedAccounts.insertOrGet(\n x.compressedAccount.treeInfo.tree.toString(),\n ),\n queuePubkeyIndex: packedAccounts.insertOrGet(\n x.compressedAccount.treeInfo.queue.toString(),\n ),\n proveByIndex: x.compressedAccount.proveByIndex,\n },\n rootIndex: proof.rootIndices[0],\n version: getVersionFromDiscriminator(\n x.compressedAccount.data?.discriminator,\n ),\n tlv: x.parsed.tlv\n ? some(getArrayDecoder(getExtensionStructDecoder()).decode(x.parsed.tlv))\n : none(),\n state: x.parsed.state,\n }));\n}\n\nasync function checkIfSplInterfaceNeedsToBeInitialized(\n requireSplInterface: boolean,\n splInterfacePda: Address,\n): Promise<boolean> {\n if (!requireSplInterface) return false;\n const { value } = await getSolanaRpc()\n .getAccountInfo(splInterfacePda, { encoding: \"base64\" })\n .send();\n return !value;\n}\n\nasync function getCompressedTokenAccounts(\n walletAddress: string,\n mint: string,\n splBalance: bigint,\n cTokenBalance: bigint,\n total: bigint,\n) {\n const transferAmount = total - splBalance - cTokenBalance;\n if (transferAmount <= 0) {\n return [];\n }\n const compressedResult =\n await getLightProtocolRpc().getCompressedTokenAccountsByOwner(\n new PublicKey(walletAddress),\n { mint: new PublicKey(mint) },\n );\n\n const accounts = compressedResult.items.filter(\n (x) =>\n !!x.compressedAccount.data?.data.length &&\n x.compressedAccount.owner.toString() ===\n ctokenProgramAddress.toString() &&\n !x.parsed.amount.isZero(),\n );\n\n if (accounts.length === 0) {\n return [];\n }\n const selectedAccounts = selectMinCompressedTokenAccountsForDecompression(\n accounts,\n Number(transferAmount),\n 4,\n { treeType: TreeType.StateV2 },\n );\n\n return selectedAccounts;\n}\n\nfunction selectMinCompressedTokenAccountsForDecompression(\n accounts: ParsedTokenAccount[],\n transferAmount: number,\n maxInputs: number = 4,\n options?: { treeType: TreeType },\n) {\n const filteredAccounts = accounts.filter(\n (x) => x.compressedAccount.treeInfo.treeType === options?.treeType,\n );\n\n if (filteredAccounts.length === 0) {\n throw new Error(\"No accounts found\");\n }\n\n let accumulatedAmount = 0;\n let accumulatedLamports = 0;\n let maxPossibleAmount = 0;\n\n const selectedAccounts: ParsedTokenAccount[] = [];\n\n filteredAccounts.sort((a, b) => b.parsed.amount.cmp(a.parsed.amount));\n\n for (const account of filteredAccounts) {\n if (selectedAccounts.length >= maxInputs) break;\n if (accumulatedAmount >= transferAmount) break;\n\n if (\n !account.parsed.amount.isZero() ||\n !account.compressedAccount.lamports.isZero()\n ) {\n accumulatedAmount = accumulatedAmount + account.parsed.amount.toNumber();\n accumulatedLamports =\n accumulatedLamports + account.compressedAccount.lamports.toNumber();\n\n selectedAccounts.push(account);\n }\n }\n\n // Max, considering maxInputs\n maxPossibleAmount = filteredAccounts\n .slice(0, maxInputs)\n .reduce((total, account) => total + account.parsed.amount.toNumber(), 0);\n\n if (selectedAccounts.length === 0) {\n throw new Error(\"No accounts found.\");\n }\n\n if (accumulatedAmount < transferAmount) {\n const totalBalance = filteredAccounts.reduce(\n (acc, account) => acc + account.parsed.amount.toNumber(),\n 0,\n );\n if (selectedAccounts.length >= maxInputs) {\n throw new Error(\n `Account limit exceeded: max ${maxPossibleAmount.toString()} (${maxInputs} accounts) per transaction. Total balance: ${totalBalance.toString()} (${filteredAccounts.length} accounts). Consider multiple transfers to spend full balance.`,\n );\n } else {\n throw new Error(\n `Insufficient balance for transfer. Required: ${transferAmount.toString()}, available: ${totalBalance.toString()}.`,\n );\n }\n }\n\n if (selectedAccounts.length === 0) {\n throw new Error(\"No accounts found.\");\n }\n\n return selectedAccounts;\n}\n\nfunction parseTokenAmount(data: ReadonlyUint8Array): {\n amount: number | bigint;\n} | null {\n if (!data || data.length === 0) return null;\n try {\n const amount = getU64Decoder().decode(data.slice(64, 72));\n return {\n amount,\n };\n } catch (error) {\n console.error(\"Token data parsing error:\", error);\n return null;\n }\n}\nenum TokenDataVersion {\n V1 = 1,\n V2 = 2,\n ShaFlat = 3,\n}\n\nexport function getVersionFromDiscriminator(\n discriminator: number[] | undefined,\n): number {\n if (!discriminator || discriminator.length < 8) {\n return TokenDataVersion.ShaFlat;\n }\n if (discriminator[0] === 2) {\n return TokenDataVersion.V1;\n }\n const versionByte = discriminator[7];\n if (versionByte === 3) {\n return TokenDataVersion.V2;\n }\n if (versionByte === 4) {\n return TokenDataVersion.ShaFlat;\n }\n return TokenDataVersion.ShaFlat;\n}\n\nfunction convertToCompressedProofArgs(\n validityProof: ValidityProofWithContext | null,\n offset: number,\n) {\n const proof: OptionOrNullable<CompressedProofArgs> =\n validityProof?.compressedProof\n ? some({\n a: new Uint8Array(validityProof.compressedProof.a),\n b: new Uint8Array(validityProof.compressedProof.b),\n c: new Uint8Array(validityProof.compressedProof.c),\n })\n : null;\n return {\n proof,\n lightCpiAccountsStartIndex: offset,\n };\n}\n\nasync function getValidityProofWithRetry(\n hashes?: HashWithTree[] | undefined,\n newAddresses?: AddressWithTree[],\n): Promise<ValidityProofWithContext> {\n return retryWithBackoff(() =>\n getLightProtocolRpc().getValidityProofV0(hashes, newAddresses),\n );\n}\n","import { AccountRole, type Address, type TransactionSigner } from \"gill\";\nimport {\n getChangeConfigInstruction,\n type ConfigAction,\n type TransactionSyncSignersArgs,\n} from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport {\n extractSecp256r1VerificationArgs,\n getDeduplicatedSigners,\n} from \"../../utils/transaction/internal\";\nimport type { PackedAccounts } from \"../../utils/transaction/packedAccounts\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nexport function changeConfig({\n signers,\n payer,\n changeConfigArgs,\n}: {\n changeConfigArgs: {\n configActions: ConfigAction[];\n settings: Address;\n packedAccounts: PackedAccounts;\n };\n signers: (TransactionSigner | SignedSecp256r1Key)[];\n payer: TransactionSigner;\n}) {\n const { settings, configActions, packedAccounts } = changeConfigArgs;\n const dedupSigners = getDeduplicatedSigners(signers);\n const transactionSyncSigners: TransactionSyncSignersArgs[] = [];\n const secp256r1VerifyInput = [];\n for (const x of dedupSigners) {\n if (x instanceof SignedSecp256r1Key) {\n const index = secp256r1VerifyInput.length;\n const { domainConfig, verifyArgs, signature, publicKey, message } =\n extractSecp256r1VerificationArgs(x, index);\n if (message && signature && publicKey) {\n secp256r1VerifyInput.push({ message, signature, publicKey });\n }\n if (domainConfig) {\n const domainConfigIndex = packedAccounts\n .addPreAccounts([\n { address: domainConfig, role: AccountRole.READONLY },\n ])\n .get(domainConfig)?.index;\n if (verifyArgs.__option === \"Some\" && domainConfigIndex !== undefined) {\n transactionSyncSigners.push({\n __kind: \"Secp256r1\",\n fields: [{ domainConfigIndex, verifyArgs: verifyArgs.value }],\n });\n }\n }\n } else {\n const index = packedAccounts\n .addPreAccounts([\n { address: x.address, role: AccountRole.READONLY_SIGNER, signer: x },\n ])\n .get(x.address)?.index;\n\n if (index !== undefined) {\n transactionSyncSigners.push({\n __kind: \"Ed25519\",\n fields: [index],\n });\n }\n }\n }\n\n const { remainingAccounts } = packedAccounts.toAccountMetas();\n const instructions = [];\n if (secp256r1VerifyInput.length > 0) {\n instructions.push(getSecp256r1VerifyInstruction(secp256r1VerifyInput));\n }\n\n instructions.push(\n getChangeConfigInstruction({\n settings,\n configActions,\n payer,\n remainingAccounts,\n signers: transactionSyncSigners,\n }),\n );\n\n return instructions;\n}\n","import { type Address, type TransactionSigner } from \"gill\";\nimport {\n getCreateDomainUserAccountInstruction,\n getSecp256r1PubkeyDecoder,\n Transports,\n UserRole,\n} from \"../../generated\";\nimport { Secp256r1Key } from \"../../types\";\nimport { base64URLStringToBuffer, getUserAddress } from \"../../utils\";\n\ninterface UserCreationArgs {\n member: Secp256r1Key;\n role: UserRole.Member | UserRole.PermanentMember;\n credentialId: string;\n transports: Transports[];\n settings?: Address;\n transactionManagerAccount?: Address;\n}\n\nexport async function createDomainUserAccounts({\n authority,\n payer,\n createUserArgs,\n domainConfig,\n}: {\n domainConfig: Address;\n authority: TransactionSigner;\n payer: TransactionSigner;\n createUserArgs: UserCreationArgs;\n}) {\n return getCreateDomainUserAccountInstruction({\n payer,\n authority,\n member: getSecp256r1PubkeyDecoder().decode(\n createUserArgs.member.toBuffer(),\n ),\n credentialId: base64URLStringToBuffer(createUserArgs.credentialId),\n transports: createUserArgs.transports,\n role: createUserArgs.role,\n domainConfig,\n settings: createUserArgs.settings,\n transactionManagerAccount: createUserArgs.transactionManagerAccount,\n userAccount: await getUserAddress(createUserArgs.member),\n remainingAccounts: [],\n });\n}\n","import { type TransactionSigner } from \"gill\";\nimport { getCreateUserAccountInstruction, UserRole } from \"../../generated\";\nimport { getUserAddress } from \"../../utils\";\n\ntype UserCreationArgs =\n | {\n member: TransactionSigner;\n role: UserRole.TransactionManager;\n transactionManagerUrl: string;\n }\n | {\n member: TransactionSigner;\n role: UserRole.Member;\n };\n\nexport async function createUserAccounts({\n createUserArgs,\n payer,\n}: {\n payer: TransactionSigner;\n createUserArgs: UserCreationArgs;\n}) {\n return getCreateUserAccountInstruction({\n payer,\n member: createUserArgs.member,\n role: createUserArgs.role,\n transactionManagerUrl:\n createUserArgs.role === UserRole.TransactionManager\n ? createUserArgs.transactionManagerUrl\n : null,\n userAccount: await getUserAddress(createUserArgs.member.address),\n remainingAccounts: [],\n });\n}\n","import { type TransactionSigner } from \"gill\";\nimport { getCreateWalletInstruction } from \"../../generated\";\nimport {\n getGlobalCounterAddress,\n getSettingsFromIndex,\n getUserAddress,\n} from \"../../utils\";\n\ntype CreateWalletArgs = {\n index: number | bigint;\n payer: TransactionSigner;\n initialMember: TransactionSigner;\n};\nexport async function createWallet({\n index,\n payer,\n initialMember,\n}: CreateWalletArgs) {\n return getCreateWalletInstruction({\n globalCounter: await getGlobalCounterAddress(),\n userAccount: await getUserAddress(initialMember.address),\n settingsIndex: index,\n settings: await getSettingsFromIndex(index),\n payer,\n initialMember,\n remainingAccounts: [],\n });\n}\n","import { type Address, none, some, type TransactionSigner } from \"gill\";\nimport { getEditDomainConfigInstruction } from \"../../generated\";\nimport { getUserAddress } from \"../../utils\";\n\nexport async function editDomainConfig({\n authority,\n domainConfig,\n newAuthority,\n newOrigins,\n}: {\n domainConfig: Address;\n authority: TransactionSigner;\n newAuthority?: TransactionSigner;\n newOrigins?: string[];\n}) {\n return getEditDomainConfigInstruction({\n domainConfig,\n authority,\n newOrigins: newOrigins ? some(newOrigins) : none(),\n newAuthority,\n userAccount: newAuthority\n ? await getUserAddress(newAuthority.address)\n : undefined,\n remainingAccounts: [],\n });\n}\n","import type { TransactionSigner } from \"gill\";\nimport { getEditTransactionManagerUrlInstruction } from \"../../generated\";\nimport { getUserAddress } from \"../../utils\";\n\nexport async function editTransactionManagerUrl({\n signer,\n transactionManagerUrl,\n}: {\n signer: TransactionSigner;\n transactionManagerUrl: string;\n}) {\n return getEditTransactionManagerUrlInstruction({\n signer,\n transactionManagerAccount: await getUserAddress(signer.address),\n transactionManagerUrl,\n remainingAccounts: [],\n });\n}\n","import { none, some, type Instruction, type TransactionSigner } from \"gill\";\nimport { getEditUserDelegateInstruction } from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport { getSettingsFromIndex, getUserAddress } from \"../../utils\";\nimport { extractSecp256r1VerificationArgs } from \"../../utils/transaction/internal\";\nimport {\n getSecp256r1VerifyInstruction,\n type Secp256r1VerifyInput,\n} from \"../secp256r1Verify\";\n\nexport async function editUserDelegate({\n payer,\n user,\n oldDelegate,\n newDelegate,\n}: {\n payer: TransactionSigner;\n user: TransactionSigner | SignedSecp256r1Key;\n oldDelegate?: number;\n newDelegate?: number;\n}) {\n let oldSettings;\n let newSettings;\n if (oldDelegate !== undefined) {\n oldSettings = await getSettingsFromIndex(oldDelegate);\n }\n if (newDelegate !== undefined) {\n newSettings = await getSettingsFromIndex(newDelegate);\n }\n const { domainConfig, verifyArgs, message, signature, publicKey } =\n extractSecp256r1VerificationArgs(user);\n\n const secp256r1VerifyInput: Secp256r1VerifyInput = [];\n if (message && signature && publicKey) {\n secp256r1VerifyInput.push({\n message,\n signature,\n publicKey,\n });\n }\n\n const instructions: Instruction[] = [];\n if (secp256r1VerifyInput.length > 0) {\n instructions.push(getSecp256r1VerifyInstruction(secp256r1VerifyInput));\n }\n instructions.push(\n getEditUserDelegateInstruction({\n secp256r1VerifyArgs: verifyArgs,\n domainConfig,\n delegateTo: newDelegate !== undefined ? some(newDelegate) : none(),\n feePayer: payer,\n signer: user instanceof SignedSecp256r1Key ? undefined : user,\n oldSettings,\n newSettings,\n userAccount: await getUserAddress(\n user instanceof SignedSecp256r1Key ? user : user.address,\n ),\n remainingAccounts: [],\n }),\n );\n\n return instructions;\n}\n","import type { Address, TransactionSigner } from \"gill\";\nimport { getTransactionBufferCloseInstruction } from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport { extractSecp256r1VerificationArgs } from \"../../utils/transaction/internal\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nexport function closeTransactionBuffer({\n closer,\n payer,\n settings,\n transactionBufferAddress,\n}: {\n closer: TransactionSigner | SignedSecp256r1Key;\n payer: Address;\n settings: Address;\n transactionBufferAddress: Address;\n}) {\n const { domainConfig, verifyArgs, message, signature, publicKey } =\n extractSecp256r1VerificationArgs(closer);\n\n const instructions = [];\n if (message && signature && publicKey) {\n instructions.push(\n getSecp256r1VerifyInstruction([\n {\n message,\n signature,\n publicKey,\n },\n ]),\n );\n }\n\n instructions.push(\n getTransactionBufferCloseInstruction({\n transactionBuffer: transactionBufferAddress,\n domainConfig,\n closer: closer instanceof SignedSecp256r1Key ? undefined : closer,\n settings,\n payer,\n secp256r1VerifyArgs: verifyArgs,\n remainingAccounts: [],\n }),\n );\n\n return instructions;\n}\n","import type { Address, TransactionSigner } from \"gill\";\nimport {\n getTransactionBufferCreateInstruction,\n type ExpectedSignerArgs,\n} from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport { extractSecp256r1VerificationArgs } from \"../../utils/transaction/internal\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nexport function createTransactionBuffer({\n payer,\n creator,\n bufferIndex,\n settings,\n transactionBufferAddress,\n finalBufferHash,\n finalBufferSize,\n preauthorizeExecution,\n bufferExtendHashes,\n expectedSigners,\n}: {\n finalBufferHash: Uint8Array<ArrayBuffer>;\n finalBufferSize: number;\n payer: TransactionSigner;\n creator: TransactionSigner | SignedSecp256r1Key;\n settings: Address;\n bufferIndex: number;\n transactionBufferAddress: Address;\n preauthorizeExecution: boolean;\n bufferExtendHashes: Uint8Array<ArrayBuffer>[];\n expectedSigners: ExpectedSignerArgs[];\n}) {\n const { domainConfig, verifyArgs, message, signature, publicKey } =\n extractSecp256r1VerificationArgs(creator);\n const instructions = [];\n if (message && signature && publicKey) {\n instructions.push(\n getSecp256r1VerifyInstruction([\n {\n message,\n signature,\n publicKey,\n },\n ]),\n );\n }\n\n instructions.push(\n getTransactionBufferCreateInstruction({\n settings,\n transactionBuffer: transactionBufferAddress,\n payer,\n secp256r1VerifyArgs: verifyArgs,\n creator: creator instanceof SignedSecp256r1Key ? undefined : creator,\n domainConfig,\n bufferIndex,\n finalBufferHash,\n finalBufferSize,\n bufferExtendHashes,\n preauthorizeExecution,\n expectedSigners,\n remainingAccounts: [],\n }),\n );\n\n return instructions;\n}\n","import type { Address, TransactionSigner } from \"gill\";\nimport { getTransactionBufferExecuteInstruction } from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport { extractSecp256r1VerificationArgs } from \"../../utils/transaction/internal\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nexport function executeTransactionBuffer({\n executor,\n transactionBufferAddress,\n settings,\n}: {\n executor?: TransactionSigner | SignedSecp256r1Key;\n transactionBufferAddress: Address;\n settings: Address;\n}) {\n const { domainConfig, verifyArgs, signature, message, publicKey } =\n extractSecp256r1VerificationArgs(executor);\n const instructions = [];\n if (message && signature && publicKey) {\n instructions.push(\n getSecp256r1VerifyInstruction([\n {\n message,\n signature,\n publicKey,\n },\n ]),\n );\n }\n\n instructions.push(\n getTransactionBufferExecuteInstruction({\n settings,\n transactionBuffer: transactionBufferAddress,\n secp256r1VerifyArgs: verifyArgs,\n domainConfig,\n executor: executor instanceof SignedSecp256r1Key ? undefined : executor,\n remainingAccounts: [],\n }),\n );\n\n return instructions;\n}\n","import type { Address } from \"gill\";\nimport { getTransactionBufferExtendInstruction } from \"../../generated\";\n\nexport function extendTransactionBuffer({\n transactionMessageBytes,\n transactionBufferAddress,\n settings,\n}: {\n transactionMessageBytes: Uint8Array<ArrayBuffer>;\n transactionBufferAddress: Address;\n settings: Address;\n}) {\n return getTransactionBufferExtendInstruction({\n transactionBuffer: transactionBufferAddress,\n buffer: transactionMessageBytes,\n settings,\n remainingAccounts: [],\n });\n}\n","import type { Address, Instruction, TransactionSigner } from \"gill\";\nimport { getTransactionBufferVoteInstruction } from \"../../generated\";\nimport { SignedSecp256r1Key } from \"../../types\";\nimport { extractSecp256r1VerificationArgs } from \"../../utils/transaction/internal\";\nimport { getSecp256r1VerifyInstruction } from \"../secp256r1Verify\";\n\nexport function voteTransactionBuffer({\n settings,\n voter,\n transactionBufferAddress,\n}: {\n settings: Address;\n voter: TransactionSigner | SignedSecp256r1Key;\n transactionBufferAddress: Address;\n}) {\n const { domainConfig, verifyArgs, signature, publicKey, message } =\n extractSecp256r1VerificationArgs(voter);\n const instructions: Instruction[] = [];\n if (message && signature && publicKey) {\n instructions.push(\n getSecp256r1VerifyInstruction([\n {\n message,\n signature,\n publicKey,\n },\n ]),\n );\n }\n\n instructions.push(\n getTransactionBufferVoteInstruction({\n settings,\n transactionBuffer: transactionBufferAddress,\n secp256r1VerifyArgs: verifyArgs,\n domainConfig,\n voter: voter instanceof SignedSecp256r1Key ? undefined : voter,\n remainingAccounts: [],\n }),\n );\n\n return instructions;\n}\n","import { AccountRole, type Address } from \"gill\";\nimport {\n type AddMemberArgs,\n type ConfigAction,\n type EditMemberArgs,\n type IPermissions,\n type RemoveMemberArgs,\n} from \"../generated\";\nimport {\n Permission,\n Permissions,\n Secp256r1Key,\n type ConfigurationArgs,\n type IPermission,\n type PermissionArgs,\n} from \"../types\";\nimport { getUserAddress } from \"../utils\";\nimport { convertPubkeyToMemberkey } from \"../utils/transaction/internal\";\nimport { PackedAccounts } from \"../utils/transaction/packedAccounts\";\n\nexport async function prepareChangeConfigArgs({\n settings,\n configActionsArgs,\n}: {\n settings: Address;\n configActionsArgs: ConfigurationArgs[];\n}): Promise<{\n configActions: ConfigAction[];\n settings: Address;\n packedAccounts: PackedAccounts;\n}> {\n const packedAccounts = new PackedAccounts();\n\n const configActions = await buildConfigActions({\n configActionsArgs,\n packedAccounts,\n });\n\n return {\n configActions,\n settings,\n packedAccounts,\n };\n}\n\nasync function buildConfigActions({\n configActionsArgs,\n packedAccounts,\n}: {\n configActionsArgs: ConfigurationArgs[];\n packedAccounts: PackedAccounts;\n}): Promise<ConfigAction[]> {\n const configActions: ConfigAction[] = [];\n\n for (const action of configActionsArgs) {\n switch (action.type) {\n case \"AddMembers\": {\n const field: AddMemberArgs[] = [];\n for (const m of action.members) {\n packedAccounts.addPreAccounts([\n {\n address: await getUserAddress(m.member),\n role: AccountRole.WRITABLE,\n },\n ]);\n field.push(\n convertAddMember({\n permissionArgs: m.permissions,\n pubkey: m.member,\n }),\n );\n }\n\n configActions.push({ __kind: action.type, fields: [field] });\n break;\n }\n\n case \"RemoveMembers\": {\n const field = await Promise.all(\n action.members.map(async (m) => {\n packedAccounts.addPreAccounts([\n {\n address: await getUserAddress(m.member),\n role: AccountRole.WRITABLE,\n },\n ]);\n return convertRemoveMember({\n pubkey: m.member,\n });\n }),\n );\n configActions.push({ __kind: action.type, fields: [field] });\n break;\n }\n\n case \"EditPermissions\": {\n const field = action.members.map((m) =>\n convertEditMember({\n permissionArgs: m.permissions,\n pubkey: m.member,\n }),\n );\n\n configActions.push({ __kind: action.type, fields: [field] });\n break;\n }\n\n default:\n configActions.push({ __kind: action.type, fields: [action.threshold] });\n }\n }\n\n return configActions;\n}\n\nfunction convertEditMember({\n pubkey,\n permissionArgs,\n}: {\n pubkey: Address | Secp256r1Key;\n permissionArgs: PermissionArgs;\n}): EditMemberArgs {\n return {\n memberKey: convertPubkeyToMemberkey(pubkey),\n permissions: convertPermissions(permissionArgs),\n };\n}\n\nfunction convertRemoveMember({\n pubkey,\n}: {\n pubkey: Address | Secp256r1Key;\n}): RemoveMemberArgs {\n return {\n memberKey: convertPubkeyToMemberkey(pubkey),\n };\n}\n\nfunction convertAddMember({\n pubkey,\n permissionArgs,\n}: {\n pubkey: Address | Secp256r1Key;\n permissionArgs: PermissionArgs;\n}): AddMemberArgs {\n return {\n memberKey: convertPubkeyToMemberkey(pubkey),\n permissions: convertPermissions(permissionArgs),\n };\n}\n\nfunction convertPermissions(p: PermissionArgs): IPermissions {\n const perms: IPermission[] = [];\n if (p.initiate) perms.push(Permission.InitiateTransaction);\n if (p.vote) perms.push(Permission.VoteTransaction);\n if (p.execute) perms.push(Permission.ExecuteTransaction);\n\n return Permissions.fromPermissions(perms);\n}\n","import { sha256 } from \"@noble/hashes/sha2.js\";\nimport type {\n Address,\n AddressesByLookupTableAddress,\n Instruction,\n TransactionSigner,\n} from \"gill\";\nimport {\n createTransactionBuffer,\n executeTransaction,\n executeTransactionBuffer,\n extendTransactionBuffer,\n voteTransactionBuffer,\n type Secp256r1VerifyInput,\n} from \"../instructions\";\nimport { SignedSecp256r1Key } from \"../types\";\nimport type { TransactionDetails } from \"../types/transaction\";\nimport { getSecp256r1MessageHash, getTransactionBufferAddress } from \"../utils\";\nimport {\n convertPubkeyToMemberkey,\n getDeduplicatedSigners,\n} from \"../utils/transaction/internal\";\n\ninterface CreateTransactionBundleArgs {\n payer: TransactionSigner;\n settings: Address;\n transactionMessageBytes: Uint8Array<ArrayBuffer>;\n creator: TransactionSigner | SignedSecp256r1Key;\n additionalVoters?: (TransactionSigner | SignedSecp256r1Key)[];\n executor?: TransactionSigner | SignedSecp256r1Key;\n additionalSigners?: TransactionSigner[];\n secp256r1VerifyInput?: Secp256r1VerifyInput;\n jitoBundlesTipAmount?: number;\n chunkSize?: number;\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n}\n\nexport async function prepareTransactionBundle({\n payer,\n settings,\n transactionMessageBytes,\n creator,\n executor,\n secp256r1VerifyInput,\n jitoBundlesTipAmount,\n addressesByLookupTableAddress,\n additionalVoters = [],\n additionalSigners = [],\n chunkSize = Math.ceil(transactionMessageBytes.length / 2),\n}: CreateTransactionBundleArgs): Promise<TransactionDetails[]> {\n const bufferIndex = Math.floor(Math.random() * 255);\n const transactionBufferAddress = await getTransactionBufferAddress(\n settings,\n creator instanceof SignedSecp256r1Key ? creator : creator.address,\n bufferIndex,\n );\n\n const chunks: Uint8Array<ArrayBuffer>[] = [];\n const chunksHash: Uint8Array<ArrayBuffer>[] = [];\n for (let i = 0; i < transactionMessageBytes.length; i += chunkSize) {\n const chunk = transactionMessageBytes.subarray(i, i + chunkSize);\n chunks.push(chunk);\n chunksHash.push(sha256(chunk) as Uint8Array<ArrayBuffer>);\n }\n const finalBufferHash = sha256(\n transactionMessageBytes,\n ) as Uint8Array<ArrayBuffer>;\n\n const expectedSigners = getDeduplicatedSigners([\n creator,\n ...(executor ? [executor] : []),\n ...additionalVoters,\n ]).map((x) => ({\n memberKey: convertPubkeyToMemberkey(x),\n messageHash:\n x instanceof SignedSecp256r1Key\n ? getSecp256r1MessageHash(x.authResponse)\n : null,\n }));\n\n const createIxs = createTransactionBuffer({\n finalBufferHash,\n finalBufferSize: transactionMessageBytes.length,\n bufferIndex,\n payer,\n transactionBufferAddress,\n settings,\n creator,\n preauthorizeExecution: !executor,\n bufferExtendHashes: chunksHash,\n\n expectedSigners,\n });\n\n const extendIxs = chunks.map((bytes) =>\n extendTransactionBuffer({\n transactionMessageBytes: bytes,\n transactionBufferAddress,\n settings,\n }),\n );\n\n const voteIxs = additionalVoters.map((voter) =>\n voteTransactionBuffer({\n voter,\n transactionBufferAddress,\n settings,\n }),\n );\n\n const executeApprovalIxs = executeTransactionBuffer({\n settings,\n executor,\n transactionBufferAddress,\n });\n\n const { instructions: executeIxs, addressLookupTableAccounts } =\n await executeTransaction({\n settings,\n transactionMessageBytes,\n transactionBufferAddress,\n payer,\n additionalSigners,\n secp256r1VerifyInput,\n jitoBundlesTipAmount,\n addressesByLookupTableAddress,\n });\n\n const buildTx = (instructions: Instruction[]): TransactionDetails => ({\n payer,\n instructions,\n addressesByLookupTableAddress: addressLookupTableAccounts,\n });\n\n const txs = [\n buildTx(createIxs),\n ...extendIxs.map((ix) => buildTx([ix])),\n ...(voteIxs.length ? [buildTx(voteIxs.flat())] : []),\n buildTx(executeApprovalIxs),\n buildTx(executeIxs),\n ];\n\n return txs;\n}\n","import { AccountRole, type Address, type Instruction } from \"gill\";\n\nexport type CompiledKeyMeta = {\n isSigner: boolean;\n isWritable: boolean;\n isInvoked: boolean;\n};\n\ntype KeyMetaMap = Map<Address, CompiledKeyMeta>;\n\n/** Adapted from solana-web3.js compiled-keys for wrapped vault transaction messages. @see https://github.com/solana-labs/solana-web3.js/blob/87d33ac68e2453b8a01cf8c425aa7623888434e8/packages/library-legacy/src/message/compiled-keys.ts */\nexport class CompiledKeys {\n payer: Address;\n keyMetaMap: KeyMetaMap;\n\n constructor(payer: Address, keyMetaMap: KeyMetaMap) {\n this.payer = payer;\n this.keyMetaMap = keyMetaMap;\n }\n\n static compile(\n instructions: Array<Instruction>,\n payer: Address,\n ): CompiledKeys {\n const keyMetaMap: KeyMetaMap = new Map();\n const getOrInsertDefault = (address: Address): CompiledKeyMeta => {\n let keyMeta = keyMetaMap.get(address);\n if (keyMeta === undefined) {\n keyMeta = {\n isSigner: false,\n isWritable: false,\n isInvoked: false,\n };\n keyMetaMap.set(address, keyMeta);\n }\n return keyMeta;\n };\n\n const payerKeyMeta = getOrInsertDefault(payer);\n payerKeyMeta.isSigner = true;\n payerKeyMeta.isWritable = true;\n\n for (const ix of instructions) {\n getOrInsertDefault(ix.programAddress).isInvoked = false;\n for (const accountMeta of ix.accounts ?? []) {\n const keyMeta = getOrInsertDefault(accountMeta.address);\n keyMeta.isSigner ||=\n accountMeta.role === AccountRole.READONLY_SIGNER ||\n accountMeta.role === AccountRole.WRITABLE_SIGNER;\n keyMeta.isWritable ||=\n accountMeta.role === AccountRole.WRITABLE ||\n accountMeta.role === AccountRole.WRITABLE_SIGNER;\n }\n }\n\n return new CompiledKeys(payer, keyMetaMap);\n }\n\n getMessageComponents(): [\n {\n numReadonlyNonSignerAccounts: number;\n numReadonlySignerAccounts: number;\n numSignerAccounts: number;\n },\n Array<Address>,\n ] {\n const mapEntries = [...this.keyMetaMap.entries()];\n if (mapEntries.length > 256) {\n throw new Error(\"Max static account keys length exceeded\");\n }\n\n const writableSigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && meta.isWritable,\n );\n const readonlySigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && !meta.isWritable,\n );\n const writableNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && meta.isWritable,\n );\n const readonlyNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && !meta.isWritable,\n );\n\n const header = {\n numSignerAccounts: writableSigners.length + readonlySigners.length,\n numReadonlySignerAccounts: readonlySigners.length,\n numReadonlyNonSignerAccounts: readonlyNonSigners.length,\n };\n\n if (writableSigners.length === 0) {\n throw new Error(\"Expected at least one writable signer key\");\n }\n\n const [payerAddress] = writableSigners[0];\n if (payerAddress !== this.payer) {\n throw new Error(\"Expected first writable signer key to be the fee payer\");\n }\n\n const staticAccountKeys = [\n ...writableSigners.map(([key]) => key),\n ...readonlySigners.map(([key]) => key),\n ...writableNonSigners.map(([key]) => key),\n ...readonlyNonSigners.map(([key]) => key),\n ];\n\n return [header, staticAccountKeys];\n }\n\n extractTableLookup(lookupTableAddresses: [string, Address[]]) {\n const [writableIndexes, drainedWritableKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTableAddresses[1],\n (keyMeta) =>\n !keyMeta.isSigner && !keyMeta.isInvoked && keyMeta.isWritable,\n );\n const [readonlyIndexes, drainedReadonlyKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTableAddresses[1],\n (keyMeta) =>\n !keyMeta.isSigner && !keyMeta.isInvoked && !keyMeta.isWritable,\n );\n\n if (writableIndexes.length === 0 && readonlyIndexes.length === 0) {\n return;\n }\n\n return {\n addressTableLookup: {\n lookupTableAddress: lookupTableAddresses[0],\n writableIndexes,\n readonlyIndexes,\n },\n drainedKeys: {\n writable: drainedWritableKeys,\n readonly: drainedReadonlyKeys,\n },\n };\n }\n\n private drainKeysFoundInLookupTable(\n lookupTableEntries: Array<Address>,\n keyMetaFilter: (keyMeta: CompiledKeyMeta) => boolean,\n ): [Array<number>, Array<Address>] {\n const lookupTableIndexes = new Array();\n const drainedKeys = new Array();\n\n for (const [addressKey, keyMeta] of this.keyMetaMap.entries()) {\n if (keyMetaFilter(keyMeta)) {\n const key = addressKey;\n const lookupTableIndex = lookupTableEntries.findIndex(\n (entry) => entry === key,\n );\n if (lookupTableIndex >= 0) {\n if (lookupTableIndex >= 256) {\n throw new Error(\"Max lookup table index exceeded\");\n }\n lookupTableIndexes.push(lookupTableIndex);\n drainedKeys.push(key);\n this.keyMetaMap.delete(addressKey);\n }\n }\n }\n\n return [lookupTableIndexes, drainedKeys];\n }\n}\n","import type { Address, Instruction } from \"gill\";\n\nexport class MessageAccountKeys {\n private staticAccountKeys: Address[];\n private accountKeysFromLookups: {\n writable: Address[];\n readonly: Address[];\n };\n constructor(\n staticAccountKeys: Address[],\n accountKeysFromLookups: {\n writable: Address[];\n readonly: Address[];\n },\n ) {\n this.staticAccountKeys = staticAccountKeys;\n this.accountKeysFromLookups = accountKeysFromLookups;\n }\n\n keySegments() {\n const keySegments = [this.staticAccountKeys];\n if (this.accountKeysFromLookups) {\n keySegments.push(this.accountKeysFromLookups.writable);\n keySegments.push(this.accountKeysFromLookups.readonly);\n }\n return keySegments;\n }\n\n get(index: number) {\n for (const keySegment of this.keySegments()) {\n if (index < keySegment.length) {\n return keySegment[index];\n } else {\n index -= keySegment.length;\n }\n }\n return;\n }\n\n get length() {\n return this.keySegments().flat().length;\n }\n\n compileInstructions(instructions: Instruction[]) {\n const U8_MAX = 255;\n if (this.length > U8_MAX + 1) {\n throw new Error(\"Account index overflow encountered during compilation\");\n }\n const keyIndexMap = new Map<Address, number>();\n this.keySegments()\n .flat()\n .forEach((key, index) => {\n keyIndexMap.set(key, index);\n });\n const findKeyIndex = (key: Address) => {\n const keyIndex = keyIndexMap.get(key);\n if (keyIndex === undefined)\n throw new Error(\n \"Encountered an unknown instruction account key during compilation\",\n );\n return keyIndex;\n };\n return instructions.map((instruction) => {\n return {\n programAddressIndex: findKeyIndex(instruction.programAddress),\n accountIndices:\n instruction.accounts?.map((meta) => findKeyIndex(meta.address)) ?? [],\n data: instruction.data,\n };\n });\n }\n}\n","import {\n address,\n type Address,\n type AddressesByLookupTableAddress,\n type CompiledTransactionMessage,\n type Instruction,\n} from \"gill\";\nimport { CompiledKeys } from \"./compiled-keys\";\nimport { MessageAccountKeys } from \"./message-account-keys\";\n\nexport function compileToWrappedMessageV0({\n payer,\n recentBlockhash,\n instructions,\n addressesByLookupTableAddress,\n}: {\n payer: Address;\n recentBlockhash: string;\n instructions: Instruction[];\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n}) {\n const compiledKeys = CompiledKeys.compile(instructions, payer);\n\n const addressTableLookups: {\n /** The address of the address lookup table account. */\n lookupTableAddress: Address;\n /** @deprecated Use `readonlyIndexes` */\n readableIndices: readonly number[];\n /** Indexes of accounts in a lookup table to load as read-only. */\n readonlyIndexes: readonly number[];\n /** Indexes of accounts in a lookup table to load as writable. */\n writableIndexes: readonly number[];\n /** @deprecated Use `writableIndexes` */\n writableIndices: readonly number[];\n }[] = new Array();\n const accountKeysFromLookups: { writable: Address[]; readonly: Address[] } = {\n writable: [],\n readonly: [],\n };\n const lookupTableAccounts = Object.entries(\n addressesByLookupTableAddress ?? {},\n );\n\n for (const lookupTable of lookupTableAccounts) {\n const extractResult = compiledKeys.extractTableLookup(lookupTable);\n if (extractResult !== undefined) {\n const { addressTableLookup, drainedKeys } = extractResult;\n addressTableLookups.push({\n readonlyIndexes: addressTableLookup.readonlyIndexes,\n readableIndices: addressTableLookup.readonlyIndexes,\n writableIndexes: addressTableLookup.writableIndexes,\n writableIndices: addressTableLookup.writableIndexes,\n lookupTableAddress: address(addressTableLookup.lookupTableAddress),\n });\n accountKeysFromLookups.writable.push(...drainedKeys.writable);\n accountKeysFromLookups.readonly.push(...drainedKeys.readonly);\n }\n }\n\n const [header, staticAccounts] = compiledKeys.getMessageComponents();\n\n const accountKeys = new MessageAccountKeys(\n staticAccounts,\n accountKeysFromLookups,\n );\n\n const compiledInstructions = accountKeys.compileInstructions(instructions);\n return {\n version: 0,\n header,\n instructions: compiledInstructions,\n lifetimeToken: recentBlockhash,\n staticAccounts,\n addressTableLookups,\n } as CompiledTransactionMessage;\n}\n","import {\n type Address,\n type AddressesByLookupTableAddress,\n type Instruction,\n} from \"gill\";\nimport { MULTI_WALLET_PROGRAM_ADDRESS } from \"../generated\";\nimport { vaultTransactionMessageSerialize } from \"../types\";\nimport { compileToWrappedMessageV0 } from \"../utils/transactionMessage/compileToWrappedMessageV0\";\ninterface PrepareTransactionMessageArgs {\n instructions: Instruction[];\n payer: Address;\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n}\nexport function prepareTransactionMessage({\n instructions,\n payer,\n addressesByLookupTableAddress,\n}: PrepareTransactionMessageArgs) {\n const compiledMessage = compileToWrappedMessageV0({\n instructions,\n payer,\n recentBlockhash: MULTI_WALLET_PROGRAM_ADDRESS,\n addressesByLookupTableAddress,\n });\n\n return new Uint8Array(vaultTransactionMessageSerialize(compiledMessage));\n}\n","import type {\n Address,\n AddressesByLookupTableAddress,\n ReadonlyUint8Array,\n TransactionSigner,\n} from \"gill\";\nimport {\n executeTransactionSync,\n type Secp256r1VerifyInput,\n} from \"../instructions\";\nimport { SignedSecp256r1Key, type TransactionDetails } from \"../types\";\n\ninterface CreateTransactionSyncArgs {\n payer: TransactionSigner;\n settings: Address;\n transactionMessageBytes: ReadonlyUint8Array;\n signers: (TransactionSigner | SignedSecp256r1Key)[];\n additionalSigners?: TransactionSigner[];\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n secp256r1VerifyInput?: Secp256r1VerifyInput;\n}\n\nexport async function prepareTransactionSync({\n payer,\n settings,\n transactionMessageBytes,\n signers,\n additionalSigners,\n secp256r1VerifyInput,\n addressesByLookupTableAddress,\n}: CreateTransactionSyncArgs): Promise<TransactionDetails> {\n const { instructions, addressLookupTableAccounts } =\n await executeTransactionSync({\n settings,\n signers,\n additionalSigners,\n transactionMessageBytes,\n secp256r1VerifyInput,\n addressesByLookupTableAddress,\n });\n\n return {\n payer,\n instructions,\n addressesByLookupTableAddress: addressLookupTableAccounts,\n };\n}\n"]}