@solana/web3.js 2.0.0-rc.3 → 2.0.0-rc.4

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":["../../errors/src/codes.ts","../../errors/src/messages.ts","../../errors/src/message-formatter.ts","../../errors/src/error.ts","../../errors/src/stack-trace.ts","../../errors/src/rpc-enum-errors.ts","../../errors/src/instruction-error.ts","../../errors/src/transaction-error.ts","../../errors/src/json-rpc-error.ts","../../codecs-core/src/bytes.ts","../../codecs-core/src/codec.ts","../../codecs-core/src/combine-codec.ts","../../codecs-core/src/add-codec-sentinel.ts","../../codecs-core/src/assertions.ts","../../codecs-core/src/add-codec-size-prefix.ts","../../codecs-core/src/fix-codec-size.ts","../../codecs-core/src/offset-codec.ts","../../codecs-core/src/resize-codec.ts","../../codecs-core/src/pad-codec.ts","../../codecs-core/src/reverse-codec.ts","../../codecs-core/src/transform-codec.ts","../../codecs-strings/src/assertions.ts","../../codecs-strings/src/baseX.ts","../../codecs-strings/src/base10.ts","../../codecs-strings/src/base16.ts","../../codecs-strings/src/base58.ts","../../codecs-strings/src/baseX-reslice.ts","../../codecs-strings/src/base64.ts","../../codecs-strings/src/null-characters.ts","../../text-encoding-impl/src/index.browser.ts","../../codecs-strings/src/utf8.ts","../../accounts/src/account.ts","../../accounts/src/decode-account.ts","../../accounts/src/parse-account.ts","../../accounts/src/fetch-account.ts","../../accounts/src/maybe-account.ts","../../assertions/src/subtle-crypto.ts","../../assertions/src/crypto.ts","../../addresses/src/address.ts","../../addresses/src/vendor/noble/ed25519.ts","../../addresses/src/curve.ts","../../addresses/src/program-derived-address.ts","../../addresses/src/public-key.ts","../../codecs-numbers/src/assertions.ts","../../codecs-numbers/src/common.ts","../../codecs-numbers/src/utils.ts","../../codecs-numbers/src/f32.ts","../../codecs-numbers/src/f64.ts","../../codecs-numbers/src/i128.ts","../../codecs-numbers/src/i16.ts","../../codecs-numbers/src/i32.ts","../../codecs-numbers/src/i64.ts","../../codecs-numbers/src/i8.ts","../../codecs-numbers/src/short-u16.ts","../../codecs-numbers/src/u128.ts","../../codecs-numbers/src/u16.ts","../../codecs-numbers/src/u32.ts","../../codecs-numbers/src/u64.ts","../../codecs-numbers/src/u8.ts","../../codecs-data-structures/src/assertions.ts","../../codecs-data-structures/src/utils.ts","../../codecs-data-structures/src/array.ts","../../codecs-data-structures/src/bit-array.ts","../../codecs-data-structures/src/boolean.ts","../../codecs-data-structures/src/bytes.ts","../../codecs-data-structures/src/constant.ts","../../codecs-data-structures/src/tuple.ts","../../codecs-data-structures/src/union.ts","../../codecs-data-structures/src/discriminated-union.ts","../../codecs-data-structures/src/enum-helpers.ts","../../codecs-data-structures/src/enum.ts","../../codecs-data-structures/src/hidden-prefix.ts","../../codecs-data-structures/src/hidden-suffix.ts","../../codecs-data-structures/src/map.ts","../../codecs-data-structures/src/unit.ts","../../codecs-data-structures/src/nullable.ts","../../codecs-data-structures/src/set.ts","../../codecs-data-structures/src/struct.ts","../../options/src/option.ts","../../options/src/unwrap-option.ts","../../options/src/option-codec.ts","../../options/src/unwrap-option-recursively.ts","../../functional/src/pipe.ts","../../instructions/src/instruction.ts","../../instructions/src/roles.ts","../../keys/src/private-key.ts","../../keys/src/public-key.ts","../../keys/src/signatures.ts","../../keys/src/key-pair.ts","../../programs/src/program-error.ts","../../rpc-spec-types/src/parse-json-with-bigints.ts","../../rpc-spec-types/src/rpc-message.ts","../../rpc-spec-types/src/stringify-json-with-bigints.ts","../../rpc-spec/src/rpc.ts","../../rpc-spec/src/rpc-api.ts","../../rpc-spec/src/rpc-transport.ts","../../rpc-transformers/src/tree-traversal.ts","../../rpc-transformers/src/request-transformer-bigint-downcast.ts","../../rpc-transformers/src/request-transformer-default-commitment.ts","../../rpc-transformers/src/request-transformer-integer-overflow.ts","../../rpc-transformers/src/request-transformer-options-object-position-config.ts","../../rpc-transformers/src/request-transformer.ts","../../rpc-transformers/src/response-transformer-bigint-upcast.ts","../../rpc-transformers/src/response-transformer-result.ts","../../rpc-transformers/src/response-transformer-throw-solana-error.ts","../../rpc-transformers/src/response-transformer.ts","../../rpc-transformers/src/response-transformer-allowed-numeric-values.ts","../../rpc-api/src/index.ts","../../rpc-transport-http/src/http-transport-headers.ts","../../rpc-transport-http/src/http-transport.ts","../../rpc-transport-http/src/is-solana-request.ts","../../rpc-transport-http/src/http-transport-for-solana-rpc.ts","../../fast-stable-stringify/src/index.ts","../../rpc/src/rpc-integer-overflow-error.ts","../../rpc/src/rpc-default-config.ts","../../rpc/src/rpc-request-coalescer.ts","../../rpc/src/rpc-request-deduplication.ts","../../rpc/src/rpc-transport.ts","../../rpc/src/rpc.ts","../../subscribable/src/async-iterable.ts","../../subscribable/src/data-publisher.ts","../../subscribable/src/demultiplex.ts","../../promises/src/race.ts","../../rpc-subscriptions-spec/src/rpc-subscriptions.ts","../../rpc-subscriptions-spec/src/rpc-subscriptions-api.ts","../../rpc-subscriptions-spec/src/rpc-subscriptions-channel.ts","../../rpc-subscriptions-spec/src/rpc-subscriptions-pubsub-plan.ts","../../rpc-subscriptions-api/src/index.ts","../../ws-impl/src/index.browser.ts","../../rpc-subscriptions-channel-websocket/src/websocket-channel.ts","../../rpc-subscriptions/src/rpc-integer-overflow-error.ts","../../rpc-subscriptions/src/rpc-default-config.ts","../../rpc-subscriptions/src/rpc-subscriptions-autopinger.ts","../../rpc-subscriptions/src/rpc-subscriptions-channel-pool-internal.ts","../../rpc-subscriptions/src/rpc-subscriptions-channel-pool.ts","../../rpc-subscriptions/src/rpc-subscriptions-json.ts","../../rpc-subscriptions/src/rpc-subscriptions-json-bigint.ts","../../rpc-subscriptions/src/rpc-subscriptions-channel.ts","../../rpc-subscriptions/src/rpc-subscriptions-coalescer.ts","../../rpc-subscriptions/src/rpc-subscriptions-transport.ts","../../rpc-subscriptions/src/rpc-subscriptions.ts","../../rpc-types/src/blockhash.ts","../../rpc-types/src/cluster-url.ts","../../rpc-types/src/commitment.ts","../../rpc-types/src/lamports.ts","../../rpc-types/src/stringified-bigint.ts","../../rpc-types/src/stringified-number.ts","../../rpc-types/src/unix-timestamp.ts","../../transaction-messages/src/blockhash.ts","../../transaction-messages/src/codecs/address-table-lookup.ts","../../transaction-messages/src/codecs/header.ts","../../transaction-messages/src/codecs/instruction.ts","../../transaction-messages/src/codecs/transaction-version.ts","../../transaction-messages/src/codecs/message.ts","../../transaction-messages/src/compile/accounts.ts","../../transaction-messages/src/compile/address-table-lookups.ts","../../transaction-messages/src/compile/header.ts","../../transaction-messages/src/compile/instructions.ts","../../transaction-messages/src/compile/lifetime-token.ts","../../transaction-messages/src/compile/static-accounts.ts","../../transaction-messages/src/compile/message.ts","../../transaction-messages/src/compress-transaction-message.ts","../../transaction-messages/src/create-transaction-message.ts","../../transaction-messages/src/durable-nonce.ts","../../transaction-messages/src/fee-payer.ts","../../transaction-messages/src/instructions.ts","../../transaction-messages/src/decompile-message.ts","../../transactions/src/codecs/signatures-encoder.ts","../../transactions/src/codecs/transaction-codec.ts","../../transactions/src/compile-transaction.ts","../../transactions/src/signatures.ts","../../transactions/src/wire-transaction.ts","../../signers/src/deduplicate-signers.ts","../../signers/src/transaction-modifying-signer.ts","../../signers/src/transaction-partial-signer.ts","../../signers/src/transaction-sending-signer.ts","../../signers/src/transaction-signer.ts","../../signers/src/account-signer-meta.ts","../../signers/src/add-signers.ts","../../signers/src/fee-payer-signer.ts","../../signers/src/message-partial-signer.ts","../../signers/src/keypair-signer.ts","../../signers/src/message-modifying-signer.ts","../../signers/src/message-signer.ts","../../signers/src/noop-signer.ts","../../signers/src/transaction-with-single-sending-signer.ts","../../signers/src/sign-transaction.ts","../../signers/src/signable-message.ts","../../transaction-confirmation/src/confirmation-strategy-blockheight.ts","../../transaction-confirmation/src/confirmation-strategy-nonce.ts","../../transaction-confirmation/src/confirmation-strategy-recent-signature.ts","../../transaction-confirmation/src/confirmation-strategy-timeout.ts","../../transaction-confirmation/src/confirmation-strategy-racer.ts","../../transaction-confirmation/src/waiters.ts","../src/airdrop-internal.ts","../src/airdrop.ts","../src/compute-limit-internal.ts","../src/compute-limit.ts","../src/decompile-transaction-message-fetching-lookup-tables.ts","../src/send-transaction-internal.ts","../src/send-and-confirm-durable-nonce-transaction.ts","../src/send-and-confirm-transaction.ts","../src/send-transaction-without-confirming.ts"],"names":["e","isSolanaError","ORDERED_ERROR_NAMES","SolanaError","alphabet","createEncoder","SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE","hexBytes","createDecoder","combineCodec","TextDecoder","TextEncoder","address","base58Encoder","Endian","newOffset","_a","getBase16Decoder","getEncodedSize","isFixedSize","getU8Encoder","transformEncoder","getU8Decoder","transformDecoder","containsBytes","AccountRole","signature","privateKey","unwrapBigIntValueObject","wrapBigIntValueObject","pipe","normalizeHeaders","EXPLICIT_ABORT_TOKEN","createExplicitAbortToken","getAllowedNumericKeypaths","memoizedKeypaths","index_browser_default","createSolanaJsonRpcIntegerOverflowError","transformChannelInboundMessages","transformChannelOutboundMessages","cache","memoizedBase58Encoder","memoizedBase58Decoder","getMemoizedBase58Encoder","getMemoizedBase58Decoder","assertValidBaseString","getBaseXEncoder","partitionLeadingZeroes","getBigIntFromBaseX","getBaseXDecoder","getBaseXFromBigInt","getBase58Encoder","getBase58Decoder","getStructEncoder","getStructDecoder","getArrayEncoder","getShortU16Encoder","getArrayDecoder","getShortU16Decoder","getAddressEncoder","getAddressDecoder","TYPE","getAddressComparator","isWritableRole","isSignerRole","getBytesEncoder","SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING","transaction","o","base58Decoder","safeRace","getTimeoutPromise","lamports"],"mappings":"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","file":"index.development.js","sourcesContent":["/**\n * To add a new error, follow the instructions at\n * https://github.com/solana-labs/solana-web3.js/tree/master/packages/errors/#adding-a-new-error\n *\n * WARNING:\n * - Don't remove error codes\n * - Don't change or reorder error codes.\n *\n * Good naming conventions:\n * - Prefixing common errors — e.g. under the same package — can be a good way to namespace them. E.g. All codec-related errors start with `SOLANA_ERROR__CODECS__`.\n * - Use consistent names — e.g. choose `PDA` or `PROGRAM_DERIVED_ADDRESS` and stick with it. Ensure your names are consistent with existing error codes. The decision might have been made for you.\n * - Recommended prefixes and suffixes:\n * - `MALFORMED_`: Some input was not constructed properly. E.g. `MALFORMED_BASE58_ENCODED_ADDRESS`.\n * - `INVALID_`: Some input is invalid (other than because it was MALFORMED). E.g. `INVALID_NUMBER_OF_BYTES`.\n * - `EXPECTED_`: Some input was different than expected, no need to specify the \"GOT\" part unless necessary. E.g. `EXPECTED_DECODED_ACCOUNT`.\n * - `_CANNOT_`: Some operation cannot be performed or some input cannot be used due to some condition. E.g. `CANNOT_DECODE_EMPTY_BYTE_ARRAY` or `PDA_CANNOT_END_WITH_PDA_MARKER`.\n * - `_MUST_BE_`: Some condition must be true. E.g. `NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE`.\n * - `_FAILED_TO_`: Tried to perform some operation and failed. E.g. `FAILED_TO_DECODE_ACCOUNT`.\n * - `_NOT_FOUND`: Some operation lead to not finding something. E.g. `ACCOUNT_NOT_FOUND`.\n * - `_OUT_OF_RANGE`: Some value is out of range. E.g. `ENUM_DISCRIMINATOR_OUT_OF_RANGE`.\n * - `_EXCEEDED`: Some limit was exceeded. E.g. `PDA_MAX_SEED_LENGTH_EXCEEDED`.\n * - `_MISMATCH`: Some elements do not match. E.g. `ENCODER_DECODER_FIXED_SIZE_MISMATCH`.\n * - `_MISSING`: Some required input is missing. E.g. `TRANSACTION_FEE_PAYER_MISSING`.\n * - `_UNIMPLEMENTED`: Some required component is not available in the environment. E.g. `SUBTLE_CRYPTO_VERIFY_FUNCTION_UNIMPLEMENTED`.\n */\nexport const SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED = 1;\nexport const SOLANA_ERROR__INVALID_NONCE = 2;\nexport const SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND = 3;\nexport const SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE = 4;\nexport const SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH = 5;\nexport const SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE = 6;\nexport const SOLANA_ERROR__MALFORMED_BIGINT_STRING = 7;\nexport const SOLANA_ERROR__MALFORMED_NUMBER_STRING = 8;\nexport const SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE = 9;\n\n// JSON-RPC-related errors.\n// Reserve error codes in the range [-32768, -32000]\n// Keep in sync with https://github.com/anza-xyz/agave/blob/master/rpc-client-api/src/custom_error.rs\nexport const SOLANA_ERROR__JSON_RPC__PARSE_ERROR = -32700;\nexport const SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR = -32603;\nexport const SOLANA_ERROR__JSON_RPC__INVALID_PARAMS = -32602;\nexport const SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND = -32601;\nexport const SOLANA_ERROR__JSON_RPC__INVALID_REQUEST = -32600;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED = -32016;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION = -32015;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET = -32014;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH = -32013;\nexport const SOLANA_ERROR__JSON_RPC__SCAN_ERROR = -32012;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE = -32011;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX = -32010;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED = -32009;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT = -32008;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED = -32007;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE = -32006;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY = -32005;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE = -32004;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE = -32003;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE = -32002;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP = -32001;\n\n// Addresses-related errors.\n// Reserve error codes in the range [2800000-2800999].\nexport const SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH = 2800000;\nexport const SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE = 2800001;\nexport const SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS = 2800002;\nexport const SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY = 2800003;\nexport const SOLANA_ERROR__ADDRESSES__MALFORMED_PDA = 2800004;\nexport const SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE = 2800005;\nexport const SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED = 2800006;\nexport const SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED = 2800007;\nexport const SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE = 2800008;\nexport const SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED = 2800009;\nexport const SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER = 2800010;\n\n// Account-related errors.\n// Reserve error codes in the range [3230000-3230999].\nexport const SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND = 3230000;\nexport const SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND = 32300001;\nexport const SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT = 3230002;\nexport const SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT = 3230003;\nexport const SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED = 3230004;\n\n// Subtle-Crypto-related errors.\n// Reserve error codes in the range [3610000-3610999].\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT = 3610000;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED = 3610001;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED = 3610002;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED = 3610003;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED = 3610004;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED = 3610005;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED = 3610006;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY = 3610007;\n\n// Crypto-related errors.\n// Reserve error codes in the range [3611000-3611050].\nexport const SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED = 3611000;\n\n// Key-related errors.\n// Reserve error codes in the range [3704000-3704999].\nexport const SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH = 3704000;\nexport const SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH = 3704001;\nexport const SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH = 3704002;\nexport const SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE = 3704003;\nexport const SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY = 3704004;\n\n// Instruction-related errors.\n// Reserve error codes in the range [4128000-4128999].\nexport const SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS = 4128000;\nexport const SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA = 4128001;\nexport const SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH = 4128002;\n\n// Instruction errors.\n// Reserve error codes starting with [4615000-4615999] for the Rust enum `InstructionError`.\n// Error names here are dictated by the RPC (see ./instruction-error.ts).\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN = 4615000;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR = 4615001;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT = 4615002;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA = 4615003;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA = 4615004;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL = 4615005;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS = 4615006;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID = 4615007;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE = 4615008;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED = 4615009;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT = 4615010;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION = 4615011;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID = 4615012;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND = 4615013;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED = 4615014;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE = 4615015;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED = 4615016;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX = 4615017;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED = 4615018;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED = 4615019;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS = 4615020;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED = 4615021;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE = 4615022;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED = 4615023;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = 4615024;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC = 4615025;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM = 4615026;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR = 4615027;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED = 4615028;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE = 4615029;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT = 4615030;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID = 4615031;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH = 4615032;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT = 4615033;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED = 4615034;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED = 4615035;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS = 4615036;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC = 4615037;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED = 4615038;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION = 4615039;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE = 4615040;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE = 4615041;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE = 4615042;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE = 4615043;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY = 4615044;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR = 4615045;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT = 4615046;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER = 4615047;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW = 4615048;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR = 4615049;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER = 4615050;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED = 4615051;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED = 4615052;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED = 4615053;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS = 4615054;\n\n// Signer-related errors.\n// Reserve error codes in the range [5508000-5508999].\nexport const SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS = 5508000;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER = 5508001;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER = 5508002;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER = 5508003;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER = 5508004;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER = 5508005;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER = 5508006;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER = 5508007;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER = 5508008;\nexport const SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS = 5508009;\nexport const SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING = 5508010;\nexport const SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED = 5508011;\n\n// Transaction-related errors.\n// Reserve error codes in the range [5663000-5663999].\nexport const SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES = 5663000;\nexport const SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE = 5663001;\nexport const SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME = 5663002;\nexport const SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME = 5663003;\nexport const SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE = 5663004;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING = 5663005;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE = 5663006;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND = 5663007;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING = 5663008;\nexport const SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING = 5663009;\nexport const SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING = 5663010;\nexport const SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING = 5663011;\nexport const SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING = 5663012;\nexport const SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING = 5663013;\nexport const SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE = 5663014;\nexport const SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION = 5663015;\nexport const SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES = 5663016;\nexport const SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH = 5663017;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT = 5663018;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT = 5663019;\n\n// Transaction errors.\n// Reserve error codes starting with [7050000-7050999] for the Rust enum `TransactionError`.\n// Error names here are dictated by the RPC (see ./transaction-error.ts).\nexport const SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN = 7050000;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE = 7050001;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE = 7050002;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND = 7050003;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND = 7050004;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE = 7050005;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE = 7050006;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED = 7050007;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND = 7050008;\n// `InstructionError` intentionally omitted.\nexport const SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP = 7050009;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE = 7050010;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX = 7050011;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE = 7050012;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION = 7050013;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE = 7050014;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE = 7050015;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = 7050016;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT = 7050017;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION = 7050018;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT = 7050019;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT = 7050020;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT = 7050021;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS = 7050022;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND = 7050023;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER = 7050024;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA = 7050025;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX = 7050026;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT = 7050027;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT = 7050028;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT = 7050029;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION = 7050030;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT = 7050031;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED = 7050032;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT = 7050033;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED = 7050034;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED = 7050035;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION = 7050036;\n\n// Codec-related errors.\n// Reserve error codes in the range [8078000-8078999].\nexport const SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY = 8078000;\nexport const SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH = 8078001;\nexport const SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH = 8078002;\nexport const SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH = 8078003;\nexport const SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH = 8078004;\nexport const SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH = 8078005;\nexport const SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH = 8078006;\nexport const SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS = 8078007;\nexport const SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE = 8078008;\nexport const SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT = 8078009;\nexport const SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT = 8078010;\nexport const SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE = 8078011;\nexport const SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE = 8078012;\nexport const SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH = 8078013;\nexport const SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE = 8078014;\nexport const SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT = 8078015;\nexport const SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE = 8078016;\nexport const SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE = 8078017;\nexport const SOLANA_ERROR__CODECS__INVALID_CONSTANT = 8078018;\nexport const SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE = 8078019;\nexport const SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL = 8078020;\nexport const SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES = 8078021;\nexport const SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS = 8078022;\n\n// RPC-related errors.\n// Reserve error codes in the range [8100000-8100999].\nexport const SOLANA_ERROR__RPC__INTEGER_OVERFLOW = 8100000;\nexport const SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN = 8100001;\nexport const SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR = 8100002;\nexport const SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD = 8100003;\n\n// RPC-Subscriptions-related errors.\n// Reserve error codes in the range [8190000-8190999].\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN = 8190000;\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID = 8190001;\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED = 8190002;\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED = 8190003;\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT = 8190004;\n\n// Invariant violation errors.\n// Reserve error codes in the range [9900000-9900999].\n// These errors should only be thrown when there is a bug with the\n// library itself and should, in theory, never reach the end user.\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING = 9900000;\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE = 9900001;\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING = 9900002;\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE = 9900003;\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED = 9900004;\n\n/**\n * A union of every Solana error code\n *\n * You might be wondering why this is not a TypeScript enum or const enum.\n *\n * One of the goals of this library is to enable people to use some or none of it without having to\n * bundle all of it.\n *\n * If we made the set of error codes an enum then anyone who imported it (even if to only use a\n * single error code) would be forced to bundle every code and its label.\n *\n * Const enums appear to solve this problem by letting the compiler inline only the codes that are\n * actually used. Unfortunately exporting ambient (const) enums from a library like `@solana/errors`\n * is not safe, for a variety of reasons covered here: https://stackoverflow.com/a/28818850\n */\nexport type SolanaErrorCode =\n | typeof SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND\n | typeof SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED\n | typeof SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT\n | typeof SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT\n | typeof SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND\n | typeof SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED\n | typeof SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS\n | typeof SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH\n | typeof SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY\n | typeof SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE\n | typeof SOLANA_ERROR__ADDRESSES__MALFORMED_PDA\n | typeof SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED\n | typeof SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED\n | typeof SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE\n | typeof SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER\n | typeof SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE\n | typeof SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED\n | typeof SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY\n | typeof SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS\n | typeof SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL\n | typeof SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH\n | typeof SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH\n | typeof SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH\n | typeof SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH\n | typeof SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH\n | typeof SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH\n | typeof SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE\n | typeof SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH\n | typeof SOLANA_ERROR__CODECS__INVALID_CONSTANT\n | typeof SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT\n | typeof SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT\n | typeof SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT\n | typeof SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS\n | typeof SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE\n | typeof SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES\n | typeof SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS\n | typeof SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA\n | typeof SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR\n | typeof SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH\n | typeof SOLANA_ERROR__INVALID_NONCE\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE\n | typeof SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR\n | typeof SOLANA_ERROR__JSON_RPC__INVALID_PARAMS\n | typeof SOLANA_ERROR__JSON_RPC__INVALID_REQUEST\n | typeof SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND\n | typeof SOLANA_ERROR__JSON_RPC__PARSE_ERROR\n | typeof SOLANA_ERROR__JSON_RPC__SCAN_ERROR\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION\n | typeof SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH\n | typeof SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH\n | typeof SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH\n | typeof SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY\n | typeof SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE\n | typeof SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE\n | typeof SOLANA_ERROR__MALFORMED_BIGINT_STRING\n | typeof SOLANA_ERROR__MALFORMED_NUMBER_STRING\n | typeof SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND\n | typeof SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD\n | typeof SOLANA_ERROR__RPC__INTEGER_OVERFLOW\n | typeof SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR\n | typeof SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID\n | typeof SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER\n | typeof SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS\n | typeof SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING\n | typeof SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE\n | typeof SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION\n | typeof SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES\n | typeof SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME\n | typeof SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE\n | typeof SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES\n | typeof SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE\n | typeof SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH\n | typeof SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT;\n\n/**\n * Errors of this type are understood to have an optional `SolanaError` nested inside as `cause`.\n */\nexport type SolanaErrorCodeWithCause = typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE;\n","import {\n SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED,\n SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT,\n SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT,\n SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND,\n SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED,\n SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS,\n SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY,\n SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE,\n SOLANA_ERROR__ADDRESSES__MALFORMED_PDA,\n SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE,\n SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER,\n SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED,\n SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY,\n SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS,\n SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH,\n SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH,\n SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH,\n SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE,\n SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__INVALID_CONSTANT,\n SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT,\n SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT,\n SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT,\n SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS,\n SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE,\n SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES,\n SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE,\n SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS,\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA,\n SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT,\n SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW,\n SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS,\n SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH,\n SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX,\n SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND,\n SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER,\n SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE,\n SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY,\n SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID,\n SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT,\n SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE,\n SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID,\n SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS,\n SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION,\n SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE,\n SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE,\n SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE,\n SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE,\n SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED,\n SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR,\n SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH,\n SOLANA_ERROR__INVALID_NONCE,\n SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING,\n SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED,\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE,\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING,\n SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE,\n SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR,\n SOLANA_ERROR__JSON_RPC__INVALID_PARAMS,\n SOLANA_ERROR__JSON_RPC__INVALID_REQUEST,\n SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND,\n SOLANA_ERROR__JSON_RPC__PARSE_ERROR,\n SOLANA_ERROR__JSON_RPC__SCAN_ERROR,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION,\n SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY,\n SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE,\n SOLANA_ERROR__MALFORMED_BIGINT_STRING,\n SOLANA_ERROR__MALFORMED_NUMBER_STRING,\n SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD,\n SOLANA_ERROR__RPC__INTEGER_OVERFLOW,\n SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR,\n SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID,\n SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS,\n SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER,\n SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS,\n SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING,\n SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY,\n SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT,\n SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING,\n SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION,\n SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES,\n SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME,\n SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT,\n SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT,\n SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING,\n SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING,\n SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE,\n SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING,\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES,\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE,\n SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH,\n SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING,\n SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING,\n SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE,\n SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE,\n SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED,\n SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP,\n SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE,\n SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION,\n SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE,\n SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT,\n SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED,\n SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE,\n SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED,\n SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED,\n SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE,\n SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE,\n SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS,\n SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION,\n SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN,\n SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT,\n SolanaErrorCode,\n} from './codes';\n\n/**\n * To add a new error, follow the instructions at\n * https://github.com/solana-labs/solana-web3.js/tree/master/packages/errors#adding-a-new-error\n *\n * WARNING:\n * - Don't change the meaning of an error message.\n */\nexport const SolanaErrorMessages: Readonly<{\n // This type makes this data structure exhaustive with respect to `SolanaErrorCode`.\n // TypeScript will fail to build this project if add an error code without a message.\n [P in SolanaErrorCode]: string;\n}> = {\n [SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND]: 'Account not found at address: $address',\n [SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED]:\n 'Not all accounts were decoded. Encoded accounts found at addresses: $addresses.',\n [SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT]: 'Expected decoded account at address: $address',\n [SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT]: 'Failed to decode account data at address: $address',\n [SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND]: 'Accounts not found at addresses: $addresses',\n [SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED]:\n 'Unable to find a viable program address bump seed.',\n [SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS]: '$putativeAddress is not a base58-encoded address.',\n [SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH]:\n 'Expected base58 encoded address to decode to a byte array of length 32. Actual length: $actualLength.',\n [SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY]: 'The `CryptoKey` must be an `Ed25519` public key.',\n [SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE]: 'Invalid seeds; point must fall off the Ed25519 curve.',\n [SOLANA_ERROR__ADDRESSES__MALFORMED_PDA]:\n 'Expected given program derived address to have the following format: [Address, ProgramDerivedAddressBump].',\n [SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED]:\n 'A maximum of $maxSeeds seeds, including the bump seed, may be supplied when creating an address. Received: $actual.',\n [SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED]:\n 'The seed at index $index with length $actual exceeds the maximum length of $maxSeedLength bytes.',\n [SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE]:\n 'Expected program derived address bump to be in the range [0, 255], got: $bump.',\n [SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER]: 'Program address cannot end with PDA marker.',\n [SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE]:\n 'Expected base58-encoded address string of length in the range [32, 44]. Actual length: $actualLength.',\n [SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE]:\n 'Expected base58-encoded blockash string of length in the range [32, 44]. Actual length: $actualLength.',\n [SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED]:\n 'The network has progressed past the last block for which this transaction could have been committed.',\n [SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY]:\n 'Codec [$codecDescription] cannot decode empty byte arrays.',\n [SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS]:\n 'Enum codec cannot use lexical values [$stringValues] as discriminators. Either remove all lexical values or set `useValuesAsDiscriminators` to `false`.',\n [SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL]:\n 'Sentinel [$hexSentinel] must not be present in encoded bytes [$hexEncodedBytes].',\n [SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH]:\n 'Encoder and decoder must have the same fixed size, got [$encoderFixedSize] and [$decoderFixedSize].',\n [SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH]:\n 'Encoder and decoder must have the same max size, got [$encoderMaxSize] and [$decoderMaxSize].',\n [SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH]:\n 'Encoder and decoder must either both be fixed-size or variable-size.',\n [SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE]:\n 'Enum discriminator out of range. Expected a number in [$formattedValidDiscriminators], got $discriminator.',\n [SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH]: 'Expected a fixed-size codec, got a variable-size one.',\n [SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH]:\n 'Codec [$codecDescription] expected a positive byte length, got $bytesLength.',\n [SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH]: 'Expected a variable-size codec, got a fixed-size one.',\n [SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE]:\n 'Codec [$codecDescription] expected zero-value [$hexZeroValue] to have the same size as the provided fixed-size item [$expectedSize bytes].',\n [SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH]:\n 'Codec [$codecDescription] expected $expected bytes, got $bytesLength.',\n [SOLANA_ERROR__CODECS__INVALID_CONSTANT]:\n 'Expected byte array constant [$hexConstant] to be present in data [$hexData] at offset [$offset].',\n [SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT]:\n 'Invalid discriminated union variant. Expected one of [$variants], got $value.',\n [SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT]:\n 'Invalid enum variant. Expected one of [$stringValues] or a number in [$formattedNumericalValues], got $variant.',\n [SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT]:\n 'Invalid literal union variant. Expected one of [$variants], got $value.',\n [SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS]:\n 'Expected [$codecDescription] to have $expected items, got $actual.',\n [SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE]: 'Invalid value $value for base $base with alphabet $alphabet.',\n [SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE]:\n 'Literal union discriminator out of range. Expected a number between $minRange and $maxRange, got $discriminator.',\n [SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE]:\n 'Codec [$codecDescription] expected number to be in the range [$min, $max], got $value.',\n [SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE]:\n 'Codec [$codecDescription] expected offset to be in the range [0, $bytesLength], got $offset.',\n [SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES]:\n 'Expected sentinel [$hexSentinel] to be present in decoded bytes [$hexDecodedBytes].',\n [SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE]:\n 'Union variant out of range. Expected an index between $minRange and $maxRange, got $variant.',\n [SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED]: 'No random values implementation could be found.',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED]: 'instruction requires an uninitialized account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED]:\n 'instruction tries to borrow reference for an account which is already borrowed',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING]:\n 'instruction left account with an outstanding borrowed reference',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED]:\n \"program other than the account's owner changed the size of the account data\",\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL]: 'account data too small for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE]: 'instruction expected an executable account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT]:\n 'An account does not have enough lamports to be rent-exempt',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW]: 'Program arithmetic overflowed',\n [SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR]: 'Failed to serialize or deserialize account data: $encodedData',\n [SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS]:\n 'Builtin programs must consume compute units',\n [SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH]: 'Cross-program invocation call depth too deep',\n [SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED]: 'Computational budget exceeded',\n [SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM]: 'custom program error: #$code',\n [SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX]: 'instruction contains duplicate accounts',\n [SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC]:\n 'instruction modifications of multiply-passed account differ',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT]: 'executable accounts must be rent exempt',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED]: 'instruction changed executable accounts data',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE]:\n 'instruction changed the balance of an executable account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED]: 'instruction changed executable bit of an account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED]:\n 'instruction modified data of an account it does not own',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND]:\n 'instruction spent from the balance of an account it does not own',\n [SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR]: 'generic instruction error',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER]: 'Provided owner is not allowed',\n [SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE]: 'Account is immutable',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY]: 'Incorrect authority provided',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID]: 'incorrect program id for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS]: 'insufficient funds for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA]: 'invalid account data for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER]: 'Invalid account owner',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT]: 'invalid program argument',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR]: 'program returned invalid error code',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA]: 'invalid instruction data',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC]: 'Failed to reallocate account data',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS]: 'Provided seeds do not result in a valid address',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED]:\n 'Accounts data allocations exceeded the maximum allowed per transaction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED]: 'Max accounts exceeded',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED]: 'Max instruction trace length exceeded',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED]:\n 'Length of the seed is too long for address generation',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT]: 'An account required by the instruction is missing',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE]: 'missing required signature for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID]:\n 'instruction illegally modified the program id of an account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS]: 'insufficient account keys for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION]:\n 'Cross-program invocation with unauthorized signer or writable account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE]:\n 'Failed to create program execution environment',\n [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE]: 'Program failed to compile',\n [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE]: 'Program failed to complete',\n [SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED]: 'instruction modified data of a read-only account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE]:\n 'instruction changed the balance of a read-only account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED]:\n 'Cross-program invocation reentrancy not allowed for this instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED]: 'instruction modified rent epoch of an account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION]:\n 'sum of account balances before and after instruction do not match',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT]: 'instruction requires an initialized account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN]: '',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID]: 'Unsupported program id',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR]: 'Unsupported sysvar',\n [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS]: 'The instruction does not have any accounts.',\n [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA]: 'The instruction does not have any data.',\n [SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH]:\n 'Expected instruction to have progress address $expectedProgramAddress, got $actualProgramAddress.',\n [SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH]:\n 'Expected base58 encoded blockhash to decode to a byte array of length 32. Actual length: $actualLength.',\n [SOLANA_ERROR__INVALID_NONCE]:\n 'The nonce `$expectedNonceValue` is no longer valid. It has advanced to `$actualNonceValue`',\n [SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING]:\n 'Invariant violation: Found no abortable iterable cache entry for key `$cacheKey`. It ' +\n 'should be impossible to hit this error; please file an issue at ' +\n 'https://sola.na/web3invariant',\n [SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED]:\n 'Invariant violation: This data publisher does not publish to the channel named ' +\n '`$channelName`. Supported channels include $supportedChannelNames.',\n [SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE]:\n 'Invariant violation: WebSocket message iterator state is corrupt; iterated without first ' +\n 'resolving existing message promise. It should be impossible to hit this error; please ' +\n 'file an issue at https://sola.na/web3invariant',\n [SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING]:\n 'Invariant violation: WebSocket message iterator is missing state storage. It should be ' +\n 'impossible to hit this error; please file an issue at https://sola.na/web3invariant',\n [SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE]:\n 'Invariant violation: Switch statement non-exhaustive. Received unexpected value ' +\n '`$unexpectedValue`. It should be impossible to hit this error; please file an issue at ' +\n 'https://sola.na/web3invariant',\n [SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR]: 'JSON-RPC error: Internal JSON-RPC error ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__INVALID_PARAMS]: 'JSON-RPC error: Invalid method parameter(s) ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__INVALID_REQUEST]:\n 'JSON-RPC error: The JSON sent is not a valid `Request` object ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND]:\n 'JSON-RPC error: The method does not exist / is not available ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__PARSE_ERROR]:\n 'JSON-RPC error: An error occurred on the server while parsing the JSON text ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__SCAN_ERROR]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED]: 'Minimum context slot has not been reached',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY]: 'Node is unhealthy; behind by $numSlotsBehind slots',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT]: 'No snapshot',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE]: 'Transaction simulation failed',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE]:\n 'Transaction history is not available from this node',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH]: 'Transaction signature length mismatch',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE]:\n 'Transaction signature verification failure',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION]: '$__serverMessage',\n [SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH]: 'Key pair bytes must be of length 64, got $byteLength.',\n [SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH]:\n 'Expected private key bytes with length 32. Actual length: $actualLength.',\n [SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH]:\n 'Expected base58-encoded signature to decode to a byte array of length 64. Actual length: $actualLength.',\n [SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY]:\n 'The provided private key does not match the provided public key.',\n [SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE]:\n 'Expected base58-encoded signature string of length in the range [64, 88]. Actual length: $actualLength.',\n [SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE]: 'Lamports value must be in the range [0, 2e64-1]',\n [SOLANA_ERROR__MALFORMED_BIGINT_STRING]: '`$value` cannot be parsed as a `BigInt`',\n [SOLANA_ERROR__MALFORMED_NUMBER_STRING]: '`$value` cannot be parsed as a `Number`',\n [SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND]: 'No nonce account could be found at address `$nonceAccountAddress`',\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN]:\n \"The notification name must end in 'Notifications' and the API must supply a \" +\n \"subscription plan creator function for the notification '$notificationName'.\",\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED]:\n 'WebSocket was closed before payload could be added to the send buffer',\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED]: 'WebSocket connection closed',\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT]: 'WebSocket failed to connect',\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID]:\n 'Failed to obtain a subscription id from the server',\n [SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD]: 'Could not find an API plan for RPC method: `$method`',\n [SOLANA_ERROR__RPC__INTEGER_OVERFLOW]:\n 'The $argumentLabel argument to the `$methodName` RPC method$optionalPathLabel was ' +\n '`$value`. This number is unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.',\n [SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR]: 'HTTP error ($statusCode): $message',\n [SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN]:\n 'HTTP header(s) forbidden: $headers. Learn more at ' +\n 'https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name.',\n [SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS]:\n 'Multiple distinct signers were identified for address `$address`. Please ensure that ' +\n 'you are using the same signer instance for each address.',\n [SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER]:\n 'The provided value does not implement the `KeyPairSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER]:\n 'The provided value does not implement the `MessageModifyingSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER]:\n 'The provided value does not implement the `MessagePartialSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER]:\n 'The provided value does not implement any of the `MessageSigner` interfaces',\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER]:\n 'The provided value does not implement the `TransactionModifyingSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER]:\n 'The provided value does not implement the `TransactionPartialSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER]:\n 'The provided value does not implement the `TransactionSendingSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER]:\n 'The provided value does not implement any of the `TransactionSigner` interfaces',\n [SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS]:\n 'More than one `TransactionSendingSigner` was identified.',\n [SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING]:\n 'No `TransactionSendingSigner` was identified. Please provide a valid ' +\n '`ITransactionWithSingleSendingSigner` transaction.',\n [SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED]:\n 'Wallet account signers do not support signing multiple messages/transactions in a single operation',\n [SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY]: 'Cannot export a non-extractable key.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED]: 'No digest implementation could be found.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT]:\n 'Cryptographic operations are only allowed in secure browser contexts. Read more ' +\n 'here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED]:\n 'This runtime does not support the generation of Ed25519 key pairs.\\n\\nInstall ' +\n '@solana/webcrypto-ed25519-polyfill and call its `install` function before generating keys in ' +\n 'environments that do not support Ed25519.\\n\\nFor a list of runtimes that ' +\n 'currently support Ed25519 operations, visit ' +\n 'https://github.com/WICG/webcrypto-secure-curves/issues/20.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED]:\n 'No signature verification implementation could be found.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED]: 'No key generation implementation could be found.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED]: 'No signing implementation could be found.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED]: 'No key export implementation could be found.',\n [SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE]:\n 'Timestamp value must be in the range [-(2n ** 63n), (2n ** 63n) - 1]. `$value` given',\n [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING]:\n 'Transaction processing left an account with an outstanding borrowed reference',\n [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE]: 'Account in use',\n [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE]: 'Account loaded twice',\n [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND]:\n 'Attempt to debit an account but found no record of a prior credit.',\n [SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND]:\n \"Transaction loads an address table account that doesn't exist\",\n [SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED]: 'This transaction has already been processed',\n [SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND]: 'Blockhash not found',\n [SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP]: 'Loader call chain is too deep',\n [SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE]:\n 'Transactions are currently disabled due to cluster maintenance',\n [SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION]:\n 'Transaction contains a duplicate instruction ($index) that is not allowed',\n [SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE]: 'Insufficient funds for fee',\n [SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT]:\n 'Transaction results in an account ($accountIndex) with insufficient funds for rent',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE]: 'This account may not be used to pay transaction fees',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX]: 'Transaction contains an invalid account reference',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA]:\n 'Transaction loads an address table account with invalid data',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX]:\n 'Transaction address table lookup uses an invalid index',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER]:\n 'Transaction loads an address table account with an invalid owner',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT]:\n 'LoadedAccountsDataSizeLimit set for transaction must be greater than 0.',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION]:\n 'This program may not be used for executing instructions',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT]:\n 'Transaction leaves an account with a lower balance than rent-exempt minimum',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT]:\n 'Transaction loads a writable account that cannot be written',\n [SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED]:\n 'Transaction exceeded max loaded accounts data size cap',\n [SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE]:\n 'Transaction requires a fee but has no signature present',\n [SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND]: 'Attempt to load a program that does not exist',\n [SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED]:\n 'Execution of the program referenced by account at index $accountIndex is temporarily restricted.',\n [SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED]: 'ResanitizationNeeded',\n [SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE]: 'Transaction failed to sanitize accounts offsets correctly',\n [SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE]: 'Transaction did not pass signature verification',\n [SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS]: 'Transaction locked too many accounts',\n [SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION]:\n 'Sum of account balances before and after transaction do not match',\n [SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN]: 'The transaction failed with the error `$errorName`',\n [SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION]: 'Transaction version is unsupported',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT]:\n 'Transaction would exceed account data limit within the block',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT]:\n 'Transaction would exceed total account data limit',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT]:\n 'Transaction would exceed max account limit within the block',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT]:\n 'Transaction would exceed max Block Cost Limit',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT]: 'Transaction would exceed max Vote Cost Limit',\n [SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION]:\n 'Attempted to sign a transaction with an address that is not a signer for it',\n [SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING]: 'Transaction is missing an address at index: $index.',\n [SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES]:\n 'Transaction has no expected signers therefore it cannot be encoded',\n [SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME]: 'Transaction does not have a blockhash lifetime',\n [SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME]: 'Transaction is not a durable nonce transaction',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING]:\n 'Contents of these address lookup tables unknown: $lookupTableAddresses',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE]:\n 'Lookup of address at index $highestRequestedIndex failed for lookup table ' +\n '`$lookupTableAddress`. Highest known index is $highestKnownIndex. The lookup table ' +\n 'may have been extended since its contents were retrieved',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING]: 'No fee payer set in CompiledTransaction',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND]:\n 'Could not find program address at index $index',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT]:\n 'Failed to estimate the compute unit consumption for this transaction message. This is ' +\n 'likely because simulating the transaction failed. Inspect the `cause` property of this ' +\n 'error to learn more',\n [SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT]:\n 'Transaction failed when it was simulated in order to estimate the compute unit consumption. ' +\n 'The compute unit estimate provided is for a transaction that failed when simulated and may not ' +\n 'be representative of the compute units this transaction would consume if successful. Inspect the ' +\n '`cause` property of this error to learn more',\n [SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING]: 'Transaction is missing a fee payer.',\n [SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING]:\n \"Could not determine this transaction's signature. Make sure that the transaction has \" +\n 'been signed by its fee payer.',\n [SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE]:\n 'Transaction first instruction is not advance nonce account instruction.',\n [SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING]:\n 'Transaction with no instructions cannot be durable nonce transaction.',\n [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES]:\n 'This transaction includes an address (`$programAddress`) which is both ' +\n 'invoked and set as the fee payer. Program addresses may not pay fees',\n [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE]:\n 'This transaction includes an address (`$programAddress`) which is both invoked and ' +\n 'marked writable. Program addresses may not be writable',\n [SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH]:\n 'The transaction message expected the transaction to have $signerAddressesLength signatures, got $signaturesLength.',\n [SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING]: 'Transaction is missing signatures for addresses: $addresses.',\n [SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE]:\n 'Transaction version must be in the range [0, 127]. `$actualVersion` given',\n};\n","import { SolanaErrorCode } from './codes';\nimport { encodeContextObject } from './context';\nimport { SolanaErrorMessages } from './messages';\n\nconst enum StateType {\n EscapeSequence,\n Text,\n Variable,\n}\ntype State = Readonly<{\n [START_INDEX]: number;\n [TYPE]: StateType;\n}>;\nconst START_INDEX = 'i';\nconst TYPE = 't';\n\nexport function getHumanReadableErrorMessage<TErrorCode extends SolanaErrorCode>(\n code: TErrorCode,\n context: object = {},\n): string {\n const messageFormatString = SolanaErrorMessages[code];\n if (messageFormatString.length === 0) {\n return '';\n }\n let state: State;\n function commitStateUpTo(endIndex?: number) {\n if (state[TYPE] === StateType.Variable) {\n const variableName = messageFormatString.slice(state[START_INDEX] + 1, endIndex);\n\n fragments.push(\n variableName in context ? `${context[variableName as keyof typeof context]}` : `$${variableName}`,\n );\n } else if (state[TYPE] === StateType.Text) {\n fragments.push(messageFormatString.slice(state[START_INDEX], endIndex));\n }\n }\n const fragments: string[] = [];\n messageFormatString.split('').forEach((char, ii) => {\n if (ii === 0) {\n state = {\n [START_INDEX]: 0,\n [TYPE]:\n messageFormatString[0] === '\\\\'\n ? StateType.EscapeSequence\n : messageFormatString[0] === '$'\n ? StateType.Variable\n : StateType.Text,\n };\n return;\n }\n let nextState;\n switch (state[TYPE]) {\n case StateType.EscapeSequence:\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.Text };\n break;\n case StateType.Text:\n if (char === '\\\\') {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.EscapeSequence };\n } else if (char === '$') {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.Variable };\n }\n break;\n case StateType.Variable:\n if (char === '\\\\') {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.EscapeSequence };\n } else if (char === '$') {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.Variable };\n } else if (!char.match(/\\w/)) {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.Text };\n }\n break;\n }\n if (nextState) {\n if (state !== nextState) {\n commitStateUpTo(ii);\n }\n state = nextState;\n }\n });\n commitStateUpTo();\n return fragments.join('');\n}\n\nexport function getErrorMessage<TErrorCode extends SolanaErrorCode>(\n code: TErrorCode,\n context: Record<string, unknown> = {},\n): string {\n if (process.env.NODE_ENV !== \"production\") {\n return getHumanReadableErrorMessage(code, context);\n } else {\n let decodingAdviceMessage = `Solana error #${code}; Decode this error by running \\`npx @solana/errors decode -- ${code}`;\n if (Object.keys(context).length) {\n /**\n * DANGER: Be sure that the shell command is escaped in such a way that makes it\n * impossible for someone to craft malicious context values that would result in\n * an exploit against anyone who bindly copy/pastes it into their terminal.\n */\n decodingAdviceMessage += ` '${encodeContextObject(context)}'`;\n }\n return `${decodingAdviceMessage}\\``;\n }\n}\n","import { SolanaErrorCode, SolanaErrorCodeWithCause } from './codes';\nimport { SolanaErrorContext } from './context';\nimport { getErrorMessage } from './message-formatter';\n\nexport function isSolanaError<TErrorCode extends SolanaErrorCode>(\n e: unknown,\n code?: TErrorCode,\n): e is SolanaError<TErrorCode> {\n const isSolanaError = e instanceof Error && e.name === 'SolanaError';\n if (isSolanaError) {\n if (code !== undefined) {\n return (e as SolanaError<TErrorCode>).context.__code === code;\n }\n return true;\n }\n return false;\n}\n\ntype SolanaErrorCodedContext = Readonly<{\n [P in SolanaErrorCode]: (SolanaErrorContext[P] extends undefined ? object : SolanaErrorContext[P]) & {\n __code: P;\n };\n}>;\n\nexport class SolanaError<TErrorCode extends SolanaErrorCode = SolanaErrorCode> extends Error {\n readonly cause?: TErrorCode extends SolanaErrorCodeWithCause ? SolanaError : unknown = this.cause;\n readonly context: SolanaErrorCodedContext[TErrorCode];\n constructor(\n ...[code, contextAndErrorOptions]: SolanaErrorContext[TErrorCode] extends undefined\n ? [code: TErrorCode, errorOptions?: ErrorOptions | undefined]\n : [code: TErrorCode, contextAndErrorOptions: SolanaErrorContext[TErrorCode] & (ErrorOptions | undefined)]\n ) {\n let context: SolanaErrorContext[TErrorCode] | undefined;\n let errorOptions: ErrorOptions | undefined;\n if (contextAndErrorOptions) {\n // If the `ErrorOptions` type ever changes, update this code.\n const { cause, ...contextRest } = contextAndErrorOptions;\n if (cause) {\n errorOptions = { cause };\n }\n if (Object.keys(contextRest).length > 0) {\n context = contextRest as SolanaErrorContext[TErrorCode];\n }\n }\n const message = getErrorMessage(code, context);\n super(message, errorOptions);\n this.context = {\n __code: code,\n ...context,\n } as SolanaErrorCodedContext[TErrorCode];\n // This is necessary so that `isSolanaError()` can identify a `SolanaError` without having\n // to import the class for use in an `instanceof` check.\n this.name = 'SolanaError';\n }\n}\n","export function safeCaptureStackTrace(...args: Parameters<typeof Error.captureStackTrace>): void {\n if ('captureStackTrace' in Error && typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(...args);\n }\n}\n","import { SolanaErrorCode } from './codes';\nimport { SolanaErrorContext } from './context';\nimport { SolanaError } from './error';\nimport { safeCaptureStackTrace } from './stack-trace';\n\ntype Config = Readonly<{\n /**\n * Oh, hello. You might wonder what in tarnation is going on here. Allow us to explain.\n *\n * One of the goals of `@solana/errors` is to allow errors that are not interesting to your\n * application to shake out of your app bundle in production. This means that we must never\n * export large hardcoded maps of error codes/messages.\n *\n * Unfortunately, where instruction and transaction errors from the RPC are concerned, we have\n * no choice but to keep a map between the RPC `rpcEnumError` enum name and its corresponding\n * `SolanaError` code. In the interest of implementing that map in as few bytes of source code\n * as possible, we do the following:\n *\n * 1. Reserve a block of sequential error codes for the enum in question\n * 2. Hardcode the list of enum names in that same order\n * 3. Match the enum error name from the RPC with its index in that list, and reconstruct the\n * `SolanaError` code by adding the `errorCodeBaseOffset` to that index\n */\n errorCodeBaseOffset: number;\n getErrorContext: (\n errorCode: SolanaErrorCode,\n rpcErrorName: string,\n rpcErrorContext?: unknown,\n ) => SolanaErrorContext[SolanaErrorCode];\n orderedErrorNames: string[];\n rpcEnumError: string | { [key: string]: unknown };\n}>;\n\nexport function getSolanaErrorFromRpcError(\n { errorCodeBaseOffset, getErrorContext, orderedErrorNames, rpcEnumError }: Config,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n constructorOpt: Function,\n): SolanaError {\n let rpcErrorName;\n let rpcErrorContext;\n if (typeof rpcEnumError === 'string') {\n rpcErrorName = rpcEnumError;\n } else {\n rpcErrorName = Object.keys(rpcEnumError)[0];\n rpcErrorContext = rpcEnumError[rpcErrorName];\n }\n const codeOffset = orderedErrorNames.indexOf(rpcErrorName);\n const errorCode = (errorCodeBaseOffset + codeOffset) as SolanaErrorCode;\n const errorContext = getErrorContext(errorCode, rpcErrorName, rpcErrorContext);\n const err = new SolanaError(errorCode, errorContext);\n safeCaptureStackTrace(err, constructorOpt);\n return err;\n}\n","import {\n SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN,\n} from './codes';\nimport { SolanaError } from './error';\nimport { getSolanaErrorFromRpcError } from './rpc-enum-errors';\n\nconst ORDERED_ERROR_NAMES = [\n // Keep synced with RPC source: https://github.com/anza-xyz/agave/blob/master/sdk/program/src/instruction.rs\n // If this list ever gets too large, consider implementing a compression strategy like this:\n // https://gist.github.com/steveluscher/aaa7cbbb5433b1197983908a40860c47\n 'GenericError',\n 'InvalidArgument',\n 'InvalidInstructionData',\n 'InvalidAccountData',\n 'AccountDataTooSmall',\n 'InsufficientFunds',\n 'IncorrectProgramId',\n 'MissingRequiredSignature',\n 'AccountAlreadyInitialized',\n 'UninitializedAccount',\n 'UnbalancedInstruction',\n 'ModifiedProgramId',\n 'ExternalAccountLamportSpend',\n 'ExternalAccountDataModified',\n 'ReadonlyLamportChange',\n 'ReadonlyDataModified',\n 'DuplicateAccountIndex',\n 'ExecutableModified',\n 'RentEpochModified',\n 'NotEnoughAccountKeys',\n 'AccountDataSizeChanged',\n 'AccountNotExecutable',\n 'AccountBorrowFailed',\n 'AccountBorrowOutstanding',\n 'DuplicateAccountOutOfSync',\n 'Custom',\n 'InvalidError',\n 'ExecutableDataModified',\n 'ExecutableLamportChange',\n 'ExecutableAccountNotRentExempt',\n 'UnsupportedProgramId',\n 'CallDepth',\n 'MissingAccount',\n 'ReentrancyNotAllowed',\n 'MaxSeedLengthExceeded',\n 'InvalidSeeds',\n 'InvalidRealloc',\n 'ComputationalBudgetExceeded',\n 'PrivilegeEscalation',\n 'ProgramEnvironmentSetupFailure',\n 'ProgramFailedToComplete',\n 'ProgramFailedToCompile',\n 'Immutable',\n 'IncorrectAuthority',\n 'BorshIoError',\n 'AccountNotRentExempt',\n 'InvalidAccountOwner',\n 'ArithmeticOverflow',\n 'UnsupportedSysvar',\n 'IllegalOwner',\n 'MaxAccountsDataAllocationsExceeded',\n 'MaxAccountsExceeded',\n 'MaxInstructionTraceLengthExceeded',\n 'BuiltinProgramsMustConsumeComputeUnits',\n];\n\nexport function getSolanaErrorFromInstructionError(\n index: number,\n instructionError: string | { [key: string]: unknown },\n): SolanaError {\n return getSolanaErrorFromRpcError(\n {\n errorCodeBaseOffset: 4615001,\n getErrorContext(errorCode, rpcErrorName, rpcErrorContext) {\n if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN) {\n return {\n errorName: rpcErrorName,\n index,\n ...(rpcErrorContext !== undefined ? { instructionErrorContext: rpcErrorContext } : null),\n };\n } else if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM) {\n return {\n code: rpcErrorContext as number,\n index,\n };\n } else if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR) {\n return {\n encodedData: rpcErrorContext as string,\n index,\n };\n }\n return { index };\n },\n orderedErrorNames: ORDERED_ERROR_NAMES,\n rpcEnumError: instructionError,\n },\n getSolanaErrorFromInstructionError,\n );\n}\n","import {\n SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION,\n SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT,\n SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED,\n SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN,\n} from './codes';\nimport { SolanaError } from './error';\nimport { getSolanaErrorFromInstructionError } from './instruction-error';\nimport { getSolanaErrorFromRpcError } from './rpc-enum-errors';\n\n/**\n * How to add an error when an entry is added to the RPC `TransactionError` enum:\n *\n * 1. Follow the instructions in `./codes.ts` to add a corresponding Solana error code\n * 2. Add the `TransactionError` enum name in the same order as it appears in `./codes.ts`\n * 3. Add the new error name/code mapping to `./__tests__/transaction-error-test.ts`\n */\nconst ORDERED_ERROR_NAMES = [\n // Keep synced with RPC source: https://github.com/anza-xyz/agave/blob/master/sdk/src/transaction/error.rs\n // If this list ever gets too large, consider implementing a compression strategy like this:\n // https://gist.github.com/steveluscher/aaa7cbbb5433b1197983908a40860c47\n 'AccountInUse',\n 'AccountLoadedTwice',\n 'AccountNotFound',\n 'ProgramAccountNotFound',\n 'InsufficientFundsForFee',\n 'InvalidAccountForFee',\n 'AlreadyProcessed',\n 'BlockhashNotFound',\n // `InstructionError` intentionally omitted; delegated to `getSolanaErrorFromInstructionError`\n 'CallChainTooDeep',\n 'MissingSignatureForFee',\n 'InvalidAccountIndex',\n 'SignatureFailure',\n 'InvalidProgramForExecution',\n 'SanitizeFailure',\n 'ClusterMaintenance',\n 'AccountBorrowOutstanding',\n 'WouldExceedMaxBlockCostLimit',\n 'UnsupportedVersion',\n 'InvalidWritableAccount',\n 'WouldExceedMaxAccountCostLimit',\n 'WouldExceedAccountDataBlockLimit',\n 'TooManyAccountLocks',\n 'AddressLookupTableNotFound',\n 'InvalidAddressLookupTableOwner',\n 'InvalidAddressLookupTableData',\n 'InvalidAddressLookupTableIndex',\n 'InvalidRentPayingAccount',\n 'WouldExceedMaxVoteCostLimit',\n 'WouldExceedAccountDataTotalLimit',\n 'DuplicateInstruction',\n 'InsufficientFundsForRent',\n 'MaxLoadedAccountsDataSizeExceeded',\n 'InvalidLoadedAccountsDataSizeLimit',\n 'ResanitizationNeeded',\n 'ProgramExecutionTemporarilyRestricted',\n 'UnbalancedTransaction',\n];\n\nexport function getSolanaErrorFromTransactionError(transactionError: string | { [key: string]: unknown }): SolanaError {\n if (typeof transactionError === 'object' && 'InstructionError' in transactionError) {\n return getSolanaErrorFromInstructionError(\n ...(transactionError.InstructionError as Parameters<typeof getSolanaErrorFromInstructionError>),\n );\n }\n return getSolanaErrorFromRpcError(\n {\n errorCodeBaseOffset: 7050001,\n getErrorContext(errorCode, rpcErrorName, rpcErrorContext) {\n if (errorCode === SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN) {\n return {\n errorName: rpcErrorName,\n ...(rpcErrorContext !== undefined ? { transactionErrorContext: rpcErrorContext } : null),\n };\n } else if (errorCode === SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION) {\n return {\n index: rpcErrorContext as number,\n };\n } else if (\n errorCode === SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT ||\n errorCode === SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED\n ) {\n return {\n accountIndex: (rpcErrorContext as { account_index: number }).account_index,\n };\n }\n },\n orderedErrorNames: ORDERED_ERROR_NAMES,\n rpcEnumError: transactionError,\n },\n getSolanaErrorFromTransactionError,\n );\n}\n","import {\n SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR,\n SOLANA_ERROR__JSON_RPC__INVALID_PARAMS,\n SOLANA_ERROR__JSON_RPC__INVALID_REQUEST,\n SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND,\n SOLANA_ERROR__JSON_RPC__PARSE_ERROR,\n SOLANA_ERROR__JSON_RPC__SCAN_ERROR,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION,\n SolanaErrorCode,\n} from './codes';\nimport { SolanaErrorContext } from './context';\nimport { SolanaError } from './error';\nimport { safeCaptureStackTrace } from './stack-trace';\nimport { getSolanaErrorFromTransactionError } from './transaction-error';\n\ninterface RpcErrorResponse {\n code: number;\n data?: unknown;\n message: string;\n}\n\ntype TransactionError = string | { [key: string]: unknown };\n\n// Keep in sync with https://github.com/anza-xyz/agave/blob/master/rpc-client-api/src/response.rs\nexport interface RpcSimulateTransactionResult {\n accounts:\n | ({\n data:\n | string // LegacyBinary\n | {\n // Json\n parsed: unknown;\n program: string;\n space: number;\n }\n // Binary\n | [encodedBytes: string, encoding: 'base58' | 'base64' | 'base64+zstd' | 'binary' | 'jsonParsed'];\n executable: boolean;\n lamports: number;\n owner: string;\n rentEpoch: number;\n space?: number;\n } | null)[]\n | null;\n err: TransactionError | null;\n // Enabled by `enable_cpi_recording`\n innerInstructions?:\n | {\n index: number;\n instructions: (\n | {\n // Compiled\n accounts: number[];\n data: string;\n programIdIndex: number;\n stackHeight?: number;\n }\n | {\n // Parsed\n parsed: unknown;\n program: string;\n programId: string;\n stackHeight?: number;\n }\n | {\n // PartiallyDecoded\n accounts: string[];\n data: string;\n programId: string;\n stackHeight?: number;\n }\n )[];\n }[]\n | null;\n logs: string[] | null;\n returnData: {\n data: [string, 'base64'];\n programId: string;\n } | null;\n unitsConsumed: number | null;\n}\n\nexport function getSolanaErrorFromJsonRpcError({ code, data, message }: RpcErrorResponse): SolanaError {\n let out: SolanaError;\n if (code === SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE) {\n const { err, ...preflightErrorContext } = data as RpcSimulateTransactionResult;\n const causeObject = err ? { cause: getSolanaErrorFromTransactionError(err) } : null;\n out = new SolanaError(SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE, {\n ...preflightErrorContext,\n ...causeObject,\n });\n } else {\n let errorContext;\n switch (code) {\n case SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR:\n case SOLANA_ERROR__JSON_RPC__INVALID_PARAMS:\n case SOLANA_ERROR__JSON_RPC__INVALID_REQUEST:\n case SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND:\n case SOLANA_ERROR__JSON_RPC__PARSE_ERROR:\n case SOLANA_ERROR__JSON_RPC__SCAN_ERROR:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION:\n // The server supplies no structured data, but rather a pre-formatted message. Put\n // the server message in `context` so as not to completely lose the data. The long\n // term fix for this is to add data to the server responses and modify the\n // messages in `@solana/errors` to be actual format strings.\n errorContext = { __serverMessage: message };\n break;\n default:\n if (typeof data === 'object' && !Array.isArray(data)) {\n errorContext = data;\n }\n }\n out = new SolanaError(code as SolanaErrorCode, errorContext as SolanaErrorContext[SolanaErrorCode]);\n }\n safeCaptureStackTrace(out, getSolanaErrorFromJsonRpcError);\n return out;\n}\n","import { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Concatenates an array of `Uint8Array`s into a single `Uint8Array`.\n * Reuses the original byte array when applicable.\n */\nexport const mergeBytes = (byteArrays: Uint8Array[]): Uint8Array => {\n const nonEmptyByteArrays = byteArrays.filter(arr => arr.length);\n if (nonEmptyByteArrays.length === 0) {\n return byteArrays.length ? byteArrays[0] : new Uint8Array();\n }\n\n if (nonEmptyByteArrays.length === 1) {\n return nonEmptyByteArrays[0];\n }\n\n const totalLength = nonEmptyByteArrays.reduce((total, arr) => total + arr.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n nonEmptyByteArrays.forEach(arr => {\n result.set(arr, offset);\n offset += arr.length;\n });\n return result;\n};\n\n/**\n * Pads a `Uint8Array` with zeroes to the specified length.\n * If the array is longer than the specified length, it is returned as-is.\n */\nexport const padBytes = (bytes: ReadonlyUint8Array | Uint8Array, length: number): ReadonlyUint8Array | Uint8Array => {\n if (bytes.length >= length) return bytes;\n const paddedBytes = new Uint8Array(length).fill(0);\n paddedBytes.set(bytes);\n return paddedBytes;\n};\n\n/**\n * Fixes a `Uint8Array` to the specified length.\n * If the array is longer than the specified length, it is truncated.\n * If the array is shorter than the specified length, it is padded with zeroes.\n */\nexport const fixBytes = (bytes: ReadonlyUint8Array | Uint8Array, length: number): ReadonlyUint8Array | Uint8Array =>\n padBytes(bytes.length <= length ? bytes : bytes.slice(0, length), length);\n\n/**\n * Returns true if and only if the provided `data` byte array contains\n * the provided `bytes` byte array at the specified `offset`.\n */\nexport function containsBytes(\n data: ReadonlyUint8Array | Uint8Array,\n bytes: ReadonlyUint8Array | Uint8Array,\n offset: number,\n): boolean {\n const slice = offset === 0 && data.length === bytes.length ? data : data.slice(offset, offset + bytes.length);\n if (slice.length !== bytes.length) return false;\n return bytes.every((b, i) => b === slice[i]);\n}\n","import {\n SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH,\n SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH,\n SolanaError,\n} from '@solana/errors';\n\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Defines an offset in bytes.\n */\nexport type Offset = number;\n\ntype BaseEncoder<TFrom> = {\n /** Encode the provided value and return the encoded bytes directly. */\n readonly encode: (value: TFrom) => ReadonlyUint8Array;\n /**\n * Writes the encoded value into the provided byte array at the given offset.\n * Returns the offset of the next byte after the encoded value.\n */\n readonly write: (value: TFrom, bytes: Uint8Array, offset: Offset) => Offset;\n};\n\nexport type FixedSizeEncoder<TFrom, TSize extends number = number> = BaseEncoder<TFrom> & {\n /** The fixed size of the encoded value in bytes. */\n readonly fixedSize: TSize;\n};\n\nexport type VariableSizeEncoder<TFrom> = BaseEncoder<TFrom> & {\n /** The total size of the encoded value in bytes. */\n readonly getSizeFromValue: (value: TFrom) => number;\n /** The maximum size an encoded value can be in bytes, if applicable. */\n readonly maxSize?: number;\n};\n\n/**\n * An object that can encode a value to a `Uint8Array`.\n */\nexport type Encoder<TFrom> = FixedSizeEncoder<TFrom> | VariableSizeEncoder<TFrom>;\n\ntype BaseDecoder<TTo> = {\n /** Decodes the provided byte array at the given offset (or zero) and returns the value directly. */\n readonly decode: (bytes: ReadonlyUint8Array | Uint8Array, offset?: Offset) => TTo;\n /**\n * Reads the encoded value from the provided byte array at the given offset.\n * Returns the decoded value and the offset of the next byte after the encoded value.\n */\n readonly read: (bytes: ReadonlyUint8Array | Uint8Array, offset: Offset) => [TTo, Offset];\n};\n\nexport type FixedSizeDecoder<TTo, TSize extends number = number> = BaseDecoder<TTo> & {\n /** The fixed size of the encoded value in bytes. */\n readonly fixedSize: TSize;\n};\n\nexport type VariableSizeDecoder<TTo> = BaseDecoder<TTo> & {\n /** The maximum size an encoded value can be in bytes, if applicable. */\n readonly maxSize?: number;\n};\n\n/**\n * An object that can decode a value from a `Uint8Array`.\n */\nexport type Decoder<TTo> = FixedSizeDecoder<TTo> | VariableSizeDecoder<TTo>;\n\nexport type FixedSizeCodec<TFrom, TTo extends TFrom = TFrom, TSize extends number = number> = FixedSizeDecoder<\n TTo,\n TSize\n> &\n FixedSizeEncoder<TFrom, TSize>;\n\nexport type VariableSizeCodec<TFrom, TTo extends TFrom = TFrom> = VariableSizeDecoder<TTo> & VariableSizeEncoder<TFrom>;\n\n/**\n * An object that can encode and decode a value to and from a `Uint8Array`.\n * It supports encoding looser types than it decodes for convenience.\n * For example, a `bigint` encoder will always decode to a `bigint`\n * but can be used to encode a `number`.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value. Defaults to `TFrom`.\n */\nexport type Codec<TFrom, TTo extends TFrom = TFrom> = FixedSizeCodec<TFrom, TTo> | VariableSizeCodec<TFrom, TTo>;\n\n/**\n * Get the encoded size of a given value in bytes.\n */\nexport function getEncodedSize<TFrom>(\n value: TFrom,\n encoder: { fixedSize: number } | { getSizeFromValue: (value: TFrom) => number },\n): number {\n return 'fixedSize' in encoder ? encoder.fixedSize : encoder.getSizeFromValue(value);\n}\n\n/** Fills the missing `encode` function using the existing `write` function. */\nexport function createEncoder<TFrom, TSize extends number>(\n encoder: Omit<FixedSizeEncoder<TFrom, TSize>, 'encode'>,\n): FixedSizeEncoder<TFrom, TSize>;\nexport function createEncoder<TFrom>(encoder: Omit<VariableSizeEncoder<TFrom>, 'encode'>): VariableSizeEncoder<TFrom>;\nexport function createEncoder<TFrom>(\n encoder: Omit<FixedSizeEncoder<TFrom>, 'encode'> | Omit<VariableSizeEncoder<TFrom>, 'encode'>,\n): Encoder<TFrom>;\nexport function createEncoder<TFrom>(\n encoder: Omit<FixedSizeEncoder<TFrom>, 'encode'> | Omit<VariableSizeEncoder<TFrom>, 'encode'>,\n): Encoder<TFrom> {\n return Object.freeze({\n ...encoder,\n encode: value => {\n const bytes = new Uint8Array(getEncodedSize(value, encoder));\n encoder.write(value, bytes, 0);\n return bytes;\n },\n });\n}\n\n/** Fills the missing `decode` function using the existing `read` function. */\nexport function createDecoder<TTo, TSize extends number>(\n decoder: Omit<FixedSizeDecoder<TTo, TSize>, 'decode'>,\n): FixedSizeDecoder<TTo, TSize>;\nexport function createDecoder<TTo>(decoder: Omit<VariableSizeDecoder<TTo>, 'decode'>): VariableSizeDecoder<TTo>;\nexport function createDecoder<TTo>(\n decoder: Omit<FixedSizeDecoder<TTo>, 'decode'> | Omit<VariableSizeDecoder<TTo>, 'decode'>,\n): Decoder<TTo>;\nexport function createDecoder<TTo>(\n decoder: Omit<FixedSizeDecoder<TTo>, 'decode'> | Omit<VariableSizeDecoder<TTo>, 'decode'>,\n): Decoder<TTo> {\n return Object.freeze({\n ...decoder,\n decode: (bytes, offset = 0) => decoder.read(bytes, offset)[0],\n });\n}\n\n/** Fills the missing `encode` and `decode` function using the existing `write` and `read` functions. */\nexport function createCodec<TFrom, TTo extends TFrom = TFrom, TSize extends number = number>(\n codec: Omit<FixedSizeCodec<TFrom, TTo, TSize>, 'decode' | 'encode'>,\n): FixedSizeCodec<TFrom, TTo, TSize>;\nexport function createCodec<TFrom, TTo extends TFrom = TFrom>(\n codec: Omit<VariableSizeCodec<TFrom, TTo>, 'decode' | 'encode'>,\n): VariableSizeCodec<TFrom, TTo>;\nexport function createCodec<TFrom, TTo extends TFrom = TFrom>(\n codec:\n | Omit<FixedSizeCodec<TFrom, TTo>, 'decode' | 'encode'>\n | Omit<VariableSizeCodec<TFrom, TTo>, 'decode' | 'encode'>,\n): Codec<TFrom, TTo>;\nexport function createCodec<TFrom, TTo extends TFrom = TFrom>(\n codec:\n | Omit<FixedSizeCodec<TFrom, TTo>, 'decode' | 'encode'>\n | Omit<VariableSizeCodec<TFrom, TTo>, 'decode' | 'encode'>,\n): Codec<TFrom, TTo> {\n return Object.freeze({\n ...codec,\n decode: (bytes, offset = 0) => codec.read(bytes, offset)[0],\n encode: value => {\n const bytes = new Uint8Array(getEncodedSize(value, codec));\n codec.write(value, bytes, 0);\n return bytes;\n },\n });\n}\n\nexport function isFixedSize<TFrom, TSize extends number>(\n encoder: FixedSizeEncoder<TFrom, TSize> | VariableSizeEncoder<TFrom>,\n): encoder is FixedSizeEncoder<TFrom, TSize>;\nexport function isFixedSize<TTo, TSize extends number>(\n decoder: FixedSizeDecoder<TTo, TSize> | VariableSizeDecoder<TTo>,\n): decoder is FixedSizeDecoder<TTo, TSize>;\nexport function isFixedSize<TFrom, TTo extends TFrom, TSize extends number>(\n codec: FixedSizeCodec<TFrom, TTo, TSize> | VariableSizeCodec<TFrom, TTo>,\n): codec is FixedSizeCodec<TFrom, TTo, TSize>;\nexport function isFixedSize<TSize extends number>(\n codec: { fixedSize: TSize } | { maxSize?: number },\n): codec is { fixedSize: TSize };\nexport function isFixedSize(codec: { fixedSize: number } | { maxSize?: number }): codec is { fixedSize: number } {\n return 'fixedSize' in codec && typeof codec.fixedSize === 'number';\n}\n\nexport function assertIsFixedSize<TFrom, TSize extends number>(\n encoder: FixedSizeEncoder<TFrom, TSize> | VariableSizeEncoder<TFrom>,\n): asserts encoder is FixedSizeEncoder<TFrom, TSize>;\nexport function assertIsFixedSize<TTo, TSize extends number>(\n decoder: FixedSizeDecoder<TTo, TSize> | VariableSizeDecoder<TTo>,\n): asserts decoder is FixedSizeDecoder<TTo, TSize>;\nexport function assertIsFixedSize<TFrom, TTo extends TFrom, TSize extends number>(\n codec: FixedSizeCodec<TFrom, TTo, TSize> | VariableSizeCodec<TFrom, TTo>,\n): asserts codec is FixedSizeCodec<TFrom, TTo, TSize>;\nexport function assertIsFixedSize<TSize extends number>(\n codec: { fixedSize: TSize } | { maxSize?: number },\n): asserts codec is { fixedSize: TSize };\nexport function assertIsFixedSize(\n codec: { fixedSize: number } | { maxSize?: number },\n): asserts codec is { fixedSize: number } {\n if (!isFixedSize(codec)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH);\n }\n}\n\nexport function isVariableSize<TFrom>(encoder: Encoder<TFrom>): encoder is VariableSizeEncoder<TFrom>;\nexport function isVariableSize<TTo>(decoder: Decoder<TTo>): decoder is VariableSizeDecoder<TTo>;\nexport function isVariableSize<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n): codec is VariableSizeCodec<TFrom, TTo>;\nexport function isVariableSize(codec: { fixedSize: number } | { maxSize?: number }): codec is { maxSize?: number };\nexport function isVariableSize(codec: { fixedSize: number } | { maxSize?: number }): codec is { maxSize?: number } {\n return !isFixedSize(codec);\n}\n\nexport function assertIsVariableSize<T>(encoder: Encoder<T>): asserts encoder is VariableSizeEncoder<T>;\nexport function assertIsVariableSize<T>(decoder: Decoder<T>): asserts decoder is VariableSizeDecoder<T>;\nexport function assertIsVariableSize<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n): asserts codec is VariableSizeCodec<TFrom, TTo>;\nexport function assertIsVariableSize(\n codec: { fixedSize: number } | { maxSize?: number },\n): asserts codec is { maxSize?: number };\nexport function assertIsVariableSize(\n codec: { fixedSize: number } | { maxSize?: number },\n): asserts codec is { maxSize?: number } {\n if (!isVariableSize(codec)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH);\n }\n}\n","import {\n SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH,\n SolanaError,\n} from '@solana/errors';\n\nimport {\n Codec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isFixedSize,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from './codec';\n\n/**\n * Combines an encoder and a decoder into a codec.\n * The encoder and decoder must have the same fixed size, max size and description.\n * If a description is provided, it will override the encoder and decoder descriptions.\n */\nexport function combineCodec<TFrom, TTo extends TFrom, TSize extends number>(\n encoder: FixedSizeEncoder<TFrom, TSize>,\n decoder: FixedSizeDecoder<TTo, TSize>,\n): FixedSizeCodec<TFrom, TTo, TSize>;\nexport function combineCodec<TFrom, TTo extends TFrom>(\n encoder: VariableSizeEncoder<TFrom>,\n decoder: VariableSizeDecoder<TTo>,\n): VariableSizeCodec<TFrom, TTo>;\nexport function combineCodec<TFrom, TTo extends TFrom>(\n encoder: Encoder<TFrom>,\n decoder: Decoder<TTo>,\n): Codec<TFrom, TTo>;\nexport function combineCodec<TFrom, TTo extends TFrom>(\n encoder: Encoder<TFrom>,\n decoder: Decoder<TTo>,\n): Codec<TFrom, TTo> {\n if (isFixedSize(encoder) !== isFixedSize(decoder)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH);\n }\n\n if (isFixedSize(encoder) && isFixedSize(decoder) && encoder.fixedSize !== decoder.fixedSize) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH, {\n decoderFixedSize: decoder.fixedSize,\n encoderFixedSize: encoder.fixedSize,\n });\n }\n\n if (!isFixedSize(encoder) && !isFixedSize(decoder) && encoder.maxSize !== decoder.maxSize) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH, {\n decoderMaxSize: decoder.maxSize,\n encoderMaxSize: encoder.maxSize,\n });\n }\n\n return {\n ...decoder,\n ...encoder,\n decode: decoder.decode,\n encode: encoder.encode,\n read: decoder.read,\n write: encoder.write,\n };\n}\n","import {\n SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL,\n SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES,\n SolanaError,\n} from '@solana/errors';\n\nimport { containsBytes } from './bytes';\nimport {\n Codec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isFixedSize,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from './codec';\nimport { combineCodec } from './combine-codec';\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Creates an encoder that writes a `Uint8Array` sentinel after the encoded value.\n * This is useful to delimit the encoded value when being read by a decoder.\n *\n * Note that, if the sentinel is found in the encoded value, an error is thrown.\n */\nexport function addEncoderSentinel<TFrom>(\n encoder: FixedSizeEncoder<TFrom>,\n sentinel: ReadonlyUint8Array,\n): FixedSizeEncoder<TFrom>;\nexport function addEncoderSentinel<TFrom>(\n encoder: Encoder<TFrom>,\n sentinel: ReadonlyUint8Array,\n): VariableSizeEncoder<TFrom>;\nexport function addEncoderSentinel<TFrom>(encoder: Encoder<TFrom>, sentinel: ReadonlyUint8Array): Encoder<TFrom> {\n const write = ((value, bytes, offset) => {\n // Here we exceptionally use the `encode` function instead of the `write`\n // function to contain the content of the encoder within its own bounds\n // and to avoid writing the sentinel as part of the encoded value.\n const encoderBytes = encoder.encode(value);\n if (findSentinelIndex(encoderBytes, sentinel) >= 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL, {\n encodedBytes: encoderBytes,\n hexEncodedBytes: hexBytes(encoderBytes),\n hexSentinel: hexBytes(sentinel),\n sentinel,\n });\n }\n bytes.set(encoderBytes, offset);\n offset += encoderBytes.length;\n bytes.set(sentinel, offset);\n offset += sentinel.length;\n return offset;\n }) as Encoder<TFrom>['write'];\n\n if (isFixedSize(encoder)) {\n return createEncoder({ ...encoder, fixedSize: encoder.fixedSize + sentinel.length, write });\n }\n\n return createEncoder({\n ...encoder,\n ...(encoder.maxSize != null ? { maxSize: encoder.maxSize + sentinel.length } : {}),\n getSizeFromValue: value => encoder.getSizeFromValue(value) + sentinel.length,\n write,\n });\n}\n\n/**\n * Creates a decoder that continues reading until a `Uint8Array` sentinel is found.\n *\n * If the sentinel is not found in the byte array to decode, an error is thrown.\n */\nexport function addDecoderSentinel<TTo>(\n decoder: FixedSizeDecoder<TTo>,\n sentinel: ReadonlyUint8Array,\n): FixedSizeDecoder<TTo>;\nexport function addDecoderSentinel<TTo>(decoder: Decoder<TTo>, sentinel: ReadonlyUint8Array): VariableSizeDecoder<TTo>;\nexport function addDecoderSentinel<TTo>(decoder: Decoder<TTo>, sentinel: ReadonlyUint8Array): Decoder<TTo> {\n const read = ((bytes, offset) => {\n const candidateBytes = offset === 0 ? bytes : bytes.slice(offset);\n const sentinelIndex = findSentinelIndex(candidateBytes, sentinel);\n if (sentinelIndex === -1) {\n throw new SolanaError(SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES, {\n decodedBytes: candidateBytes,\n hexDecodedBytes: hexBytes(candidateBytes),\n hexSentinel: hexBytes(sentinel),\n sentinel,\n });\n }\n const preSentinelBytes = candidateBytes.slice(0, sentinelIndex);\n // Here we exceptionally use the `decode` function instead of the `read`\n // function to contain the content of the decoder within its own bounds\n // and ensure that the sentinel is not part of the decoded value.\n return [decoder.decode(preSentinelBytes), offset + preSentinelBytes.length + sentinel.length];\n }) as Decoder<TTo>['read'];\n\n if (isFixedSize(decoder)) {\n return createDecoder({ ...decoder, fixedSize: decoder.fixedSize + sentinel.length, read });\n }\n\n return createDecoder({\n ...decoder,\n ...(decoder.maxSize != null ? { maxSize: decoder.maxSize + sentinel.length } : {}),\n read,\n });\n}\n\n/**\n * Creates a Codec that writes a `Uint8Array` sentinel after the encoded\n * value and, when decoding, continues reading until the sentinel is found.\n *\n * Note that, if the sentinel is found in the encoded value\n * or not found in the byte array to decode, an error is thrown.\n */\nexport function addCodecSentinel<TFrom, TTo extends TFrom>(\n codec: FixedSizeCodec<TFrom, TTo>,\n sentinel: ReadonlyUint8Array,\n): FixedSizeCodec<TFrom, TTo>;\nexport function addCodecSentinel<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n sentinel: ReadonlyUint8Array,\n): VariableSizeCodec<TFrom, TTo>;\nexport function addCodecSentinel<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n sentinel: ReadonlyUint8Array,\n): Codec<TFrom, TTo> {\n return combineCodec(addEncoderSentinel(codec, sentinel), addDecoderSentinel(codec, sentinel));\n}\n\nfunction findSentinelIndex(bytes: ReadonlyUint8Array, sentinel: ReadonlyUint8Array) {\n return bytes.findIndex((byte, index, arr) => {\n if (sentinel.length === 1) return byte === sentinel[0];\n return containsBytes(arr, sentinel, index);\n });\n}\n\nfunction hexBytes(bytes: ReadonlyUint8Array): string {\n return bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n","import {\n SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY,\n SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE,\n SolanaError,\n} from '@solana/errors';\n\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Asserts that a given byte array is not empty.\n */\nexport function assertByteArrayIsNotEmptyForCodec(\n codecDescription: string,\n bytes: ReadonlyUint8Array | Uint8Array,\n offset = 0,\n) {\n if (bytes.length - offset <= 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY, {\n codecDescription,\n });\n }\n}\n\n/**\n * Asserts that a given byte array has enough bytes to decode.\n */\nexport function assertByteArrayHasEnoughBytesForCodec(\n codecDescription: string,\n expected: number,\n bytes: ReadonlyUint8Array | Uint8Array,\n offset = 0,\n) {\n const bytesLength = bytes.length - offset;\n if (bytesLength < expected) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, {\n bytesLength,\n codecDescription,\n expected,\n });\n }\n}\n\n/**\n * Asserts that a given offset is within the byte array bounds.\n * This range is between 0 and the byte array length and is inclusive.\n * An offset equals to the byte array length is considered a valid offset\n * as it allows the post-offset of codecs to signal the end of the byte array.\n */\nexport function assertByteArrayOffsetIsNotOutOfRange(codecDescription: string, offset: number, bytesLength: number) {\n if (offset < 0 || offset > bytesLength) {\n throw new SolanaError(SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE, {\n bytesLength,\n codecDescription,\n offset,\n });\n }\n}\n","import { assertByteArrayHasEnoughBytesForCodec } from './assertions';\nimport {\n Codec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n getEncodedSize,\n isFixedSize,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from './codec';\nimport { combineCodec } from './combine-codec';\n\ntype NumberEncoder = Encoder<bigint | number> | Encoder<number>;\ntype FixedSizeNumberEncoder<TSize extends number = number> =\n | FixedSizeEncoder<bigint | number, TSize>\n | FixedSizeEncoder<number, TSize>;\ntype NumberDecoder = Decoder<bigint> | Decoder<number>;\ntype FixedSizeNumberDecoder<TSize extends number = number> =\n | FixedSizeDecoder<bigint, TSize>\n | FixedSizeDecoder<number, TSize>;\ntype NumberCodec = Codec<bigint | number, bigint> | Codec<number>;\ntype FixedSizeNumberCodec<TSize extends number = number> =\n | FixedSizeCodec<bigint | number, bigint, TSize>\n | FixedSizeCodec<number, number, TSize>;\n\n/**\n * Stores the size of the `encoder` in bytes as a prefix using the `prefix` encoder.\n */\nexport function addEncoderSizePrefix<TFrom>(\n encoder: FixedSizeEncoder<TFrom>,\n prefix: FixedSizeNumberEncoder,\n): FixedSizeEncoder<TFrom>;\nexport function addEncoderSizePrefix<TFrom>(encoder: Encoder<TFrom>, prefix: NumberEncoder): VariableSizeEncoder<TFrom>;\nexport function addEncoderSizePrefix<TFrom>(encoder: Encoder<TFrom>, prefix: NumberEncoder): Encoder<TFrom> {\n const write = ((value, bytes, offset) => {\n // Here we exceptionally use the `encode` function instead of the `write`\n // function to contain the content of the encoder within its own bounds.\n const encoderBytes = encoder.encode(value);\n offset = prefix.write(encoderBytes.length, bytes, offset);\n bytes.set(encoderBytes, offset);\n return offset + encoderBytes.length;\n }) as Encoder<TFrom>['write'];\n\n if (isFixedSize(prefix) && isFixedSize(encoder)) {\n return createEncoder({ ...encoder, fixedSize: prefix.fixedSize + encoder.fixedSize, write });\n }\n\n const prefixMaxSize = isFixedSize(prefix) ? prefix.fixedSize : (prefix.maxSize ?? null);\n const encoderMaxSize = isFixedSize(encoder) ? encoder.fixedSize : (encoder.maxSize ?? null);\n const maxSize = prefixMaxSize !== null && encoderMaxSize !== null ? prefixMaxSize + encoderMaxSize : null;\n\n return createEncoder({\n ...encoder,\n ...(maxSize !== null ? { maxSize } : {}),\n getSizeFromValue: value => {\n const encoderSize = getEncodedSize(value, encoder);\n return getEncodedSize(encoderSize, prefix) + encoderSize;\n },\n write,\n });\n}\n\n/**\n * Bounds the size of the `decoder` by reading the `prefix` encoder prefix.\n */\nexport function addDecoderSizePrefix<TTo>(\n decoder: FixedSizeDecoder<TTo>,\n prefix: FixedSizeNumberDecoder,\n): FixedSizeDecoder<TTo>;\nexport function addDecoderSizePrefix<TTo>(decoder: Decoder<TTo>, prefix: NumberDecoder): VariableSizeDecoder<TTo>;\nexport function addDecoderSizePrefix<TTo>(decoder: Decoder<TTo>, prefix: NumberDecoder): Decoder<TTo> {\n const read = ((bytes, offset) => {\n const [bigintSize, decoderOffset] = prefix.read(bytes, offset);\n const size = Number(bigintSize);\n offset = decoderOffset;\n // Slice the byte array to the contained size if necessary.\n if (offset > 0 || bytes.length > size) {\n bytes = bytes.slice(offset, offset + size);\n }\n assertByteArrayHasEnoughBytesForCodec('addDecoderSizePrefix', size, bytes);\n // Here we exceptionally use the `decode` function instead of the `read`\n // function to contain the content of the decoder within its own bounds.\n return [decoder.decode(bytes), offset + size];\n }) as Decoder<TTo>['read'];\n\n if (isFixedSize(prefix) && isFixedSize(decoder)) {\n return createDecoder({ ...decoder, fixedSize: prefix.fixedSize + decoder.fixedSize, read });\n }\n\n const prefixMaxSize = isFixedSize(prefix) ? prefix.fixedSize : (prefix.maxSize ?? null);\n const decoderMaxSize = isFixedSize(decoder) ? decoder.fixedSize : (decoder.maxSize ?? null);\n const maxSize = prefixMaxSize !== null && decoderMaxSize !== null ? prefixMaxSize + decoderMaxSize : null;\n return createDecoder({ ...decoder, ...(maxSize !== null ? { maxSize } : {}), read });\n}\n\n/**\n * Bounds the size of the `codec` using the provided `prefix` codec prefix.\n */\nexport function addCodecSizePrefix<TFrom, TTo extends TFrom>(\n codec: FixedSizeCodec<TFrom, TTo>,\n prefix: FixedSizeNumberCodec,\n): FixedSizeCodec<TFrom, TTo>;\nexport function addCodecSizePrefix<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n prefix: NumberCodec,\n): VariableSizeCodec<TFrom, TTo>;\nexport function addCodecSizePrefix<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n prefix: NumberCodec,\n): Codec<TFrom, TTo> {\n return combineCodec(addEncoderSizePrefix(codec, prefix), addDecoderSizePrefix(codec, prefix));\n}\n","import { assertByteArrayHasEnoughBytesForCodec } from './assertions';\nimport { fixBytes } from './bytes';\nimport {\n Codec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isFixedSize,\n Offset,\n} from './codec';\nimport { combineCodec } from './combine-codec';\n\n/**\n * Creates a fixed-size encoder from a given encoder.\n *\n * @param encoder - The encoder to wrap into a fixed-size encoder.\n * @param fixedBytes - The fixed number of bytes to write.\n */\nexport function fixEncoderSize<TFrom, TSize extends number>(\n encoder: Encoder<TFrom>,\n fixedBytes: TSize,\n): FixedSizeEncoder<TFrom, TSize> {\n return createEncoder({\n fixedSize: fixedBytes,\n write: (value: TFrom, bytes: Uint8Array, offset: Offset) => {\n // Here we exceptionally use the `encode` function instead of the `write`\n // function as using the nested `write` function on a fixed-sized byte\n // array may result in a out-of-bounds error on the nested encoder.\n const variableByteArray = encoder.encode(value);\n const fixedByteArray =\n variableByteArray.length > fixedBytes ? variableByteArray.slice(0, fixedBytes) : variableByteArray;\n bytes.set(fixedByteArray, offset);\n return offset + fixedBytes;\n },\n });\n}\n\n/**\n * Creates a fixed-size decoder from a given decoder.\n *\n * @param decoder - The decoder to wrap into a fixed-size decoder.\n * @param fixedBytes - The fixed number of bytes to read.\n */\nexport function fixDecoderSize<TTo, TSize extends number>(\n decoder: Decoder<TTo>,\n fixedBytes: TSize,\n): FixedSizeDecoder<TTo, TSize> {\n return createDecoder({\n fixedSize: fixedBytes,\n read: (bytes, offset) => {\n assertByteArrayHasEnoughBytesForCodec('fixCodecSize', fixedBytes, bytes, offset);\n // Slice the byte array to the fixed size if necessary.\n if (offset > 0 || bytes.length > fixedBytes) {\n bytes = bytes.slice(offset, offset + fixedBytes);\n }\n // If the nested decoder is fixed-size, pad and truncate the byte array accordingly.\n if (isFixedSize(decoder)) {\n bytes = fixBytes(bytes, decoder.fixedSize);\n }\n // Decode the value using the nested decoder.\n const [value] = decoder.read(bytes, 0);\n return [value, offset + fixedBytes];\n },\n });\n}\n\n/**\n * Creates a fixed-size codec from a given codec.\n *\n * @param codec - The codec to wrap into a fixed-size codec.\n * @param fixedBytes - The fixed number of bytes to read/write.\n */\nexport function fixCodecSize<TFrom, TTo extends TFrom, TSize extends number>(\n codec: Codec<TFrom, TTo>,\n fixedBytes: TSize,\n): FixedSizeCodec<TFrom, TTo, TSize> {\n return combineCodec(fixEncoderSize(codec, fixedBytes), fixDecoderSize(codec, fixedBytes));\n}\n","import { assertByteArrayOffsetIsNotOutOfRange } from './assertions';\nimport { Codec, createDecoder, createEncoder, Decoder, Encoder, Offset } from './codec';\nimport { combineCodec } from './combine-codec';\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyEncoder = Encoder<any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyDecoder = Decoder<any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyCodec = Codec<any>;\n\ntype OffsetConfig = {\n postOffset?: PostOffsetFunction;\n preOffset?: PreOffsetFunction;\n};\n\ntype PreOffsetFunctionScope = {\n /** The entire byte array. */\n bytes: ReadonlyUint8Array | Uint8Array;\n /** The original offset prior to encode or decode. */\n preOffset: Offset;\n /** Wraps the offset to the byte array length. */\n wrapBytes: (offset: Offset) => Offset;\n};\n\ntype PreOffsetFunction = (scope: PreOffsetFunctionScope) => Offset;\ntype PostOffsetFunction = (\n scope: PreOffsetFunctionScope & {\n /** The modified offset used to encode or decode. */\n newPreOffset: Offset;\n /** The original offset returned by the encoder or decoder. */\n postOffset: Offset;\n },\n) => Offset;\n\n/**\n * Moves the offset of a given encoder.\n */\nexport function offsetEncoder<TEncoder extends AnyEncoder>(encoder: TEncoder, config: OffsetConfig): TEncoder {\n return createEncoder({\n ...encoder,\n write: (value, bytes, preOffset) => {\n const wrapBytes = (offset: Offset) => modulo(offset, bytes.length);\n const newPreOffset = config.preOffset ? config.preOffset({ bytes, preOffset, wrapBytes }) : preOffset;\n assertByteArrayOffsetIsNotOutOfRange('offsetEncoder', newPreOffset, bytes.length);\n const postOffset = encoder.write(value, bytes, newPreOffset);\n const newPostOffset = config.postOffset\n ? config.postOffset({ bytes, newPreOffset, postOffset, preOffset, wrapBytes })\n : postOffset;\n assertByteArrayOffsetIsNotOutOfRange('offsetEncoder', newPostOffset, bytes.length);\n return newPostOffset;\n },\n }) as TEncoder;\n}\n\n/**\n * Moves the offset of a given decoder.\n */\nexport function offsetDecoder<TDecoder extends AnyDecoder>(decoder: TDecoder, config: OffsetConfig): TDecoder {\n return createDecoder({\n ...decoder,\n read: (bytes, preOffset) => {\n const wrapBytes = (offset: Offset) => modulo(offset, bytes.length);\n const newPreOffset = config.preOffset ? config.preOffset({ bytes, preOffset, wrapBytes }) : preOffset;\n assertByteArrayOffsetIsNotOutOfRange('offsetDecoder', newPreOffset, bytes.length);\n const [value, postOffset] = decoder.read(bytes, newPreOffset);\n const newPostOffset = config.postOffset\n ? config.postOffset({ bytes, newPreOffset, postOffset, preOffset, wrapBytes })\n : postOffset;\n assertByteArrayOffsetIsNotOutOfRange('offsetDecoder', newPostOffset, bytes.length);\n return [value, newPostOffset];\n },\n }) as TDecoder;\n}\n\n/**\n * Moves the offset of a given codec.\n */\nexport function offsetCodec<TCodec extends AnyCodec>(codec: TCodec, config: OffsetConfig): TCodec {\n return combineCodec(offsetEncoder(codec, config), offsetDecoder(codec, config)) as TCodec;\n}\n\n/** A modulo function that handles negative dividends and zero divisors. */\nfunction modulo(dividend: number, divisor: number) {\n if (divisor === 0) return 0;\n return ((dividend % divisor) + divisor) % divisor;\n}\n","import { SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, SolanaError } from '@solana/errors';\n\nimport {\n Codec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isFixedSize,\n} from './codec';\nimport { combineCodec } from './combine-codec';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyEncoder = Encoder<any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyDecoder = Decoder<any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyCodec = Codec<any>;\n\n/**\n * Updates the size of a given encoder.\n */\nexport function resizeEncoder<TFrom, TSize extends number, TNewSize extends number>(\n encoder: FixedSizeEncoder<TFrom, TSize>,\n resize: (size: TSize) => TNewSize,\n): FixedSizeEncoder<TFrom, TNewSize>;\nexport function resizeEncoder<TEncoder extends AnyEncoder>(\n encoder: TEncoder,\n resize: (size: number) => number,\n): TEncoder;\nexport function resizeEncoder<TEncoder extends AnyEncoder>(\n encoder: TEncoder,\n resize: (size: number) => number,\n): TEncoder {\n if (isFixedSize(encoder)) {\n const fixedSize = resize(encoder.fixedSize);\n if (fixedSize < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, {\n bytesLength: fixedSize,\n codecDescription: 'resizeEncoder',\n });\n }\n return createEncoder({ ...encoder, fixedSize }) as TEncoder;\n }\n return createEncoder({\n ...encoder,\n getSizeFromValue: value => {\n const newSize = resize(encoder.getSizeFromValue(value));\n if (newSize < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, {\n bytesLength: newSize,\n codecDescription: 'resizeEncoder',\n });\n }\n return newSize;\n },\n }) as TEncoder;\n}\n\n/**\n * Updates the size of a given decoder.\n */\n\nexport function resizeDecoder<TFrom, TSize extends number, TNewSize extends number>(\n decoder: FixedSizeDecoder<TFrom, TSize>,\n resize: (size: TSize) => TNewSize,\n): FixedSizeDecoder<TFrom, TNewSize>;\nexport function resizeDecoder<TDecoder extends AnyDecoder>(\n decoder: TDecoder,\n resize: (size: number) => number,\n): TDecoder;\nexport function resizeDecoder<TDecoder extends AnyDecoder>(\n decoder: TDecoder,\n resize: (size: number) => number,\n): TDecoder {\n if (isFixedSize(decoder)) {\n const fixedSize = resize(decoder.fixedSize);\n if (fixedSize < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, {\n bytesLength: fixedSize,\n codecDescription: 'resizeDecoder',\n });\n }\n return createDecoder({ ...decoder, fixedSize }) as TDecoder;\n }\n return decoder;\n}\n\n/**\n * Updates the size of a given codec.\n */\nexport function resizeCodec<TFrom, TTo extends TFrom, TSize extends number, TNewSize extends number>(\n codec: FixedSizeCodec<TFrom, TTo, TSize>,\n resize: (size: TSize) => TNewSize,\n): FixedSizeCodec<TFrom, TTo, TNewSize>;\nexport function resizeCodec<TCodec extends AnyCodec>(codec: TCodec, resize: (size: number) => number): TCodec;\nexport function resizeCodec<TCodec extends AnyCodec>(codec: TCodec, resize: (size: number) => number): TCodec {\n return combineCodec(resizeEncoder(codec, resize), resizeDecoder(codec, resize)) as TCodec;\n}\n","import { Codec, Decoder, Encoder, Offset } from './codec';\nimport { combineCodec } from './combine-codec';\nimport { offsetDecoder, offsetEncoder } from './offset-codec';\nimport { resizeDecoder, resizeEncoder } from './resize-codec';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyEncoder = Encoder<any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyDecoder = Decoder<any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyCodec = Codec<any>;\n\n/**\n * Adds left padding to the given encoder.\n */\nexport function padLeftEncoder<TEncoder extends AnyEncoder>(encoder: TEncoder, offset: Offset): TEncoder {\n return offsetEncoder(\n resizeEncoder(encoder, size => size + offset),\n { preOffset: ({ preOffset }) => preOffset + offset },\n );\n}\n\n/**\n * Adds right padding to the given encoder.\n */\nexport function padRightEncoder<TEncoder extends AnyEncoder>(encoder: TEncoder, offset: Offset): TEncoder {\n return offsetEncoder(\n resizeEncoder(encoder, size => size + offset),\n { postOffset: ({ postOffset }) => postOffset + offset },\n );\n}\n\n/**\n * Adds left padding to the given decoder.\n */\nexport function padLeftDecoder<TDecoder extends AnyDecoder>(decoder: TDecoder, offset: Offset): TDecoder {\n return offsetDecoder(\n resizeDecoder(decoder, size => size + offset),\n { preOffset: ({ preOffset }) => preOffset + offset },\n );\n}\n\n/**\n * Adds right padding to the given decoder.\n */\nexport function padRightDecoder<TDecoder extends AnyDecoder>(decoder: TDecoder, offset: Offset): TDecoder {\n return offsetDecoder(\n resizeDecoder(decoder, size => size + offset),\n { postOffset: ({ postOffset }) => postOffset + offset },\n );\n}\n\n/**\n * Adds left padding to the given codec.\n */\nexport function padLeftCodec<TCodec extends AnyCodec>(codec: TCodec, offset: Offset): TCodec {\n return combineCodec(padLeftEncoder(codec, offset), padLeftDecoder(codec, offset)) as TCodec;\n}\n\n/**\n * Adds right padding to the given codec.\n */\nexport function padRightCodec<TCodec extends AnyCodec>(codec: TCodec, offset: Offset): TCodec {\n return combineCodec(padRightEncoder(codec, offset), padRightDecoder(codec, offset)) as TCodec;\n}\n","import {\n assertIsFixedSize,\n createDecoder,\n createEncoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n} from './codec';\nimport { combineCodec } from './combine-codec';\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\nfunction copySourceToTargetInReverse(\n source: ReadonlyUint8Array,\n target_WILL_MUTATE: Uint8Array,\n sourceOffset: number,\n sourceLength: number,\n targetOffset: number = 0,\n) {\n while (sourceOffset < --sourceLength) {\n const leftValue = source[sourceOffset];\n target_WILL_MUTATE[sourceOffset + targetOffset] = source[sourceLength];\n target_WILL_MUTATE[sourceLength + targetOffset] = leftValue;\n sourceOffset++;\n }\n if (sourceOffset === sourceLength) {\n target_WILL_MUTATE[sourceOffset + targetOffset] = source[sourceOffset];\n }\n}\n\n/**\n * Reverses the bytes of a fixed-size encoder.\n */\nexport function reverseEncoder<TFrom, TSize extends number>(\n encoder: FixedSizeEncoder<TFrom, TSize>,\n): FixedSizeEncoder<TFrom, TSize> {\n assertIsFixedSize(encoder);\n return createEncoder({\n ...encoder,\n write: (value: TFrom, bytes, offset) => {\n const newOffset = encoder.write(value, bytes, offset);\n copySourceToTargetInReverse(\n bytes /* source */,\n bytes /* target_WILL_MUTATE */,\n offset /* sourceOffset */,\n offset + encoder.fixedSize /* sourceLength */,\n );\n return newOffset;\n },\n });\n}\n\n/**\n * Reverses the bytes of a fixed-size decoder.\n */\nexport function reverseDecoder<TTo, TSize extends number>(\n decoder: FixedSizeDecoder<TTo, TSize>,\n): FixedSizeDecoder<TTo, TSize> {\n assertIsFixedSize(decoder);\n return createDecoder({\n ...decoder,\n read: (bytes, offset) => {\n const reversedBytes = bytes.slice();\n copySourceToTargetInReverse(\n bytes /* source */,\n reversedBytes /* target_WILL_MUTATE */,\n offset /* sourceOffset */,\n offset + decoder.fixedSize /* sourceLength */,\n );\n return decoder.read(reversedBytes, offset);\n },\n });\n}\n\n/**\n * Reverses the bytes of a fixed-size codec.\n */\nexport function reverseCodec<TFrom, TTo extends TFrom, TSize extends number>(\n codec: FixedSizeCodec<TFrom, TTo, TSize>,\n): FixedSizeCodec<TFrom, TTo, TSize> {\n return combineCodec(reverseEncoder(codec), reverseDecoder(codec));\n}\n","import {\n Codec,\n createCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isVariableSize,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from './codec';\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Converts an encoder A to a encoder B by mapping their values.\n */\nexport function transformEncoder<TOldFrom, TNewFrom, TSize extends number>(\n encoder: FixedSizeEncoder<TOldFrom, TSize>,\n unmap: (value: TNewFrom) => TOldFrom,\n): FixedSizeEncoder<TNewFrom, TSize>;\nexport function transformEncoder<TOldFrom, TNewFrom>(\n encoder: VariableSizeEncoder<TOldFrom>,\n unmap: (value: TNewFrom) => TOldFrom,\n): VariableSizeEncoder<TNewFrom>;\nexport function transformEncoder<TOldFrom, TNewFrom>(\n encoder: Encoder<TOldFrom>,\n unmap: (value: TNewFrom) => TOldFrom,\n): Encoder<TNewFrom>;\nexport function transformEncoder<TOldFrom, TNewFrom>(\n encoder: Encoder<TOldFrom>,\n unmap: (value: TNewFrom) => TOldFrom,\n): Encoder<TNewFrom> {\n return createEncoder({\n ...(isVariableSize(encoder)\n ? { ...encoder, getSizeFromValue: (value: TNewFrom) => encoder.getSizeFromValue(unmap(value)) }\n : encoder),\n write: (value: TNewFrom, bytes, offset) => encoder.write(unmap(value), bytes, offset),\n });\n}\n\n/**\n * Converts an decoder A to a decoder B by mapping their values.\n */\nexport function transformDecoder<TOldTo, TNewTo, TSize extends number>(\n decoder: FixedSizeDecoder<TOldTo, TSize>,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): FixedSizeDecoder<TNewTo, TSize>;\nexport function transformDecoder<TOldTo, TNewTo>(\n decoder: VariableSizeDecoder<TOldTo>,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): VariableSizeDecoder<TNewTo>;\nexport function transformDecoder<TOldTo, TNewTo>(\n decoder: Decoder<TOldTo>,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): Decoder<TNewTo>;\nexport function transformDecoder<TOldTo, TNewTo>(\n decoder: Decoder<TOldTo>,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): Decoder<TNewTo> {\n return createDecoder({\n ...decoder,\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n const [value, newOffset] = decoder.read(bytes, offset);\n return [map(value, bytes, offset), newOffset];\n },\n });\n}\n\n/**\n * Converts a codec A to a codec B by mapping their values.\n */\nexport function transformCodec<TOldFrom, TNewFrom, TTo extends TNewFrom & TOldFrom, TSize extends number>(\n codec: FixedSizeCodec<TOldFrom, TTo, TSize>,\n unmap: (value: TNewFrom) => TOldFrom,\n): FixedSizeCodec<TNewFrom, TTo, TSize>;\nexport function transformCodec<TOldFrom, TNewFrom, TTo extends TNewFrom & TOldFrom>(\n codec: VariableSizeCodec<TOldFrom, TTo>,\n unmap: (value: TNewFrom) => TOldFrom,\n): VariableSizeCodec<TNewFrom, TTo>;\nexport function transformCodec<TOldFrom, TNewFrom, TTo extends TNewFrom & TOldFrom>(\n codec: Codec<TOldFrom, TTo>,\n unmap: (value: TNewFrom) => TOldFrom,\n): Codec<TNewFrom, TTo>;\nexport function transformCodec<\n TOldFrom,\n TNewFrom,\n TOldTo extends TOldFrom,\n TNewTo extends TNewFrom,\n TSize extends number,\n>(\n codec: FixedSizeCodec<TOldFrom, TOldTo, TSize>,\n unmap: (value: TNewFrom) => TOldFrom,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): FixedSizeCodec<TNewFrom, TNewTo, TSize>;\nexport function transformCodec<TOldFrom, TNewFrom, TOldTo extends TOldFrom, TNewTo extends TNewFrom>(\n codec: VariableSizeCodec<TOldFrom, TOldTo>,\n unmap: (value: TNewFrom) => TOldFrom,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): VariableSizeCodec<TNewFrom, TNewTo>;\nexport function transformCodec<TOldFrom, TNewFrom, TOldTo extends TOldFrom, TNewTo extends TNewFrom>(\n codec: Codec<TOldFrom, TOldTo>,\n unmap: (value: TNewFrom) => TOldFrom,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): Codec<TNewFrom, TNewTo>;\nexport function transformCodec<TOldFrom, TNewFrom, TOldTo extends TOldFrom, TNewTo extends TNewFrom>(\n codec: Codec<TOldFrom, TOldTo>,\n unmap: (value: TNewFrom) => TOldFrom,\n map?: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): Codec<TNewFrom, TNewTo> {\n return createCodec({\n ...transformEncoder(codec, unmap),\n read: map ? transformDecoder(codec, map).read : (codec.read as unknown as Decoder<TNewTo>['read']),\n });\n}\n","import { SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, SolanaError } from '@solana/errors';\n\n/**\n * Asserts that a given string matches a given alphabet.\n */\nexport function assertValidBaseString(alphabet: string, testValue: string, givenValue = testValue) {\n if (!testValue.match(new RegExp(`^[${alphabet}]*$`))) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n alphabet,\n base: alphabet.length,\n value: givenValue,\n });\n }\n}\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertValidBaseString } from './assertions';\n\n/**\n * Encodes a string using a custom alphabet by dividing\n * by the base and handling leading zeroes.\n * @see {@link getBaseXCodec} for a more detailed description.\n */\nexport const getBaseXEncoder = (alphabet: string): VariableSizeEncoder<string> => {\n return createEncoder({\n getSizeFromValue: (value: string): number => {\n const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet[0]);\n if (!tailChars) return value.length;\n\n const base10Number = getBigIntFromBaseX(tailChars, alphabet);\n return leadingZeroes.length + Math.ceil(base10Number.toString(16).length / 2);\n },\n write(value: string, bytes, offset) {\n // Check if the value is valid.\n assertValidBaseString(alphabet, value);\n if (value === '') return offset;\n\n // Handle leading zeroes.\n const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet[0]);\n if (!tailChars) {\n bytes.set(new Uint8Array(leadingZeroes.length).fill(0), offset);\n return offset + leadingZeroes.length;\n }\n\n // From baseX to base10.\n let base10Number = getBigIntFromBaseX(tailChars, alphabet);\n\n // From base10 to bytes.\n const tailBytes: number[] = [];\n while (base10Number > 0n) {\n tailBytes.unshift(Number(base10Number % 256n));\n base10Number /= 256n;\n }\n\n const bytesToAdd = [...Array(leadingZeroes.length).fill(0), ...tailBytes];\n bytes.set(bytesToAdd, offset);\n return offset + bytesToAdd.length;\n },\n });\n};\n\n/**\n * Decodes a string using a custom alphabet by dividing\n * by the base and handling leading zeroes.\n * @see {@link getBaseXCodec} for a more detailed description.\n */\nexport const getBaseXDecoder = (alphabet: string): VariableSizeDecoder<string> => {\n return createDecoder({\n read(rawBytes, offset): [string, number] {\n const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset);\n if (bytes.length === 0) return ['', 0];\n\n // Handle leading zeroes.\n let trailIndex = bytes.findIndex(n => n !== 0);\n trailIndex = trailIndex === -1 ? bytes.length : trailIndex;\n const leadingZeroes = alphabet[0].repeat(trailIndex);\n if (trailIndex === bytes.length) return [leadingZeroes, rawBytes.length];\n\n // From bytes to base10.\n const base10Number = bytes.slice(trailIndex).reduce((sum, byte) => sum * 256n + BigInt(byte), 0n);\n\n // From base10 to baseX.\n const tailChars = getBaseXFromBigInt(base10Number, alphabet);\n\n return [leadingZeroes + tailChars, rawBytes.length];\n },\n });\n};\n\n/**\n * A string codec that requires a custom alphabet and uses\n * the length of that alphabet as the base. It then divides\n * the input by the base as many times as necessary to get\n * the output. It also supports leading zeroes by using the\n * first character of the alphabet as the zero character.\n *\n * This can be used to create codecs such as base10 or base58.\n */\nexport const getBaseXCodec = (alphabet: string): VariableSizeCodec<string> =>\n combineCodec(getBaseXEncoder(alphabet), getBaseXDecoder(alphabet));\n\nfunction partitionLeadingZeroes(\n value: string,\n zeroCharacter: string,\n): [leadingZeros: string, tailChars: string | undefined] {\n const [leadingZeros, tailChars] = value.split(new RegExp(`((?!${zeroCharacter}).*)`));\n return [leadingZeros, tailChars];\n}\n\nfunction getBigIntFromBaseX(value: string, alphabet: string): bigint {\n const base = BigInt(alphabet.length);\n let sum = 0n;\n for (const char of value) {\n sum *= base;\n sum += BigInt(alphabet.indexOf(char));\n }\n return sum;\n}\n\nfunction getBaseXFromBigInt(value: bigint, alphabet: string): string {\n const base = BigInt(alphabet.length);\n const tailChars = [];\n while (value > 0n) {\n tailChars.unshift(alphabet[Number(value % base)]);\n value /= base;\n }\n return tailChars.join('');\n}\n","import { getBaseXCodec, getBaseXDecoder, getBaseXEncoder } from './baseX';\n\nconst alphabet = '0123456789';\n\n/** Encodes strings in base10. */\nexport const getBase10Encoder = () => getBaseXEncoder(alphabet);\n\n/** Decodes strings in base10. */\nexport const getBase10Decoder = () => getBaseXDecoder(alphabet);\n\n/** Encodes and decodes strings in base10. */\nexport const getBase10Codec = () => getBaseXCodec(alphabet);\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, SolanaError } from '@solana/errors';\n\nconst enum HexC {\n ZERO = 48, // 0\n NINE = 57, // 9\n A_UP = 65, // A\n F_UP = 70, // F\n A_LO = 97, // a\n F_LO = 102, // f\n}\n\nconst INVALID_STRING_ERROR_BASE_CONFIG = {\n alphabet: '0123456789abcdef',\n base: 16,\n} as const;\n\nfunction charCodeToBase16(char: number) {\n if (char >= HexC.ZERO && char <= HexC.NINE) return char - HexC.ZERO;\n if (char >= HexC.A_UP && char <= HexC.F_UP) return char - (HexC.A_UP - 10);\n if (char >= HexC.A_LO && char <= HexC.F_LO) return char - (HexC.A_LO - 10);\n}\n\n/** Encodes strings in base16. */\nexport const getBase16Encoder = (): VariableSizeEncoder<string> =>\n createEncoder({\n getSizeFromValue: (value: string) => Math.ceil(value.length / 2),\n write(value: string, bytes, offset) {\n const len = value.length;\n const al = len / 2;\n if (len === 1) {\n const c = value.charCodeAt(0);\n const n = charCodeToBase16(c);\n if (n === undefined) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n ...INVALID_STRING_ERROR_BASE_CONFIG,\n value,\n });\n }\n bytes.set([n], offset);\n return 1 + offset;\n }\n const hexBytes = new Uint8Array(al);\n for (let i = 0, j = 0; i < al; i++) {\n const c1 = value.charCodeAt(j++);\n const c2 = value.charCodeAt(j++);\n\n const n1 = charCodeToBase16(c1);\n const n2 = charCodeToBase16(c2);\n if (n1 === undefined || (n2 === undefined && !Number.isNaN(c2))) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n ...INVALID_STRING_ERROR_BASE_CONFIG,\n value,\n });\n }\n hexBytes[i] = !Number.isNaN(c2) ? (n1 << 4) | (n2 ?? 0) : n1;\n }\n\n bytes.set(hexBytes, offset);\n return hexBytes.length + offset;\n },\n });\n\n/** Decodes strings in base16. */\nexport const getBase16Decoder = (): VariableSizeDecoder<string> =>\n createDecoder({\n read(bytes, offset) {\n const value = bytes.slice(offset).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n return [value, bytes.length];\n },\n });\n\n/** Encodes and decodes strings in base16. */\nexport const getBase16Codec = (): VariableSizeCodec<string> => combineCodec(getBase16Encoder(), getBase16Decoder());\n","import { getBaseXCodec, getBaseXDecoder, getBaseXEncoder } from './baseX';\n\nconst alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\n/** Encodes strings in base58. */\nexport const getBase58Encoder = () => getBaseXEncoder(alphabet);\n\n/** Decodes strings in base58. */\nexport const getBase58Decoder = () => getBaseXDecoder(alphabet);\n\n/** Encodes and decodes strings in base58. */\nexport const getBase58Codec = () => getBaseXCodec(alphabet);\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertValidBaseString } from './assertions';\n\n/**\n * Encodes a string using a custom alphabet by reslicing the bits of the byte array.\n * @see {@link getBaseXResliceCodec} for a more detailed description.\n */\nexport const getBaseXResliceEncoder = (alphabet: string, bits: number): VariableSizeEncoder<string> =>\n createEncoder({\n getSizeFromValue: (value: string) => Math.floor((value.length * bits) / 8),\n write(value: string, bytes, offset) {\n assertValidBaseString(alphabet, value);\n if (value === '') return offset;\n const charIndices = [...value].map(c => alphabet.indexOf(c));\n const reslicedBytes = reslice(charIndices, bits, 8, false);\n bytes.set(reslicedBytes, offset);\n return reslicedBytes.length + offset;\n },\n });\n\n/**\n * Decodes a string using a custom alphabet by reslicing the bits of the byte array.\n * @see {@link getBaseXResliceCodec} for a more detailed description.\n */\nexport const getBaseXResliceDecoder = (alphabet: string, bits: number): VariableSizeDecoder<string> =>\n createDecoder({\n read(rawBytes, offset = 0): [string, number] {\n const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset);\n if (bytes.length === 0) return ['', rawBytes.length];\n const charIndices = reslice([...bytes], 8, bits, true);\n return [charIndices.map(i => alphabet[i]).join(''), rawBytes.length];\n },\n });\n\n/**\n * A string serializer that reslices bytes into custom chunks\n * of bits that are then mapped to a custom alphabet.\n *\n * This can be used to create serializers whose alphabet\n * is a power of 2 such as base16 or base64.\n */\nexport const getBaseXResliceCodec = (alphabet: string, bits: number): VariableSizeCodec<string> =>\n combineCodec(getBaseXResliceEncoder(alphabet, bits), getBaseXResliceDecoder(alphabet, bits));\n\n/** Helper function to reslice the bits inside bytes. */\nfunction reslice(input: number[], inputBits: number, outputBits: number, useRemainder: boolean): number[] {\n const output = [];\n let accumulator = 0;\n let bitsInAccumulator = 0;\n const mask = (1 << outputBits) - 1;\n for (const value of input) {\n accumulator = (accumulator << inputBits) | value;\n bitsInAccumulator += inputBits;\n while (bitsInAccumulator >= outputBits) {\n bitsInAccumulator -= outputBits;\n output.push((accumulator >> bitsInAccumulator) & mask);\n }\n }\n if (useRemainder && bitsInAccumulator > 0) {\n output.push((accumulator << (outputBits - bitsInAccumulator)) & mask);\n }\n return output;\n}\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, SolanaError } from '@solana/errors';\n\nimport { assertValidBaseString } from './assertions';\nimport { getBaseXResliceDecoder, getBaseXResliceEncoder } from './baseX-reslice';\n\nconst alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n/** Encodes strings in base64. */\nexport const getBase64Encoder = (): VariableSizeEncoder<string> => {\n if (__BROWSER__) {\n return createEncoder({\n getSizeFromValue: (value: string) => {\n try {\n return (atob as Window['atob'])(value).length;\n } catch {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n alphabet,\n base: 64,\n value,\n });\n }\n },\n write(value: string, bytes, offset) {\n try {\n const bytesToAdd = (atob as Window['atob'])(value)\n .split('')\n .map(c => c.charCodeAt(0));\n bytes.set(bytesToAdd, offset);\n return bytesToAdd.length + offset;\n } catch {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n alphabet,\n base: 64,\n value,\n });\n }\n },\n });\n }\n\n if (__NODEJS__) {\n return createEncoder({\n getSizeFromValue: (value: string) => Buffer.from(value, 'base64').length,\n write(value: string, bytes, offset) {\n assertValidBaseString(alphabet, value.replace(/=/g, ''));\n const buffer = Buffer.from(value, 'base64');\n bytes.set(buffer, offset);\n return buffer.length + offset;\n },\n });\n }\n\n return transformEncoder(getBaseXResliceEncoder(alphabet, 6), (value: string): string => value.replace(/=/g, ''));\n};\n\n/** Decodes strings in base64. */\nexport const getBase64Decoder = (): VariableSizeDecoder<string> => {\n if (__BROWSER__) {\n return createDecoder({\n read(bytes, offset = 0) {\n const slice = bytes.slice(offset);\n const value = (btoa as Window['btoa'])(String.fromCharCode(...slice));\n return [value, bytes.length];\n },\n });\n }\n\n if (__NODEJS__) {\n return createDecoder({\n read: (bytes, offset = 0) => [Buffer.from(bytes, offset).toString('base64'), bytes.length],\n });\n }\n\n return transformDecoder(getBaseXResliceDecoder(alphabet, 6), (value: string): string =>\n value.padEnd(Math.ceil(value.length / 4) * 4, '='),\n );\n};\n\n/** Encodes and decodes strings in base64. */\nexport const getBase64Codec = (): VariableSizeCodec<string> => combineCodec(getBase64Encoder(), getBase64Decoder());\n","/**Removes null characters from a string. */\nexport const removeNullCharacters = (value: string) =>\n // eslint-disable-next-line no-control-regex\n value.replace(/\\u0000/g, '');\n\n/** Pads a string with null characters at the end. */\nexport const padNullCharacters = (value: string, chars: number) => value.padEnd(chars, '\\u0000');\n","export const TextDecoder = globalThis.TextDecoder;\nexport const TextEncoder = globalThis.TextEncoder;\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { TextDecoder, TextEncoder } from '@solana/text-encoding-impl';\n\nimport { removeNullCharacters } from './null-characters';\n\n/** Encodes UTF-8 strings using the native `TextEncoder` API. */\nexport const getUtf8Encoder = (): VariableSizeEncoder<string> => {\n let textEncoder: TextEncoder;\n return createEncoder({\n getSizeFromValue: value => (textEncoder ||= new TextEncoder()).encode(value).length,\n write: (value: string, bytes, offset) => {\n const bytesToAdd = (textEncoder ||= new TextEncoder()).encode(value);\n bytes.set(bytesToAdd, offset);\n return offset + bytesToAdd.length;\n },\n });\n};\n\n/** Decodes UTF-8 strings using the native `TextDecoder` API. */\nexport const getUtf8Decoder = (): VariableSizeDecoder<string> => {\n let textDecoder: TextDecoder;\n return createDecoder({\n read(bytes, offset) {\n const value = (textDecoder ||= new TextDecoder()).decode(bytes.slice(offset));\n return [removeNullCharacters(value), bytes.length];\n },\n });\n};\n\n/** Encodes and decodes UTF-8 strings using the native `TextEncoder` and `TextDecoder` API. */\nexport const getUtf8Codec = (): VariableSizeCodec<string> => combineCodec(getUtf8Encoder(), getUtf8Decoder());\n","import type { Address } from '@solana/addresses';\nimport { ReadonlyUint8Array } from '@solana/codecs-core';\nimport type { Lamports } from '@solana/rpc-types';\n\n/** The amount of bytes required to store the base account information without its data. */\nexport const BASE_ACCOUNT_SIZE = 128;\n\n/** Describe the generic account details applicable to every account. */\nexport type BaseAccount = {\n readonly executable: boolean;\n readonly lamports: Lamports;\n readonly programAddress: Address;\n};\n\n/** Defines a Solana account with its generic details and parsed or encoded data. */\nexport type Account<TData extends Uint8Array | object, TAddress extends string = string> = BaseAccount & {\n readonly address: Address<TAddress>;\n readonly data: TData;\n};\n\n/** Defines a Solana account with its generic details and encoded data. */\nexport type EncodedAccount<TAddress extends string = string> = Account<ReadonlyUint8Array, TAddress>;\n","import type { Decoder, ReadonlyUint8Array } from '@solana/codecs-core';\nimport {\n SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED,\n SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT,\n SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT,\n SolanaError,\n} from '@solana/errors';\n\nimport type { Account, EncodedAccount } from './account';\nimport type { MaybeAccount, MaybeEncodedAccount } from './maybe-account';\n\n/** Decodes the data of a given account using the provided decoder. */\nexport function decodeAccount<TData extends object, TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n decoder: Decoder<TData>,\n): Account<TData, TAddress>;\nexport function decodeAccount<TData extends object, TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n decoder: Decoder<TData>,\n): MaybeAccount<TData, TAddress>;\nexport function decodeAccount<TData extends object, TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n decoder: Decoder<TData>,\n): Account<TData, TAddress> | MaybeAccount<TData, TAddress> {\n try {\n if ('exists' in encodedAccount && !encodedAccount.exists) {\n return encodedAccount;\n }\n return Object.freeze({ ...encodedAccount, data: decoder.decode(encodedAccount.data) });\n } catch {\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT, {\n address: encodedAccount.address,\n });\n }\n}\n\nfunction accountExists<TData extends object>(account: Account<TData> | MaybeAccount<TData>): account is Account<TData> {\n return !('exists' in account) || ('exists' in account && account.exists);\n}\n\n/** Asserts that an account has been decoded. */\nexport function assertAccountDecoded<TData extends object, TAddress extends string = string>(\n account: Account<TData | Uint8Array, TAddress>,\n): asserts account is Account<TData, TAddress>;\nexport function assertAccountDecoded<TData extends object, TAddress extends string = string>(\n account: MaybeAccount<TData | Uint8Array, TAddress>,\n): asserts account is MaybeAccount<TData, TAddress>;\nexport function assertAccountDecoded<TData extends object, TAddress extends string = string>(\n account: Account<TData | Uint8Array, TAddress> | MaybeAccount<TData | Uint8Array, TAddress>,\n): asserts account is Account<TData, TAddress> | MaybeAccount<TData, TAddress> {\n if (accountExists(account) && account.data instanceof Uint8Array) {\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT, {\n address: account.address,\n });\n }\n}\n\n/** Asserts that all accounts have been decoded. */\nexport function assertAccountsDecoded<TData extends object, TAddress extends string = string>(\n accounts: Account<ReadonlyUint8Array | TData, TAddress>[],\n): asserts accounts is Account<TData, TAddress>[];\nexport function assertAccountsDecoded<TData extends object, TAddress extends string = string>(\n accounts: MaybeAccount<ReadonlyUint8Array | TData, TAddress>[],\n): asserts accounts is MaybeAccount<TData, TAddress>[];\nexport function assertAccountsDecoded<TData extends object, TAddress extends string = string>(\n accounts: (Account<ReadonlyUint8Array | TData, TAddress> | MaybeAccount<ReadonlyUint8Array | TData, TAddress>)[],\n): asserts accounts is (Account<TData, TAddress> | MaybeAccount<TData, TAddress>)[] {\n const encoded = accounts.filter(a => accountExists(a) && a.data instanceof Uint8Array);\n if (encoded.length > 0) {\n const encodedAddresses = encoded.map(a => a.address);\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED, {\n addresses: encodedAddresses,\n });\n }\n}\n","import type { Address } from '@solana/addresses';\nimport { getBase58Encoder, getBase64Encoder } from '@solana/codecs-strings';\nimport type {\n AccountInfoBase,\n AccountInfoWithBase58Bytes,\n AccountInfoWithBase58EncodedData,\n AccountInfoWithBase64EncodedData,\n} from '@solana/rpc-types';\n\nimport type { Account, BaseAccount, EncodedAccount } from './account';\nimport type { MaybeAccount, MaybeEncodedAccount } from './maybe-account';\nimport type { JsonParsedDataResponse } from './rpc-api';\n\ntype Base64EncodedRpcAccount = AccountInfoBase & AccountInfoWithBase64EncodedData;\n\n/** Parse an account object received from a base64-encoded RPC call into an EncodedAccount or MaybeEncodedAccount type. */\nexport function parseBase64RpcAccount<TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: Base64EncodedRpcAccount,\n): EncodedAccount<TAddress>;\nexport function parseBase64RpcAccount<TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: Base64EncodedRpcAccount | null,\n): MaybeEncodedAccount<TAddress>;\nexport function parseBase64RpcAccount<TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: Base64EncodedRpcAccount | null,\n): EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress> {\n if (!rpcAccount) return Object.freeze({ address, exists: false });\n const data = getBase64Encoder().encode(rpcAccount.data[0]);\n return Object.freeze({ ...parseBaseAccount(rpcAccount), address, data, exists: true });\n}\n\ntype Base58EncodedRpcAccount = AccountInfoBase & (AccountInfoWithBase58Bytes | AccountInfoWithBase58EncodedData);\n\n/** Parse an account object received from a base58-encoded RPC call into an EncodedAccount or MaybeEncodedAccount type. */\nexport function parseBase58RpcAccount<TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: Base58EncodedRpcAccount,\n): EncodedAccount<TAddress>;\nexport function parseBase58RpcAccount<TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: Base58EncodedRpcAccount | null,\n): MaybeEncodedAccount<TAddress>;\nexport function parseBase58RpcAccount<TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: Base58EncodedRpcAccount | null,\n): EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress> {\n if (!rpcAccount) return Object.freeze({ address, exists: false });\n const data = getBase58Encoder().encode(typeof rpcAccount.data === 'string' ? rpcAccount.data : rpcAccount.data[0]);\n return Object.freeze({ ...parseBaseAccount(rpcAccount), address, data, exists: true });\n}\n\ntype JsonParsedRpcAccount = AccountInfoBase & { readonly data: JsonParsedDataResponse<unknown> };\n\n/** Parse an account object received from a json-parsed RPC call into an Account or MaybeAccount type. */\nexport function parseJsonRpcAccount<TData extends object, TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: JsonParsedRpcAccount,\n): Account<TData, TAddress>;\nexport function parseJsonRpcAccount<TData extends object, TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: JsonParsedRpcAccount | null,\n): MaybeAccount<TData, TAddress>;\nexport function parseJsonRpcAccount<TData extends object, TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: JsonParsedRpcAccount | null,\n): Account<TData, TAddress> | MaybeAccount<TData, TAddress> {\n if (!rpcAccount) return Object.freeze({ address, exists: false });\n const data = rpcAccount.data.parsed.info as TData;\n return Object.freeze({ ...parseBaseAccount(rpcAccount), address, data, exists: true });\n}\n\nfunction parseBaseAccount(rpcAccount: AccountInfoBase): BaseAccount {\n return Object.freeze({\n executable: rpcAccount.executable,\n lamports: rpcAccount.lamports,\n programAddress: rpcAccount.owner,\n });\n}\n","import type { Address } from '@solana/addresses';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Commitment, Slot } from '@solana/rpc-types';\n\nimport type { MaybeAccount, MaybeEncodedAccount } from './maybe-account';\nimport { parseBase64RpcAccount, parseJsonRpcAccount } from './parse-account';\nimport type { GetAccountInfoApi, GetMultipleAccountsApi } from './rpc-api';\n\n/** Optional configuration for fetching a singular account. */\nexport type FetchAccountConfig = {\n abortSignal?: AbortSignal;\n commitment?: Commitment;\n minContextSlot?: Slot;\n};\n\n/** Fetch a base64-encoded account that may or may not exist using an RPC client. */\nexport async function fetchEncodedAccount<TAddress extends string = string>(\n rpc: Rpc<GetAccountInfoApi>,\n address: Address<TAddress>,\n config: FetchAccountConfig = {},\n): Promise<MaybeEncodedAccount<TAddress>> {\n const { abortSignal, ...rpcConfig } = config;\n const response = await rpc.getAccountInfo(address, { ...rpcConfig, encoding: 'base64' }).send({ abortSignal });\n return parseBase64RpcAccount(address, response.value);\n}\n\n/** Fetch a json-parsed account that may or may not exist using an RPC client. */\nexport async function fetchJsonParsedAccount<TData extends object, TAddress extends string = string>(\n rpc: Rpc<GetAccountInfoApi>,\n address: Address<TAddress>,\n config: FetchAccountConfig = {},\n): Promise<MaybeAccount<TData, TAddress> | MaybeEncodedAccount<TAddress>> {\n const { abortSignal, ...rpcConfig } = config;\n const { value: account } = await rpc\n .getAccountInfo(address, { ...rpcConfig, encoding: 'jsonParsed' })\n .send({ abortSignal });\n return !!account && typeof account === 'object' && 'parsed' in account.data\n ? parseJsonRpcAccount<TData, TAddress>(address, account as Parameters<typeof parseJsonRpcAccount>[1])\n : parseBase64RpcAccount<TAddress>(address, account as Parameters<typeof parseBase64RpcAccount>[1]);\n}\n\n/** Optional configuration for fetching multiple accounts. */\nexport type FetchAccountsConfig = {\n abortSignal?: AbortSignal;\n commitment?: Commitment;\n minContextSlot?: Slot;\n};\n\n/** Fetch multiple base64-encoded accounts that may or may not exist using an RPC client. */\nexport async function fetchEncodedAccounts<\n TAddresses extends string[] = string[],\n TWrappedAddresses extends { [P in keyof TAddresses]: Address<TAddresses[P]> } = {\n [P in keyof TAddresses]: Address<TAddresses[P]>;\n },\n>(rpc: Rpc<GetMultipleAccountsApi>, addresses: TWrappedAddresses, config: FetchAccountsConfig = {}) {\n const { abortSignal, ...rpcConfig } = config;\n const response = await rpc\n .getMultipleAccounts(addresses, { ...rpcConfig, encoding: 'base64' })\n .send({ abortSignal });\n return response.value.map((account, index) => parseBase64RpcAccount(addresses[index], account)) as {\n [P in keyof TAddresses]: MaybeEncodedAccount<TAddresses[P]>;\n };\n}\n\n/** Fetch multiple json-parsed accounts that may or may not exist using an RPC client. */\nexport async function fetchJsonParsedAccounts<\n TData extends object[],\n TAddresses extends string[] = string[],\n TWrappedAddresses extends { [P in keyof TAddresses]: Address<TAddresses[P]> } = {\n [P in keyof TAddresses]: Address<TAddresses[P]>;\n },\n>(rpc: Rpc<GetMultipleAccountsApi>, addresses: TWrappedAddresses, config: FetchAccountsConfig = {}) {\n const { abortSignal, ...rpcConfig } = config;\n const response = await rpc\n .getMultipleAccounts(addresses, { ...rpcConfig, encoding: 'jsonParsed' })\n .send({ abortSignal });\n return response.value.map((account, index) => {\n return !!account && typeof account === 'object' && 'parsed' in account.data\n ? parseJsonRpcAccount(addresses[index], account as Parameters<typeof parseJsonRpcAccount>[1])\n : parseBase64RpcAccount(addresses[index], account as Parameters<typeof parseBase64RpcAccount>[1]);\n }) as {\n [P in keyof TAddresses]:\n | MaybeAccount<TData[P & keyof TData], TAddresses[P]>\n | MaybeEncodedAccount<TAddresses[P]>;\n } & {\n [P in keyof TData]:\n | MaybeAccount<TData[P], TAddresses[P & keyof TAddresses]>\n | MaybeEncodedAccount<TAddresses[P & keyof TAddresses]>;\n };\n}\n","import { Address } from '@solana/addresses';\nimport {\n SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND,\n SolanaError,\n} from '@solana/errors';\n\nimport { Account } from './account';\n\n/** Defines a Solana account that may or may not exist after having tried to fetch it. */\nexport type MaybeAccount<TData extends Uint8Array | object, TAddress extends string = string> =\n | { readonly address: Address<TAddress>; readonly exists: false }\n | (Account<TData, TAddress> & { readonly exists: true });\n\n/** Defines a Solana account with encoded data that may or may not exist after having tried to fetch it. */\nexport type MaybeEncodedAccount<TAddress extends string = string> = MaybeAccount<Uint8Array, TAddress>;\n\n/** Asserts that an account that may or may not exists, actually exists. */\nexport function assertAccountExists<TData extends Uint8Array | object, TAddress extends string = string>(\n account: MaybeAccount<TData, TAddress>,\n): asserts account is Account<TData, TAddress> & { exists: true } {\n if (!account.exists) {\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND, { address: account.address });\n }\n}\n\n/** Asserts that all accounts that may or may not exist, actually all exist. */\nexport function assertAccountsExist<TData extends Uint8Array | object, TAddress extends string = string>(\n accounts: MaybeAccount<TData, TAddress>[],\n): asserts accounts is (Account<TData, TAddress> & { exists: true })[] {\n const missingAccounts = accounts.filter(a => !a.exists);\n if (missingAccounts.length > 0) {\n const missingAddresses = missingAccounts.map(a => a.address);\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND, { addresses: missingAddresses });\n }\n}\n","import {\n SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT,\n SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED,\n SolanaError,\n} from '@solana/errors';\n\nfunction assertIsSecureContext() {\n if (__BROWSER__ && !globalThis.isSecureContext) {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT);\n }\n}\n\nlet cachedEd25519Decision: PromiseLike<boolean> | boolean | undefined;\nasync function isEd25519CurveSupported(subtle: SubtleCrypto): Promise<boolean> {\n if (cachedEd25519Decision === undefined) {\n cachedEd25519Decision = new Promise(resolve => {\n subtle\n .generateKey('Ed25519', /* extractable */ false, ['sign', 'verify'])\n .then(() => {\n resolve((cachedEd25519Decision = true));\n })\n .catch(() => {\n resolve((cachedEd25519Decision = false));\n });\n });\n }\n if (typeof cachedEd25519Decision === 'boolean') {\n return cachedEd25519Decision;\n } else {\n return await cachedEd25519Decision;\n }\n}\n\nexport function assertDigestCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.digest !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED);\n }\n}\n\nexport async function assertKeyGenerationIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.generateKey !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED);\n }\n if (!(await isEd25519CurveSupported(globalThis.crypto.subtle))) {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED);\n }\n}\n\nexport function assertKeyExporterIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.exportKey !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED);\n }\n}\n\nexport function assertSigningCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.sign !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED);\n }\n}\n\nexport function assertVerificationCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.verify !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED);\n }\n}\n","import { SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED, SolanaError } from '@solana/errors';\n\nexport function assertPRNGIsAvailable() {\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.getRandomValues !== 'function') {\n throw new SolanaError(SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED);\n }\n}\n","import {\n combineCodec,\n Decoder,\n Encoder,\n fixDecoderSize,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n fixEncoderSize,\n transformEncoder,\n} from '@solana/codecs-core';\nimport { getBase58Decoder, getBase58Encoder } from '@solana/codecs-strings';\nimport {\n SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE,\n SolanaError,\n} from '@solana/errors';\n\nexport type Address<TAddress extends string = string> = TAddress & {\n readonly __brand: unique symbol;\n};\n\nlet memoizedBase58Encoder: Encoder<string> | undefined;\nlet memoizedBase58Decoder: Decoder<string> | undefined;\n\nfunction getMemoizedBase58Encoder(): Encoder<string> {\n if (!memoizedBase58Encoder) memoizedBase58Encoder = getBase58Encoder();\n return memoizedBase58Encoder;\n}\n\nfunction getMemoizedBase58Decoder(): Decoder<string> {\n if (!memoizedBase58Decoder) memoizedBase58Decoder = getBase58Decoder();\n return memoizedBase58Decoder;\n}\n\nexport function isAddress(putativeAddress: string): putativeAddress is Address<typeof putativeAddress> {\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest address (32 bytes of zeroes)\n putativeAddress.length < 32 ||\n // Highest address (32 bytes of 255)\n putativeAddress.length > 44\n ) {\n return false;\n }\n // Slow-path; actually attempt to decode the input string.\n const base58Encoder = getMemoizedBase58Encoder();\n try {\n return base58Encoder.encode(putativeAddress).byteLength === 32;\n } catch {\n return false;\n }\n}\n\nexport function assertIsAddress(putativeAddress: string): asserts putativeAddress is Address<typeof putativeAddress> {\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest address (32 bytes of zeroes)\n putativeAddress.length < 32 ||\n // Highest address (32 bytes of 255)\n putativeAddress.length > 44\n ) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE, {\n actualLength: putativeAddress.length,\n });\n }\n // Slow-path; actually attempt to decode the input string.\n const base58Encoder = getMemoizedBase58Encoder();\n const bytes = base58Encoder.encode(putativeAddress);\n const numBytes = bytes.byteLength;\n if (numBytes !== 32) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH, {\n actualLength: numBytes,\n });\n }\n}\n\nexport function address<TAddress extends string = string>(putativeAddress: TAddress): Address<TAddress> {\n assertIsAddress(putativeAddress);\n return putativeAddress as Address<TAddress>;\n}\n\nexport function getAddressEncoder(): FixedSizeEncoder<Address, 32> {\n return transformEncoder(fixEncoderSize(getMemoizedBase58Encoder(), 32), putativeAddress =>\n address(putativeAddress),\n );\n}\n\nexport function getAddressDecoder(): FixedSizeDecoder<Address, 32> {\n return fixDecoderSize(getMemoizedBase58Decoder(), 32) as FixedSizeDecoder<Address, 32>;\n}\n\nexport function getAddressCodec(): FixedSizeCodec<Address, Address, 32> {\n return combineCodec(getAddressEncoder(), getAddressDecoder());\n}\n\nexport function getAddressComparator(): (x: string, y: string) => number {\n return new Intl.Collator('en', {\n caseFirst: 'lower',\n ignorePunctuation: false,\n localeMatcher: 'best fit',\n numeric: false,\n sensitivity: 'variant',\n usage: 'sort',\n }).compare;\n}\n","/**!\n * noble-ed25519\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Paul Miller (https://paulmillr.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the “Software”), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nconst D = 37095705934669439343138083508754565189542113879843219016388785533085940283555n;\nconst P = 57896044618658097711785492504343953926634992332820282019728792003956564819949n; // 2n ** 255n - 19n; ed25519 is twisted edwards curve\nconst RM1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; // √-1\n\n// mod division\nfunction mod(a: bigint): bigint {\n const r = a % P;\n return r >= 0n ? r : P + r;\n}\nfunction pow2(x: bigint, power: bigint): bigint {\n // pow2(x, 4) == x^(2^4)\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n}\nfunction pow_2_252_3(x: bigint): bigint {\n // x^(2^252-3) unrolled util for square root\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return pow_p_5_8;\n}\nfunction uvRatio(u: bigint, v: bigint): bigint | null {\n // for sqrt comp\n const v3 = mod(v * v * v); // v³\n const v7 = mod(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7); // (uv⁷)^(p-5)/8\n let x = mod(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1) x = root1;\n if (useRoot2 || noRoot) x = root2; // We return root2 anyway, for const-time\n if ((mod(x) & 1n) === 1n) x = mod(-x); // edIsNegative\n if (!useRoot1 && !useRoot2) {\n return null;\n }\n return x;\n}\n// https://datatracker.ietf.org/doc/html/rfc8032#section-5.1.3\nexport function pointIsOnCurve(y: bigint, lastByte: number): boolean {\n const y2 = mod(y * y); // y²\n const u = mod(y2 - 1n); // u=y²-1\n const v = mod(D * y2 + 1n);\n const x = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (x === null) {\n return false;\n }\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (x === 0n && isLastByteOdd) {\n return false;\n }\n return true;\n}\n","import { pointIsOnCurve } from './vendor/noble/ed25519';\n\nfunction byteToHex(byte: number): string {\n const hexString = byte.toString(16);\n if (hexString.length === 1) {\n return `0${hexString}`;\n } else {\n return hexString;\n }\n}\n\nfunction decompressPointBytes(bytes: Uint8Array): bigint {\n const hexString = bytes.reduce((acc, byte, ii) => `${byteToHex(ii === 31 ? byte & ~0x80 : byte)}${acc}`, '');\n const integerLiteralString = `0x${hexString}`;\n return BigInt(integerLiteralString);\n}\n\nexport function compressedPointBytesAreOnCurve(bytes: Uint8Array): boolean {\n if (bytes.byteLength !== 32) {\n return false;\n }\n const y = decompressPointBytes(bytes);\n return pointIsOnCurve(y, bytes[31]);\n}\n","import { assertDigestCapabilityIsAvailable } from '@solana/assertions';\nimport type { ReadonlyUint8Array } from '@solana/codecs-core';\nimport {\n isSolanaError,\n SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED,\n SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE,\n SOLANA_ERROR__ADDRESSES__MALFORMED_PDA,\n SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE,\n SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER,\n SolanaError,\n} from '@solana/errors';\n\nimport { Address, assertIsAddress, getAddressCodec, isAddress } from './address';\nimport { compressedPointBytesAreOnCurve } from './curve';\n\n/**\n * An address derived from a program address and a set of seeds.\n * It includes the bump seed used to derive the address and\n * ensure the address is not on the Ed25519 curve.\n */\nexport type ProgramDerivedAddress<TAddress extends string = string> = Readonly<\n [Address<TAddress>, ProgramDerivedAddressBump]\n>;\n\n/**\n * A number between 0 and 255, inclusive.\n */\nexport type ProgramDerivedAddressBump = number & {\n readonly __brand: unique symbol;\n};\n\n/**\n * Returns true if the input value is a program derived address.\n */\nexport function isProgramDerivedAddress<TAddress extends string = string>(\n value: unknown,\n): value is ProgramDerivedAddress<TAddress> {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'string' &&\n typeof value[1] === 'number' &&\n value[1] >= 0 &&\n value[1] <= 255 &&\n isAddress(value[0])\n );\n}\n\n/**\n * Fails if the input value is not a program derived address.\n */\nexport function assertIsProgramDerivedAddress<TAddress extends string = string>(\n value: unknown,\n): asserts value is ProgramDerivedAddress<TAddress> {\n const validFormat =\n Array.isArray(value) && value.length === 2 && typeof value[0] === 'string' && typeof value[1] === 'number';\n if (!validFormat) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__MALFORMED_PDA);\n }\n if (value[1] < 0 || value[1] > 255) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE, {\n bump: value[1],\n });\n }\n assertIsAddress(value[0]);\n}\n\ntype ProgramDerivedAddressInput = Readonly<{\n programAddress: Address;\n seeds: Seed[];\n}>;\n\ntype SeedInput = Readonly<{\n baseAddress: Address;\n programAddress: Address;\n seed: Seed;\n}>;\n\ntype Seed = ReadonlyUint8Array | string;\n\nconst MAX_SEED_LENGTH = 32;\nconst MAX_SEEDS = 16;\nconst PDA_MARKER_BYTES = [\n // The string 'ProgramDerivedAddress'\n 80, 114, 111, 103, 114, 97, 109, 68, 101, 114, 105, 118, 101, 100, 65, 100, 100, 114, 101, 115, 115,\n] as const;\n\nasync function createProgramDerivedAddress({ programAddress, seeds }: ProgramDerivedAddressInput): Promise<Address> {\n assertDigestCapabilityIsAvailable();\n if (seeds.length > MAX_SEEDS) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED, {\n actual: seeds.length,\n maxSeeds: MAX_SEEDS,\n });\n }\n let textEncoder: TextEncoder;\n const seedBytes = seeds.reduce((acc, seed, ii) => {\n const bytes = typeof seed === 'string' ? (textEncoder ||= new TextEncoder()).encode(seed) : seed;\n if (bytes.byteLength > MAX_SEED_LENGTH) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED, {\n actual: bytes.byteLength,\n index: ii,\n maxSeedLength: MAX_SEED_LENGTH,\n });\n }\n acc.push(...bytes);\n return acc;\n }, [] as number[]);\n const base58EncodedAddressCodec = getAddressCodec();\n const programAddressBytes = base58EncodedAddressCodec.encode(programAddress);\n const addressBytesBuffer = await crypto.subtle.digest(\n 'SHA-256',\n new Uint8Array([...seedBytes, ...programAddressBytes, ...PDA_MARKER_BYTES]),\n );\n const addressBytes = new Uint8Array(addressBytesBuffer);\n if (compressedPointBytesAreOnCurve(addressBytes)) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE);\n }\n return base58EncodedAddressCodec.decode(addressBytes);\n}\n\nexport async function getProgramDerivedAddress({\n programAddress,\n seeds,\n}: ProgramDerivedAddressInput): Promise<ProgramDerivedAddress> {\n let bumpSeed = 255;\n while (bumpSeed > 0) {\n try {\n const address = await createProgramDerivedAddress({\n programAddress,\n seeds: [...seeds, new Uint8Array([bumpSeed])],\n });\n return [address, bumpSeed as ProgramDerivedAddressBump];\n } catch (e) {\n if (isSolanaError(e, SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE)) {\n bumpSeed--;\n } else {\n throw e;\n }\n }\n }\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED);\n}\n\nexport async function createAddressWithSeed({ baseAddress, programAddress, seed }: SeedInput): Promise<Address> {\n const { encode, decode } = getAddressCodec();\n\n const seedBytes = typeof seed === 'string' ? new TextEncoder().encode(seed) : seed;\n if (seedBytes.byteLength > MAX_SEED_LENGTH) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED, {\n actual: seedBytes.byteLength,\n index: 0,\n maxSeedLength: MAX_SEED_LENGTH,\n });\n }\n\n const programAddressBytes = encode(programAddress);\n if (\n programAddressBytes.length >= PDA_MARKER_BYTES.length &&\n programAddressBytes.slice(-PDA_MARKER_BYTES.length).every((byte, index) => byte === PDA_MARKER_BYTES[index])\n ) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER);\n }\n\n const addressBytesBuffer = await crypto.subtle.digest(\n 'SHA-256',\n new Uint8Array([...encode(baseAddress), ...seedBytes, ...programAddressBytes]),\n );\n const addressBytes = new Uint8Array(addressBytesBuffer);\n\n return decode(addressBytes);\n}\n","import { assertKeyExporterIsAvailable } from '@solana/assertions';\nimport { SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY, SolanaError } from '@solana/errors';\n\nimport { Address, getAddressDecoder } from './address';\n\nexport async function getAddressFromPublicKey(publicKey: CryptoKey): Promise<Address> {\n assertKeyExporterIsAvailable();\n if (publicKey.type !== 'public' || publicKey.algorithm.name !== 'Ed25519') {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY);\n }\n const publicKeyBytes = await crypto.subtle.exportKey('raw', publicKey);\n return getAddressDecoder().decode(new Uint8Array(publicKeyBytes));\n}\n","import { SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\n/**\n * Asserts that a given number is between a given range.\n */\nexport function assertNumberIsBetweenForCodec(\n codecDescription: string,\n min: bigint | number,\n max: bigint | number,\n value: bigint | number,\n) {\n if (value < min || value > max) {\n throw new SolanaError(SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE, {\n codecDescription,\n max,\n min,\n value,\n });\n }\n}\n","import { Codec, Decoder, Encoder, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\n/** Defines a encoder for numbers and bigints. */\nexport type NumberEncoder = Encoder<bigint | number>;\n\n/** Defines a fixed-size encoder for numbers and bigints. */\nexport type FixedSizeNumberEncoder<TSize extends number = number> = FixedSizeEncoder<bigint | number, TSize>;\n\n/** Defines a decoder for numbers and bigints. */\nexport type NumberDecoder = Decoder<bigint> | Decoder<number>;\n\n/** Defines a fixed-size decoder for numbers and bigints. */\nexport type FixedSizeNumberDecoder<TSize extends number = number> =\n | FixedSizeDecoder<bigint, TSize>\n | FixedSizeDecoder<number, TSize>;\n\n/** Defines a codec for numbers and bigints. */\nexport type NumberCodec = Codec<bigint | number, bigint> | Codec<bigint | number, number>;\n\n/** Defines a fixed-size codec for numbers and bigints. */\nexport type FixedSizeNumberCodec<TSize extends number = number> =\n | FixedSizeCodec<bigint | number, bigint, TSize>\n | FixedSizeCodec<bigint | number, number, TSize>;\n\n/** Defines the config for number codecs that use more than one byte. */\nexport type NumberCodecConfig = {\n /**\n * Whether the serializer should use little-endian or big-endian encoding.\n * @defaultValue `Endian.Little`\n */\n endian?: Endian;\n};\n\n/** Defines the endianness of a number serializer. */\nexport enum Endian {\n Little,\n Big,\n}\n","import {\n assertByteArrayHasEnoughBytesForCodec,\n assertByteArrayIsNotEmptyForCodec,\n createDecoder,\n createEncoder,\n FixedSizeDecoder,\n FixedSizeEncoder,\n Offset,\n ReadonlyUint8Array,\n} from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\nimport { Endian, NumberCodecConfig } from './common';\n\ntype NumberFactorySharedInput<TSize extends number> = {\n config?: NumberCodecConfig;\n name: string;\n size: TSize;\n};\n\ntype NumberFactoryEncoderInput<TFrom, TSize extends number> = NumberFactorySharedInput<TSize> & {\n range?: [bigint | number, bigint | number];\n set: (view: DataView, value: TFrom, littleEndian?: boolean) => void;\n};\n\ntype NumberFactoryDecoderInput<TTo, TSize extends number> = NumberFactorySharedInput<TSize> & {\n get: (view: DataView, littleEndian?: boolean) => TTo;\n};\n\nfunction isLittleEndian(config?: NumberCodecConfig): boolean {\n return config?.endian === Endian.Big ? false : true;\n}\n\nexport function numberEncoderFactory<TFrom extends bigint | number, TSize extends number>(\n input: NumberFactoryEncoderInput<TFrom, TSize>,\n): FixedSizeEncoder<TFrom, TSize> {\n return createEncoder({\n fixedSize: input.size,\n write(value: TFrom, bytes: Uint8Array, offset: Offset): Offset {\n if (input.range) {\n assertNumberIsBetweenForCodec(input.name, input.range[0], input.range[1], value);\n }\n const arrayBuffer = new ArrayBuffer(input.size);\n input.set(new DataView(arrayBuffer), value, isLittleEndian(input.config));\n bytes.set(new Uint8Array(arrayBuffer), offset);\n return offset + input.size;\n },\n });\n}\n\nexport function numberDecoderFactory<TTo extends bigint | number, TSize extends number>(\n input: NumberFactoryDecoderInput<TTo, TSize>,\n): FixedSizeDecoder<TTo, TSize> {\n return createDecoder({\n fixedSize: input.size,\n read(bytes, offset = 0): [TTo, number] {\n assertByteArrayIsNotEmptyForCodec(input.name, bytes, offset);\n assertByteArrayHasEnoughBytesForCodec(input.name, input.size, bytes, offset);\n const view = new DataView(toArrayBuffer(bytes, offset, input.size));\n return [input.get(view, isLittleEndian(input.config)), offset + input.size];\n },\n });\n}\n\n/**\n * Helper function to ensure that the ArrayBuffer is converted properly from a Uint8Array\n * Source: https://stackoverflow.com/questions/37228285/uint8array-to-arraybuffer\n */\nfunction toArrayBuffer(bytes: ReadonlyUint8Array | Uint8Array, offset?: number, length?: number): ArrayBuffer {\n const bytesOffset = bytes.byteOffset + (offset ?? 0);\n const bytesLength = length ?? bytes.byteLength;\n return bytes.buffer.slice(bytesOffset, bytesOffset + bytesLength);\n}\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getF32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 4> =>\n numberEncoderFactory({\n config,\n name: 'f32',\n set: (view, value, le) => view.setFloat32(0, Number(value), le),\n size: 4,\n });\n\nexport const getF32Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 4> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getFloat32(0, le),\n name: 'f32',\n size: 4,\n });\n\nexport const getF32Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 4> =>\n combineCodec(getF32Encoder(config), getF32Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getF64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 8> =>\n numberEncoderFactory({\n config,\n name: 'f64',\n set: (view, value, le) => view.setFloat64(0, Number(value), le),\n size: 8,\n });\n\nexport const getF64Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 8> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getFloat64(0, le),\n name: 'f64',\n size: 8,\n });\n\nexport const getF64Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 8> =>\n combineCodec(getF64Encoder(config), getF64Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI128Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 16> =>\n numberEncoderFactory({\n config,\n name: 'i128',\n range: [-BigInt('0x7fffffffffffffffffffffffffffffff') - 1n, BigInt('0x7fffffffffffffffffffffffffffffff')],\n set: (view, value, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const rightMask = 0xffffffffffffffffn;\n view.setBigInt64(leftOffset, BigInt(value) >> 64n, le);\n view.setBigUint64(rightOffset, BigInt(value) & rightMask, le);\n },\n size: 16,\n });\n\nexport const getI128Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<bigint, 16> =>\n numberDecoderFactory({\n config,\n get: (view, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const left = view.getBigInt64(leftOffset, le);\n const right = view.getBigUint64(rightOffset, le);\n return (left << 64n) + right;\n },\n name: 'i128',\n size: 16,\n });\n\nexport const getI128Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, bigint, 16> =>\n combineCodec(getI128Encoder(config), getI128Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI16Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 2> =>\n numberEncoderFactory({\n config,\n name: 'i16',\n range: [-Number('0x7fff') - 1, Number('0x7fff')],\n set: (view, value, le) => view.setInt16(0, Number(value), le),\n size: 2,\n });\n\nexport const getI16Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 2> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getInt16(0, le),\n name: 'i16',\n size: 2,\n });\n\nexport const getI16Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 2> =>\n combineCodec(getI16Encoder(config), getI16Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 4> =>\n numberEncoderFactory({\n config,\n name: 'i32',\n range: [-Number('0x7fffffff') - 1, Number('0x7fffffff')],\n set: (view, value, le) => view.setInt32(0, Number(value), le),\n size: 4,\n });\n\nexport const getI32Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 4> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getInt32(0, le),\n name: 'i32',\n size: 4,\n });\n\nexport const getI32Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 4> =>\n combineCodec(getI32Encoder(config), getI32Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 8> =>\n numberEncoderFactory({\n config,\n name: 'i64',\n range: [-BigInt('0x7fffffffffffffff') - 1n, BigInt('0x7fffffffffffffff')],\n set: (view, value, le) => view.setBigInt64(0, BigInt(value), le),\n size: 8,\n });\n\nexport const getI64Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<bigint, 8> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getBigInt64(0, le),\n name: 'i64',\n size: 8,\n });\n\nexport const getI64Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, bigint, 8> =>\n combineCodec(getI64Encoder(config), getI64Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI8Encoder = (): FixedSizeEncoder<bigint | number, 1> =>\n numberEncoderFactory({\n name: 'i8',\n range: [-Number('0x7f') - 1, Number('0x7f')],\n set: (view, value) => view.setInt8(0, Number(value)),\n size: 1,\n });\n\nexport const getI8Decoder = (): FixedSizeDecoder<number, 1> =>\n numberDecoderFactory({\n get: view => view.getInt8(0),\n name: 'i8',\n size: 1,\n });\n\nexport const getI8Codec = (): FixedSizeCodec<bigint | number, number, 1> =>\n combineCodec(getI8Encoder(), getI8Decoder());\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n Offset,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\n\n/**\n * Encodes short u16 numbers.\n * @see {@link getShortU16Codec} for a more detailed description.\n */\nexport const getShortU16Encoder = (): VariableSizeEncoder<bigint | number> =>\n createEncoder({\n getSizeFromValue: (value: bigint | number): number => {\n if (value <= 0b01111111) return 1;\n if (value <= 0b0011111111111111) return 2;\n return 3;\n },\n maxSize: 3,\n write: (value: bigint | number, bytes: Uint8Array, offset: Offset): Offset => {\n assertNumberIsBetweenForCodec('shortU16', 0, 65535, value);\n const shortU16Bytes = [0];\n for (let ii = 0; ; ii += 1) {\n // Shift the bits of the value over such that the next 7 bits are at the right edge.\n const alignedValue = Number(value) >> (ii * 7);\n if (alignedValue === 0) {\n // No more bits to consume.\n break;\n }\n // Extract those 7 bits using a mask.\n const nextSevenBits = 0b1111111 & alignedValue;\n shortU16Bytes[ii] = nextSevenBits;\n if (ii > 0) {\n // Set the continuation bit of the previous slice.\n shortU16Bytes[ii - 1] |= 0b10000000;\n }\n }\n bytes.set(shortU16Bytes, offset);\n return offset + shortU16Bytes.length;\n },\n });\n\n/**\n * Decodes short u16 numbers.\n * @see {@link getShortU16Codec} for a more detailed description.\n */\nexport const getShortU16Decoder = (): VariableSizeDecoder<number> =>\n createDecoder({\n maxSize: 3,\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset): [number, Offset] => {\n let value = 0;\n let byteCount = 0;\n while (++byteCount) {\n const byteIndex = byteCount - 1;\n const currentByte = bytes[offset + byteIndex];\n const nextSevenBits = 0b1111111 & currentByte;\n // Insert the next group of seven bits into the correct slot of the output value.\n value |= nextSevenBits << (byteIndex * 7);\n if ((currentByte & 0b10000000) === 0) {\n // This byte does not have its continuation bit set. We're done.\n break;\n }\n }\n return [value, offset + byteCount];\n },\n });\n\n/**\n * Encodes and decodes short u16 numbers.\n *\n * Short u16 numbers are the same as u16, but serialized with 1 to 3 bytes.\n * If the value is above 0x7f, the top bit is set and the remaining\n * value is stored in the next bytes. Each byte follows the same\n * pattern until the 3rd byte. The 3rd byte, if needed, uses\n * all 8 bits to store the last byte of the original value.\n */\nexport const getShortU16Codec = (): VariableSizeCodec<bigint | number, number> =>\n combineCodec(getShortU16Encoder(), getShortU16Decoder());\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU128Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 16> =>\n numberEncoderFactory({\n config,\n name: 'u128',\n range: [0n, BigInt('0xffffffffffffffffffffffffffffffff')],\n set: (view, value, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const rightMask = 0xffffffffffffffffn;\n view.setBigUint64(leftOffset, BigInt(value) >> 64n, le);\n view.setBigUint64(rightOffset, BigInt(value) & rightMask, le);\n },\n size: 16,\n });\n\nexport const getU128Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<bigint, 16> =>\n numberDecoderFactory({\n config,\n get: (view, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const left = view.getBigUint64(leftOffset, le);\n const right = view.getBigUint64(rightOffset, le);\n return (left << 64n) + right;\n },\n name: 'u128',\n size: 16,\n });\n\nexport const getU128Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, bigint, 16> =>\n combineCodec(getU128Encoder(config), getU128Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU16Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 2> =>\n numberEncoderFactory({\n config,\n name: 'u16',\n range: [0, Number('0xffff')],\n set: (view, value, le) => view.setUint16(0, Number(value), le),\n size: 2,\n });\n\nexport const getU16Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 2> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getUint16(0, le),\n name: 'u16',\n size: 2,\n });\n\nexport const getU16Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 2> =>\n combineCodec(getU16Encoder(config), getU16Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 4> =>\n numberEncoderFactory({\n config,\n name: 'u32',\n range: [0, Number('0xffffffff')],\n set: (view, value, le) => view.setUint32(0, Number(value), le),\n size: 4,\n });\n\nexport const getU32Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 4> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getUint32(0, le),\n name: 'u32',\n size: 4,\n });\n\nexport const getU32Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 4> =>\n combineCodec(getU32Encoder(config), getU32Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 8> =>\n numberEncoderFactory({\n config,\n name: 'u64',\n range: [0n, BigInt('0xffffffffffffffff')],\n set: (view, value, le) => view.setBigUint64(0, BigInt(value), le),\n size: 8,\n });\n\nexport const getU64Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<bigint, 8> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getBigUint64(0, le),\n name: 'u64',\n size: 8,\n });\n\nexport const getU64Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, bigint, 8> =>\n combineCodec(getU64Encoder(config), getU64Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU8Encoder = (): FixedSizeEncoder<bigint | number, 1> =>\n numberEncoderFactory({\n name: 'u8',\n range: [0, Number('0xff')],\n set: (view, value) => view.setUint8(0, Number(value)),\n size: 1,\n });\n\nexport const getU8Decoder = (): FixedSizeDecoder<number, 1> =>\n numberDecoderFactory({\n get: view => view.getUint8(0),\n name: 'u8',\n size: 1,\n });\n\nexport const getU8Codec = (): FixedSizeCodec<bigint | number, number, 1> =>\n combineCodec(getU8Encoder(), getU8Decoder());\n","import { SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, SolanaError } from '@solana/errors';\n\n/** Checks the number of items in an array-like structure is expected. */\nexport function assertValidNumberOfItemsForCodec(\n codecDescription: string,\n expected: bigint | number,\n actual: bigint | number,\n) {\n if (expected !== actual) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual,\n codecDescription,\n expected,\n });\n }\n}\n","import { isFixedSize } from '@solana/codecs-core';\n\n/**\n * Functionally, this type helper is equivalent to the identity type — i.e. `type Identity<T> = T`.\n * However, wrapping generic object mappings in this type significantly reduces the number\n * of instantiation expressions processed, which increases TypeScript performance and\n * prevents \"Type instantiation is excessively deep and possibly infinite\" errors.\n *\n * This works because TypeScript doesn't create a new level of nesting when encountering conditional generic types.\n * @see https://github.com/microsoft/TypeScript/issues/34933\n * @see https://github.com/kysely-org/kysely/pull/483\n */\nexport type DrainOuterGeneric<T> = [T] extends [unknown] ? T : never;\n\nexport function maxCodecSizes(sizes: (number | null)[]): number | null {\n return sizes.reduce(\n (all, size) => (all === null || size === null ? null : Math.max(all, size)),\n 0 as number | null,\n );\n}\n\nexport function sumCodecSizes(sizes: (number | null)[]): number | null {\n return sizes.reduce((all, size) => (all === null || size === null ? null : all + size), 0 as number | null);\n}\n\nexport function getFixedSize(codec: { fixedSize: number } | { maxSize?: number }): number | null {\n return isFixedSize(codec) ? codec.fixedSize : null;\n}\n\nexport function getMaxSize(codec: { fixedSize: number } | { maxSize?: number }): number | null {\n return isFixedSize(codec) ? codec.fixedSize : (codec.maxSize ?? null);\n}\n","import {\n Codec,\n combineCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n getEncodedSize,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { getU32Decoder, getU32Encoder, NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\n\nimport { assertValidNumberOfItemsForCodec } from './assertions';\nimport { getFixedSize, getMaxSize } from './utils';\n\n/**\n * Represents all the size options for array-like codecs\n * — i.e. `array`, `map` and `set`.\n *\n * It can be one of the following:\n * - a {@link NumberCodec} that prefixes its content with its size.\n * - a fixed number of items.\n * - or `'remainder'` to infer the number of items by dividing\n * the rest of the byte array by the fixed size of its item.\n * Note that this option is only available for fixed-size items.\n */\nexport type ArrayLikeCodecSize<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> =\n | TPrefix\n | number\n | 'remainder';\n\n/** Defines the configs for array codecs. */\nexport type ArrayCodecConfig<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * The size of the array.\n * @defaultValue u32 prefix.\n */\n size?: ArrayLikeCodecSize<TPrefix>;\n};\n\n/**\n * Encodes an array of items.\n *\n * @param item - The encoder to use for the array's items.\n * @param config - A set of config for the encoder.\n */\nexport function getArrayEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: ArrayCodecConfig<NumberEncoder> & { size: 0 },\n): FixedSizeEncoder<TFrom[], 0>;\nexport function getArrayEncoder<TFrom>(\n item: FixedSizeEncoder<TFrom>,\n config: ArrayCodecConfig<NumberEncoder> & { size: number },\n): FixedSizeEncoder<TFrom[]>;\nexport function getArrayEncoder<TFrom>(\n item: Encoder<TFrom>,\n config?: ArrayCodecConfig<NumberEncoder>,\n): VariableSizeEncoder<TFrom[]>;\nexport function getArrayEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: ArrayCodecConfig<NumberEncoder> = {},\n): Encoder<TFrom[]> {\n const size = config.size ?? getU32Encoder();\n const fixedSize = computeArrayLikeCodecSize(size, getFixedSize(item));\n const maxSize = computeArrayLikeCodecSize(size, getMaxSize(item)) ?? undefined;\n\n return createEncoder({\n ...(fixedSize !== null\n ? { fixedSize }\n : {\n getSizeFromValue: (array: TFrom[]) => {\n const prefixSize = typeof size === 'object' ? getEncodedSize(array.length, size) : 0;\n return prefixSize + [...array].reduce((all, value) => all + getEncodedSize(value, item), 0);\n },\n maxSize,\n }),\n write: (array: TFrom[], bytes, offset) => {\n if (typeof size === 'number') {\n assertValidNumberOfItemsForCodec('array', size, array.length);\n }\n if (typeof size === 'object') {\n offset = size.write(array.length, bytes, offset);\n }\n array.forEach(value => {\n offset = item.write(value, bytes, offset);\n });\n return offset;\n },\n });\n}\n\n/**\n * Decodes an array of items.\n *\n * @param item - The encoder to use for the array's items.\n * @param config - A set of config for the encoder.\n */\nexport function getArrayDecoder<TTo>(\n item: Decoder<TTo>,\n config: ArrayCodecConfig<NumberDecoder> & { size: 0 },\n): FixedSizeDecoder<TTo[], 0>;\nexport function getArrayDecoder<TTo>(\n item: FixedSizeDecoder<TTo>,\n config: ArrayCodecConfig<NumberDecoder> & { size: number },\n): FixedSizeDecoder<TTo[]>;\nexport function getArrayDecoder<TTo>(\n item: Decoder<TTo>,\n config?: ArrayCodecConfig<NumberDecoder>,\n): VariableSizeDecoder<TTo[]>;\nexport function getArrayDecoder<TTo>(item: Decoder<TTo>, config: ArrayCodecConfig<NumberDecoder> = {}): Decoder<TTo[]> {\n const size = config.size ?? getU32Decoder();\n const itemSize = getFixedSize(item);\n const fixedSize = computeArrayLikeCodecSize(size, itemSize);\n const maxSize = computeArrayLikeCodecSize(size, getMaxSize(item)) ?? undefined;\n\n return createDecoder({\n ...(fixedSize !== null ? { fixedSize } : { maxSize }),\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n const array: TTo[] = [];\n if (typeof size === 'object' && bytes.slice(offset).length === 0) {\n return [array, offset];\n }\n\n if (size === 'remainder') {\n while (offset < bytes.length) {\n const [value, newOffset] = item.read(bytes, offset);\n offset = newOffset;\n array.push(value);\n }\n return [array, offset];\n }\n\n const [resolvedSize, newOffset] = typeof size === 'number' ? [size, offset] : size.read(bytes, offset);\n offset = newOffset;\n for (let i = 0; i < resolvedSize; i += 1) {\n const [value, newOffset] = item.read(bytes, offset);\n offset = newOffset;\n array.push(value);\n }\n return [array, offset];\n },\n });\n}\n\n/**\n * Creates a codec for an array of items.\n *\n * @param item - The codec to use for the array's items.\n * @param config - A set of config for the codec.\n */\nexport function getArrayCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: ArrayCodecConfig<NumberCodec> & { size: 0 },\n): FixedSizeCodec<TFrom[], TTo[], 0>;\nexport function getArrayCodec<TFrom, TTo extends TFrom = TFrom>(\n item: FixedSizeCodec<TFrom, TTo>,\n config: ArrayCodecConfig<NumberCodec> & { size: number },\n): FixedSizeCodec<TFrom[], TTo[]>;\nexport function getArrayCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config?: ArrayCodecConfig<NumberCodec>,\n): VariableSizeCodec<TFrom[], TTo[]>;\nexport function getArrayCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: ArrayCodecConfig<NumberCodec> = {},\n): Codec<TFrom[], TTo[]> {\n return combineCodec(getArrayEncoder(item, config as object), getArrayDecoder(item, config as object));\n}\n\nfunction computeArrayLikeCodecSize(size: number | object | 'remainder', itemSize: number | null): number | null {\n if (typeof size !== 'number') return null;\n if (size === 0) return 0;\n return itemSize === null ? null : itemSize * size;\n}\n","import {\n assertByteArrayHasEnoughBytesForCodec,\n combineCodec,\n createDecoder,\n createEncoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n} from '@solana/codecs-core';\n\n/** Defines the config for bitArray codecs. */\nexport type BitArrayCodecConfig = {\n /**\n * Whether to read the bits in reverse order.\n * @defaultValue `false`\n */\n backward?: boolean;\n};\n\n/**\n * Encodes an array of booleans into bits.\n *\n * @param size - The amount of bytes to use for the bit array.\n * @param config - A set of config for the encoder.\n */\nexport function getBitArrayEncoder<TSize extends number>(\n size: TSize,\n config: BitArrayCodecConfig | boolean = {},\n): FixedSizeEncoder<boolean[], TSize> {\n const parsedConfig: BitArrayCodecConfig = typeof config === 'boolean' ? { backward: config } : config;\n const backward = parsedConfig.backward ?? false;\n return createEncoder({\n fixedSize: size,\n write(value: boolean[], bytes, offset) {\n const bytesToAdd: number[] = [];\n\n for (let i = 0; i < size; i += 1) {\n let byte = 0;\n for (let j = 0; j < 8; j += 1) {\n const feature = Number(value[i * 8 + j] ?? 0);\n byte |= feature << (backward ? j : 7 - j);\n }\n if (backward) {\n bytesToAdd.unshift(byte);\n } else {\n bytesToAdd.push(byte);\n }\n }\n\n bytes.set(bytesToAdd, offset);\n return size;\n },\n });\n}\n\n/**\n * Decodes bits into an array of booleans.\n *\n * @param size - The amount of bytes to use for the bit array.\n * @param config - A set of config for the decoder.\n */\nexport function getBitArrayDecoder<TSize extends number>(\n size: TSize,\n config: BitArrayCodecConfig | boolean = {},\n): FixedSizeDecoder<boolean[], TSize> {\n const parsedConfig: BitArrayCodecConfig = typeof config === 'boolean' ? { backward: config } : config;\n const backward = parsedConfig.backward ?? false;\n return createDecoder({\n fixedSize: size,\n read(bytes, offset) {\n assertByteArrayHasEnoughBytesForCodec('bitArray', size, bytes, offset);\n const booleans: boolean[] = [];\n let slice = bytes.slice(offset, offset + size);\n slice = backward ? slice.reverse() : slice;\n\n slice.forEach(byte => {\n for (let i = 0; i < 8; i += 1) {\n if (backward) {\n booleans.push(Boolean(byte & 1));\n byte >>= 1;\n } else {\n booleans.push(Boolean(byte & 0b1000_0000));\n byte <<= 1;\n }\n }\n });\n\n return [booleans, offset + size];\n },\n });\n}\n\n/**\n * An array of boolean codec that converts booleans to bits and vice versa.\n *\n * @param size - The amount of bytes to use for the bit array.\n * @param config - A set of config for the codec.\n */\nexport function getBitArrayCodec<TSize extends number>(\n size: TSize,\n config: BitArrayCodecConfig | boolean = {},\n): FixedSizeCodec<boolean[], boolean[], TSize> {\n return combineCodec(getBitArrayEncoder(size, config), getBitArrayDecoder(size, config));\n}\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\n\n/** Defines the config for boolean codecs. */\nexport type BooleanCodecConfig<TSize extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * The number codec to delegate to.\n * @defaultValue u8 size.\n */\n size?: TSize;\n};\n\n/**\n * Encodes booleans.\n *\n * @param config - A set of config for the encoder.\n */\nexport function getBooleanEncoder(): FixedSizeEncoder<boolean, 1>;\nexport function getBooleanEncoder<TSize extends number>(\n config: BooleanCodecConfig<NumberEncoder> & { size: FixedSizeNumberEncoder<TSize> },\n): FixedSizeEncoder<boolean, TSize>;\nexport function getBooleanEncoder(config: BooleanCodecConfig<NumberEncoder>): VariableSizeEncoder<boolean>;\nexport function getBooleanEncoder(config: BooleanCodecConfig<NumberEncoder> = {}): Encoder<boolean> {\n return transformEncoder(config.size ?? getU8Encoder(), (value: boolean) => (value ? 1 : 0));\n}\n\n/**\n * Decodes booleans.\n *\n * @param config - A set of config for the decoder.\n */\nexport function getBooleanDecoder(): FixedSizeDecoder<boolean, 1>;\nexport function getBooleanDecoder<TSize extends number>(\n config: BooleanCodecConfig<NumberDecoder> & { size: FixedSizeNumberDecoder<TSize> },\n): FixedSizeDecoder<boolean, TSize>;\nexport function getBooleanDecoder(config: BooleanCodecConfig<NumberDecoder>): VariableSizeDecoder<boolean>;\nexport function getBooleanDecoder(config: BooleanCodecConfig<NumberDecoder> = {}): Decoder<boolean> {\n return transformDecoder(config.size ?? getU8Decoder(), (value: bigint | number): boolean => Number(value) === 1);\n}\n\n/**\n * Creates a boolean codec.\n *\n * @param config - A set of config for the codec.\n */\nexport function getBooleanCodec(): FixedSizeCodec<boolean, boolean, 1>;\nexport function getBooleanCodec<TSize extends number>(\n config: BooleanCodecConfig<NumberCodec> & { size: FixedSizeNumberCodec<TSize> },\n): FixedSizeCodec<boolean, boolean, TSize>;\nexport function getBooleanCodec(config: BooleanCodecConfig<NumberCodec>): VariableSizeCodec<boolean>;\nexport function getBooleanCodec(config: BooleanCodecConfig<NumberCodec> = {}): Codec<boolean> {\n return combineCodec(getBooleanEncoder(config), getBooleanDecoder(config));\n}\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\n/**\n * Encodes byte arrays as provided.\n *\n * To control the size of the encoded byte array, you can use\n * the `fixEncoderSize` or `addEncoderSizePrefix` functions.\n */\nexport function getBytesEncoder(): VariableSizeEncoder<ReadonlyUint8Array | Uint8Array> {\n return createEncoder({\n getSizeFromValue: value => value.length,\n write: (value, bytes, offset) => {\n bytes.set(value, offset);\n return offset + value.length;\n },\n });\n}\n\n/**\n * Decodes byte arrays as-is.\n *\n * To control the size of the decoded byte array, you can use\n * the `fixDecoderSize` or `addDecoderSizePrefix` functions.\n */\nexport function getBytesDecoder(): VariableSizeDecoder<ReadonlyUint8Array> {\n return createDecoder({\n read: (bytes, offset) => {\n const slice = bytes.slice(offset);\n return [slice, offset + slice.length];\n },\n });\n}\n\n/**\n * Creates a sized bytes codec.\n *\n * To control the size of the encoded and decoded byte arrays,\n * you can use the `fixCodecSize` or `addCodecSizePrefix` functions.\n */\nexport function getBytesCodec(): VariableSizeCodec<ReadonlyUint8Array | Uint8Array, ReadonlyUint8Array> {\n return combineCodec(getBytesEncoder(), getBytesDecoder());\n}\n","import {\n combineCodec,\n containsBytes,\n createDecoder,\n createEncoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n ReadonlyUint8Array,\n} from '@solana/codecs-core';\nimport { getBase16Decoder } from '@solana/codecs-strings';\nimport { SOLANA_ERROR__CODECS__INVALID_CONSTANT, SolanaError } from '@solana/errors';\n\n/**\n * Creates a void encoder that always sets the provided byte array when encoding.\n */\nexport function getConstantEncoder<TConstant extends ReadonlyUint8Array>(\n constant: TConstant,\n): FixedSizeEncoder<void, TConstant['length']> {\n return createEncoder({\n fixedSize: constant.length,\n write: (_, bytes, offset) => {\n bytes.set(constant, offset);\n return offset + constant.length;\n },\n });\n}\n\n/**\n * Creates a void decoder that reads the next bytes and fails if they do not match the provided constant.\n */\nexport function getConstantDecoder<TConstant extends ReadonlyUint8Array>(\n constant: TConstant,\n): FixedSizeDecoder<void, TConstant['length']> {\n return createDecoder({\n fixedSize: constant.length,\n read: (bytes, offset) => {\n const base16 = getBase16Decoder();\n if (!containsBytes(bytes, constant, offset)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_CONSTANT, {\n constant,\n data: bytes,\n hexConstant: base16.decode(constant),\n hexData: base16.decode(bytes),\n offset,\n });\n }\n return [undefined, offset + constant.length];\n },\n });\n}\n\n/**\n * Creates a void codec that always sets the provided byte array\n * when encoding and, when decoding, asserts that the next\n * bytes match the provided byte array.\n */\nexport function getConstantCodec<TConstant extends ReadonlyUint8Array>(\n constant: TConstant,\n): FixedSizeCodec<void, void, TConstant['length']> {\n return combineCodec(getConstantEncoder(constant), getConstantDecoder(constant));\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Codec,\n combineCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n getEncodedSize,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertValidNumberOfItemsForCodec } from './assertions';\nimport { DrainOuterGeneric, getFixedSize, getMaxSize, sumCodecSizes } from './utils';\n\ntype GetEncoderTypeFromItems<TItems extends readonly Encoder<any>[]> = DrainOuterGeneric<{\n [I in keyof TItems]: TItems[I] extends Encoder<infer TFrom> ? TFrom : never;\n}>;\n\ntype GetDecoderTypeFromItems<TItems extends readonly Decoder<any>[]> = DrainOuterGeneric<{\n [I in keyof TItems]: TItems[I] extends Decoder<infer TTo> ? TTo : never;\n}>;\n\n/**\n * Creates a encoder for a tuple-like array.\n *\n * @param items - The encoders to use for each item in the tuple.\n */\nexport function getTupleEncoder<const TItems extends readonly FixedSizeEncoder<any>[]>(\n items: TItems,\n): FixedSizeEncoder<GetEncoderTypeFromItems<TItems>>;\nexport function getTupleEncoder<const TItems extends readonly Encoder<any>[]>(\n items: TItems,\n): VariableSizeEncoder<GetEncoderTypeFromItems<TItems>>;\nexport function getTupleEncoder<const TItems extends readonly Encoder<any>[]>(\n items: TItems,\n): Encoder<GetEncoderTypeFromItems<TItems>> {\n type TFrom = GetEncoderTypeFromItems<TItems>;\n const fixedSize = sumCodecSizes(items.map(getFixedSize));\n const maxSize = sumCodecSizes(items.map(getMaxSize)) ?? undefined;\n\n return createEncoder({\n ...(fixedSize === null\n ? {\n getSizeFromValue: (value: TFrom) =>\n items.map((item, index) => getEncodedSize(value[index], item)).reduce((all, one) => all + one, 0),\n maxSize,\n }\n : { fixedSize }),\n write: (value: TFrom, bytes, offset) => {\n assertValidNumberOfItemsForCodec('tuple', items.length, value.length);\n items.forEach((item, index) => {\n offset = item.write(value[index], bytes, offset);\n });\n return offset;\n },\n });\n}\n\n/**\n * Creates a decoder for a tuple-like array.\n *\n * @param items - The decoders to use for each item in the tuple.\n */\n\nexport function getTupleDecoder<const TItems extends readonly FixedSizeDecoder<any>[]>(\n items: TItems,\n): FixedSizeDecoder<GetDecoderTypeFromItems<TItems>>;\nexport function getTupleDecoder<const TItems extends readonly Decoder<any>[]>(\n items: TItems,\n): VariableSizeDecoder<GetDecoderTypeFromItems<TItems>>;\nexport function getTupleDecoder<const TItems extends readonly Decoder<any>[]>(\n items: TItems,\n): Decoder<GetDecoderTypeFromItems<TItems>> {\n type TTo = GetDecoderTypeFromItems<TItems>;\n const fixedSize = sumCodecSizes(items.map(getFixedSize));\n const maxSize = sumCodecSizes(items.map(getMaxSize)) ?? undefined;\n\n return createDecoder({\n ...(fixedSize === null ? { maxSize } : { fixedSize }),\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n const values = [] as Array<any> & TTo;\n items.forEach(item => {\n const [newValue, newOffset] = item.read(bytes, offset);\n values.push(newValue);\n offset = newOffset;\n });\n return [values, offset];\n },\n });\n}\n\n/**\n * Creates a codec for a tuple-like array.\n *\n * @param items - The codecs to use for each item in the tuple.\n */\nexport function getTupleCodec<const TItems extends readonly FixedSizeCodec<any>[]>(\n items: TItems,\n): FixedSizeCodec<GetEncoderTypeFromItems<TItems>, GetDecoderTypeFromItems<TItems> & GetEncoderTypeFromItems<TItems>>;\nexport function getTupleCodec<const TItems extends readonly Codec<any>[]>(\n items: TItems,\n): VariableSizeCodec<\n GetEncoderTypeFromItems<TItems>,\n GetDecoderTypeFromItems<TItems> & GetEncoderTypeFromItems<TItems>\n>;\nexport function getTupleCodec<const TItems extends readonly Codec<any>[]>(\n items: TItems,\n): Codec<GetEncoderTypeFromItems<TItems>, GetDecoderTypeFromItems<TItems> & GetEncoderTypeFromItems<TItems>> {\n return combineCodec(\n getTupleEncoder(items),\n getTupleDecoder(items) as Decoder<GetDecoderTypeFromItems<TItems> & GetEncoderTypeFromItems<TItems>>,\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Codec,\n combineCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n getEncodedSize,\n isFixedSize,\n Offset,\n ReadonlyUint8Array,\n} from '@solana/codecs-core';\nimport { SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\nimport { DrainOuterGeneric, getMaxSize, maxCodecSizes } from './utils';\n\ntype GetEncoderTypeFromVariants<TVariants extends readonly Encoder<any>[]> = DrainOuterGeneric<{\n [I in keyof TVariants]: TVariants[I] extends Encoder<infer TFrom> ? TFrom : never;\n}>[number];\n\ntype GetDecoderTypeFromVariants<TVariants extends readonly Decoder<any>[]> = DrainOuterGeneric<{\n [I in keyof TVariants]: TVariants[I] extends Decoder<infer TFrom> ? TFrom : never;\n}>[number];\n\n/**\n * Creates a union encoder from the provided array of encoder.\n *\n * @param variants - The variant encoders of the union.\n * @param getIndexFromValue - A function that returns the index of the variant from the provided value.\n */\nexport function getUnionEncoder<const TVariants extends readonly Encoder<any>[]>(\n variants: TVariants,\n getIndexFromValue: (value: GetEncoderTypeFromVariants<TVariants>) => number,\n): Encoder<GetEncoderTypeFromVariants<TVariants>> {\n type TFrom = GetEncoderTypeFromVariants<TVariants>;\n const fixedSize = getUnionFixedSize(variants);\n const write: Encoder<TFrom>['write'] = (variant, bytes, offset) => {\n const index = getIndexFromValue(variant);\n assertValidVariantIndex(variants, index);\n return variants[index].write(variant, bytes, offset);\n };\n\n if (fixedSize !== null) {\n return createEncoder({ fixedSize, write });\n }\n\n const maxSize = getUnionMaxSize(variants);\n return createEncoder({\n ...(maxSize !== null ? { maxSize } : {}),\n getSizeFromValue: variant => {\n const index = getIndexFromValue(variant);\n assertValidVariantIndex(variants, index);\n return getEncodedSize(variant, variants[index]);\n },\n write,\n });\n}\n\n/**\n * Creates a union decoder from the provided array of decoder.\n *\n * @param variants - The variant decoders of the union.\n * @param getIndexFromBytes - A function that returns the index of the variant from the byte array.\n */\nexport function getUnionDecoder<const TVariants extends readonly Decoder<any>[]>(\n variants: TVariants,\n getIndexFromBytes: (bytes: ReadonlyUint8Array, offset: Offset) => number,\n): Decoder<GetDecoderTypeFromVariants<TVariants>> {\n type TTo = GetDecoderTypeFromVariants<TVariants>;\n const fixedSize = getUnionFixedSize(variants);\n const read: Decoder<TTo>['read'] = (bytes, offset) => {\n const index = getIndexFromBytes(bytes, offset);\n assertValidVariantIndex(variants, index);\n return variants[index].read(bytes, offset);\n };\n\n if (fixedSize !== null) {\n return createDecoder({ fixedSize, read });\n }\n\n const maxSize = getUnionMaxSize(variants);\n return createDecoder({ ...(maxSize !== null ? { maxSize } : {}), read });\n}\n\n/**\n * Creates a union codec from the provided array of codec.\n *\n * @param variants - The variant codecs of the union.\n * @param getIndexFromValue - A function that returns the index of the variant from the provided value.\n * @param getIndexFromBytes - A function that returns the index of the variant from the byte array.\n */\nexport function getUnionCodec<const TVariants extends readonly Codec<any>[]>(\n variants: TVariants,\n getIndexFromValue: (value: GetEncoderTypeFromVariants<TVariants>) => number,\n getIndexFromBytes: (bytes: ReadonlyUint8Array, offset: Offset) => number,\n): Codec<\n GetEncoderTypeFromVariants<TVariants>,\n GetDecoderTypeFromVariants<TVariants> & GetEncoderTypeFromVariants<TVariants>\n> {\n return combineCodec(\n getUnionEncoder(variants, getIndexFromValue),\n getUnionDecoder(variants, getIndexFromBytes) as Decoder<\n GetDecoderTypeFromVariants<TVariants> & GetEncoderTypeFromVariants<TVariants>\n >,\n );\n}\n\nfunction assertValidVariantIndex(variants: readonly unknown[], index: number) {\n if (typeof variants[index] === 'undefined') {\n throw new SolanaError(SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE, {\n maxRange: variants.length - 1,\n minRange: 0,\n variant: index,\n });\n }\n}\n\nfunction getUnionFixedSize<const TVariants extends readonly (Decoder<any> | Encoder<any>)[]>(variants: TVariants) {\n if (variants.length === 0) return 0;\n if (!isFixedSize(variants[0])) return null;\n const variantSize = variants[0].fixedSize;\n const sameSizedVariants = variants.every(variant => isFixedSize(variant) && variant.fixedSize === variantSize);\n return sameSizedVariants ? variantSize : null;\n}\n\nfunction getUnionMaxSize<const TVariants extends readonly (Decoder<any> | Encoder<any>)[]>(variants: TVariants) {\n return maxCodecSizes(variants.map(variant => getMaxSize(variant)));\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Codec, combineCodec, Decoder, Encoder, transformDecoder, transformEncoder } from '@solana/codecs-core';\nimport { getU8Decoder, getU8Encoder, NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\nimport { SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT, SolanaError } from '@solana/errors';\n\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\nimport { getUnionDecoder, getUnionEncoder } from './union';\nimport { DrainOuterGeneric } from './utils';\n\n/**\n * Defines a discriminated union using discriminated union types.\n *\n * @example\n * ```ts\n * type WebPageEvent =\n * | { __kind: 'pageview', url: string }\n * | { __kind: 'click', x: number, y: number };\n * ```\n */\nexport type DiscriminatedUnion<\n TDiscriminatorProperty extends string = '__kind',\n TDiscriminatorValue extends string = string,\n> = {\n [P in TDiscriminatorProperty]: TDiscriminatorValue;\n};\n\n/**\n * Extracts a variant from a discriminated union.\n *\n * @example\n * ```ts\n * type WebPageEvent =\n * | { __kind: 'pageview', url: string }\n * | { __kind: 'click', x: number, y: number };\n * type ClickEvent = GetDiscriminatedUnionVariant<WebPageEvent, '__kind', 'click'>;\n * // -> { __kind: 'click', x: number, y: number }\n * ```\n */\nexport type GetDiscriminatedUnionVariant<\n TUnion extends DiscriminatedUnion<TDiscriminatorProperty>,\n TDiscriminatorProperty extends string,\n TDiscriminatorValue extends TUnion[TDiscriminatorProperty],\n> = Extract<TUnion, DiscriminatedUnion<TDiscriminatorProperty, TDiscriminatorValue>>;\n\n/**\n * Extracts a variant from a discriminated union without its discriminator.\n *\n * @example\n * ```ts\n * type WebPageEvent =\n * | { __kind: 'pageview', url: string }\n * | { __kind: 'click', x: number, y: number };\n * type ClickEvent = GetDiscriminatedUnionVariantContent<WebPageEvent, '__kind', 'click'>;\n * // -> { x: number, y: number }\n * ```\n */\nexport type GetDiscriminatedUnionVariantContent<\n TUnion extends DiscriminatedUnion<TDiscriminatorProperty>,\n TDiscriminatorProperty extends string,\n TDiscriminatorValue extends TUnion[TDiscriminatorProperty],\n> = Omit<GetDiscriminatedUnionVariant<TUnion, TDiscriminatorProperty, TDiscriminatorValue>, TDiscriminatorProperty>;\n\n/** Defines the config for discriminated union codecs. */\nexport type DiscriminatedUnionCodecConfig<\n TDiscriminatorProperty extends string = '__kind',\n TDiscriminatorSize = NumberCodec | NumberDecoder | NumberEncoder,\n> = {\n /**\n * The property name of the discriminator.\n * @defaultValue `__kind`.\n */\n discriminator?: TDiscriminatorProperty;\n /**\n * The codec to use for the enum discriminator prefixing the variant.\n * @defaultValue u8 prefix.\n */\n size?: TDiscriminatorSize;\n};\n\ntype DiscriminatorValue = bigint | boolean | number | string | null | undefined;\ntype Variants<T> = readonly (readonly [DiscriminatorValue, T])[];\ntype ArrayIndices<T extends readonly unknown[]> = Exclude<Partial<T>['length'], T['length']> & number;\n\ntype GetEncoderTypeFromVariants<\n TVariants extends Variants<Encoder<any>>,\n TDiscriminatorProperty extends string,\n> = DrainOuterGeneric<{\n [I in ArrayIndices<TVariants>]: (TVariants[I][1] extends Encoder<infer TFrom>\n ? TFrom extends object\n ? TFrom\n : object\n : never) & { [P in TDiscriminatorProperty]: TVariants[I][0] };\n}>[ArrayIndices<TVariants>];\n\ntype GetDecoderTypeFromVariants<\n TVariants extends Variants<Decoder<any>>,\n TDiscriminatorProperty extends string,\n> = DrainOuterGeneric<{\n [I in ArrayIndices<TVariants>]: (TVariants[I][1] extends Decoder<infer TTo>\n ? TTo extends object\n ? TTo\n : object\n : never) & { [P in TDiscriminatorProperty]: TVariants[I][0] };\n}>[ArrayIndices<TVariants>];\n\n/**\n * Creates a discriminated union encoder.\n *\n * @param variants - The variant encoders of the discriminated union.\n * @param config - A set of config for the encoder.\n */\nexport function getDiscriminatedUnionEncoder<\n const TVariants extends Variants<Encoder<any>>,\n const TDiscriminatorProperty extends string = '__kind',\n>(\n variants: TVariants,\n config: DiscriminatedUnionCodecConfig<TDiscriminatorProperty, NumberEncoder> = {},\n): Encoder<GetEncoderTypeFromVariants<TVariants, TDiscriminatorProperty>> {\n type TFrom = GetEncoderTypeFromVariants<TVariants, TDiscriminatorProperty>;\n const discriminatorProperty = (config.discriminator ?? '__kind') as TDiscriminatorProperty;\n const prefix = config.size ?? getU8Encoder();\n return getUnionEncoder(\n variants.map(([, variant], index) =>\n transformEncoder(getTupleEncoder([prefix, variant]), (value: TFrom): [number, TFrom] => [index, value]),\n ),\n value => getVariantDiscriminator(variants, value[discriminatorProperty]),\n );\n}\n\n/**\n * Creates a discriminated union decoder.\n *\n * @param variants - The variant decoders of the discriminated union.\n * @param config - A set of config for the decoder.\n */\nexport function getDiscriminatedUnionDecoder<\n const TVariants extends Variants<Decoder<any>>,\n const TDiscriminatorProperty extends string = '__kind',\n>(\n variants: TVariants,\n config: DiscriminatedUnionCodecConfig<TDiscriminatorProperty, NumberDecoder> = {},\n): Decoder<GetDecoderTypeFromVariants<TVariants, TDiscriminatorProperty>> {\n const discriminatorProperty = config.discriminator ?? '__kind';\n const prefix = config.size ?? getU8Decoder();\n return getUnionDecoder(\n variants.map(([discriminator, variant]) =>\n transformDecoder(getTupleDecoder([prefix, variant]), ([, value]) => ({\n [discriminatorProperty]: discriminator,\n ...value,\n })),\n ),\n (bytes, offset) => Number(prefix.read(bytes, offset)[0]),\n );\n}\n\n/**\n * Creates a discriminated union codec.\n *\n * @param variants - The variant codecs of the discriminated union.\n * @param config - A set of config for the codec.\n */\nexport function getDiscriminatedUnionCodec<\n const TVariants extends Variants<Codec<any, any>>,\n const TDiscriminatorProperty extends string = '__kind',\n>(\n variants: TVariants,\n config: DiscriminatedUnionCodecConfig<TDiscriminatorProperty, NumberCodec> = {},\n): Codec<\n GetEncoderTypeFromVariants<TVariants, TDiscriminatorProperty>,\n GetDecoderTypeFromVariants<TVariants, TDiscriminatorProperty> &\n GetEncoderTypeFromVariants<TVariants, TDiscriminatorProperty>\n> {\n return combineCodec(\n getDiscriminatedUnionEncoder(variants, config),\n getDiscriminatedUnionDecoder(variants, config) as Decoder<\n GetDecoderTypeFromVariants<TVariants, TDiscriminatorProperty> &\n GetEncoderTypeFromVariants<TVariants, TDiscriminatorProperty>\n >,\n );\n}\n\nfunction getVariantDiscriminator<const TVariants extends Variants<Decoder<any> | Encoder<any>>>(\n variants: TVariants,\n discriminatorValue: DiscriminatorValue,\n) {\n const discriminator = variants.findIndex(([key]) => discriminatorValue === key);\n if (discriminator < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT, {\n value: discriminatorValue,\n variants: variants.map(([key]) => key),\n });\n }\n return discriminator;\n}\n\n/** @deprecated Use `getDiscriminatedUnionEncoder` instead. */\nexport const getDataEnumEncoder = getDiscriminatedUnionEncoder;\n\n/** @deprecated Use `getDiscriminatedUnionDecoder` instead. */\nexport const getDataEnumDecoder = getDiscriminatedUnionDecoder;\n\n/** @deprecated Use `getDiscriminatedUnionCodec` instead. */\nexport const getDataEnumCodec = getDiscriminatedUnionCodec;\n","/**\n * Defines the \"lookup object\" of an enum.\n *\n * @example\n * ```ts\n * enum Direction { Left, Right };\n * ```\n */\nexport type EnumLookupObject = { [key: string]: number | string };\n\n/**\n * Returns the allowed input for an enum.\n *\n * @example\n * ```ts\n * enum Direction { Left, Right };\n * type DirectionInput = GetEnumFrom<Direction>; // \"Left\" | \"Right\" | 0 | 1\n * ```\n */\nexport type GetEnumFrom<TEnum extends EnumLookupObject> = TEnum[keyof TEnum] | keyof TEnum;\n\n/**\n * Returns all the available variants of an enum.\n *\n * @example\n * ```ts\n * enum Direction { Left, Right };\n * type DirectionOutput = GetEnumTo<Direction>; // 0 | 1\n * ```\n */\nexport type GetEnumTo<TEnum extends EnumLookupObject> = TEnum[keyof TEnum];\n\nexport function getEnumStats(constructor: EnumLookupObject) {\n const numericalValues = [...new Set(Object.values(constructor).filter(v => typeof v === 'number'))].sort();\n const enumRecord = Object.fromEntries(Object.entries(constructor).slice(numericalValues.length)) as Record<\n string,\n number | string\n >;\n const enumKeys = Object.keys(enumRecord);\n const enumValues = Object.values(enumRecord);\n const stringValues: string[] = [\n ...new Set([...enumKeys, ...enumValues.filter((v): v is string => typeof v === 'string')]),\n ];\n\n return { enumKeys, enumRecord, enumValues, numericalValues, stringValues };\n}\n\nexport function getEnumIndexFromVariant({\n enumKeys,\n enumValues,\n variant,\n}: {\n enumKeys: string[];\n enumValues: (number | string)[];\n variant: number | string | symbol;\n}): number {\n const valueIndex = findLastIndex(enumValues, value => value === variant);\n if (valueIndex >= 0) return valueIndex;\n return enumKeys.findIndex(key => key === variant);\n}\n\nexport function getEnumIndexFromDiscriminator({\n discriminator,\n enumKeys,\n enumValues,\n useValuesAsDiscriminators,\n}: {\n discriminator: number;\n enumKeys: string[];\n enumValues: (number | string)[];\n useValuesAsDiscriminators: boolean;\n}): number {\n if (!useValuesAsDiscriminators) {\n return discriminator >= 0 && discriminator < enumKeys.length ? discriminator : -1;\n }\n return findLastIndex(enumValues, value => value === discriminator);\n}\n\nfunction findLastIndex<T>(array: Array<T>, predicate: (value: T, index: number, obj: T[]) => boolean): number {\n let l = array.length;\n while (l--) {\n if (predicate(array[l], l, array)) return l;\n }\n return -1;\n}\n\nexport function formatNumericalValues(values: number[]): string {\n if (values.length === 0) return '';\n let range: [number, number] = [values[0], values[0]];\n const ranges: string[] = [];\n for (let index = 1; index < values.length; index++) {\n const value = values[index];\n if (range[1] + 1 === value) {\n range[1] = value;\n } else {\n ranges.push(range[0] === range[1] ? `${range[0]}` : `${range[0]}-${range[1]}`);\n range = [value, value];\n }\n }\n ranges.push(range[0] === range[1] ? `${range[0]}` : `${range[0]}-${range[1]}`);\n return ranges.join(', ');\n}\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\nimport {\n SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS,\n SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT,\n SolanaError,\n} from '@solana/errors';\n\nimport {\n EnumLookupObject,\n formatNumericalValues,\n GetEnumFrom,\n getEnumIndexFromDiscriminator,\n getEnumIndexFromVariant,\n getEnumStats,\n GetEnumTo,\n} from './enum-helpers';\n\n/** Defines the config for enum codecs. */\nexport type EnumCodecConfig<TDiscriminator extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * The codec to use for the enum discriminator.\n * @defaultValue u8 discriminator.\n */\n size?: TDiscriminator;\n\n /**\n * When set to `true`, numeric values will be used as discriminantors and\n * an error will be thrown if a string value is found on the enum.\n * @defaultValue `false`\n */\n useValuesAsDiscriminators?: boolean;\n};\n\n/**\n * Creates an enum encoder.\n *\n * @param constructor - The constructor of the enum.\n * @param config - A set of config for the encoder.\n */\nexport function getEnumEncoder<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config?: Omit<EnumCodecConfig<NumberEncoder>, 'size'>,\n): FixedSizeEncoder<GetEnumFrom<TEnum>, 1>;\nexport function getEnumEncoder<TEnum extends EnumLookupObject, TSize extends number>(\n constructor: TEnum,\n config: EnumCodecConfig<NumberEncoder> & { size: FixedSizeNumberEncoder<TSize> },\n): FixedSizeEncoder<GetEnumFrom<TEnum>, TSize>;\nexport function getEnumEncoder<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config?: EnumCodecConfig<NumberEncoder>,\n): VariableSizeEncoder<GetEnumFrom<TEnum>>;\nexport function getEnumEncoder<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config: EnumCodecConfig<NumberEncoder> = {},\n): Encoder<GetEnumFrom<TEnum>> {\n const prefix = config.size ?? getU8Encoder();\n const useValuesAsDiscriminators = config.useValuesAsDiscriminators ?? false;\n const { enumKeys, enumValues, numericalValues, stringValues } = getEnumStats(constructor);\n if (useValuesAsDiscriminators && enumValues.some(value => typeof value === 'string')) {\n throw new SolanaError(SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS, {\n stringValues: enumValues.filter((v): v is string => typeof v === 'string'),\n });\n }\n return transformEncoder(prefix, (variant: GetEnumFrom<TEnum>): number => {\n const index = getEnumIndexFromVariant({ enumKeys, enumValues, variant });\n if (index < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT, {\n formattedNumericalValues: formatNumericalValues(numericalValues),\n numericalValues,\n stringValues,\n variant,\n });\n }\n return useValuesAsDiscriminators ? (enumValues[index] as number) : index;\n });\n}\n\n/**\n * Creates an enum decoder.\n *\n * @param constructor - The constructor of the enum.\n * @param config - A set of config for the decoder.\n */\nexport function getEnumDecoder<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config?: Omit<EnumCodecConfig<NumberDecoder>, 'size'>,\n): FixedSizeDecoder<GetEnumTo<TEnum>, 1>;\nexport function getEnumDecoder<TEnum extends EnumLookupObject, TSize extends number>(\n constructor: TEnum,\n config: EnumCodecConfig<NumberDecoder> & { size: FixedSizeNumberDecoder<TSize> },\n): FixedSizeDecoder<GetEnumTo<TEnum>, TSize>;\nexport function getEnumDecoder<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config?: EnumCodecConfig<NumberDecoder>,\n): VariableSizeDecoder<GetEnumTo<TEnum>>;\nexport function getEnumDecoder<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config: EnumCodecConfig<NumberDecoder> = {},\n): Decoder<GetEnumTo<TEnum>> {\n const prefix = config.size ?? getU8Decoder();\n const useValuesAsDiscriminators = config.useValuesAsDiscriminators ?? false;\n const { enumKeys, enumValues, numericalValues } = getEnumStats(constructor);\n if (useValuesAsDiscriminators && enumValues.some(value => typeof value === 'string')) {\n throw new SolanaError(SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS, {\n stringValues: enumValues.filter((v): v is string => typeof v === 'string'),\n });\n }\n return transformDecoder(prefix, (value: bigint | number): GetEnumTo<TEnum> => {\n const discriminator = Number(value);\n const index = getEnumIndexFromDiscriminator({\n discriminator,\n enumKeys,\n enumValues,\n useValuesAsDiscriminators,\n });\n if (index < 0) {\n const validDiscriminators = useValuesAsDiscriminators\n ? numericalValues\n : [...Array(enumKeys.length).keys()];\n throw new SolanaError(SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE, {\n discriminator,\n formattedValidDiscriminators: formatNumericalValues(validDiscriminators),\n validDiscriminators,\n });\n }\n return enumValues[index] as GetEnumTo<TEnum>;\n });\n}\n\n/**\n * Creates an enum codec.\n *\n * @param constructor - The constructor of the enum.\n * @param config - A set of config for the codec.\n */\nexport function getEnumCodec<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config?: Omit<EnumCodecConfig<NumberCodec>, 'size'>,\n): FixedSizeCodec<GetEnumFrom<TEnum>, GetEnumTo<TEnum>, 1>;\nexport function getEnumCodec<TEnum extends EnumLookupObject, TSize extends number>(\n constructor: TEnum,\n config: EnumCodecConfig<NumberCodec> & { size: FixedSizeNumberCodec<TSize> },\n): FixedSizeCodec<GetEnumFrom<TEnum>, GetEnumTo<TEnum>, TSize>;\nexport function getEnumCodec<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config?: EnumCodecConfig<NumberCodec>,\n): VariableSizeCodec<GetEnumFrom<TEnum>, GetEnumTo<TEnum>>;\nexport function getEnumCodec<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config: EnumCodecConfig<NumberCodec> = {},\n): Codec<GetEnumFrom<TEnum>, GetEnumTo<TEnum>> {\n return combineCodec(getEnumEncoder(constructor, config), getEnumDecoder(constructor, config));\n}\n\n/** @deprecated Use `getEnumEncoder` instead. */\nexport const getScalarEnumEncoder = getEnumEncoder;\n\n/** @deprecated Use `getEnumDecoder` instead. */\nexport const getScalarEnumDecoder = getEnumDecoder;\n\n/** @deprecated Use `getEnumCodec` instead. */\nexport const getScalarEnumCodec = getEnumCodec;\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\n\n/**\n * Prefixes a given encoder with a list of void encoders.\n * All void encoders are hidden from the returned encoder.\n */\nexport function getHiddenPrefixEncoder<TFrom>(\n encoder: FixedSizeEncoder<TFrom>,\n prefixedEncoders: readonly FixedSizeEncoder<void>[],\n): FixedSizeEncoder<TFrom>;\nexport function getHiddenPrefixEncoder<TFrom>(\n encoder: Encoder<TFrom>,\n prefixedEncoders: readonly Encoder<void>[],\n): VariableSizeEncoder<TFrom>;\nexport function getHiddenPrefixEncoder<TFrom>(\n encoder: Encoder<TFrom>,\n prefixedEncoders: readonly Encoder<void>[],\n): Encoder<TFrom> {\n return transformEncoder(\n getTupleEncoder([...prefixedEncoders, encoder]) as Encoder<readonly [...void[], TFrom]>,\n (value: TFrom) => [...prefixedEncoders.map(() => undefined), value] as const,\n );\n}\n\n/**\n * Prefixes a given decoder with a list of void decoder.\n * All void decoder are hidden from the returned decoder.\n */\nexport function getHiddenPrefixDecoder<TTo>(\n decoder: FixedSizeDecoder<TTo>,\n prefixedDecoders: readonly FixedSizeDecoder<void>[],\n): FixedSizeDecoder<TTo>;\nexport function getHiddenPrefixDecoder<TTo>(\n decoder: Decoder<TTo>,\n prefixedDecoders: readonly Decoder<void>[],\n): VariableSizeDecoder<TTo>;\nexport function getHiddenPrefixDecoder<TTo>(\n decoder: Decoder<TTo>,\n prefixedDecoders: readonly Decoder<void>[],\n): Decoder<TTo> {\n return transformDecoder(\n getTupleDecoder([...prefixedDecoders, decoder]) as Decoder<readonly [...void[], TTo]>,\n tuple => tuple[tuple.length - 1] as TTo,\n );\n}\n\n/**\n * Prefixes a given codec with a list of void codec.\n * All void codec are hidden from the returned codec.\n */\nexport function getHiddenPrefixCodec<TFrom, TTo extends TFrom>(\n codec: FixedSizeCodec<TFrom, TTo>,\n prefixedCodecs: readonly FixedSizeCodec<void>[],\n): FixedSizeCodec<TFrom, TTo>;\nexport function getHiddenPrefixCodec<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n prefixedCodecs: readonly Codec<void>[],\n): VariableSizeCodec<TFrom, TTo>;\nexport function getHiddenPrefixCodec<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n prefixedCodecs: readonly Codec<void>[],\n): Codec<TFrom, TTo> {\n return combineCodec(getHiddenPrefixEncoder(codec, prefixedCodecs), getHiddenPrefixDecoder(codec, prefixedCodecs));\n}\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\n\n/**\n * Suffixes a given encoder with a list of void encoders.\n * All void encoders are hidden from the returned encoder.\n */\nexport function getHiddenSuffixEncoder<TFrom>(\n encoder: FixedSizeEncoder<TFrom>,\n suffixedEncoders: readonly FixedSizeEncoder<void>[],\n): FixedSizeEncoder<TFrom>;\nexport function getHiddenSuffixEncoder<TFrom>(\n encoder: Encoder<TFrom>,\n suffixedEncoders: readonly Encoder<void>[],\n): VariableSizeEncoder<TFrom>;\nexport function getHiddenSuffixEncoder<TFrom>(\n encoder: Encoder<TFrom>,\n suffixedEncoders: readonly Encoder<void>[],\n): Encoder<TFrom> {\n return transformEncoder(\n getTupleEncoder([encoder, ...suffixedEncoders]) as Encoder<readonly [TFrom, ...void[]]>,\n (value: TFrom) => [value, ...suffixedEncoders.map(() => undefined)] as const,\n );\n}\n\n/**\n * Suffixes a given decoder with a list of void decoder.\n * All void decoder are hidden from the returned decoder.\n */\nexport function getHiddenSuffixDecoder<TTo>(\n decoder: FixedSizeDecoder<TTo>,\n suffixedDecoders: readonly FixedSizeDecoder<void>[],\n): FixedSizeDecoder<TTo>;\nexport function getHiddenSuffixDecoder<TTo>(\n decoder: Decoder<TTo>,\n suffixedDecoders: readonly Decoder<void>[],\n): VariableSizeDecoder<TTo>;\nexport function getHiddenSuffixDecoder<TTo>(\n decoder: Decoder<TTo>,\n suffixedDecoders: readonly Decoder<void>[],\n): Decoder<TTo> {\n return transformDecoder(\n getTupleDecoder([decoder, ...suffixedDecoders]) as Decoder<readonly [TTo, ...void[]]>,\n tuple => tuple[0],\n );\n}\n\n/**\n * Suffixes a given codec with a list of void codec.\n * All void codec are hidden from the returned codec.\n */\nexport function getHiddenSuffixCodec<TFrom, TTo extends TFrom>(\n codec: FixedSizeCodec<TFrom, TTo>,\n suffixedCodecs: readonly FixedSizeCodec<void>[],\n): FixedSizeCodec<TFrom, TTo>;\nexport function getHiddenSuffixCodec<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n suffixedCodecs: readonly Codec<void>[],\n): VariableSizeCodec<TFrom, TTo>;\nexport function getHiddenSuffixCodec<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n suffixedCodecs: readonly Codec<void>[],\n): Codec<TFrom, TTo> {\n return combineCodec(getHiddenSuffixEncoder(codec, suffixedCodecs), getHiddenSuffixDecoder(codec, suffixedCodecs));\n}\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\n\nimport { ArrayLikeCodecSize, getArrayDecoder, getArrayEncoder } from './array';\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\n\n/** Defines the config for Map codecs. */\nexport type MapCodecConfig<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * The size of the array.\n * @defaultValue u32 prefix.\n */\n size?: ArrayLikeCodecSize<TPrefix>;\n};\n\n/**\n * Creates a encoder for a map.\n *\n * @param key - The encoder to use for the map's keys.\n * @param value - The encoder to use for the map's values.\n * @param config - A set of config for the encoder.\n */\nexport function getMapEncoder<TFromKey, TFromValue>(\n key: Encoder<TFromKey>,\n value: Encoder<TFromValue>,\n config: MapCodecConfig<NumberEncoder> & { size: 0 },\n): FixedSizeEncoder<Map<TFromKey, TFromValue>, 0>;\nexport function getMapEncoder<TFromKey, TFromValue>(\n key: FixedSizeEncoder<TFromKey>,\n value: FixedSizeEncoder<TFromValue>,\n config: MapCodecConfig<NumberEncoder> & { size: number },\n): FixedSizeEncoder<Map<TFromKey, TFromValue>>;\nexport function getMapEncoder<TFromKey, TFromValue>(\n key: Encoder<TFromKey>,\n value: Encoder<TFromValue>,\n config?: MapCodecConfig<NumberEncoder>,\n): VariableSizeEncoder<Map<TFromKey, TFromValue>>;\nexport function getMapEncoder<TFromKey, TFromValue>(\n key: Encoder<TFromKey>,\n value: Encoder<TFromValue>,\n config: MapCodecConfig<NumberEncoder> = {},\n): Encoder<Map<TFromKey, TFromValue>> {\n return transformEncoder(\n getArrayEncoder(getTupleEncoder([key, value]), config as object),\n (map: Map<TFromKey, TFromValue>): [TFromKey, TFromValue][] => [...map.entries()],\n );\n}\n\n/**\n * Creates a decoder for a map.\n *\n * @param key - The decoder to use for the map's keys.\n * @param value - The decoder to use for the map's values.\n * @param config - A set of config for the decoder.\n */\nexport function getMapDecoder<TToKey, TToValue>(\n key: Decoder<TToKey>,\n value: Decoder<TToValue>,\n config: MapCodecConfig<NumberDecoder> & { size: 0 },\n): FixedSizeDecoder<Map<TToKey, TToValue>, 0>;\nexport function getMapDecoder<TToKey, TToValue>(\n key: FixedSizeDecoder<TToKey>,\n value: FixedSizeDecoder<TToValue>,\n config: MapCodecConfig<NumberDecoder> & { size: number },\n): FixedSizeDecoder<Map<TToKey, TToValue>>;\nexport function getMapDecoder<TToKey, TToValue>(\n key: Decoder<TToKey>,\n value: Decoder<TToValue>,\n config?: MapCodecConfig<NumberDecoder>,\n): VariableSizeDecoder<Map<TToKey, TToValue>>;\nexport function getMapDecoder<TToKey, TToValue>(\n key: Decoder<TToKey>,\n value: Decoder<TToValue>,\n config: MapCodecConfig<NumberDecoder> = {},\n): Decoder<Map<TToKey, TToValue>> {\n return transformDecoder(\n getArrayDecoder(getTupleDecoder([key, value]), config as object) as Decoder<[TToKey, TToValue][]>,\n (entries: [TToKey, TToValue][]): Map<TToKey, TToValue> => new Map(entries),\n );\n}\n\n/**\n * Creates a codec for a map.\n *\n * @param key - The codec to use for the map's keys.\n * @param value - The codec to use for the map's values.\n * @param config - A set of config for the codec.\n */\nexport function getMapCodec<\n TFromKey,\n TFromValue,\n TToKey extends TFromKey = TFromKey,\n TToValue extends TFromValue = TFromValue,\n>(\n key: Codec<TFromKey, TToKey>,\n value: Codec<TFromValue, TToValue>,\n config: MapCodecConfig<NumberCodec> & { size: 0 },\n): FixedSizeCodec<Map<TFromKey, TFromValue>, Map<TToKey, TToValue>, 0>;\nexport function getMapCodec<\n TFromKey,\n TFromValue,\n TToKey extends TFromKey = TFromKey,\n TToValue extends TFromValue = TFromValue,\n>(\n key: FixedSizeCodec<TFromKey, TToKey>,\n value: FixedSizeCodec<TFromValue, TToValue>,\n config: MapCodecConfig<NumberCodec> & { size: number },\n): FixedSizeCodec<Map<TFromKey, TFromValue>, Map<TToKey, TToValue>>;\nexport function getMapCodec<\n TFromKey,\n TFromValue,\n TToKey extends TFromKey = TFromKey,\n TToValue extends TFromValue = TFromValue,\n>(\n key: Codec<TFromKey, TToKey>,\n value: Codec<TFromValue, TToValue>,\n config?: MapCodecConfig<NumberCodec>,\n): VariableSizeCodec<Map<TFromKey, TFromValue>, Map<TToKey, TToValue>>;\nexport function getMapCodec<\n TFromKey,\n TFromValue,\n TToKey extends TFromKey = TFromKey,\n TToValue extends TFromValue = TFromValue,\n>(\n key: Codec<TFromKey, TToKey>,\n value: Codec<TFromValue, TToValue>,\n config: MapCodecConfig<NumberCodec> = {},\n): Codec<Map<TFromKey, TFromValue>, Map<TToKey, TToValue>> {\n return combineCodec(getMapEncoder(key, value, config as object), getMapDecoder(key, value, config as object));\n}\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n ReadonlyUint8Array,\n} from '@solana/codecs-core';\n\n/**\n * Creates a void encoder.\n */\nexport function getUnitEncoder(): FixedSizeEncoder<void, 0> {\n return createEncoder({\n fixedSize: 0,\n write: (_value, _bytes, offset) => offset,\n });\n}\n\n/**\n * Creates a void decoder.\n */\nexport function getUnitDecoder(): FixedSizeDecoder<void, 0> {\n return createDecoder({\n fixedSize: 0,\n read: (_bytes: ReadonlyUint8Array | Uint8Array, offset) => [undefined, offset],\n });\n}\n\n/**\n * Creates a void codec.\n */\nexport function getUnitCodec(): FixedSizeCodec<void, void, 0> {\n return combineCodec(getUnitEncoder(), getUnitDecoder());\n}\n","import {\n assertIsFixedSize,\n Codec,\n combineCodec,\n containsBytes,\n Decoder,\n Encoder,\n fixDecoderSize,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n fixEncoderSize,\n ReadonlyUint8Array,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\n\nimport { getBooleanDecoder, getBooleanEncoder } from './boolean';\nimport { getConstantDecoder, getConstantEncoder } from './constant';\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\nimport { getUnionDecoder, getUnionEncoder } from './union';\nimport { getUnitDecoder, getUnitEncoder } from './unit';\n\n/** Defines the config for nullable codecs. */\nexport type NullableCodecConfig<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * Defines how the `None` (or `null`) value should be represented.\n *\n * By default, no none value is used. This means a `null` value will be\n * represented by the absence of the item.\n *\n * When `'zeroes'` is provided, a `null` value will skip the bytes that would\n * have been used for the item. Note that this returns a fixed-size codec\n * and thus will only work if the item codec is of fixed size.\n *\n * When a custom byte array is provided, a `null` value will be represented\n * by the provided byte array. Note that this returns a variable-size codec\n * since the byte array representing `null` does not need to match the size\n * of the item codec.\n *\n * @defaultValue No none value is used.\n */\n noneValue?: ReadonlyUint8Array | 'zeroes';\n\n /**\n * The codec to use for the boolean prefix, if any.\n *\n * By default a `u8` number is used as a prefix to determine if the value is `null`.\n * The value `0` is encoded for `null` and `1` if the value is present.\n * This can be set to any number codec to customize the prefix.\n *\n * When `null` is provided, no prefix is used and the `noneValue` is used to\n * determine if the value is `null`. If no `noneValue` is provided, then the\n * absence of any bytes is used to determine if the value is `null`.\n *\n * @defaultValue `u8` prefix.\n */\n prefix?: TPrefix | null;\n};\n\n/**\n * Creates a encoder for an optional value using `null` as the `None` value.\n *\n * @param item - The encoder to use for the value that may be present.\n * @param config - A set of config for the encoder.\n */\nexport function getNullableEncoder<TFrom, TSize extends number>(\n item: FixedSizeEncoder<TFrom, TSize>,\n config: NullableCodecConfig<NumberEncoder> & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeEncoder<TFrom | null, TSize>;\nexport function getNullableEncoder<TFrom>(\n item: FixedSizeEncoder<TFrom>,\n config: NullableCodecConfig<FixedSizeNumberEncoder> & { noneValue: 'zeroes' },\n): FixedSizeEncoder<TFrom | null>;\nexport function getNullableEncoder<TFrom>(\n item: FixedSizeEncoder<TFrom>,\n config: NullableCodecConfig<NumberEncoder> & { noneValue: 'zeroes' },\n): VariableSizeEncoder<TFrom | null>;\nexport function getNullableEncoder<TFrom>(\n item: Encoder<TFrom>,\n config?: NullableCodecConfig<NumberEncoder> & { noneValue?: ReadonlyUint8Array },\n): VariableSizeEncoder<TFrom | null>;\nexport function getNullableEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: NullableCodecConfig<NumberEncoder> = {},\n): Encoder<TFrom | null> {\n const prefix = (() => {\n if (config.prefix === null) {\n return transformEncoder(getUnitEncoder(), (_boolean: boolean) => undefined);\n }\n return getBooleanEncoder({ size: config.prefix ?? getU8Encoder() });\n })();\n const noneValue = (() => {\n if (config.noneValue === 'zeroes') {\n assertIsFixedSize(item);\n return fixEncoderSize(getUnitEncoder(), item.fixedSize);\n }\n if (!config.noneValue) {\n return getUnitEncoder();\n }\n return getConstantEncoder(config.noneValue);\n })();\n\n return getUnionEncoder(\n [\n transformEncoder(getTupleEncoder([prefix, noneValue]), (_value: null): [boolean, void] => [\n false,\n undefined,\n ]),\n transformEncoder(getTupleEncoder([prefix, item]), (value: TFrom): [boolean, TFrom] => [true, value]),\n ],\n variant => Number(variant !== null),\n );\n}\n\n/**\n * Creates a decoder for an optional value using `null` as the `None` value.\n *\n * @param item - The decoder to use for the value that may be present.\n * @param config - A set of config for the decoder.\n */\nexport function getNullableDecoder<TTo, TSize extends number>(\n item: FixedSizeDecoder<TTo, TSize>,\n config: NullableCodecConfig<NumberDecoder> & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeDecoder<TTo | null, TSize>;\nexport function getNullableDecoder<TTo>(\n item: FixedSizeDecoder<TTo>,\n config: NullableCodecConfig<FixedSizeNumberDecoder> & { noneValue: 'zeroes' },\n): FixedSizeDecoder<TTo | null>;\nexport function getNullableDecoder<TTo>(\n item: FixedSizeDecoder<TTo>,\n config: NullableCodecConfig<NumberDecoder> & { noneValue: 'zeroes' },\n): VariableSizeDecoder<TTo | null>;\nexport function getNullableDecoder<TTo>(\n item: Decoder<TTo>,\n config?: NullableCodecConfig<NumberDecoder> & { noneValue?: ReadonlyUint8Array },\n): VariableSizeDecoder<TTo | null>;\nexport function getNullableDecoder<TTo>(\n item: Decoder<TTo>,\n config: NullableCodecConfig<NumberDecoder> = {},\n): Decoder<TTo | null> {\n const prefix = (() => {\n if (config.prefix === null) {\n return transformDecoder(getUnitDecoder(), () => false);\n }\n return getBooleanDecoder({ size: config.prefix ?? getU8Decoder() });\n })();\n const noneValue = (() => {\n if (config.noneValue === 'zeroes') {\n assertIsFixedSize(item);\n return fixDecoderSize(getUnitDecoder(), item.fixedSize);\n }\n if (!config.noneValue) {\n return getUnitDecoder();\n }\n return getConstantDecoder(config.noneValue);\n })();\n\n return getUnionDecoder(\n [\n transformDecoder(getTupleDecoder([prefix, noneValue]), () => null),\n transformDecoder(getTupleDecoder([prefix, item]), ([, value]): TTo => value),\n ],\n (bytes, offset) => {\n if (config.prefix === null && !config.noneValue) {\n return Number(offset < bytes.length);\n }\n if (config.prefix === null && config.noneValue != null) {\n const zeroValue =\n config.noneValue === 'zeroes' ? new Uint8Array(noneValue.fixedSize).fill(0) : config.noneValue;\n return containsBytes(bytes, zeroValue, offset) ? 0 : 1;\n }\n return Number(prefix.read(bytes, offset)[0]);\n },\n );\n}\n\n/**\n * Creates a codec for an optional value using `null` as the `None` value.\n *\n * @param item - The codec to use for the value that may be present.\n * @param config - A set of config for the codec.\n */\nexport function getNullableCodec<TFrom, TTo extends TFrom, TSize extends number>(\n item: FixedSizeCodec<TFrom, TTo, TSize>,\n config: NullableCodecConfig<NumberCodec> & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeCodec<TFrom | null, TTo | null, TSize>;\nexport function getNullableCodec<TFrom, TTo extends TFrom = TFrom>(\n item: FixedSizeCodec<TFrom, TTo>,\n config: NullableCodecConfig<FixedSizeNumberCodec> & { noneValue: 'zeroes' },\n): FixedSizeCodec<TFrom | null, TTo | null>;\nexport function getNullableCodec<TFrom, TTo extends TFrom = TFrom>(\n item: FixedSizeCodec<TFrom, TTo>,\n config: NullableCodecConfig<NumberCodec> & { noneValue: 'zeroes' },\n): VariableSizeCodec<TFrom | null, TTo | null>;\nexport function getNullableCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config?: NullableCodecConfig<NumberCodec> & { noneValue?: ReadonlyUint8Array },\n): VariableSizeCodec<TFrom | null, TTo | null>;\nexport function getNullableCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: NullableCodecConfig<NumberCodec> = {},\n): Codec<TFrom | null, TTo | null> {\n type ConfigCast = NullableCodecConfig<NumberCodec> & { noneValue?: ReadonlyUint8Array };\n return combineCodec(\n getNullableEncoder<TFrom>(item, config as ConfigCast),\n getNullableDecoder<TTo>(item, config as ConfigCast),\n );\n}\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\n\nimport { ArrayLikeCodecSize, getArrayDecoder, getArrayEncoder } from './array';\n\n/** Defines the config for set codecs. */\nexport type SetCodecConfig<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * The size of the set.\n * @defaultValue u32 prefix.\n */\n size?: ArrayLikeCodecSize<TPrefix>;\n};\n\n/**\n * Encodes an set of items.\n *\n * @param item - The encoder to use for the set's items.\n * @param config - A set of config for the encoder.\n */\nexport function getSetEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: SetCodecConfig<NumberEncoder> & { size: 0 },\n): FixedSizeEncoder<Set<TFrom>, 0>;\nexport function getSetEncoder<TFrom>(\n item: FixedSizeEncoder<TFrom>,\n config: SetCodecConfig<NumberEncoder> & { size: number },\n): FixedSizeEncoder<Set<TFrom>>;\nexport function getSetEncoder<TFrom>(\n item: Encoder<TFrom>,\n config?: SetCodecConfig<NumberEncoder>,\n): VariableSizeEncoder<Set<TFrom>>;\nexport function getSetEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: SetCodecConfig<NumberEncoder> = {},\n): Encoder<Set<TFrom>> {\n return transformEncoder(getArrayEncoder(item, config as object), (set: Set<TFrom>): TFrom[] => [...set]);\n}\n\n/**\n * Decodes an set of items.\n *\n * @param item - The encoder to use for the set's items.\n * @param config - A set of config for the encoder.\n */\nexport function getSetDecoder<TTo>(\n item: Decoder<TTo>,\n config: SetCodecConfig<NumberDecoder> & { size: 0 },\n): FixedSizeDecoder<Set<TTo>, 0>;\nexport function getSetDecoder<TTo>(\n item: FixedSizeDecoder<TTo>,\n config: SetCodecConfig<NumberDecoder> & { size: number },\n): FixedSizeDecoder<Set<TTo>>;\nexport function getSetDecoder<TTo>(\n item: Decoder<TTo>,\n config?: SetCodecConfig<NumberDecoder>,\n): VariableSizeDecoder<Set<TTo>>;\nexport function getSetDecoder<TTo>(item: Decoder<TTo>, config: SetCodecConfig<NumberDecoder> = {}): Decoder<Set<TTo>> {\n return transformDecoder(getArrayDecoder(item, config as object), (entries: TTo[]): Set<TTo> => new Set(entries));\n}\n\n/**\n * Creates a codec for an set of items.\n *\n * @param item - The codec to use for the set's items.\n * @param config - A set of config for the codec.\n */\nexport function getSetCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: SetCodecConfig<NumberCodec> & { size: 0 },\n): FixedSizeCodec<Set<TFrom>, Set<TTo>, 0>;\nexport function getSetCodec<TFrom, TTo extends TFrom = TFrom>(\n item: FixedSizeCodec<TFrom, TTo>,\n config: SetCodecConfig<NumberCodec> & { size: number },\n): FixedSizeCodec<Set<TFrom>, Set<TTo>>;\nexport function getSetCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config?: SetCodecConfig<NumberCodec>,\n): VariableSizeCodec<Set<TFrom>, Set<TTo>>;\nexport function getSetCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: SetCodecConfig<NumberCodec> = {},\n): Codec<Set<TFrom>, Set<TTo>> {\n return combineCodec(getSetEncoder(item, config as object), getSetDecoder(item, config as object));\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Codec,\n combineCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n getEncodedSize,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { DrainOuterGeneric, getFixedSize, getMaxSize, sumCodecSizes } from './utils';\n\ntype Fields<T> = readonly (readonly [string, T])[];\ntype ArrayIndices<T extends readonly unknown[]> = Exclude<Partial<T>['length'], T['length']> & number;\n\ntype GetEncoderTypeFromFields<TFields extends Fields<Encoder<any>>> = DrainOuterGeneric<{\n [I in ArrayIndices<TFields> as TFields[I][0]]: TFields[I][1] extends Encoder<infer TFrom> ? TFrom : never;\n}>;\n\ntype GetDecoderTypeFromFields<TFields extends Fields<Decoder<any>>> = DrainOuterGeneric<{\n [I in ArrayIndices<TFields> as TFields[I][0]]: TFields[I][1] extends Decoder<infer TTo> ? TTo : never;\n}>;\n\n/**\n * Creates a encoder for a custom object.\n *\n * @param fields - The name and encoder of each field.\n */\nexport function getStructEncoder<const TFields extends Fields<FixedSizeEncoder<any>>>(\n fields: TFields,\n): FixedSizeEncoder<GetEncoderTypeFromFields<TFields>>;\nexport function getStructEncoder<const TFields extends Fields<Encoder<any>>>(\n fields: TFields,\n): VariableSizeEncoder<GetEncoderTypeFromFields<TFields>>;\nexport function getStructEncoder<const TFields extends Fields<Encoder<any>>>(\n fields: TFields,\n): Encoder<GetEncoderTypeFromFields<TFields>> {\n type TFrom = GetEncoderTypeFromFields<TFields>;\n const fieldCodecs = fields.map(([, codec]) => codec);\n const fixedSize = sumCodecSizes(fieldCodecs.map(getFixedSize));\n const maxSize = sumCodecSizes(fieldCodecs.map(getMaxSize)) ?? undefined;\n\n return createEncoder({\n ...(fixedSize === null\n ? {\n getSizeFromValue: (value: TFrom) =>\n fields\n .map(([key, codec]) => getEncodedSize(value[key as keyof TFrom], codec))\n .reduce((all, one) => all + one, 0),\n maxSize,\n }\n : { fixedSize }),\n write: (struct: TFrom, bytes, offset) => {\n fields.forEach(([key, codec]) => {\n offset = codec.write(struct[key as keyof TFrom], bytes, offset);\n });\n return offset;\n },\n });\n}\n\n/**\n * Creates a decoder for a custom object.\n *\n * @param fields - The name and decoder of each field.\n */\nexport function getStructDecoder<const TFields extends Fields<FixedSizeDecoder<any>>>(\n fields: TFields,\n): FixedSizeDecoder<GetDecoderTypeFromFields<TFields>>;\nexport function getStructDecoder<const TFields extends Fields<Decoder<any>>>(\n fields: TFields,\n): VariableSizeDecoder<GetDecoderTypeFromFields<TFields>>;\nexport function getStructDecoder<const TFields extends Fields<Decoder<any>>>(\n fields: TFields,\n): Decoder<GetDecoderTypeFromFields<TFields>> {\n type TTo = GetDecoderTypeFromFields<TFields>;\n const fieldCodecs = fields.map(([, codec]) => codec);\n const fixedSize = sumCodecSizes(fieldCodecs.map(getFixedSize));\n const maxSize = sumCodecSizes(fieldCodecs.map(getMaxSize)) ?? undefined;\n\n return createDecoder({\n ...(fixedSize === null ? { maxSize } : { fixedSize }),\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n const struct = {} as TTo;\n fields.forEach(([key, codec]) => {\n const [value, newOffset] = codec.read(bytes, offset);\n offset = newOffset;\n struct[key as keyof TTo] = value;\n });\n return [struct, offset];\n },\n });\n}\n\n/**\n * Creates a codec for a custom object.\n *\n * @param fields - The name and codec of each field.\n */\nexport function getStructCodec<const TFields extends Fields<FixedSizeCodec<any>>>(\n fields: TFields,\n): FixedSizeCodec<\n GetEncoderTypeFromFields<TFields>,\n GetDecoderTypeFromFields<TFields> & GetEncoderTypeFromFields<TFields>\n>;\nexport function getStructCodec<const TFields extends Fields<Codec<any>>>(\n fields: TFields,\n): VariableSizeCodec<\n GetEncoderTypeFromFields<TFields>,\n GetDecoderTypeFromFields<TFields> & GetEncoderTypeFromFields<TFields>\n>;\nexport function getStructCodec<const TFields extends Fields<Codec<any>>>(\n fields: TFields,\n): Codec<GetEncoderTypeFromFields<TFields>, GetDecoderTypeFromFields<TFields> & GetEncoderTypeFromFields<TFields>> {\n return combineCodec(\n getStructEncoder(fields),\n getStructDecoder(fields) as Decoder<GetDecoderTypeFromFields<TFields> & GetEncoderTypeFromFields<TFields>>,\n );\n}\n","/**\n * An implementation of the Rust Option type in JavaScript.\n * It can be one of the following:\n * - <code>{@link Some}<T></code>: Meaning there is a value of type T.\n * - <code>{@link None}</code>: Meaning there is no value.\n */\nexport type Option<T> = None | Some<T>;\n\n/**\n * Defines a looser type that can be used when serializing an {@link Option}.\n * This allows us to pass null or the Option value directly whilst still\n * supporting the Option type for use-cases that need more type safety.\n */\nexport type OptionOrNullable<T> = Option<T> | T | null;\n\n/**\n * Represents an option of type `T` that has a value.\n *\n * @see {@link Option}\n */\nexport type Some<T> = Readonly<{ __option: 'Some'; value: T }>;\n\n/**\n * Represents an option of type `T` that has no value.\n *\n * @see {@link Option}\n */\nexport type None = Readonly<{ __option: 'None' }>;\n\n/**\n * Creates a new {@link Option} of type `T` that has a value.\n *\n * @see {@link Option}\n */\nexport const some = <T>(value: T): Option<T> => ({ __option: 'Some', value });\n\n/**\n * Creates a new {@link Option} of type `T` that has no value.\n *\n * @see {@link Option}\n */\nexport const none = <T>(): Option<T> => ({ __option: 'None' });\n\n/**\n * Whether the given data is an {@link Option}.\n */\nexport const isOption = <T = unknown>(input: unknown): input is Option<T> =>\n !!(\n input &&\n typeof input === 'object' &&\n '__option' in input &&\n ((input.__option === 'Some' && 'value' in input) || input.__option === 'None')\n );\n\n/**\n * Whether the given {@link Option} is a {@link Some}.\n */\nexport const isSome = <T>(option: Option<T>): option is Some<T> => option.__option === 'Some';\n\n/**\n * Whether the given {@link Option} is a {@link None}.\n */\nexport const isNone = <T>(option: Option<T>): option is None => option.__option === 'None';\n","import { isSome, none, Option, some } from './option';\n\n/**\n * Unwraps the value of an {@link Option} of type `T`\n * or returns a fallback value that defaults to `null`.\n */\nexport function unwrapOption<T>(option: Option<T>): T | null;\nexport function unwrapOption<T, U>(option: Option<T>, fallback: () => U): T | U;\nexport function unwrapOption<T, U = null>(option: Option<T>, fallback?: () => U): T | U {\n if (isSome(option)) return option.value;\n return fallback ? fallback() : (null as U);\n}\n\n/**\n * Wraps a nullable value into an {@link Option}.\n */\nexport const wrapNullable = <T>(nullable: T | null): Option<T> => (nullable !== null ? some(nullable) : none<T>());\n","import {\n assertIsFixedSize,\n Codec,\n combineCodec,\n containsBytes,\n Decoder,\n Encoder,\n fixDecoderSize,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n fixEncoderSize,\n ReadonlyUint8Array,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n getBooleanDecoder,\n getBooleanEncoder,\n getConstantDecoder,\n getConstantEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getUnionDecoder,\n getUnionEncoder,\n getUnitDecoder,\n getUnitEncoder,\n} from '@solana/codecs-data-structures';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\n\nimport { isOption, isSome, None, none, Option, OptionOrNullable, Some, some } from './option';\nimport { wrapNullable } from './unwrap-option';\n\n/** Defines the config for Option codecs. */\nexport type OptionCodecConfig<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * Defines how the `None` value should be represented.\n *\n * By default, no none value is used. This means a `None` value will be\n * represented by the absence of the item.\n *\n * When `'zeroes'` is provided, a `None` value will skip the bytes that would\n * have been used for the item. Note that this returns a fixed-size codec\n * and thus will only work if the item codec is of fixed size.\n *\n * When a custom byte array is provided, a `None` value will be represented\n * by the provided byte array. Note that this returns a variable-size codec\n * since the byte array representing `None` does not need to match the size\n * of the item codec.\n *\n * @defaultValue No none value is used.\n */\n noneValue?: ReadonlyUint8Array | 'zeroes';\n\n /**\n * The codec to use for the boolean prefix, if any.\n *\n * By default a `u8` number is used as a prefix to determine if the value is `None`.\n * The value `0` is encoded for `None` and `1` if the value is present.\n * This can be set to any number codec to customize the prefix.\n *\n * When `null` is provided, no prefix is used and the `noneValue` is used to\n * determine if the value is `None`. If no `noneValue` is provided, then the\n * absence of any bytes is used to determine if the value is `None`.\n *\n * @defaultValue `u8` prefix.\n */\n prefix?: TPrefix | null;\n};\n\n/**\n * Creates a encoder for an optional value using the `Option<T>` type.\n *\n * @param item - The encoder to use for the value that may be present.\n * @param config - A set of config for the encoder.\n */\nexport function getOptionEncoder<TFrom, TSize extends number>(\n item: FixedSizeEncoder<TFrom, TSize>,\n config: OptionCodecConfig<NumberEncoder> & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeEncoder<OptionOrNullable<TFrom>, TSize>;\nexport function getOptionEncoder<TFrom>(\n item: FixedSizeEncoder<TFrom>,\n config: OptionCodecConfig<FixedSizeNumberEncoder> & { noneValue: 'zeroes' },\n): FixedSizeEncoder<OptionOrNullable<TFrom>>;\nexport function getOptionEncoder<TFrom>(\n item: FixedSizeEncoder<TFrom>,\n config: OptionCodecConfig<NumberEncoder> & { noneValue: 'zeroes' },\n): VariableSizeEncoder<OptionOrNullable<TFrom>>;\nexport function getOptionEncoder<TFrom>(\n item: Encoder<TFrom>,\n config?: OptionCodecConfig<NumberEncoder> & { noneValue?: ReadonlyUint8Array },\n): VariableSizeEncoder<OptionOrNullable<TFrom>>;\nexport function getOptionEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: OptionCodecConfig<NumberEncoder> = {},\n): Encoder<OptionOrNullable<TFrom>> {\n const prefix = (() => {\n if (config.prefix === null) {\n return transformEncoder(getUnitEncoder(), (_boolean: boolean) => undefined);\n }\n return getBooleanEncoder({ size: config.prefix ?? getU8Encoder() });\n })();\n const noneValue = (() => {\n if (config.noneValue === 'zeroes') {\n assertIsFixedSize(item);\n return fixEncoderSize(getUnitEncoder(), item.fixedSize);\n }\n if (!config.noneValue) {\n return getUnitEncoder();\n }\n return getConstantEncoder(config.noneValue);\n })();\n\n return getUnionEncoder(\n [\n transformEncoder(getTupleEncoder([prefix, noneValue]), (_value: None | null): [boolean, void] => [\n false,\n undefined,\n ]),\n transformEncoder(getTupleEncoder([prefix, item]), (value: Some<TFrom> | TFrom): [boolean, TFrom] => [\n true,\n isOption(value) && isSome(value) ? value.value : value,\n ]),\n ],\n variant => {\n const option = isOption<TFrom>(variant) ? variant : wrapNullable(variant);\n return Number(isSome(option));\n },\n );\n}\n\n/**\n * Creates a decoder for an optional value using the `Option<T>` type.\n *\n * @param item - The decoder to use for the value that may be present.\n * @param config - A set of config for the decoder.\n */\nexport function getOptionDecoder<TTo, TSize extends number>(\n item: FixedSizeDecoder<TTo, TSize>,\n config: OptionCodecConfig<NumberDecoder> & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeDecoder<Option<TTo>, TSize>;\nexport function getOptionDecoder<TTo>(\n item: FixedSizeDecoder<TTo>,\n config: OptionCodecConfig<FixedSizeNumberDecoder> & { noneValue: 'zeroes' },\n): FixedSizeDecoder<Option<TTo>>;\nexport function getOptionDecoder<TTo>(\n item: FixedSizeDecoder<TTo>,\n config: OptionCodecConfig<NumberDecoder> & { noneValue: 'zeroes' },\n): VariableSizeDecoder<Option<TTo>>;\nexport function getOptionDecoder<TTo>(\n item: Decoder<TTo>,\n config?: OptionCodecConfig<NumberDecoder> & { noneValue?: ReadonlyUint8Array },\n): VariableSizeDecoder<Option<TTo>>;\nexport function getOptionDecoder<TTo>(\n item: Decoder<TTo>,\n config: OptionCodecConfig<NumberDecoder> = {},\n): Decoder<Option<TTo>> {\n const prefix = (() => {\n if (config.prefix === null) {\n return transformDecoder(getUnitDecoder(), () => false);\n }\n return getBooleanDecoder({ size: config.prefix ?? getU8Decoder() });\n })();\n const noneValue = (() => {\n if (config.noneValue === 'zeroes') {\n assertIsFixedSize(item);\n return fixDecoderSize(getUnitDecoder(), item.fixedSize);\n }\n if (!config.noneValue) {\n return getUnitDecoder();\n }\n return getConstantDecoder(config.noneValue);\n })();\n\n return getUnionDecoder(\n [\n transformDecoder(getTupleDecoder([prefix, noneValue]), () => none<TTo>()),\n transformDecoder(getTupleDecoder([prefix, item]), ([, value]) => some(value)),\n ],\n (bytes, offset) => {\n if (config.prefix === null && !config.noneValue) {\n return Number(offset < bytes.length);\n }\n if (config.prefix === null && config.noneValue != null) {\n const zeroValue =\n config.noneValue === 'zeroes' ? new Uint8Array(noneValue.fixedSize).fill(0) : config.noneValue;\n return containsBytes(bytes, zeroValue, offset) ? 0 : 1;\n }\n return Number(prefix.read(bytes, offset)[0]);\n },\n );\n}\n\n/**\n * Creates a codec for an optional value using the `Option<T>` type.\n *\n * @param item - The codec to use for the value that may be present.\n * @param config - A set of config for the codec.\n */\nexport function getOptionCodec<TFrom, TTo extends TFrom, TSize extends number>(\n item: FixedSizeCodec<TFrom, TTo, TSize>,\n config: OptionCodecConfig<NumberCodec> & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeCodec<OptionOrNullable<TFrom>, Option<TTo>, TSize>;\nexport function getOptionCodec<TFrom, TTo extends TFrom = TFrom>(\n item: FixedSizeCodec<TFrom, TTo>,\n config: OptionCodecConfig<FixedSizeNumberCodec> & { noneValue: 'zeroes' },\n): FixedSizeCodec<OptionOrNullable<TFrom>, Option<TTo>>;\nexport function getOptionCodec<TFrom, TTo extends TFrom = TFrom>(\n item: FixedSizeCodec<TFrom, TTo>,\n config: OptionCodecConfig<NumberCodec> & { noneValue: 'zeroes' },\n): VariableSizeCodec<OptionOrNullable<TFrom>, Option<TTo>>;\nexport function getOptionCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config?: OptionCodecConfig<NumberCodec> & { noneValue?: ReadonlyUint8Array },\n): VariableSizeCodec<OptionOrNullable<TFrom>, Option<TTo>>;\nexport function getOptionCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: OptionCodecConfig<NumberCodec> = {},\n): Codec<OptionOrNullable<TFrom>, Option<TTo>> {\n type ConfigCast = OptionCodecConfig<NumberCodec> & { noneValue?: ReadonlyUint8Array };\n return combineCodec(\n getOptionEncoder<TFrom>(item, config as ConfigCast),\n getOptionDecoder<TTo>(item, config as ConfigCast),\n );\n}\n","import { isOption, isSome, None, Some } from './option';\n\n/**\n * Lists all types that should not be recursively unwrapped.\n *\n * @see {@link UnwrappedOption}\n */\ntype UnUnwrappables =\n | Date\n | Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | bigint\n | boolean\n | number\n | string\n | symbol\n | null\n | undefined;\n\n/**\n * A type that defines the recursive unwrapping of a type `T`\n * such that all nested {@link Option} types are unwrapped.\n *\n * For each nested {@link Option} type, if the option is a {@link Some},\n * it returns the type of its value, otherwise, it returns the provided\n * fallback type `U` which defaults to `null`.\n */\nexport type UnwrappedOption<T, U = null> =\n T extends Some<infer TValue>\n ? UnwrappedOption<TValue, U>\n : T extends None\n ? U\n : T extends UnUnwrappables\n ? T\n : T extends object\n ? { [key in keyof T]: UnwrappedOption<T[key], U> }\n : T extends Array<infer TItem>\n ? Array<UnwrappedOption<TItem, U>>\n : T;\n\n/**\n * Recursively go through a type `T` such that all\n * nested {@link Option} types are unwrapped.\n *\n * For each nested {@link Option} type, if the option is a {@link Some},\n * it returns its value, otherwise, it returns the provided fallback value\n * which defaults to `null`.\n */\nexport function unwrapOptionRecursively<T>(input: T): UnwrappedOption<T>;\nexport function unwrapOptionRecursively<T, U>(input: T, fallback: () => U): UnwrappedOption<T, U>;\nexport function unwrapOptionRecursively<T, U = null>(input: T, fallback?: () => U): UnwrappedOption<T, U> {\n // Types to bypass.\n if (!input || ArrayBuffer.isView(input)) {\n return input as UnwrappedOption<T, U>;\n }\n\n const next = <X>(x: X) =>\n (fallback ? unwrapOptionRecursively(x, fallback) : unwrapOptionRecursively(x)) as UnwrappedOption<X, U>;\n\n // Handle Option.\n if (isOption(input)) {\n if (isSome(input)) return next(input.value) as UnwrappedOption<T, U>;\n return (fallback ? fallback() : null) as UnwrappedOption<T, U>;\n }\n\n // Walk.\n if (Array.isArray(input)) {\n return input.map(next) as UnwrappedOption<T, U>;\n }\n if (typeof input === 'object') {\n return Object.fromEntries(Object.entries(input).map(([k, v]) => [k, next(v)])) as UnwrappedOption<T, U>;\n }\n return input as UnwrappedOption<T, U>;\n}\n","/**\n * General pipe function.\n * Provide an initial value and a list of functions to pipe it through.\n *\n * Following common implementations of pipe functions that use TypeScript,\n * this function supports a maximum arity of 10 for type safety.\n * @see https://github.com/ramda/ramda/blob/master/source/pipe.js\n * @see https://github.com/darky/rocket-pipes/blob/master/index.ts\n *\n * Note you can use nested pipes to extend this limitation, like so:\n * ```typescript\n * const myValue = pipe(\n * pipe(\n * 1,\n * (x) => x + 1,\n * (x) => x * 2,\n * (x) => x - 1,\n * ),\n * (y) => y / 3,\n * (y) => y + 1,\n * );\n * ```\n * @param init The initial value\n * @param fns Any number of functions to pipe the value through\n * @returns The final value with all functions applied\n */\nexport function pipe<TInitial>(init: TInitial): TInitial;\nexport function pipe<TInitial, R1>(init: TInitial, init_r1: (init: TInitial) => R1): R1;\nexport function pipe<TInitial, R1, R2>(init: TInitial, init_r1: (init: TInitial) => R1, r1_r2: (r1: R1) => R2): R2;\nexport function pipe<TInitial, R1, R2, R3>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n): R3;\nexport function pipe<TInitial, R1, R2, R3, R4>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n): R4;\nexport function pipe<TInitial, R1, R2, R3, R4, R5>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n r4_r5: (r4: R4) => R5,\n): R5;\nexport function pipe<TInitial, R1, R2, R3, R4, R5, R6>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n r4_r5: (r4: R4) => R5,\n r5_r6: (r5: R5) => R6,\n): R6;\nexport function pipe<TInitial, R1, R2, R3, R4, R5, R6, R7>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n r4_r5: (r4: R4) => R5,\n r5_r6: (r5: R5) => R6,\n r6_r7: (r6: R6) => R7,\n): R7;\nexport function pipe<TInitial, R1, R2, R3, R4, R5, R6, R7, R8>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n r4_r5: (r4: R4) => R5,\n r5_r6: (r5: R5) => R6,\n r6_r7: (r6: R6) => R7,\n r7_r8: (r7: R7) => R8,\n): R8;\nexport function pipe<TInitial, R1, R2, R3, R4, R5, R6, R7, R8, R9>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n r4_r5: (r4: R4) => R5,\n r5_r6: (r5: R5) => R6,\n r6_r7: (r6: R6) => R7,\n r7_r8: (r7: R7) => R8,\n r8_r9: (r8: R8) => R9,\n): R9;\nexport function pipe<TInitial, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n r4_r5: (r4: R4) => R5,\n r5_r6: (r5: R5) => R6,\n r6_r7: (r6: R6) => R7,\n r7_r8: (r7: R7) => R8,\n r8_r9: (r8: R8) => R9,\n r9_r10: (r9: R9) => R10,\n): R10;\nexport function pipe<TInitial>(init: TInitial, ...fns: CallableFunction[]) {\n return fns.reduce((acc, fn) => fn(acc), init);\n}\n","import { Address } from '@solana/addresses';\nimport {\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS,\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA,\n SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH,\n SolanaError,\n} from '@solana/errors';\n\nimport { IAccountLookupMeta, IAccountMeta } from './accounts';\n\nexport interface IInstruction<\n TProgramAddress extends string = string,\n TAccounts extends readonly (IAccountLookupMeta | IAccountMeta)[] = readonly (IAccountLookupMeta | IAccountMeta)[],\n> {\n readonly accounts?: TAccounts;\n readonly data?: Uint8Array;\n readonly programAddress: Address<TProgramAddress>;\n}\n\nexport interface IInstructionWithAccounts<TAccounts extends readonly (IAccountLookupMeta | IAccountMeta)[]>\n extends IInstruction {\n readonly accounts: TAccounts;\n}\n\nexport function isInstructionForProgram<TProgramAddress extends string, TInstruction extends IInstruction>(\n instruction: TInstruction,\n programAddress: Address<TProgramAddress>,\n): instruction is TInstruction & { programAddress: Address<TProgramAddress> } {\n return instruction.programAddress === programAddress;\n}\n\nexport function assertIsInstructionForProgram<TProgramAddress extends string, TInstruction extends IInstruction>(\n instruction: TInstruction,\n programAddress: Address<TProgramAddress>,\n): asserts instruction is TInstruction & { programAddress: Address<TProgramAddress> } {\n if (instruction.programAddress !== programAddress) {\n throw new SolanaError(SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH, {\n actualProgramAddress: instruction.programAddress,\n expectedProgramAddress: programAddress,\n });\n }\n}\n\nexport function isInstructionWithAccounts<\n TAccounts extends readonly (IAccountLookupMeta | IAccountMeta)[] = readonly (IAccountLookupMeta | IAccountMeta)[],\n TInstruction extends IInstruction = IInstruction,\n>(instruction: TInstruction): instruction is IInstructionWithAccounts<TAccounts> & TInstruction {\n return instruction.accounts !== undefined;\n}\n\nexport function assertIsInstructionWithAccounts<\n TAccounts extends readonly (IAccountLookupMeta | IAccountMeta)[] = readonly (IAccountLookupMeta | IAccountMeta)[],\n TInstruction extends IInstruction = IInstruction,\n>(instruction: TInstruction): asserts instruction is IInstructionWithAccounts<TAccounts> & TInstruction {\n if (instruction.accounts === undefined) {\n throw new SolanaError(SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS, {\n data: instruction.data,\n programAddress: instruction.programAddress,\n });\n }\n}\n\nexport interface IInstructionWithData<TData extends Uint8Array> extends IInstruction {\n readonly data: TData;\n}\n\nexport function isInstructionWithData<\n TData extends Uint8Array = Uint8Array,\n TInstruction extends IInstruction = IInstruction,\n>(instruction: TInstruction): instruction is IInstructionWithData<TData> & TInstruction {\n return instruction.data !== undefined;\n}\n\nexport function assertIsInstructionWithData<\n TData extends Uint8Array = Uint8Array,\n TInstruction extends IInstruction = IInstruction,\n>(instruction: TInstruction): asserts instruction is IInstructionWithData<TData> & TInstruction {\n if (instruction.data === undefined) {\n throw new SolanaError(SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA, {\n accountAddresses: instruction.accounts?.map(a => a.address),\n programAddress: instruction.programAddress,\n });\n }\n}\n","/**\n * Quick primer on bitwise operations: https://stackoverflow.com/a/1436448/802047\n */\n\nexport enum AccountRole {\n // Bitflag guide: is signer ⌄⌄ is writable\n WRITABLE_SIGNER = /* 3 */ 0b11, // prettier-ignore\n READONLY_SIGNER = /* 2 */ 0b10, // prettier-ignore\n WRITABLE = /* 1 */ 0b01, // prettier-ignore\n READONLY = /* 0 */ 0b00, // prettier-ignore\n}\n\nconst IS_SIGNER_BITMASK = 0b10;\nconst IS_WRITABLE_BITMASK = 0b01;\n\nexport function downgradeRoleToNonSigner(role: AccountRole.READONLY_SIGNER): AccountRole.READONLY;\nexport function downgradeRoleToNonSigner(role: AccountRole.WRITABLE_SIGNER): AccountRole.WRITABLE;\nexport function downgradeRoleToNonSigner(role: AccountRole): AccountRole;\nexport function downgradeRoleToNonSigner(role: AccountRole): AccountRole {\n return role & ~IS_SIGNER_BITMASK;\n}\n\nexport function downgradeRoleToReadonly(role: AccountRole.WRITABLE): AccountRole.READONLY;\nexport function downgradeRoleToReadonly(role: AccountRole.WRITABLE_SIGNER): AccountRole.READONLY_SIGNER;\nexport function downgradeRoleToReadonly(role: AccountRole): AccountRole;\nexport function downgradeRoleToReadonly(role: AccountRole): AccountRole {\n return role & ~IS_WRITABLE_BITMASK;\n}\n\nexport function isSignerRole(role: AccountRole): role is AccountRole.READONLY_SIGNER | AccountRole.WRITABLE_SIGNER {\n return role >= AccountRole.READONLY_SIGNER;\n}\n\nexport function isWritableRole(role: AccountRole): role is AccountRole.WRITABLE | AccountRole.WRITABLE_SIGNER {\n return (role & IS_WRITABLE_BITMASK) !== 0;\n}\n\nexport function mergeRoles(roleA: AccountRole.WRITABLE, roleB: AccountRole.READONLY_SIGNER): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY_SIGNER, roleB: AccountRole.WRITABLE): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.WRITABLE_SIGNER): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.WRITABLE_SIGNER, roleB: AccountRole): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.READONLY_SIGNER): AccountRole.READONLY_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY_SIGNER, roleB: AccountRole): AccountRole.READONLY_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.WRITABLE): AccountRole.WRITABLE; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.WRITABLE, roleB: AccountRole): AccountRole.WRITABLE; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY, roleB: AccountRole.READONLY): AccountRole.READONLY; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole): AccountRole; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole): AccountRole {\n return roleA | roleB;\n}\n\nexport function upgradeRoleToSigner(role: AccountRole.READONLY): AccountRole.READONLY_SIGNER;\nexport function upgradeRoleToSigner(role: AccountRole.WRITABLE): AccountRole.WRITABLE_SIGNER;\nexport function upgradeRoleToSigner(role: AccountRole): AccountRole;\nexport function upgradeRoleToSigner(role: AccountRole): AccountRole {\n return role | IS_SIGNER_BITMASK;\n}\n\nexport function upgradeRoleToWritable(role: AccountRole.READONLY): AccountRole.WRITABLE;\nexport function upgradeRoleToWritable(role: AccountRole.READONLY_SIGNER): AccountRole.WRITABLE_SIGNER;\nexport function upgradeRoleToWritable(role: AccountRole): AccountRole;\nexport function upgradeRoleToWritable(role: AccountRole): AccountRole {\n return role | IS_WRITABLE_BITMASK;\n}\n","import { ReadonlyUint8Array } from '@solana/codecs-core';\nimport { SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH, SolanaError } from '@solana/errors';\n\nfunction addPkcs8Header(bytes: ReadonlyUint8Array): ReadonlyUint8Array {\n // prettier-ignore\n return new Uint8Array([\n /**\n * PKCS#8 header\n */\n 0x30, // ASN.1 sequence tag\n 0x2e, // Length of sequence (46 more bytes)\n\n 0x02, // ASN.1 integer tag\n 0x01, // Length of integer\n 0x00, // Version number\n\n 0x30, // ASN.1 sequence tag\n 0x05, // Length of sequence\n 0x06, // ASN.1 object identifier tag\n 0x03, // Length of object identifier\n // Edwards curve algorithms identifier https://oid-rep.orange-labs.fr/get/1.3.101.112\n 0x2b, // iso(1) / identified-organization(3) (The first node is multiplied by the decimal 40 and the result is added to the value of the second node)\n 0x65, // thawte(101)\n // Ed25519 identifier\n 0x70, // id-Ed25519(112)\n\n /**\n * Private key payload\n */\n 0x04, // ASN.1 octet string tag\n 0x22, // String length (34 more bytes)\n\n // Private key bytes as octet string\n 0x04, // ASN.1 octet string tag\n 0x20, // String length (32 bytes)\n\n ...bytes\n ]);\n}\n\nexport async function createPrivateKeyFromBytes(bytes: ReadonlyUint8Array, extractable?: boolean): Promise<CryptoKey> {\n const actualLength = bytes.byteLength;\n if (actualLength !== 32) {\n throw new SolanaError(SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH, {\n actualLength,\n });\n }\n const privateKeyBytesPkcs8 = addPkcs8Header(bytes);\n return await crypto.subtle.importKey('pkcs8', privateKeyBytesPkcs8, 'Ed25519', extractable ?? false, ['sign']);\n}\n","import { assertKeyExporterIsAvailable } from '@solana/assertions';\nimport { SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY, SolanaError } from '@solana/errors';\n\nexport async function getPublicKeyFromPrivateKey(\n privateKey: CryptoKey,\n extractable: boolean = false,\n): Promise<CryptoKey> {\n assertKeyExporterIsAvailable();\n\n if (privateKey.extractable === false) {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY, { key: privateKey });\n }\n\n // Export private key.\n const jwk = await crypto.subtle.exportKey('jwk', privateKey);\n\n // Import public key.\n return await crypto.subtle.importKey(\n 'jwk',\n {\n crv /* curve */: 'Ed25519',\n ext /* extractable */: extractable,\n key_ops /* key operations */: ['verify'],\n kty /* key type */: 'OKP' /* octet key pair */,\n x /* public key x-coordinate */: jwk.x,\n },\n 'Ed25519',\n extractable,\n ['verify'],\n );\n}\n","import { assertSigningCapabilityIsAvailable, assertVerificationCapabilityIsAvailable } from '@solana/assertions';\nimport { Encoder, ReadonlyUint8Array } from '@solana/codecs-core';\nimport { getBase58Encoder } from '@solana/codecs-strings';\nimport {\n SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE,\n SolanaError,\n} from '@solana/errors';\n\nexport type Signature = string & { readonly __brand: unique symbol };\nexport type SignatureBytes = Uint8Array & { readonly __brand: unique symbol };\n\nlet base58Encoder: Encoder<string> | undefined;\n\nexport function assertIsSignature(putativeSignature: string): asserts putativeSignature is Signature {\n if (!base58Encoder) base58Encoder = getBase58Encoder();\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest value (64 bytes of zeroes)\n putativeSignature.length < 64 ||\n // Highest value (64 bytes of 255)\n putativeSignature.length > 88\n ) {\n throw new SolanaError(SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE, {\n actualLength: putativeSignature.length,\n });\n }\n // Slow-path; actually attempt to decode the input string.\n const bytes = base58Encoder.encode(putativeSignature);\n const numBytes = bytes.byteLength;\n if (numBytes !== 64) {\n throw new SolanaError(SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH, {\n actualLength: numBytes,\n });\n }\n}\n\nexport function isSignature(putativeSignature: string): putativeSignature is Signature {\n if (!base58Encoder) base58Encoder = getBase58Encoder();\n\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest value (64 bytes of zeroes)\n putativeSignature.length < 64 ||\n // Highest value (64 bytes of 255)\n putativeSignature.length > 88\n ) {\n return false;\n }\n // Slow-path; actually attempt to decode the input string.\n const bytes = base58Encoder.encode(putativeSignature);\n const numBytes = bytes.byteLength;\n if (numBytes !== 64) {\n return false;\n }\n return true;\n}\n\nexport async function signBytes(key: CryptoKey, data: ReadonlyUint8Array): Promise<SignatureBytes> {\n assertSigningCapabilityIsAvailable();\n const signedData = await crypto.subtle.sign('Ed25519', key, data);\n return new Uint8Array(signedData) as SignatureBytes;\n}\n\nexport function signature(putativeSignature: string): Signature {\n assertIsSignature(putativeSignature);\n return putativeSignature;\n}\n\nexport async function verifySignature(\n key: CryptoKey,\n signature: SignatureBytes,\n data: ReadonlyUint8Array,\n): Promise<boolean> {\n assertVerificationCapabilityIsAvailable();\n return await crypto.subtle.verify('Ed25519', key, signature, data);\n}\n","import { assertKeyGenerationIsAvailable, assertPRNGIsAvailable } from '@solana/assertions';\nimport { ReadonlyUint8Array } from '@solana/codecs-core';\nimport {\n SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY,\n SolanaError,\n} from '@solana/errors';\n\nimport { createPrivateKeyFromBytes } from './private-key';\nimport { getPublicKeyFromPrivateKey } from './public-key';\nimport { signBytes, verifySignature } from './signatures';\n\nexport async function generateKeyPair(): Promise<CryptoKeyPair> {\n await assertKeyGenerationIsAvailable();\n const keyPair = await crypto.subtle.generateKey(\n /* algorithm */ 'Ed25519', // Native implementation status: https://github.com/WICG/webcrypto-secure-curves/issues/20\n /* extractable */ false, // Prevents the bytes of the private key from being visible to JS.\n /* allowed uses */ ['sign', 'verify'],\n );\n return keyPair;\n}\n\nexport async function createKeyPairFromBytes(bytes: ReadonlyUint8Array, extractable?: boolean): Promise<CryptoKeyPair> {\n assertPRNGIsAvailable();\n\n if (bytes.byteLength !== 64) {\n throw new SolanaError(SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH, { byteLength: bytes.byteLength });\n }\n const [publicKey, privateKey] = await Promise.all([\n crypto.subtle.importKey('raw', bytes.slice(32), 'Ed25519', /* extractable */ true, ['verify']),\n createPrivateKeyFromBytes(bytes.slice(0, 32), extractable),\n ]);\n\n // Verify the key pair\n const randomBytes = new Uint8Array(32);\n crypto.getRandomValues(randomBytes);\n const signedData = await signBytes(privateKey, randomBytes);\n const isValid = await verifySignature(publicKey, signedData, randomBytes);\n if (!isValid) {\n throw new SolanaError(SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY);\n }\n\n return { privateKey, publicKey } as CryptoKeyPair;\n}\n\nexport async function createKeyPairFromPrivateKeyBytes(\n bytes: ReadonlyUint8Array,\n extractable: boolean = false,\n): Promise<CryptoKeyPair> {\n const privateKeyPromise = createPrivateKeyFromBytes(bytes, extractable);\n\n // Here we need the private key to be extractable in order to export\n // it as a public key. Therefore, if the `extractable` parameter\n // is `false`, we need to create two private keys such that:\n // - The extractable one is used to create the public key and\n // - The non-extractable one is the one we will return.\n const [publicKey, privateKey] = await Promise.all([\n // This nested promise makes things efficient by\n // creating the public key in parallel with the\n // second private key creation, if it is needed.\n (extractable ? privateKeyPromise : createPrivateKeyFromBytes(bytes, true /* extractable */)).then(\n async privateKey => await getPublicKeyFromPrivateKey(privateKey, true /* extractable */),\n ),\n privateKeyPromise,\n ]);\n\n return { privateKey, publicKey };\n}\n","import type { Address } from '@solana/addresses';\nimport { isSolanaError, SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM, SolanaError } from '@solana/errors';\n\nexport function isProgramError<TProgramErrorCode extends number>(\n error: unknown,\n transactionMessage: { instructions: Record<number, { programAddress: Address }> },\n programAddress: Address,\n code?: TProgramErrorCode,\n): error is Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> &\n SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> {\n if (!isSolanaError(error, SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM)) {\n return false;\n }\n const instructionProgramAddress = transactionMessage.instructions[error.context.index]?.programAddress;\n if (!instructionProgramAddress || instructionProgramAddress !== programAddress) {\n return false;\n }\n return typeof code === 'undefined' || error.context.code === code;\n}\n","/**\n * This function is a replacement for `JSON.parse` that can handle large\n * unsafe integers by parsing them as BigInts. It transforms every\n * numerical value into a BigInt without loss of precision.\n */\nexport function parseJsonWithBigInts(json: string): unknown {\n return JSON.parse(wrapIntegersInBigIntValueObject(json), (_, value) => {\n return isBigIntValueObject(value) ? unwrapBigIntValueObject(value) : value;\n });\n}\n\nfunction wrapIntegersInBigIntValueObject(json: string): string {\n const out = [];\n let inQuote = false;\n for (let ii = 0; ii < json.length; ii++) {\n let isEscaped = false;\n if (json[ii] === '\\\\') {\n out.push(json[ii++]);\n isEscaped = !isEscaped;\n }\n if (json[ii] === '\"') {\n out.push(json[ii]);\n if (!isEscaped) {\n inQuote = !inQuote;\n }\n continue;\n }\n if (!inQuote) {\n const consumedNumber = consumeNumber(json, ii);\n if (consumedNumber?.length) {\n ii += consumedNumber.length - 1;\n // Don't wrap numbers that contain a decimal point or a negative exponent.\n if (consumedNumber.match(/\\.|[eE]-/)) {\n out.push(consumedNumber);\n } else {\n out.push(wrapBigIntValueObject(consumedNumber));\n }\n continue;\n }\n }\n out.push(json[ii]);\n }\n\n return out.join('');\n}\n\nfunction consumeNumber(json: string, ii: number): string | null {\n /** @see https://stackoverflow.com/a/13340826/11440277 */\n const JSON_NUMBER_REGEX = /^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/;\n\n // Stop early if the first character isn't a digit or a minus sign.\n if (!json[ii]?.match(/[-\\d]/)) {\n return null;\n }\n\n // Otherwise, check if the next characters form a valid JSON number.\n const numberMatch = json.slice(ii).match(JSON_NUMBER_REGEX);\n return numberMatch ? numberMatch[0] : null;\n}\n\ntype BigIntValueObject = {\n // `$` implies 'this is a value object'.\n // `n` implies 'interpret the value as a bigint'.\n $n: string;\n};\n\nfunction wrapBigIntValueObject(value: string): string {\n return `{\"$n\":\"${value}\"}`;\n}\n\nfunction unwrapBigIntValueObject({ $n }: BigIntValueObject): bigint {\n if ($n.match(/[eE]/)) {\n const [units, exponent] = $n.split(/[eE]/);\n return BigInt(units) * BigInt(10) ** BigInt(exponent);\n }\n return BigInt($n);\n}\n\nfunction isBigIntValueObject(value: unknown): value is BigIntValueObject {\n return !!value && typeof value === 'object' && '$n' in value && typeof value.$n === 'string';\n}\n","import { RpcRequest } from './rpc-request';\n\nlet _nextMessageId = 0n;\nfunction getNextMessageId(): string {\n const id = _nextMessageId;\n _nextMessageId++;\n return id.toString();\n}\n\nexport function createRpcMessage<TParams>(request: RpcRequest<TParams>) {\n return {\n id: getNextMessageId(),\n jsonrpc: '2.0',\n method: request.methodName,\n params: request.params,\n };\n}\n","/**\n * Transforms a value into a JSON string, whilst rendering bigints as large unsafe integers.\n */\nexport function stringifyJsonWithBigints(value: unknown, space?: number | string): string {\n return unwrapBigIntValueObject(\n JSON.stringify(value, (_, v) => (typeof v === 'bigint' ? wrapBigIntValueObject(v) : v), space),\n );\n}\n\ntype BigIntValueObject = {\n // `$` implies 'this is a value object'.\n // `n` implies 'interpret the value as a bigint'.\n $n: string;\n};\n\nfunction wrapBigIntValueObject(value: bigint): BigIntValueObject {\n return { $n: `${value}` };\n}\n\nfunction unwrapBigIntValueObject(value: string): string {\n return value.replace(/\\{\\s*\"\\$n\"\\s*:\\s*\"(-?\\d+)\"\\s*\\}/g, '$1');\n}\n","import { SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD, SolanaError } from '@solana/errors';\nimport { Callable, Flatten, OverloadImplementations, UnionToIntersection } from '@solana/rpc-spec-types';\n\nimport { RpcApi, RpcPlan } from './rpc-api';\nimport { RpcTransport } from './rpc-transport';\n\nexport type RpcConfig<TRpcMethods, TRpcTransport extends RpcTransport> = Readonly<{\n api: RpcApi<TRpcMethods>;\n transport: TRpcTransport;\n}>;\n\nexport type Rpc<TRpcMethods> = {\n [TMethodName in keyof TRpcMethods]: PendingRpcRequestBuilder<OverloadImplementations<TRpcMethods, TMethodName>>;\n};\n\nexport type PendingRpcRequest<TResponse> = {\n send(options?: RpcSendOptions): Promise<TResponse>;\n};\n\nexport type RpcSendOptions = Readonly<{\n abortSignal?: AbortSignal;\n}>;\n\ntype PendingRpcRequestBuilder<TMethodImplementations> = UnionToIntersection<\n Flatten<{\n [P in keyof TMethodImplementations]: PendingRpcRequestReturnTypeMapper<TMethodImplementations[P]>;\n }>\n>;\n\ntype PendingRpcRequestReturnTypeMapper<TMethodImplementation> =\n // Check that this property of the TRpcMethods interface is, in fact, a function.\n TMethodImplementation extends Callable\n ? (...args: Parameters<TMethodImplementation>) => PendingRpcRequest<ReturnType<TMethodImplementation>>\n : never;\n\nexport function createRpc<TRpcMethods, TRpcTransport extends RpcTransport>(\n rpcConfig: RpcConfig<TRpcMethods, TRpcTransport>,\n): Rpc<TRpcMethods> {\n return makeProxy(rpcConfig);\n}\n\nfunction makeProxy<TRpcMethods, TRpcTransport extends RpcTransport>(\n rpcConfig: RpcConfig<TRpcMethods, TRpcTransport>,\n): Rpc<TRpcMethods> {\n return new Proxy(rpcConfig.api, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get(target, p, receiver) {\n return function (...rawParams: unknown[]) {\n const methodName = p.toString();\n const getApiPlan = Reflect.get(target, methodName, receiver);\n if (!getApiPlan) {\n throw new SolanaError(SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD, {\n method: methodName,\n params: rawParams,\n });\n }\n const apiPlan = getApiPlan(...rawParams);\n return createPendingRpcRequest(rpcConfig, apiPlan);\n };\n },\n }) as Rpc<TRpcMethods>;\n}\n\nfunction createPendingRpcRequest<TRpcMethods, TRpcTransport extends RpcTransport, TResponse>(\n { transport }: RpcConfig<TRpcMethods, TRpcTransport>,\n plan: RpcPlan<TResponse>,\n): PendingRpcRequest<TResponse> {\n return {\n async send(options?: RpcSendOptions): Promise<TResponse> {\n return await plan.execute({ signal: options?.abortSignal, transport });\n },\n };\n}\n","import {\n Callable,\n createRpcMessage,\n RpcRequestTransformer,\n RpcResponse,\n RpcResponseTransformer,\n} from '@solana/rpc-spec-types';\n\nimport type { RpcTransport } from './rpc-transport';\n\nexport type RpcApiConfig = Readonly<{\n requestTransformer?: RpcRequestTransformer;\n responseTransformer?: RpcResponseTransformer;\n}>;\n\nexport type RpcPlan<TResponse> = {\n execute: (\n config: Readonly<{\n signal?: AbortSignal;\n transport: RpcTransport;\n }>,\n ) => Promise<RpcResponse<TResponse>>;\n};\n\nexport type RpcApi<TRpcMethods> = {\n [MethodName in keyof TRpcMethods]: RpcReturnTypeMapper<TRpcMethods[MethodName]>;\n};\n\ntype RpcReturnTypeMapper<TRpcMethod> = TRpcMethod extends Callable\n ? (...rawParams: unknown[]) => RpcPlan<ReturnType<TRpcMethod>>\n : never;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RpcApiMethod = (...args: any) => any;\ninterface RpcApiMethods {\n [methodName: string]: RpcApiMethod;\n}\n\nexport function createJsonRpcApi<TRpcMethods extends RpcApiMethods>(config?: RpcApiConfig): RpcApi<TRpcMethods> {\n return new Proxy({} as RpcApi<TRpcMethods>, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get<TMethodName extends keyof RpcApi<TRpcMethods>>(\n ...args: Parameters<NonNullable<ProxyHandler<RpcApi<TRpcMethods>>['get']>>\n ) {\n const [_, p] = args;\n const methodName = p.toString() as keyof TRpcMethods as string;\n return function (\n ...rawParams: Parameters<\n TRpcMethods[TMethodName] extends CallableFunction ? TRpcMethods[TMethodName] : never\n >\n ): RpcPlan<ReturnType<TRpcMethods[TMethodName]>> {\n const rawRequest = Object.freeze({ methodName, params: rawParams });\n const request = config?.requestTransformer ? config?.requestTransformer(rawRequest) : rawRequest;\n return Object.freeze(<RpcPlan<ReturnType<TRpcMethods[TMethodName]>>>{\n execute: async ({ signal, transport }) => {\n const payload = createRpcMessage(request);\n const response = await transport({ payload, signal });\n if (!config?.responseTransformer) {\n return response;\n }\n return config.responseTransformer(response, request);\n },\n });\n };\n },\n });\n}\n","import { RpcResponse } from '@solana/rpc-spec-types';\n\ntype Config = Readonly<{\n payload: unknown;\n signal?: AbortSignal;\n}>;\n\nexport type RpcTransport = {\n <TResponse>(config: Config): Promise<RpcResponse<TResponse>>;\n};\n\nexport function isJsonRpcPayload(payload: unknown): payload is Readonly<{\n jsonrpc: '2.0';\n method: string;\n params: unknown;\n}> {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return false;\n }\n return (\n 'jsonrpc' in payload &&\n payload.jsonrpc === '2.0' &&\n 'method' in payload &&\n typeof payload.method === 'string' &&\n 'params' in payload\n );\n}\n","import { RpcRequest, RpcRequestTransformer, RpcResponseTransformer } from '@solana/rpc-spec-types';\n\nexport type KeyPathWildcard = { readonly __brand: unique symbol };\nexport type KeyPath = ReadonlyArray<KeyPath | KeyPathWildcard | number | string>;\n\nexport const KEYPATH_WILDCARD = {} as KeyPathWildcard;\n\ntype NodeVisitor = <TState extends TraversalState>(value: unknown, state: TState) => unknown;\nexport type TraversalState = Readonly<{\n keyPath: KeyPath;\n}>;\n\nexport function getTreeWalker(visitors: NodeVisitor[]) {\n return function traverse<TState extends TraversalState>(node: unknown, state: TState): unknown {\n if (Array.isArray(node)) {\n return node.map((element, ii) => {\n const nextState = {\n ...state,\n keyPath: [...state.keyPath, ii],\n };\n return traverse(element, nextState);\n });\n } else if (typeof node === 'object' && node !== null) {\n const out: Record<number | string | symbol, unknown> = {};\n for (const propName in node) {\n if (!Object.prototype.hasOwnProperty.call(node, propName)) {\n continue;\n }\n const nextState = {\n ...state,\n keyPath: [...state.keyPath, propName],\n };\n out[propName] = traverse(node[propName as keyof typeof node], nextState);\n }\n return out;\n } else {\n return visitors.reduce((acc, visitNode) => visitNode(acc, state), node);\n }\n };\n}\n\nexport function getTreeWalkerRequestTransformer<TState extends TraversalState>(\n visitors: NodeVisitor[],\n initialState: TState,\n): RpcRequestTransformer {\n return <TParams>(request: RpcRequest<TParams>): RpcRequest => {\n const traverse = getTreeWalker(visitors);\n return Object.freeze({\n ...request,\n params: traverse(request.params, initialState),\n });\n };\n}\n\nexport function getTreeWalkerResponseTransformer<TState extends TraversalState>(\n visitors: NodeVisitor[],\n initialState: TState,\n): RpcResponseTransformer {\n return json => getTreeWalker(visitors)(json, initialState);\n}\n","import { getTreeWalkerRequestTransformer } from './tree-traversal';\n\nexport function getBigIntDowncastRequestTransformer() {\n return getTreeWalkerRequestTransformer([downcastNodeToNumberIfBigint], { keyPath: [] });\n}\n\nexport function downcastNodeToNumberIfBigint(value: bigint): number;\nexport function downcastNodeToNumberIfBigint<T>(value: T): T;\nexport function downcastNodeToNumberIfBigint(value: unknown): unknown {\n return typeof value === 'bigint'\n ? // FIXME(solana-labs/solana/issues/30341) Create a data type to represent u64 in the Solana\n // JSON RPC implementation so that we can throw away this entire patcher instead of unsafely\n // downcasting `bigints` to `numbers`.\n Number(value)\n : value;\n}\n","import type { RpcRequest, RpcRequestTransformer } from '@solana/rpc-spec-types';\nimport type { Commitment } from '@solana/rpc-types';\n\nexport function getDefaultCommitmentRequestTransformer({\n defaultCommitment,\n optionsObjectPositionByMethod,\n}: Readonly<{\n defaultCommitment?: Commitment;\n optionsObjectPositionByMethod: Record<string, number>;\n}>): RpcRequestTransformer {\n return <TParams>(request: RpcRequest<TParams>): RpcRequest => {\n const { params, methodName } = request;\n\n // We only apply default commitment to array parameters.\n if (!Array.isArray(params)) {\n return request;\n }\n\n // Find the position of the options object in the parameters and abort if not found.\n const optionsObjectPositionInParams = optionsObjectPositionByMethod[methodName];\n if (optionsObjectPositionInParams == null) {\n return request;\n }\n\n return Object.freeze({\n methodName,\n params: applyDefaultCommitment({\n commitmentPropertyName: methodName === 'sendTransaction' ? 'preflightCommitment' : 'commitment',\n optionsObjectPositionInParams,\n overrideCommitment: defaultCommitment,\n params,\n }),\n });\n };\n}\n\nexport function applyDefaultCommitment({\n commitmentPropertyName,\n params,\n optionsObjectPositionInParams,\n overrideCommitment,\n}: Readonly<{\n commitmentPropertyName: string;\n optionsObjectPositionInParams: number;\n overrideCommitment?: Commitment;\n params: unknown[];\n}>) {\n const paramInTargetPosition = params[optionsObjectPositionInParams];\n if (\n // There's no config.\n paramInTargetPosition === undefined ||\n // There is a config object.\n (paramInTargetPosition && typeof paramInTargetPosition === 'object' && !Array.isArray(paramInTargetPosition))\n ) {\n if (\n // The config object already has a commitment set.\n paramInTargetPosition &&\n commitmentPropertyName in paramInTargetPosition\n ) {\n if (\n !paramInTargetPosition[commitmentPropertyName as keyof typeof paramInTargetPosition] ||\n paramInTargetPosition[commitmentPropertyName as keyof typeof paramInTargetPosition] === 'finalized'\n ) {\n // Delete the commitment property; `finalized` is already the server default.\n const nextParams = [...params];\n const {\n [commitmentPropertyName as keyof typeof paramInTargetPosition]: _, // eslint-disable-line @typescript-eslint/no-unused-vars\n ...rest\n } = paramInTargetPosition;\n if (Object.keys(rest).length > 0) {\n nextParams[optionsObjectPositionInParams] = rest;\n } else {\n if (optionsObjectPositionInParams === nextParams.length - 1) {\n nextParams.length--;\n } else {\n nextParams[optionsObjectPositionInParams] = undefined;\n }\n }\n return nextParams;\n }\n } else if (overrideCommitment !== 'finalized') {\n // Apply the default commitment.\n const nextParams = [...params];\n nextParams[optionsObjectPositionInParams] = {\n ...paramInTargetPosition,\n [commitmentPropertyName]: overrideCommitment,\n };\n return nextParams;\n }\n }\n return params;\n}\n","import { RpcRequest } from '@solana/rpc-spec-types';\n\nimport { getTreeWalkerRequestTransformer, KeyPath, TraversalState } from './tree-traversal';\n\nexport type IntegerOverflowHandler = (request: RpcRequest, keyPath: KeyPath, value: bigint) => void;\n\nexport function getIntegerOverflowRequestTransformer(onIntegerOverflow: IntegerOverflowHandler) {\n return <TParams>(request: RpcRequest<TParams>): RpcRequest => {\n const transformer = getTreeWalkerRequestTransformer(\n [getIntegerOverflowNodeVisitor((...args) => onIntegerOverflow(request, ...args))],\n { keyPath: [] },\n );\n return transformer(request);\n };\n}\n\nexport function getIntegerOverflowNodeVisitor(onIntegerOverflow: (keyPath: KeyPath, value: bigint) => void) {\n return <T>(value: T, { keyPath }: TraversalState): T => {\n if (typeof value === 'bigint') {\n if (onIntegerOverflow && (value > Number.MAX_SAFE_INTEGER || value < -Number.MAX_SAFE_INTEGER)) {\n onIntegerOverflow(keyPath as (number | string)[], value);\n }\n }\n return value;\n };\n}\n","export const OPTIONS_OBJECT_POSITION_BY_METHOD: Record<string, number> = {\n accountNotifications: 1,\n blockNotifications: 1,\n getAccountInfo: 1,\n getBalance: 1,\n getBlock: 1,\n getBlockHeight: 0,\n getBlockProduction: 0,\n getBlocks: 2,\n getBlocksWithLimit: 2,\n getEpochInfo: 0,\n getFeeForMessage: 1,\n getInflationGovernor: 0,\n getInflationReward: 1,\n getLargestAccounts: 0,\n getLatestBlockhash: 0,\n getLeaderSchedule: 1,\n getMinimumBalanceForRentExemption: 1,\n getMultipleAccounts: 1,\n getProgramAccounts: 1,\n getSignaturesForAddress: 1,\n getSlot: 0,\n getSlotLeader: 0,\n getStakeMinimumDelegation: 0,\n getSupply: 0,\n getTokenAccountBalance: 1,\n getTokenAccountsByDelegate: 2,\n getTokenAccountsByOwner: 2,\n getTokenLargestAccounts: 1,\n getTokenSupply: 1,\n getTransaction: 1,\n getTransactionCount: 0,\n getVoteAccounts: 0,\n isBlockhashValid: 1,\n logsNotifications: 1,\n programNotifications: 1,\n requestAirdrop: 2,\n sendTransaction: 1,\n signatureNotifications: 1,\n simulateTransaction: 1,\n};\n","import { pipe } from '@solana/functional';\nimport { RpcRequest, RpcRequestTransformer } from '@solana/rpc-spec-types';\nimport { Commitment } from '@solana/rpc-types';\n\nimport { getBigIntDowncastRequestTransformer } from './request-transformer-bigint-downcast';\nimport { getDefaultCommitmentRequestTransformer } from './request-transformer-default-commitment';\nimport { getIntegerOverflowRequestTransformer, IntegerOverflowHandler } from './request-transformer-integer-overflow';\nimport { OPTIONS_OBJECT_POSITION_BY_METHOD } from './request-transformer-options-object-position-config';\n\nexport type RequestTransformerConfig = Readonly<{\n defaultCommitment?: Commitment;\n onIntegerOverflow?: IntegerOverflowHandler;\n}>;\n\nexport function getDefaultRequestTransformerForSolanaRpc(config?: RequestTransformerConfig): RpcRequestTransformer {\n const handleIntegerOverflow = config?.onIntegerOverflow;\n return (request: RpcRequest): RpcRequest => {\n return pipe(\n request,\n handleIntegerOverflow ? getIntegerOverflowRequestTransformer(handleIntegerOverflow) : r => r,\n getBigIntDowncastRequestTransformer(),\n getDefaultCommitmentRequestTransformer({\n defaultCommitment: config?.defaultCommitment,\n optionsObjectPositionByMethod: OPTIONS_OBJECT_POSITION_BY_METHOD,\n }),\n );\n };\n}\n","import { getTreeWalkerResponseTransformer, KeyPath, KEYPATH_WILDCARD, TraversalState } from './tree-traversal';\n\nexport function getBigIntUpcastResponseTransformer(allowedNumericKeyPaths: readonly KeyPath[]) {\n return getTreeWalkerResponseTransformer([getBigIntUpcastVisitor(allowedNumericKeyPaths)], { keyPath: [] });\n}\n\nexport function getBigIntUpcastVisitor(allowedNumericKeyPaths: readonly KeyPath[]) {\n return function upcastNodeToBigIntIfNumber(value: unknown, { keyPath }: TraversalState) {\n const isInteger = (typeof value === 'number' && Number.isInteger(value)) || typeof value === 'bigint';\n if (!isInteger) return value;\n if (keyPathIsAllowedToBeNumeric(keyPath, allowedNumericKeyPaths)) {\n return Number(value);\n } else {\n return BigInt(value);\n }\n };\n}\n\nfunction keyPathIsAllowedToBeNumeric(keyPath: KeyPath, allowedNumericKeyPaths: readonly KeyPath[]) {\n return allowedNumericKeyPaths.some(prohibitedKeyPath => {\n if (prohibitedKeyPath.length !== keyPath.length) {\n return false;\n }\n for (let ii = keyPath.length - 1; ii >= 0; ii--) {\n const keyPathPart = keyPath[ii];\n const prohibitedKeyPathPart = prohibitedKeyPath[ii];\n if (\n prohibitedKeyPathPart !== keyPathPart &&\n (prohibitedKeyPathPart !== KEYPATH_WILDCARD || typeof keyPathPart !== 'number')\n ) {\n return false;\n }\n }\n return true;\n });\n}\n","import { RpcResponseTransformer } from '@solana/rpc-spec-types';\n\ntype JsonRpcResponse = { result: unknown };\n\nexport function getResultResponseTransformer(): RpcResponseTransformer {\n return json => (json as JsonRpcResponse).result;\n}\n","import { getSolanaErrorFromJsonRpcError } from '@solana/errors';\nimport { RpcResponseTransformer } from '@solana/rpc-spec-types';\n\ntype JsonRpcResponse = { error: Parameters<typeof getSolanaErrorFromJsonRpcError>[0] } | { result: unknown };\n\nexport function getThrowSolanaErrorResponseTransformer(): RpcResponseTransformer {\n return json => {\n const jsonRpcResponse = json as JsonRpcResponse;\n if ('error' in jsonRpcResponse) {\n throw getSolanaErrorFromJsonRpcError(jsonRpcResponse.error);\n }\n return jsonRpcResponse;\n };\n}\n","import { pipe } from '@solana/functional';\nimport { RpcRequest, RpcResponse, RpcResponseTransformer } from '@solana/rpc-spec-types';\n\nimport { AllowedNumericKeypaths } from './response-transformer-allowed-numeric-values';\nimport { getBigIntUpcastResponseTransformer } from './response-transformer-bigint-upcast';\nimport { getResultResponseTransformer } from './response-transformer-result';\nimport { getThrowSolanaErrorResponseTransformer } from './response-transformer-throw-solana-error';\n\nexport type ResponseTransformerConfig<TApi> = Readonly<{\n allowedNumericKeyPaths?: AllowedNumericKeypaths<TApi>;\n}>;\n\nexport function getDefaultResponseTransformerForSolanaRpc<TApi>(\n config?: ResponseTransformerConfig<TApi>,\n): RpcResponseTransformer {\n return (response: RpcResponse, request: RpcRequest): RpcResponse => {\n const methodName = request.methodName as keyof TApi;\n const keyPaths =\n config?.allowedNumericKeyPaths && methodName ? config.allowedNumericKeyPaths[methodName] : undefined;\n return pipe(\n response,\n r => getThrowSolanaErrorResponseTransformer()(r, request),\n r => getResultResponseTransformer()(r, request),\n r => getBigIntUpcastResponseTransformer(keyPaths ?? [])(r, request),\n );\n };\n}\n\nexport function getDefaultResponseTransformerForSolanaRpcSubscriptions<TApi>(\n config?: ResponseTransformerConfig<TApi>,\n): RpcResponseTransformer {\n return (response: RpcResponse, request: RpcRequest): RpcResponse => {\n const methodName = request.methodName as keyof TApi;\n const keyPaths =\n config?.allowedNumericKeyPaths && methodName ? config.allowedNumericKeyPaths[methodName] : undefined;\n return pipe(response, r => getBigIntUpcastResponseTransformer(keyPaths ?? [])(r, request));\n };\n}\n","import { KeyPath, KEYPATH_WILDCARD } from './tree-traversal';\n\nexport type AllowedNumericKeypaths<TApi> = Partial<Record<keyof TApi, readonly KeyPath[]>>;\n\n// Numeric values nested in `jsonParsed` accounts\nexport const jsonParsedTokenAccountsConfigs = [\n // parsed Token/Token22 token account\n ['data', 'parsed', 'info', 'tokenAmount', 'decimals'],\n ['data', 'parsed', 'info', 'tokenAmount', 'uiAmount'],\n ['data', 'parsed', 'info', 'rentExemptReserve', 'decimals'],\n ['data', 'parsed', 'info', 'rentExemptReserve', 'uiAmount'],\n ['data', 'parsed', 'info', 'delegatedAmount', 'decimals'],\n ['data', 'parsed', 'info', 'delegatedAmount', 'uiAmount'],\n ['data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'olderTransferFee', 'transferFeeBasisPoints'],\n ['data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'newerTransferFee', 'transferFeeBasisPoints'],\n ['data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'preUpdateAverageRate'],\n ['data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'currentRate'],\n];\nexport const jsonParsedAccountsConfigs = [\n ...jsonParsedTokenAccountsConfigs,\n // parsed AddressTableLookup account\n ['data', 'parsed', 'info', 'lastExtendedSlotStartIndex'],\n // parsed Config account\n ['data', 'parsed', 'info', 'slashPenalty'],\n ['data', 'parsed', 'info', 'warmupCooldownRate'],\n // parsed Token/Token22 mint account\n ['data', 'parsed', 'info', 'decimals'],\n // parsed Token/Token22 multisig account\n ['data', 'parsed', 'info', 'numRequiredSigners'],\n ['data', 'parsed', 'info', 'numValidSigners'],\n // parsed Stake account\n ['data', 'parsed', 'info', 'stake', 'delegation', 'warmupCooldownRate'],\n // parsed Sysvar rent account\n ['data', 'parsed', 'info', 'exemptionThreshold'],\n ['data', 'parsed', 'info', 'burnPercent'],\n // parsed Vote account\n ['data', 'parsed', 'info', 'commission'],\n ['data', 'parsed', 'info', 'votes', KEYPATH_WILDCARD, 'confirmationCount'],\n];\nexport const innerInstructionsConfigs = [\n ['index'],\n ['instructions', KEYPATH_WILDCARD, 'accounts', KEYPATH_WILDCARD],\n ['instructions', KEYPATH_WILDCARD, 'programIdIndex'],\n ['instructions', KEYPATH_WILDCARD, 'stackHeight'],\n];\nexport const messageConfig = [\n ['addressTableLookups', KEYPATH_WILDCARD, 'writableIndexes', KEYPATH_WILDCARD],\n ['addressTableLookups', KEYPATH_WILDCARD, 'readonlyIndexes', KEYPATH_WILDCARD],\n ['header', 'numReadonlySignedAccounts'],\n ['header', 'numReadonlyUnsignedAccounts'],\n ['header', 'numRequiredSignatures'],\n ['instructions', KEYPATH_WILDCARD, 'accounts', KEYPATH_WILDCARD],\n ['instructions', KEYPATH_WILDCARD, 'programIdIndex'],\n ['instructions', KEYPATH_WILDCARD, 'stackHeight'],\n] as const;\n","import { createJsonRpcApi, RpcApi } from '@solana/rpc-spec';\nimport {\n AllowedNumericKeypaths,\n getDefaultRequestTransformerForSolanaRpc,\n getDefaultResponseTransformerForSolanaRpc,\n innerInstructionsConfigs,\n jsonParsedAccountsConfigs,\n jsonParsedTokenAccountsConfigs,\n KEYPATH_WILDCARD,\n messageConfig,\n RequestTransformerConfig,\n} from '@solana/rpc-transformers';\n\nimport { GetAccountInfoApi } from './getAccountInfo';\nimport { GetBalanceApi } from './getBalance';\nimport { GetBlockApi } from './getBlock';\nimport { GetBlockCommitmentApi } from './getBlockCommitment';\nimport { GetBlockHeightApi } from './getBlockHeight';\nimport { GetBlockProductionApi } from './getBlockProduction';\nimport { GetBlocksApi } from './getBlocks';\nimport { GetBlocksWithLimitApi } from './getBlocksWithLimit';\nimport { GetBlockTimeApi } from './getBlockTime';\nimport { GetClusterNodesApi } from './getClusterNodes';\nimport { GetEpochInfoApi } from './getEpochInfo';\nimport { GetEpochScheduleApi } from './getEpochSchedule';\nimport { GetFeeForMessageApi } from './getFeeForMessage';\nimport { GetFirstAvailableBlockApi } from './getFirstAvailableBlock';\nimport { GetGenesisHashApi } from './getGenesisHash';\nimport { GetHealthApi } from './getHealth';\nimport { GetHighestSnapshotSlotApi } from './getHighestSnapshotSlot';\nimport { GetIdentityApi } from './getIdentity';\nimport { GetInflationGovernorApi } from './getInflationGovernor';\nimport { GetInflationRateApi } from './getInflationRate';\nimport { GetInflationRewardApi } from './getInflationReward';\nimport { GetLargestAccountsApi } from './getLargestAccounts';\nimport { GetLatestBlockhashApi } from './getLatestBlockhash';\nimport { GetLeaderScheduleApi } from './getLeaderSchedule';\nimport { GetMaxRetransmitSlotApi } from './getMaxRetransmitSlot';\nimport { GetMaxShredInsertSlotApi } from './getMaxShredInsertSlot';\nimport { GetMinimumBalanceForRentExemptionApi } from './getMinimumBalanceForRentExemption';\nimport { GetMultipleAccountsApi } from './getMultipleAccounts';\nimport { GetProgramAccountsApi } from './getProgramAccounts';\nimport { GetRecentPerformanceSamplesApi } from './getRecentPerformanceSamples';\nimport { GetRecentPrioritizationFeesApi } from './getRecentPrioritizationFees';\nimport { GetSignaturesForAddressApi } from './getSignaturesForAddress';\nimport { GetSignatureStatusesApi } from './getSignatureStatuses';\nimport { GetSlotApi } from './getSlot';\nimport { GetSlotLeaderApi } from './getSlotLeader';\nimport { GetSlotLeadersApi } from './getSlotLeaders';\nimport { GetStakeMinimumDelegationApi } from './getStakeMinimumDelegation';\nimport { GetSupplyApi } from './getSupply';\nimport { GetTokenAccountBalanceApi } from './getTokenAccountBalance';\nimport { GetTokenAccountsByDelegateApi } from './getTokenAccountsByDelegate';\nimport { GetTokenAccountsByOwnerApi } from './getTokenAccountsByOwner';\nimport { GetTokenLargestAccountsApi } from './getTokenLargestAccounts';\nimport { GetTokenSupplyApi } from './getTokenSupply';\nimport { GetTransactionApi } from './getTransaction';\nimport { GetTransactionCountApi } from './getTransactionCount';\nimport { GetVersionApi } from './getVersion';\nimport { GetVoteAccountsApi } from './getVoteAccounts';\nimport { IsBlockhashValidApi } from './isBlockhashValid';\nimport { MinimumLedgerSlotApi } from './minimumLedgerSlot';\nimport { RequestAirdropApi } from './requestAirdrop';\nimport { SendTransactionApi } from './sendTransaction';\nimport { SimulateTransactionApi } from './simulateTransaction';\n\ntype SolanaRpcApiForAllClusters = GetAccountInfoApi &\n GetBalanceApi &\n GetBlockApi &\n GetBlockCommitmentApi &\n GetBlockHeightApi &\n GetBlockProductionApi &\n GetBlocksApi &\n GetBlocksWithLimitApi &\n GetBlockTimeApi &\n GetClusterNodesApi &\n GetEpochInfoApi &\n GetEpochScheduleApi &\n GetFeeForMessageApi &\n GetFirstAvailableBlockApi &\n GetGenesisHashApi &\n GetHealthApi &\n GetHighestSnapshotSlotApi &\n GetIdentityApi &\n GetInflationGovernorApi &\n GetInflationRateApi &\n GetInflationRewardApi &\n GetLargestAccountsApi &\n GetLatestBlockhashApi &\n GetLeaderScheduleApi &\n GetMaxRetransmitSlotApi &\n GetMaxShredInsertSlotApi &\n GetMinimumBalanceForRentExemptionApi &\n GetMultipleAccountsApi &\n GetProgramAccountsApi &\n GetRecentPerformanceSamplesApi &\n GetRecentPrioritizationFeesApi &\n GetSignaturesForAddressApi &\n GetSignatureStatusesApi &\n GetSlotApi &\n GetSlotLeaderApi &\n GetSlotLeadersApi &\n GetStakeMinimumDelegationApi &\n GetSupplyApi &\n GetTokenAccountBalanceApi &\n GetTokenAccountsByDelegateApi &\n GetTokenAccountsByOwnerApi &\n GetTokenLargestAccountsApi &\n GetTokenSupplyApi &\n GetTransactionApi &\n GetTransactionCountApi &\n GetVersionApi &\n GetVoteAccountsApi &\n IsBlockhashValidApi &\n MinimumLedgerSlotApi &\n SendTransactionApi &\n SimulateTransactionApi;\ntype SolanaRpcApiForTestClusters = RequestAirdropApi & SolanaRpcApiForAllClusters;\nexport type SolanaRpcApi = SolanaRpcApiForTestClusters;\nexport type SolanaRpcApiDevnet = SolanaRpcApiForTestClusters;\nexport type SolanaRpcApiTestnet = SolanaRpcApiForTestClusters;\nexport type SolanaRpcApiMainnet = SolanaRpcApiForAllClusters;\n\nexport type {\n GetAccountInfoApi,\n GetBalanceApi,\n GetBlockApi,\n GetBlockCommitmentApi,\n GetBlockHeightApi,\n GetBlockProductionApi,\n GetBlocksApi,\n GetBlocksWithLimitApi,\n GetBlockTimeApi,\n GetClusterNodesApi,\n GetEpochInfoApi,\n GetEpochScheduleApi,\n GetFeeForMessageApi,\n GetFirstAvailableBlockApi,\n GetGenesisHashApi,\n GetHealthApi,\n GetHighestSnapshotSlotApi,\n GetIdentityApi,\n GetInflationGovernorApi,\n GetInflationRateApi,\n GetInflationRewardApi,\n GetLargestAccountsApi,\n GetLatestBlockhashApi,\n GetLeaderScheduleApi,\n GetMaxRetransmitSlotApi,\n GetMaxShredInsertSlotApi,\n GetMinimumBalanceForRentExemptionApi,\n GetMultipleAccountsApi,\n GetProgramAccountsApi,\n GetRecentPerformanceSamplesApi,\n GetRecentPrioritizationFeesApi,\n GetSignaturesForAddressApi,\n GetSignatureStatusesApi,\n GetSlotApi,\n GetSlotLeaderApi,\n GetSlotLeadersApi,\n GetStakeMinimumDelegationApi,\n GetSupplyApi,\n GetTokenAccountBalanceApi,\n GetTokenAccountsByDelegateApi,\n GetTokenAccountsByOwnerApi,\n GetTokenLargestAccountsApi,\n GetTokenSupplyApi,\n GetTransactionApi,\n GetTransactionCountApi,\n GetVersionApi,\n GetVoteAccountsApi,\n IsBlockhashValidApi,\n MinimumLedgerSlotApi,\n RequestAirdropApi,\n SendTransactionApi,\n SimulateTransactionApi,\n};\n\ntype Config = RequestTransformerConfig;\n\nexport function createSolanaRpcApi<\n // eslint-disable-next-line @typescript-eslint/no-duplicate-type-constituents\n TRpcMethods extends SolanaRpcApi | SolanaRpcApiDevnet | SolanaRpcApiMainnet | SolanaRpcApiTestnet = SolanaRpcApi,\n>(config?: Config): RpcApi<TRpcMethods> {\n return createJsonRpcApi<TRpcMethods>({\n requestTransformer: getDefaultRequestTransformerForSolanaRpc(config),\n responseTransformer: getDefaultResponseTransformerForSolanaRpc({\n allowedNumericKeyPaths: getAllowedNumericKeypaths(),\n }),\n });\n}\n\nlet memoizedKeypaths: AllowedNumericKeypaths<RpcApi<SolanaRpcApi>>;\n\n/**\n * These are keypaths at the end of which you will find a numeric value that should *not* be upcast\n * to a `bigint`. These are values that are legitimately defined as `u8` or `usize` on the backend.\n */\nfunction getAllowedNumericKeypaths(): AllowedNumericKeypaths<RpcApi<SolanaRpcApi>> {\n if (!memoizedKeypaths) {\n memoizedKeypaths = {\n getAccountInfo: jsonParsedAccountsConfigs.map(c => ['value', ...c]),\n getBlock: [\n ['transactions', KEYPATH_WILDCARD, 'meta', 'preTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n [\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'preTokenBalances',\n KEYPATH_WILDCARD,\n 'uiTokenAmount',\n 'decimals',\n ],\n ['transactions', KEYPATH_WILDCARD, 'meta', 'postTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n [\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'postTokenBalances',\n KEYPATH_WILDCARD,\n 'uiTokenAmount',\n 'decimals',\n ],\n ['transactions', KEYPATH_WILDCARD, 'meta', 'rewards', KEYPATH_WILDCARD, 'commission'],\n ...innerInstructionsConfigs.map(c => [\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'innerInstructions',\n KEYPATH_WILDCARD,\n ...c,\n ]),\n ...messageConfig.map(c => ['transactions', KEYPATH_WILDCARD, 'transaction', 'message', ...c] as const),\n ['rewards', KEYPATH_WILDCARD, 'commission'],\n ],\n getClusterNodes: [\n [KEYPATH_WILDCARD, 'featureSet'],\n [KEYPATH_WILDCARD, 'shredVersion'],\n ],\n getInflationGovernor: [['initial'], ['foundation'], ['foundationTerm'], ['taper'], ['terminal']],\n getInflationRate: [['foundation'], ['total'], ['validator']],\n getInflationReward: [[KEYPATH_WILDCARD, 'commission']],\n getMultipleAccounts: jsonParsedAccountsConfigs.map(c => ['value', KEYPATH_WILDCARD, ...c]),\n getProgramAccounts: jsonParsedAccountsConfigs.flatMap(c => [\n ['value', KEYPATH_WILDCARD, 'account', ...c],\n [KEYPATH_WILDCARD, 'account', ...c],\n ]),\n getRecentPerformanceSamples: [[KEYPATH_WILDCARD, 'samplePeriodSecs']],\n getTokenAccountBalance: [\n ['value', 'decimals'],\n ['value', 'uiAmount'],\n ],\n getTokenAccountsByDelegate: jsonParsedTokenAccountsConfigs.map(c => [\n 'value',\n KEYPATH_WILDCARD,\n 'account',\n ...c,\n ]),\n getTokenAccountsByOwner: jsonParsedTokenAccountsConfigs.map(c => [\n 'value',\n KEYPATH_WILDCARD,\n 'account',\n ...c,\n ]),\n getTokenLargestAccounts: [\n ['value', KEYPATH_WILDCARD, 'decimals'],\n ['value', KEYPATH_WILDCARD, 'uiAmount'],\n ],\n getTokenSupply: [\n ['value', 'decimals'],\n ['value', 'uiAmount'],\n ],\n getTransaction: [\n ['meta', 'preTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n ['meta', 'preTokenBalances', KEYPATH_WILDCARD, 'uiTokenAmount', 'decimals'],\n ['meta', 'postTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n ['meta', 'postTokenBalances', KEYPATH_WILDCARD, 'uiTokenAmount', 'decimals'],\n ['meta', 'rewards', KEYPATH_WILDCARD, 'commission'],\n ...innerInstructionsConfigs.map(c => ['meta', 'innerInstructions', KEYPATH_WILDCARD, ...c]),\n ...messageConfig.map(c => ['transaction', 'message', ...c] as const),\n ],\n getVersion: [['feature-set']],\n getVoteAccounts: [\n ['current', KEYPATH_WILDCARD, 'commission'],\n ['delinquent', KEYPATH_WILDCARD, 'commission'],\n ],\n simulateTransaction: [\n ...jsonParsedAccountsConfigs.map(c => ['value', 'accounts', KEYPATH_WILDCARD, ...c]),\n ...innerInstructionsConfigs.map(c => ['value', 'innerInstructions', KEYPATH_WILDCARD, ...c]),\n ],\n };\n }\n return memoizedKeypaths;\n}\n","import { SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN, SolanaError } from '@solana/errors';\n\nexport type AllowedHttpRequestHeaders = Readonly<\n {\n // Someone can still sneak a forbidden header past Typescript if they do something like\n // fOo-BaR, but at that point they deserve the runtime failure.\n [K in DisallowedHeaders | ForbiddenHeaders as\n | Capitalize<Lowercase<K>> // `Foo-bar`\n | K // `Foo-Bar`\n | Lowercase<K> // `foo-bar`\n | Uncapitalize<K> // `foo-Bar`\n // `FOO-BAR`\n | Uppercase<K>]?: never;\n } & { [headerName: string]: string }\n>;\n// These are headers that we simply don't allow the developer to override because they're\n// fundamental to the operation of the JSON-RPC transport.\ntype DisallowedHeaders = 'Accept' | 'Content-Length' | 'Content-Type' | 'Solana-Client';\ntype ForbiddenHeaders =\n | 'Accept-Charset'\n /**\n * Though technically forbidden in non-Node environments, we don't have a way to target\n * TypeScript types depending on which platform you are authoring for. `Accept-Encoding` is\n * therefore omitted from the forbidden headers type, but is still a runtime error in dev mode\n * when supplied in a non-Node context.\n */\n // | 'Accept-Encoding'\n | 'Access-Control-Request-Headers'\n | 'Access-Control-Request-Method'\n | 'Connection'\n | 'Content-Length'\n | 'Cookie'\n | 'Date'\n | 'DNT'\n | 'Expect'\n | 'Host'\n | 'Keep-Alive'\n | 'Origin'\n | 'Permissions-Policy'\n | 'Referer'\n | 'TE'\n | 'Trailer'\n | 'Transfer-Encoding'\n | 'Upgrade'\n | 'Via'\n | `Proxy-${string}`\n | `Sec-${string}`;\n\n// These are headers which are fundamental to the JSON-RPC transport, and must not be modified.\nconst DISALLOWED_HEADERS: Record<string, boolean> = {\n accept: true,\n 'content-length': true,\n 'content-type': true,\n};\n// https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name\nconst FORBIDDEN_HEADERS: Record<string, boolean> = /* @__PURE__ */ Object.assign(\n {\n 'accept-charset': true,\n 'access-control-request-headers': true,\n 'access-control-request-method': true,\n connection: true,\n 'content-length': true,\n cookie: true,\n date: true,\n dnt: true,\n expect: true,\n host: true,\n 'keep-alive': true,\n origin: true,\n 'permissions-policy': true,\n // Prefix matching is implemented in code, below.\n // 'proxy-': true,\n // 'sec-': true,\n referer: true,\n te: true,\n trailer: true,\n 'transfer-encoding': true,\n upgrade: true,\n via: true,\n },\n __NODEJS__ ? undefined : { 'accept-encoding': true },\n);\n\nexport function assertIsAllowedHttpRequestHeaders(\n headers: Record<string, string>,\n): asserts headers is AllowedHttpRequestHeaders {\n const badHeaders = Object.keys(headers).filter(headerName => {\n const lowercaseHeaderName = headerName.toLowerCase();\n return (\n DISALLOWED_HEADERS[headerName.toLowerCase()] === true ||\n FORBIDDEN_HEADERS[headerName.toLowerCase()] === true ||\n lowercaseHeaderName.startsWith('proxy-') ||\n lowercaseHeaderName.startsWith('sec-')\n );\n });\n if (badHeaders.length > 0) {\n throw new SolanaError(SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN, {\n headers: badHeaders,\n });\n }\n}\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers, such as those defined\n * in the `DisallowedHeaders` type.\n */\nexport function normalizeHeaders<T extends Record<string, string>>(\n headers: T,\n): { [K in string & keyof T as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in string & keyof T as Lowercase<K>]: T[K] };\n}\n","import { SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR, SolanaError } from '@solana/errors';\nimport type { RpcTransport } from '@solana/rpc-spec';\nimport type { RpcResponse } from '@solana/rpc-spec-types';\nimport type Dispatcher from 'undici-types/dispatcher';\n\nimport {\n AllowedHttpRequestHeaders,\n assertIsAllowedHttpRequestHeaders,\n normalizeHeaders,\n} from './http-transport-headers';\n\ntype Config = Readonly<{\n dispatcher_NODE_ONLY?: Dispatcher;\n fromJson?: (rawResponse: string, payload: unknown) => RpcResponse;\n headers?: AllowedHttpRequestHeaders;\n toJson?: (payload: unknown) => string;\n url: string;\n}>;\n\nlet didWarnDispatcherWasSuppliedInNonNodeEnvironment = false;\nfunction warnDispatcherWasSuppliedInNonNodeEnvironment() {\n if (didWarnDispatcherWasSuppliedInNonNodeEnvironment) {\n return;\n }\n didWarnDispatcherWasSuppliedInNonNodeEnvironment = true;\n console.warn(\n 'You have supplied a `Dispatcher` to `createHttpTransport()`. It has been ignored ' +\n 'because Undici dispatchers only work in Node environments. To eliminate this ' +\n 'warning, omit the `dispatcher_NODE_ONLY` property from your config when running in ' +\n 'a non-Node environment.',\n );\n}\n\nexport function createHttpTransport(config: Config): RpcTransport {\n if (process.env.NODE_ENV !== \"production\" && !__NODEJS__ && 'dispatcher_NODE_ONLY' in config) {\n warnDispatcherWasSuppliedInNonNodeEnvironment();\n }\n const { fromJson, headers, toJson, url } = config;\n if (process.env.NODE_ENV !== \"production\" && headers) {\n assertIsAllowedHttpRequestHeaders(headers);\n }\n let dispatcherConfig: { dispatcher: Dispatcher | undefined } | undefined;\n if (__NODEJS__ && 'dispatcher_NODE_ONLY' in config) {\n dispatcherConfig = { dispatcher: config.dispatcher_NODE_ONLY };\n }\n const customHeaders = headers && normalizeHeaders(headers);\n return async function makeHttpRequest<TResponse>({\n payload,\n signal,\n }: Parameters<RpcTransport>[0]): Promise<RpcResponse<TResponse>> {\n const body = toJson ? toJson(payload) : JSON.stringify(payload);\n const requestInfo = {\n ...dispatcherConfig,\n body,\n headers: {\n ...customHeaders,\n // Keep these headers lowercase so they will override any user-supplied headers above.\n accept: 'application/json',\n 'content-length': body.length.toString(),\n 'content-type': 'application/json; charset=utf-8',\n },\n method: 'POST',\n signal,\n };\n const response = await fetch(url, requestInfo);\n if (!response.ok) {\n throw new SolanaError(SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR, {\n message: response.statusText,\n statusCode: response.status,\n });\n }\n if (fromJson) {\n return fromJson(await response.text(), payload) as TResponse;\n }\n return await response.json();\n };\n}\n","import { isJsonRpcPayload } from '@solana/rpc-spec';\n\nconst SOLANA_RPC_METHODS = [\n 'getAccountInfo',\n 'getBalance',\n 'getBlock',\n 'getBlockCommitment',\n 'getBlockHeight',\n 'getBlockProduction',\n 'getBlocks',\n 'getBlocksWithLimit',\n 'getBlockTime',\n 'getClusterNodes',\n 'getEpochInfo',\n 'getEpochSchedule',\n 'getFeeForMessage',\n 'getFirstAvailableBlock',\n 'getGenesisHash',\n 'getHealth',\n 'getHighestSnapshotSlot',\n 'getIdentity',\n 'getInflationGovernor',\n 'getInflationRate',\n 'getInflationReward',\n 'getLargestAccounts',\n 'getLatestBlockhash',\n 'getLeaderSchedule',\n 'getMaxRetransmitSlot',\n 'getMaxShredInsertSlot',\n 'getMinimumBalanceForRentExemption',\n 'getMultipleAccounts',\n 'getProgramAccounts',\n 'getRecentPerformanceSamples',\n 'getRecentPrioritizationFees',\n 'getSignaturesForAddress',\n 'getSignatureStatuses',\n 'getSlot',\n 'getSlotLeader',\n 'getSlotLeaders',\n 'getStakeMinimumDelegation',\n 'getSupply',\n 'getTokenAccountBalance',\n 'getTokenAccountsByDelegate',\n 'getTokenAccountsByOwner',\n 'getTokenLargestAccounts',\n 'getTokenSupply',\n 'getTransaction',\n 'getTransactionCount',\n 'getVersion',\n 'getVoteAccounts',\n 'index',\n 'isBlockhashValid',\n 'minimumLedgerSlot',\n 'requestAirdrop',\n 'sendTransaction',\n 'simulateTransaction',\n] as const;\n\n/**\n * Helper function that checks if a given `RpcRequest` comes from the Solana RPC API.\n */\nexport function isSolanaRequest(payload: unknown): payload is Readonly<{\n jsonrpc: '2.0';\n method: (typeof SOLANA_RPC_METHODS)[number];\n params: unknown;\n}> {\n return isJsonRpcPayload(payload) && (SOLANA_RPC_METHODS as readonly string[]).includes(payload.method);\n}\n","import { RpcTransport } from '@solana/rpc-spec';\nimport { parseJsonWithBigInts, stringifyJsonWithBigints } from '@solana/rpc-spec-types';\nimport type Dispatcher from 'undici-types/dispatcher';\n\nimport { createHttpTransport } from './http-transport';\nimport { AllowedHttpRequestHeaders } from './http-transport-headers';\nimport { isSolanaRequest } from './is-solana-request';\n\ntype Config = Readonly<{\n dispatcher_NODE_ONLY?: Dispatcher;\n headers?: AllowedHttpRequestHeaders;\n url: string;\n}>;\n\nexport function createHttpTransportForSolanaRpc(config: Config): RpcTransport {\n return createHttpTransport({\n ...config,\n fromJson: (rawResponse: string, payload: unknown) => {\n if (!isSolanaRequest(payload)) return JSON.parse(rawResponse);\n const response = parseJsonWithBigInts(rawResponse);\n // Error codes are always numbers.\n if (isErrorResponse(response)) {\n return { ...response, error: { ...response.error, code: Number(response.error.code) } };\n }\n return response;\n },\n toJson: (payload: unknown) =>\n isSolanaRequest(payload) ? stringifyJsonWithBigints(payload) : JSON.stringify(payload),\n });\n}\n\nfunction isErrorResponse(value: unknown): value is { error: { code: bigint } } {\n return (\n !!value &&\n typeof value === 'object' &&\n 'error' in value &&\n !!value.error &&\n typeof value.error === 'object' &&\n 'code' in value.error\n );\n}\n","const objToString = Object.prototype.toString;\nconst objKeys =\n Object.keys ||\n function (obj) {\n const keys = [];\n for (const name in obj) {\n keys.push(name);\n }\n return keys;\n };\n\nfunction stringify(val: unknown, isArrayProp: boolean) {\n let i, max, str, keys, key, propVal, toStr;\n if (val === true) {\n return 'true';\n }\n if (val === false) {\n return 'false';\n }\n switch (typeof val) {\n case 'object':\n if (val === null) {\n return null;\n } else if ('toJSON' in val && typeof val.toJSON === 'function') {\n return stringify(val.toJSON(), isArrayProp);\n } else {\n toStr = objToString.call(val);\n if (toStr === '[object Array]') {\n str = '[';\n max = (val as unknown[]).length - 1;\n for (i = 0; i < max; i++) {\n str += stringify((val as unknown[])[i], true) + ',';\n }\n if (max > -1) {\n str += stringify((val as unknown[])[i], true);\n }\n return str + ']';\n } else if (toStr === '[object Object]') {\n // only object is left\n keys = objKeys(val).sort();\n max = keys.length;\n str = '';\n i = 0;\n while (i < max) {\n key = keys[i];\n propVal = stringify((val as Record<typeof key, unknown>)[key], false);\n if (propVal !== undefined) {\n if (str) {\n str += ',';\n }\n str += JSON.stringify(key) + ':' + propVal;\n }\n i++;\n }\n return '{' + str + '}';\n } else {\n return JSON.stringify(val);\n }\n }\n case 'function':\n case 'undefined':\n return isArrayProp ? null : undefined;\n case 'bigint':\n return `${val.toString()}n`;\n case 'string':\n return JSON.stringify(val);\n default:\n return isFinite(val as number) ? val : null;\n }\n}\n\nexport default function (\n val:\n | Function // eslint-disable-line @typescript-eslint/no-unsafe-function-type\n | undefined,\n): undefined;\nexport default function (val: unknown): string;\nexport default function (val: unknown): string | undefined {\n const returnVal = stringify(val, false);\n if (returnVal !== undefined) {\n return '' + returnVal;\n }\n}\n","import { safeCaptureStackTrace, SOLANA_ERROR__RPC__INTEGER_OVERFLOW, SolanaError } from '@solana/errors';\nimport type { KeyPath } from '@solana/rpc-transformers';\n\nexport function createSolanaJsonRpcIntegerOverflowError(\n methodName: string,\n keyPath: KeyPath,\n value: bigint,\n): SolanaError<typeof SOLANA_ERROR__RPC__INTEGER_OVERFLOW> {\n let argumentLabel = '';\n if (typeof keyPath[0] === 'number') {\n const argPosition = keyPath[0] + 1;\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n argumentLabel = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n argumentLabel = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n argumentLabel = argPosition + 'rd';\n } else {\n argumentLabel = argPosition + 'th';\n }\n } else {\n argumentLabel = `\\`${keyPath[0].toString()}\\``;\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : undefined;\n const error = new SolanaError(SOLANA_ERROR__RPC__INTEGER_OVERFLOW, {\n argumentLabel,\n keyPath: keyPath as readonly (number | string | symbol)[],\n methodName,\n optionalPathLabel: path ? ` at path \\`${path}\\`` : '',\n value,\n ...(path !== undefined ? { path } : undefined),\n });\n safeCaptureStackTrace(error, createSolanaJsonRpcIntegerOverflowError);\n return error;\n}\n","import type { createSolanaRpcApi } from '@solana/rpc-api';\n\nimport { createSolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<NonNullable<Parameters<typeof createSolanaRpcApi>[0]>> = {\n defaultCommitment: 'confirmed',\n onIntegerOverflow(request, keyPath, value) {\n throw createSolanaJsonRpcIntegerOverflowError(request.methodName, keyPath, value);\n },\n};\n","import type { RpcTransport } from '@solana/rpc-spec';\nimport type { RpcResponse } from '@solana/rpc-spec-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<RpcResponse>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\n// This used to be a `Symbol()`, but there's a bug in Node <21 where the `undici` library passes\n// the `reason` property of the `AbortSignal` straight to `Error.captureStackTrace()` without first\n// typechecking it. `Error.captureStackTrace()` fatals when given a `Symbol`.\n// See https://github.com/nodejs/undici/pull/2597\nlet EXPLICIT_ABORT_TOKEN: ReturnType<typeof createExplicitAbortToken>;\nfunction createExplicitAbortToken() {\n // This function is an annoying workaround to prevent `process.env.NODE_ENV` from appearing at\n // the top level of this module and thwarting an optimizing compiler's attempt to tree-shake.\n return process.env.NODE_ENV !== \"production\"\n ? {\n EXPLICIT_ABORT_TOKEN:\n 'This object is thrown from the request that underlies a series of coalesced ' +\n 'requests when the last request in that series aborts',\n }\n : {};\n}\n\nexport function getRpcTransportWithRequestCoalescing<TTransport extends RpcTransport>(\n transport: TTransport,\n getDeduplicationKey: GetDeduplicationKeyFn,\n): TTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n request: Parameters<RpcTransport>[0],\n ): Promise<RpcResponse<TResponse>> {\n const { payload, signal } = request;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(request);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n queueMicrotask(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n const responsePromise = (async () => {\n try {\n return await transport<TResponse>({\n ...request,\n signal: abortController.signal,\n });\n } catch (e) {\n if (e === (EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken())) {\n // We triggered this error when the last subscriber aborted. Letting this\n // error bubble up from here would cause runtime fatals where there should\n // be none.\n return;\n }\n throw e;\n }\n })();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise,\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<RpcResponse<TResponse>>;\n return await new Promise<RpcResponse<TResponse>>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n queueMicrotask(() => {\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort((EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken()));\n }\n });\n reject((e.target as AbortSignal).reason);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise\n .then(resolve)\n .catch(reject)\n .finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as RpcResponse<TResponse>;\n }\n } as TTransport;\n}\n","import fastStableStringify from '@solana/fast-stable-stringify';\nimport { isJsonRpcPayload } from '@solana/rpc-spec';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n return isJsonRpcPayload(payload) ? fastStableStringify([payload.method, payload.params]) : undefined;\n}\n","import { pipe } from '@solana/functional';\nimport { createHttpTransport, createHttpTransportForSolanaRpc } from '@solana/rpc-transport-http';\nimport type { ClusterUrl } from '@solana/rpc-types';\n\nimport { RpcTransportFromClusterUrl } from './rpc-clusters';\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\ntype RpcTransportConfig = Parameters<typeof createHttpTransport>[0];\ninterface DefaultRpcTransportConfig<TClusterUrl extends ClusterUrl> extends RpcTransportConfig {\n url: TClusterUrl;\n}\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T,\n): { [K in string & keyof T as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in string & keyof T as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport<TClusterUrl extends ClusterUrl>(\n config: DefaultRpcTransportConfig<TClusterUrl>,\n): RpcTransportFromClusterUrl<TClusterUrl> {\n return pipe(\n createHttpTransportForSolanaRpc({\n ...config,\n headers: {\n ...(__NODEJS__ &&\n ({\n // Keep these headers lowercase so they will be overriden by any user-supplied headers below.\n 'accept-encoding':\n // Natively supported by Node LTS v20.18.0 and above.\n 'br,gzip,deflate', // Brotli, gzip, and Deflate, in that order.\n } as { [overrideHeader: string]: string })),\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': __VERSION__ ? `js/${__VERSION__}` : 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }) as RpcTransportFromClusterUrl<TClusterUrl>,\n transport => getRpcTransportWithRequestCoalescing(transport, getSolanaRpcPayloadDeduplicationKey),\n );\n}\n","import { createSolanaRpcApi } from '@solana/rpc-api';\nimport { createRpc, RpcTransport } from '@solana/rpc-spec';\nimport { ClusterUrl } from '@solana/rpc-types';\n\nimport type { RpcFromTransport, SolanaRpcApiFromTransport } from './rpc-clusters';\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\nimport { createDefaultRpcTransport } from './rpc-transport';\n\ntype DefaultRpcTransportConfig<TClusterUrl extends ClusterUrl> = Parameters<\n typeof createDefaultRpcTransport<TClusterUrl>\n>[0];\n\n/** Creates a new Solana RPC using the default decorated HTTP transport. */\nexport function createSolanaRpc<TClusterUrl extends ClusterUrl>(\n clusterUrl: TClusterUrl,\n config?: Omit<DefaultRpcTransportConfig<TClusterUrl>, 'url'>,\n) {\n return createSolanaRpcFromTransport(createDefaultRpcTransport({ url: clusterUrl, ...config }));\n}\n\n/** Creates a new Solana RPC using a custom transport. */\nexport function createSolanaRpcFromTransport<TTransport extends RpcTransport>(transport: TTransport) {\n return createRpc({\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n transport,\n }) as RpcFromTransport<SolanaRpcApiFromTransport<TTransport>, TTransport>;\n}\n","import {\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE,\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING,\n SolanaError,\n} from '@solana/errors';\n\nimport { DataPublisher } from './data-publisher';\n\ntype Config = Readonly<{\n abortSignal: AbortSignal;\n dataChannelName: string;\n // FIXME: It would be nice to be able to constrain the type of `dataPublisher` to one that\n // definitely supports the `dataChannelName` and `errorChannelName` channels, and\n // furthermore publishes `TData` on the `dataChannelName` channel. This is more difficult\n // than it should be: https://tsplay.dev/NlZelW\n dataPublisher: DataPublisher;\n errorChannelName: string;\n}>;\n\nconst enum PublishType {\n DATA,\n ERROR,\n}\n\ntype IteratorKey = symbol;\ntype IteratorState<TData> =\n | {\n __hasPolled: false;\n publishQueue: (\n | {\n __type: PublishType.DATA;\n data: TData;\n }\n | {\n __type: PublishType.ERROR;\n err: unknown;\n }\n )[];\n }\n | {\n __hasPolled: true;\n onData: (data: TData) => void;\n onError: Parameters<ConstructorParameters<typeof Promise>[0]>[1];\n };\n\nlet EXPLICIT_ABORT_TOKEN: symbol;\nfunction createExplicitAbortToken() {\n // This function is an annoying workaround to prevent `process.env.NODE_ENV` from appearing at\n // the top level of this module and thwarting an optimizing compiler's attempt to tree-shake.\n return Symbol(\n process.env.NODE_ENV !== \"production\"\n ? \"This symbol is thrown from a socket's iterator when the connection is explicitly \" +\n 'aborted by the user'\n : undefined,\n );\n}\n\nconst UNINITIALIZED = Symbol();\n\nexport function createAsyncIterableFromDataPublisher<TData>({\n abortSignal,\n dataChannelName,\n dataPublisher,\n errorChannelName,\n}: Config): AsyncIterable<TData> {\n const iteratorState: Map<IteratorKey, IteratorState<TData>> = new Map();\n function publishErrorToAllIterators(reason: unknown) {\n for (const [iteratorKey, state] of iteratorState.entries()) {\n if (state.__hasPolled) {\n iteratorState.delete(iteratorKey);\n state.onError(reason);\n } else {\n state.publishQueue.push({\n __type: PublishType.ERROR,\n err: reason,\n });\n }\n }\n }\n const abortController = new AbortController();\n abortSignal.addEventListener('abort', () => {\n abortController.abort();\n publishErrorToAllIterators((EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken()));\n });\n const options = { signal: abortController.signal } as const;\n let firstError: unknown = UNINITIALIZED;\n dataPublisher.on(\n errorChannelName,\n err => {\n if (firstError === UNINITIALIZED) {\n firstError = err;\n abortController.abort();\n publishErrorToAllIterators(err);\n }\n },\n options,\n );\n dataPublisher.on(\n dataChannelName,\n data => {\n iteratorState.forEach((state, iteratorKey) => {\n if (state.__hasPolled) {\n const { onData } = state;\n iteratorState.set(iteratorKey, { __hasPolled: false, publishQueue: [] });\n onData(data as TData);\n } else {\n state.publishQueue.push({\n __type: PublishType.DATA,\n data: data as TData,\n });\n }\n });\n },\n options,\n );\n return {\n async *[Symbol.asyncIterator]() {\n if (abortSignal.aborted) {\n return;\n }\n if (firstError !== UNINITIALIZED) {\n throw firstError;\n }\n const iteratorKey = Symbol();\n iteratorState.set(iteratorKey, { __hasPolled: false, publishQueue: [] });\n try {\n while (true) {\n const state = iteratorState.get(iteratorKey);\n if (!state) {\n // There should always be state by now.\n throw new SolanaError(SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING);\n }\n if (state.__hasPolled) {\n // You should never be able to poll twice in a row.\n throw new SolanaError(\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE,\n );\n }\n const publishQueue = state.publishQueue;\n try {\n if (publishQueue.length) {\n state.publishQueue = [];\n for (const item of publishQueue) {\n if (item.__type === PublishType.DATA) {\n yield item.data;\n } else {\n throw item.err;\n }\n }\n } else {\n yield await new Promise<TData>((resolve, reject) => {\n iteratorState.set(iteratorKey, {\n __hasPolled: true,\n onData: resolve,\n onError: reject,\n });\n });\n }\n } catch (e) {\n if (e === (EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken())) {\n return;\n } else {\n throw e;\n }\n }\n }\n } finally {\n iteratorState.delete(iteratorKey);\n }\n },\n };\n}\n","import { TypedEventEmitter, TypedEventTarget } from './event-emitter';\n\ntype UnsubscribeFn = () => void;\n\nexport interface DataPublisher<TDataByChannelName extends Record<string, unknown> = Record<string, unknown>> {\n on<const TChannelName extends keyof TDataByChannelName>(\n channelName: TChannelName,\n subscriber: (data: TDataByChannelName[TChannelName]) => void,\n options?: { signal: AbortSignal },\n ): UnsubscribeFn;\n}\n\nexport function getDataPublisherFromEventEmitter<TEventMap extends Record<string, Event>>(\n eventEmitter: TypedEventEmitter<TEventMap> | TypedEventTarget<TEventMap>,\n): DataPublisher<{\n [TEventType in keyof TEventMap]: TEventMap[TEventType] extends CustomEvent ? TEventMap[TEventType]['detail'] : null;\n}> {\n return {\n on(channelName, subscriber, options) {\n function innerListener(ev: Event) {\n if (ev instanceof CustomEvent) {\n const data = (ev as CustomEvent<TEventMap[typeof channelName]>).detail;\n (subscriber as unknown as (data: TEventMap[typeof channelName]) => void)(data);\n } else {\n (subscriber as () => void)();\n }\n }\n eventEmitter.addEventListener(channelName, innerListener, options);\n return () => {\n eventEmitter.removeEventListener(channelName, innerListener);\n };\n },\n };\n}\n","import { DataPublisher, getDataPublisherFromEventEmitter } from './data-publisher';\n\nexport function demultiplexDataPublisher<\n TDataPublisher extends DataPublisher,\n const TChannelName extends Parameters<TDataPublisher['on']>[0],\n>(\n publisher: TDataPublisher,\n sourceChannelName: TChannelName,\n messageTransformer: (\n // FIXME: Deriving the type of the message from `TDataPublisher` and `TChannelName` would\n // help callers to constrain their transform functions.\n message: unknown,\n ) => [destinationChannelName: string, message: unknown] | void,\n): DataPublisher {\n let innerPublisherState:\n | {\n readonly dispose: () => void;\n numSubscribers: number;\n }\n | undefined;\n const eventTarget = new EventTarget();\n const demultiplexedDataPublisher = getDataPublisherFromEventEmitter(eventTarget);\n return {\n ...demultiplexedDataPublisher,\n on(channelName, subscriber, options) {\n if (!innerPublisherState) {\n const innerPublisherUnsubscribe = publisher.on(sourceChannelName, sourceMessage => {\n const transformResult = messageTransformer(sourceMessage);\n if (!transformResult) {\n return;\n }\n const [destinationChannelName, message] = transformResult;\n eventTarget.dispatchEvent(\n new CustomEvent(destinationChannelName, {\n detail: message,\n }),\n );\n });\n innerPublisherState = {\n dispose: innerPublisherUnsubscribe,\n numSubscribers: 0,\n };\n }\n innerPublisherState.numSubscribers++;\n const unsubscribe = demultiplexedDataPublisher.on(channelName, subscriber, options);\n let isActive = true;\n function handleUnsubscribe() {\n if (!isActive) {\n return;\n }\n isActive = false;\n options?.signal.removeEventListener('abort', handleUnsubscribe);\n innerPublisherState!.numSubscribers--;\n if (innerPublisherState!.numSubscribers === 0) {\n innerPublisherState!.dispose();\n innerPublisherState = undefined;\n }\n unsubscribe();\n }\n options?.signal.addEventListener('abort', handleUnsubscribe);\n return handleUnsubscribe;\n },\n };\n}\n","/**\n * Forked from https://github.com/digitalloggers/race-as-promised/tree/master\n *\n * Authored by Brian Kim:\n * https://github.com/nodejs/node/issues/17469#issuecomment-685216777\n *\n * Adapted to module structure.\n *\n * This is free and unencumbered software released into the public domain.\n *\n * Anyone is free to copy, modify, publish, use, compile, sell, or\n * distribute this software, either in source code form or as a compiled\n * binary, for any purpose, commercial or non-commercial, and by any\n * means.\n *\n * In jurisdictions that recognize copyright laws, the author or authors\n * of this software dedicate any and all copyright interest in the\n * software to the public domain. We make this dedication for the benefit\n * of the public at large and to the detriment of our heirs and\n * successors. We intend this dedication to be an overt act of\n * relinquishment in perpetuity of all present and future rights to this\n * software under copyright law.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\n * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\n * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n *\n * For more information, please refer to <http://unlicense.org/>\n */\n\ntype Deferred = Readonly<{\n reject: (reason?: unknown) => void;\n resolve: (value: unknown) => void;\n}>;\n\nfunction isObject(value: unknown): value is object {\n return value !== null && (typeof value === 'object' || typeof value === 'function');\n}\n\nfunction addRaceContender(contender: object) {\n const deferreds = new Set<Deferred>();\n const record = { deferreds, settled: false };\n\n // This call to `then` happens once for the lifetime of the value.\n Promise.resolve(contender).then(\n value => {\n for (const { resolve } of deferreds) {\n resolve(value);\n }\n\n deferreds.clear();\n record.settled = true;\n },\n err => {\n for (const { reject } of deferreds) {\n reject(err);\n }\n\n deferreds.clear();\n record.settled = true;\n },\n );\n return record;\n}\n\n// Keys are the values passed to race, values are a record of data containing a\n// set of deferreds and whether the value has settled.\nconst wm = new WeakMap<object, { deferreds: Set<Deferred>; settled: boolean }>();\nexport async function safeRace<T extends readonly unknown[] | []>(contenders: T): Promise<Awaited<T[number]>> {\n let deferred: Deferred;\n const result = new Promise((resolve, reject) => {\n deferred = { reject, resolve };\n for (const contender of contenders) {\n if (!isObject(contender)) {\n // If the contender is a primitive, attempting to use it as a key in the\n // weakmap would throw an error. Luckily, it is safe to call\n // `Promise.resolve(contender).then` on a primitive value multiple times\n // because the promise fulfills immediately.\n Promise.resolve(contender).then(resolve, reject);\n continue;\n }\n\n let record = wm.get(contender);\n if (record === undefined) {\n record = addRaceContender(contender);\n record.deferreds.add(deferred);\n wm.set(contender, record);\n } else if (record.settled) {\n // If the value has settled, it is safe to call\n // `Promise.resolve(contender).then` on it.\n Promise.resolve(contender).then(resolve, reject);\n } else {\n record.deferreds.add(deferred);\n }\n }\n });\n\n // The finally callback executes when any value settles, preventing any of\n // the unresolved values from retaining a reference to the resolved value.\n return await (result.finally(() => {\n for (const contender of contenders) {\n if (isObject(contender)) {\n const record = wm.get(contender)!;\n record.deferreds.delete(deferred);\n }\n }\n }) as Promise<Awaited<T[number]>>);\n}\n","import { SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN, SolanaError } from '@solana/errors';\nimport { Callable, Flatten, OverloadImplementations, UnionToIntersection } from '@solana/rpc-spec-types';\nimport { createAsyncIterableFromDataPublisher } from '@solana/subscribable';\n\nimport { RpcSubscriptionsApi, RpcSubscriptionsPlan } from './rpc-subscriptions-api';\nimport { PendingRpcSubscriptionsRequest, RpcSubscribeOptions } from './rpc-subscriptions-request';\nimport { RpcSubscriptionsTransport } from './rpc-subscriptions-transport';\n\nexport type RpcSubscriptionsConfig<TRpcMethods> = Readonly<{\n api: RpcSubscriptionsApi<TRpcMethods>;\n transport: RpcSubscriptionsTransport;\n}>;\n\nexport type RpcSubscriptions<TRpcSubscriptionsMethods> = {\n [TMethodName in keyof TRpcSubscriptionsMethods]: PendingRpcSubscriptionsRequestBuilder<\n OverloadImplementations<TRpcSubscriptionsMethods, TMethodName>\n >;\n};\n\ntype PendingRpcSubscriptionsRequestBuilder<TSubscriptionMethodImplementations> = UnionToIntersection<\n Flatten<{\n [P in keyof TSubscriptionMethodImplementations]: PendingRpcSubscriptionsRequestReturnTypeMapper<\n TSubscriptionMethodImplementations[P]\n >;\n }>\n>;\n\ntype PendingRpcSubscriptionsRequestReturnTypeMapper<TSubscriptionMethodImplementation> =\n // Check that this property of the TRpcSubscriptionMethods interface is, in fact, a function.\n TSubscriptionMethodImplementation extends Callable\n ? (\n ...args: Parameters<TSubscriptionMethodImplementation>\n ) => PendingRpcSubscriptionsRequest<ReturnType<TSubscriptionMethodImplementation>>\n : never;\n\nexport function createSubscriptionRpc<TRpcSubscriptionsApiMethods>(\n rpcConfig: RpcSubscriptionsConfig<TRpcSubscriptionsApiMethods>,\n): RpcSubscriptions<TRpcSubscriptionsApiMethods> {\n return new Proxy(rpcConfig.api, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get(target, p, receiver) {\n return function (...rawParams: unknown[]) {\n const notificationName = p.toString();\n const createRpcSubscriptionPlan = Reflect.get(target, notificationName, receiver);\n if (!createRpcSubscriptionPlan) {\n throw new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN, {\n notificationName,\n });\n }\n const subscriptionPlan = createRpcSubscriptionPlan(...rawParams);\n return createPendingRpcSubscription(rpcConfig.transport, subscriptionPlan);\n };\n },\n }) as RpcSubscriptions<TRpcSubscriptionsApiMethods>;\n}\n\nfunction createPendingRpcSubscription<TNotification>(\n transport: RpcSubscriptionsTransport,\n subscriptionsPlan: RpcSubscriptionsPlan<TNotification>,\n): PendingRpcSubscriptionsRequest<TNotification> {\n return {\n async subscribe({ abortSignal }: RpcSubscribeOptions): Promise<AsyncIterable<TNotification>> {\n const notificationsDataPublisher = await transport({\n signal: abortSignal,\n ...subscriptionsPlan,\n });\n return createAsyncIterableFromDataPublisher<TNotification>({\n abortSignal,\n dataChannelName: 'notification',\n dataPublisher: notificationsDataPublisher,\n errorChannelName: 'error',\n });\n },\n };\n}\n","import { Callable, RpcRequest, RpcRequestTransformer } from '@solana/rpc-spec-types';\nimport { DataPublisher } from '@solana/subscribable';\n\nimport { RpcSubscriptionsChannel } from './rpc-subscriptions-channel';\nimport { RpcSubscriptionsTransportDataEvents } from './rpc-subscriptions-transport';\n\nexport type RpcSubscriptionsApiConfig<TApiMethods extends RpcSubscriptionsApiMethods> = Readonly<{\n planExecutor: RpcSubscriptionsPlanExecutor<ReturnType<TApiMethods[keyof TApiMethods]>>;\n requestTransformer?: RpcRequestTransformer;\n}>;\n\ntype RpcSubscriptionsPlanExecutor<TNotification> = (\n config: Readonly<{\n channel: RpcSubscriptionsChannel<unknown, unknown>;\n request: RpcRequest;\n signal: AbortSignal;\n }>,\n) => Promise<DataPublisher<RpcSubscriptionsTransportDataEvents<TNotification>>>;\n\nexport type RpcSubscriptionsPlan<TNotification> = Readonly<{\n /**\n * This method may be called with a newly-opened channel or a pre-established channel.\n */\n execute: (\n config: Readonly<{\n channel: RpcSubscriptionsChannel<unknown, unknown>;\n signal: AbortSignal;\n }>,\n ) => Promise<DataPublisher<RpcSubscriptionsTransportDataEvents<TNotification>>>;\n /**\n * This request is used to uniquely identify the subscription.\n * It typically comes from the method name and parameters of the subscription call,\n * after potentially being transformed by the RPC Subscriptions API.\n */\n request: RpcRequest;\n}>;\n\nexport type RpcSubscriptionsApi<TRpcSubscriptionMethods> = {\n [MethodName in keyof TRpcSubscriptionMethods]: RpcSubscriptionsReturnTypeMapper<\n TRpcSubscriptionMethods[MethodName]\n >;\n};\n\ntype RpcSubscriptionsReturnTypeMapper<TRpcMethod> = TRpcMethod extends Callable\n ? (...rawParams: unknown[]) => RpcSubscriptionsPlan<ReturnType<TRpcMethod>>\n : never;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RpcSubscriptionsApiMethod = (...args: any) => any;\nexport interface RpcSubscriptionsApiMethods {\n [methodName: string]: RpcSubscriptionsApiMethod;\n}\n\nexport function createRpcSubscriptionsApi<TRpcSubscriptionsApiMethods extends RpcSubscriptionsApiMethods>(\n config: RpcSubscriptionsApiConfig<TRpcSubscriptionsApiMethods>,\n): RpcSubscriptionsApi<TRpcSubscriptionsApiMethods> {\n return new Proxy({} as RpcSubscriptionsApi<TRpcSubscriptionsApiMethods>, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get<TNotificationName extends keyof RpcSubscriptionsApi<TRpcSubscriptionsApiMethods>>(\n ...args: Parameters<NonNullable<ProxyHandler<RpcSubscriptionsApi<TRpcSubscriptionsApiMethods>>['get']>>\n ) {\n const [_, p] = args;\n const methodName = p.toString() as keyof TRpcSubscriptionsApiMethods as string;\n return function (\n ...params: Parameters<\n TRpcSubscriptionsApiMethods[TNotificationName] extends CallableFunction\n ? TRpcSubscriptionsApiMethods[TNotificationName]\n : never\n >\n ): RpcSubscriptionsPlan<ReturnType<TRpcSubscriptionsApiMethods[TNotificationName]>> {\n const rawRequest = { methodName, params };\n const request = config.requestTransformer ? config.requestTransformer(rawRequest) : rawRequest;\n return {\n execute(planConfig) {\n return config.planExecutor({ ...planConfig, request });\n },\n request,\n };\n };\n },\n });\n}\n","import {\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT,\n SolanaError,\n} from '@solana/errors';\nimport { DataPublisher } from '@solana/subscribable';\n\ntype RpcSubscriptionsChannelSolanaErrorCode =\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT;\n\nexport type RpcSubscriptionChannelEvents<TInboundMessage> = {\n error: SolanaError<RpcSubscriptionsChannelSolanaErrorCode>;\n message: TInboundMessage;\n};\n\nexport interface RpcSubscriptionsChannel<TOutboundMessage, TInboundMessage>\n extends DataPublisher<RpcSubscriptionChannelEvents<TInboundMessage>> {\n send(message: TOutboundMessage): Promise<void>;\n}\n\nexport type RpcSubscriptionsChannelCreator<TOutboundMessage, TInboundMessage> = (\n config: Readonly<{\n abortSignal: AbortSignal;\n }>,\n) => Promise<RpcSubscriptionsChannel<TOutboundMessage, TInboundMessage>>;\n\nexport function transformChannelInboundMessages<TOutboundMessage, TNewInboundMessage, TInboundMessage>(\n channel: RpcSubscriptionsChannel<TOutboundMessage, TInboundMessage>,\n transform: (message: TInboundMessage) => TNewInboundMessage,\n): RpcSubscriptionsChannel<TOutboundMessage, TNewInboundMessage> {\n return Object.freeze<RpcSubscriptionsChannel<TOutboundMessage, TNewInboundMessage>>({\n ...channel,\n on(type, subscriber, options) {\n if (type !== 'message') {\n return channel.on(\n type,\n subscriber as (data: RpcSubscriptionChannelEvents<TInboundMessage>[typeof type]) => void,\n options,\n );\n }\n return channel.on(\n 'message',\n message => (subscriber as (data: TNewInboundMessage) => void)(transform(message)),\n options,\n );\n },\n });\n}\n\nexport function transformChannelOutboundMessages<TNewOutboundMessage, TOutboundMessage, TInboundMessage>(\n channel: RpcSubscriptionsChannel<TOutboundMessage, TInboundMessage>,\n transform: (message: TNewOutboundMessage) => TOutboundMessage,\n): RpcSubscriptionsChannel<TNewOutboundMessage, TInboundMessage> {\n return Object.freeze<RpcSubscriptionsChannel<TNewOutboundMessage, TInboundMessage>>({\n ...channel,\n send: message => channel.send(transform(message)),\n });\n}\n","import {\n getSolanaErrorFromJsonRpcError,\n SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID,\n SolanaError,\n} from '@solana/errors';\nimport { safeRace } from '@solana/promises';\nimport { createRpcMessage, RpcRequest, RpcResponseData, RpcResponseTransformer } from '@solana/rpc-spec-types';\nimport { DataPublisher } from '@solana/subscribable';\nimport { demultiplexDataPublisher } from '@solana/subscribable';\n\nimport { RpcSubscriptionChannelEvents } from './rpc-subscriptions-channel';\nimport { RpcSubscriptionsChannel } from './rpc-subscriptions-channel';\n\ntype Config<TNotification> = Readonly<{\n channel: RpcSubscriptionsChannel<unknown, RpcNotification<TNotification> | RpcResponseData<RpcSubscriptionId>>;\n responseTransformer?: RpcResponseTransformer;\n signal: AbortSignal;\n subscribeRequest: RpcRequest;\n unsubscribeMethodName: string;\n}>;\n\ntype RpcNotification<TNotification> = Readonly<{\n method: string;\n params: Readonly<{\n result: TNotification;\n subscription: number;\n }>;\n}>;\n\ntype RpcSubscriptionId = number;\n\ntype RpcSubscriptionNotificationEvents<TNotification> = Omit<RpcSubscriptionChannelEvents<TNotification>, 'message'> & {\n notification: TNotification;\n};\n\nconst subscriberCountBySubscriptionIdByChannel = new WeakMap<WeakKey, Record<number, number>>();\nfunction decrementSubscriberCountAndReturnNewCount(channel: WeakKey, subscriptionId?: number): number | undefined {\n return augmentSubscriberCountAndReturnNewCount(-1, channel, subscriptionId);\n}\nfunction incrementSubscriberCount(channel: WeakKey, subscriptionId?: number): void {\n augmentSubscriberCountAndReturnNewCount(1, channel, subscriptionId);\n}\nfunction augmentSubscriberCountAndReturnNewCount(\n amount: -1 | 1,\n channel: WeakKey,\n subscriptionId?: number,\n): number | undefined {\n if (subscriptionId === undefined) {\n return;\n }\n let subscriberCountBySubscriptionId = subscriberCountBySubscriptionIdByChannel.get(channel);\n if (!subscriberCountBySubscriptionId && amount > 0) {\n subscriberCountBySubscriptionIdByChannel.set(\n channel,\n (subscriberCountBySubscriptionId = { [subscriptionId]: 0 }),\n );\n }\n if (subscriberCountBySubscriptionId?.[subscriptionId] !== undefined) {\n return (subscriberCountBySubscriptionId[subscriptionId] =\n amount + subscriberCountBySubscriptionId[subscriptionId]);\n }\n}\n\nconst cache = new WeakMap();\nfunction getMemoizedDemultiplexedNotificationPublisherFromChannelAndResponseTransformer<TNotification>(\n channel: RpcSubscriptionsChannel<unknown, RpcNotification<TNotification>>,\n subscribeRequest: RpcRequest,\n responseTransformer?: RpcResponseTransformer,\n): DataPublisher<{\n [channelName: `notification:${number}`]: TNotification;\n}> {\n let publisherByResponseTransformer = cache.get(channel);\n if (!publisherByResponseTransformer) {\n cache.set(channel, (publisherByResponseTransformer = new WeakMap()));\n }\n const responseTransformerKey = responseTransformer ?? channel;\n let publisher = publisherByResponseTransformer.get(responseTransformerKey);\n if (!publisher) {\n publisherByResponseTransformer.set(\n responseTransformerKey,\n (publisher = demultiplexDataPublisher(channel, 'message', rawMessage => {\n const message = rawMessage as RpcNotification<unknown> | RpcResponseData<unknown>;\n if (!('method' in message)) {\n return;\n }\n const transformedNotification = responseTransformer\n ? responseTransformer(message.params.result, subscribeRequest)\n : message.params.result;\n return [`notification:${message.params.subscription}`, transformedNotification];\n })),\n );\n }\n return publisher;\n}\n\nexport async function executeRpcPubSubSubscriptionPlan<TNotification>({\n channel,\n responseTransformer,\n signal,\n subscribeRequest,\n unsubscribeMethodName,\n}: Config<TNotification>): Promise<DataPublisher<RpcSubscriptionNotificationEvents<TNotification>>> {\n let subscriptionId: number | undefined;\n channel.on(\n 'error',\n () => {\n // An error on the channel indicates that the subscriptions are dead.\n // There is no longer any sense hanging on to subscription ids.\n // Erasing it here will prevent the unsubscribe code from running.\n subscriptionId = undefined;\n subscriberCountBySubscriptionIdByChannel.delete(channel);\n },\n { signal },\n );\n /**\n * STEP 1\n * Create a promise that rejects if this subscription is aborted and sends\n * the unsubscribe message if the subscription is active at that time.\n */\n const abortPromise = new Promise<never>((_, reject) => {\n function handleAbort(this: AbortSignal) {\n /**\n * Because of https://github.com/solana-labs/solana/pull/18943, two subscriptions for\n * materially the same notification will be coalesced on the server. This means they\n * will be assigned the same subscription id, and will occupy one subscription slot. We\n * must be careful not to send the unsubscribe message until the last subscriber aborts.\n */\n if (decrementSubscriberCountAndReturnNewCount(channel, subscriptionId) === 0) {\n const unsubscribePayload = createRpcMessage({\n methodName: unsubscribeMethodName,\n params: [subscriptionId],\n });\n subscriptionId = undefined;\n channel.send(unsubscribePayload).catch(() => {});\n }\n reject(this.reason);\n }\n if (signal.aborted) {\n handleAbort.call(signal);\n } else {\n signal.addEventListener('abort', handleAbort);\n }\n });\n /**\n * STEP 2\n * Send the subscription request.\n */\n const subscribePayload = createRpcMessage(subscribeRequest);\n await channel.send(subscribePayload);\n /**\n * STEP 3\n * Wait for the acknowledgement from the server with the subscription id.\n */\n const subscriptionIdPromise = new Promise<RpcSubscriptionId>((resolve, reject) => {\n const abortController = new AbortController();\n signal.addEventListener('abort', abortController.abort.bind(abortController));\n const options = { signal: abortController.signal } as const;\n channel.on(\n 'error',\n err => {\n abortController.abort();\n reject(err);\n },\n options,\n );\n channel.on(\n 'message',\n message => {\n if (message && typeof message === 'object' && 'id' in message && message.id === subscribePayload.id) {\n abortController.abort();\n if ('error' in message) {\n reject(getSolanaErrorFromJsonRpcError(message.error));\n } else {\n resolve(message.result);\n }\n }\n },\n options,\n );\n });\n subscriptionId = await safeRace([abortPromise, subscriptionIdPromise]);\n if (subscriptionId == null) {\n throw new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID);\n }\n incrementSubscriberCount(channel, subscriptionId);\n /**\n * STEP 4\n * Filter out notifications unrelated to this subscription.\n */\n const notificationPublisher = getMemoizedDemultiplexedNotificationPublisherFromChannelAndResponseTransformer(\n channel,\n subscribeRequest,\n responseTransformer,\n );\n const notificationKey = `notification:${subscriptionId}` as const;\n return {\n on(type, listener, options) {\n switch (type) {\n case 'notification':\n return notificationPublisher.on(\n notificationKey,\n listener as (data: RpcSubscriptionNotificationEvents<TNotification>['notification']) => void,\n options,\n );\n case 'error':\n return channel.on(\n 'error',\n listener as (data: RpcSubscriptionNotificationEvents<TNotification>['error']) => void,\n options,\n );\n default:\n throw new SolanaError(SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED, {\n channelName: type,\n supportedChannelNames: ['notification', 'error'],\n });\n }\n },\n };\n}\n","import {\n createRpcSubscriptionsApi,\n executeRpcPubSubSubscriptionPlan,\n RpcSubscriptionsApi,\n RpcSubscriptionsApiMethods,\n} from '@solana/rpc-subscriptions-spec';\nimport {\n AllowedNumericKeypaths,\n getDefaultRequestTransformerForSolanaRpc,\n getDefaultResponseTransformerForSolanaRpcSubscriptions,\n jsonParsedAccountsConfigs,\n KEYPATH_WILDCARD,\n RequestTransformerConfig,\n} from '@solana/rpc-transformers';\n\nimport { AccountNotificationsApi } from './account-notifications';\nimport { BlockNotificationsApi } from './block-notifications';\nimport { LogsNotificationsApi } from './logs-notifications';\nimport { ProgramNotificationsApi } from './program-notifications';\nimport { RootNotificationsApi } from './root-notifications';\nimport { SignatureNotificationsApi } from './signature-notifications';\nimport { SlotNotificationsApi } from './slot-notifications';\nimport { SlotsUpdatesNotificationsApi } from './slots-updates-notifications';\nimport { VoteNotificationsApi } from './vote-notifications';\n\nexport type SolanaRpcSubscriptionsApi = AccountNotificationsApi &\n LogsNotificationsApi &\n ProgramNotificationsApi &\n RootNotificationsApi &\n SignatureNotificationsApi &\n SlotNotificationsApi;\nexport type SolanaRpcSubscriptionsApiUnstable = BlockNotificationsApi &\n SlotsUpdatesNotificationsApi &\n VoteNotificationsApi;\n\nexport type {\n AccountNotificationsApi,\n BlockNotificationsApi,\n LogsNotificationsApi,\n ProgramNotificationsApi,\n RootNotificationsApi,\n SignatureNotificationsApi,\n SlotNotificationsApi,\n SlotsUpdatesNotificationsApi,\n VoteNotificationsApi,\n};\n\ntype Config = RequestTransformerConfig;\n\nfunction createSolanaRpcSubscriptionsApi_INTERNAL<TApi extends RpcSubscriptionsApiMethods>(\n config?: Config,\n): RpcSubscriptionsApi<TApi> {\n const requestTransformer = getDefaultRequestTransformerForSolanaRpc(config);\n const responseTransformer = getDefaultResponseTransformerForSolanaRpcSubscriptions({\n allowedNumericKeyPaths: getAllowedNumericKeypaths(),\n });\n return createRpcSubscriptionsApi<TApi>({\n planExecutor({ request, ...rest }) {\n return executeRpcPubSubSubscriptionPlan({\n ...rest,\n responseTransformer,\n subscribeRequest: { ...request, methodName: request.methodName.replace(/Notifications$/, 'Subscribe') },\n unsubscribeMethodName: request.methodName.replace(/Notifications$/, 'Unsubscribe'),\n });\n },\n requestTransformer,\n });\n}\n\nexport function createSolanaRpcSubscriptionsApi<TApi extends RpcSubscriptionsApiMethods = SolanaRpcSubscriptionsApi>(\n config?: Config,\n): RpcSubscriptionsApi<TApi> {\n return createSolanaRpcSubscriptionsApi_INTERNAL<TApi>(config);\n}\n\nexport function createSolanaRpcSubscriptionsApi_UNSTABLE(config?: Config) {\n return createSolanaRpcSubscriptionsApi_INTERNAL<SolanaRpcSubscriptionsApi & SolanaRpcSubscriptionsApiUnstable>(\n config,\n );\n}\n\nlet memoizedKeypaths: AllowedNumericKeypaths<\n RpcSubscriptionsApi<SolanaRpcSubscriptionsApi & SolanaRpcSubscriptionsApiUnstable>\n>;\n\n/**\n * These are keypaths at the end of which you will find a numeric value that should *not* be upcast\n * to a `bigint`. These are values that are legitimately defined as `u8` or `usize` on the backend.\n */\nfunction getAllowedNumericKeypaths(): AllowedNumericKeypaths<\n RpcSubscriptionsApi<SolanaRpcSubscriptionsApi & SolanaRpcSubscriptionsApiUnstable>\n> {\n if (!memoizedKeypaths) {\n memoizedKeypaths = {\n accountNotifications: jsonParsedAccountsConfigs.map(c => ['value', ...c]),\n blockNotifications: [\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'preTokenBalances',\n KEYPATH_WILDCARD,\n 'accountIndex',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'preTokenBalances',\n KEYPATH_WILDCARD,\n 'uiTokenAmount',\n 'decimals',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'postTokenBalances',\n KEYPATH_WILDCARD,\n 'accountIndex',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'postTokenBalances',\n KEYPATH_WILDCARD,\n 'uiTokenAmount',\n 'decimals',\n ],\n ['value', 'block', 'transactions', KEYPATH_WILDCARD, 'meta', 'rewards', KEYPATH_WILDCARD, 'commission'],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'innerInstructions',\n KEYPATH_WILDCARD,\n 'index',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'innerInstructions',\n KEYPATH_WILDCARD,\n 'instructions',\n KEYPATH_WILDCARD,\n 'programIdIndex',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'innerInstructions',\n KEYPATH_WILDCARD,\n 'instructions',\n KEYPATH_WILDCARD,\n 'accounts',\n KEYPATH_WILDCARD,\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'addressTableLookups',\n KEYPATH_WILDCARD,\n 'writableIndexes',\n KEYPATH_WILDCARD,\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'addressTableLookups',\n KEYPATH_WILDCARD,\n 'readonlyIndexes',\n KEYPATH_WILDCARD,\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'instructions',\n KEYPATH_WILDCARD,\n 'programIdIndex',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'instructions',\n KEYPATH_WILDCARD,\n 'accounts',\n KEYPATH_WILDCARD,\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'header',\n 'numReadonlySignedAccounts',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'header',\n 'numReadonlyUnsignedAccounts',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'header',\n 'numRequiredSignatures',\n ],\n ['value', 'block', 'rewards', KEYPATH_WILDCARD, 'commission'],\n ],\n programNotifications: jsonParsedAccountsConfigs.flatMap(c => [\n ['value', KEYPATH_WILDCARD, 'account', ...c],\n [KEYPATH_WILDCARD, 'account', ...c],\n ]),\n };\n }\n return memoizedKeypaths;\n}\n","export default globalThis.WebSocket;\n","import {\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT,\n SolanaError,\n} from '@solana/errors';\nimport { RpcSubscriptionsChannel } from '@solana/rpc-subscriptions-spec';\nimport { getDataPublisherFromEventEmitter } from '@solana/subscribable';\nimport WebSocket from '@solana/ws-impl';\n\nexport type Config = Readonly<{\n sendBufferHighWatermark: number;\n signal: AbortSignal;\n url: string;\n}>;\n\ntype WebSocketMessage = ArrayBufferLike | ArrayBufferView | Blob | string;\n\nconst NORMAL_CLOSURE_CODE = 1000; // https://www.rfc-editor.org/rfc/rfc6455.html#section-7.4.1\n\nexport function createWebSocketChannel({\n sendBufferHighWatermark,\n signal,\n url,\n}: Config): Promise<RpcSubscriptionsChannel<WebSocketMessage, string>> {\n if (signal.aborted) {\n return Promise.reject(signal.reason);\n }\n let bufferDrainWatcher: Readonly<{ onCancel(): void; promise: Promise<void> }> | undefined;\n let hasConnected = false;\n const listenerRemovers = new Set<() => void>();\n function cleanupListeners() {\n listenerRemovers.forEach(r => {\n r();\n });\n listenerRemovers.clear();\n }\n function handleAbort() {\n cleanupListeners();\n if (!hasConnected) {\n rejectOpen(signal.reason);\n }\n if (webSocket.readyState !== WebSocket.CLOSED && webSocket.readyState !== WebSocket.CLOSING) {\n webSocket.close(NORMAL_CLOSURE_CODE);\n }\n }\n function handleClose(ev: CloseEvent) {\n cleanupListeners();\n bufferDrainWatcher?.onCancel();\n signal.removeEventListener('abort', handleAbort);\n webSocket.removeEventListener('close', handleClose);\n webSocket.removeEventListener('error', handleError);\n webSocket.removeEventListener('message', handleMessage);\n webSocket.removeEventListener('open', handleOpen);\n if (!signal.aborted && !(ev.wasClean && ev.code === NORMAL_CLOSURE_CODE)) {\n eventTarget.dispatchEvent(\n new CustomEvent('error', {\n detail: new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED, {\n cause: ev,\n }),\n }),\n );\n }\n }\n function handleError(ev: Event) {\n if (signal.aborted) {\n return;\n }\n if (!hasConnected) {\n const failedToConnectError = new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT, {\n errorEvent: ev,\n });\n rejectOpen(failedToConnectError);\n eventTarget.dispatchEvent(\n new CustomEvent('error', {\n detail: failedToConnectError,\n }),\n );\n }\n }\n function handleMessage(ev: MessageEvent) {\n if (signal.aborted) {\n return;\n }\n eventTarget.dispatchEvent(new CustomEvent('message', { detail: ev.data }));\n }\n const eventTarget = new EventTarget();\n const dataPublisher = getDataPublisherFromEventEmitter(eventTarget);\n function handleOpen() {\n hasConnected = true;\n resolveOpen({\n ...dataPublisher,\n async send(message) {\n if (webSocket.readyState !== WebSocket.OPEN) {\n throw new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED);\n }\n if (!bufferDrainWatcher && webSocket.bufferedAmount > sendBufferHighWatermark) {\n let onCancel!: () => void;\n const promise = new Promise<void>((resolve, reject) => {\n const intervalId = setInterval(() => {\n if (\n webSocket.readyState !== WebSocket.OPEN ||\n !(webSocket.bufferedAmount > sendBufferHighWatermark)\n ) {\n clearInterval(intervalId);\n bufferDrainWatcher = undefined;\n resolve();\n }\n }, 16);\n onCancel = () => {\n bufferDrainWatcher = undefined;\n clearInterval(intervalId);\n reject(\n new SolanaError(\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED,\n ),\n );\n };\n });\n bufferDrainWatcher = {\n onCancel,\n promise,\n };\n }\n if (bufferDrainWatcher) {\n if (ArrayBuffer.isView(message) && !(message instanceof DataView)) {\n const TypedArrayConstructor = message.constructor as {\n new (...args: [typeof message]): typeof message;\n };\n // Clone the message to prevent mutation while queued.\n message = new TypedArrayConstructor(message);\n }\n await bufferDrainWatcher.promise;\n }\n webSocket.send(message);\n },\n });\n }\n const webSocket = new WebSocket(url);\n signal.addEventListener('abort', handleAbort);\n webSocket.addEventListener('close', handleClose);\n webSocket.addEventListener('error', handleError);\n webSocket.addEventListener('message', handleMessage);\n webSocket.addEventListener('open', handleOpen);\n let rejectOpen!: (e: SolanaError) => void;\n let resolveOpen!: (value: RpcSubscriptionsChannel<WebSocketMessage, string>) => void;\n return new Promise<RpcSubscriptionsChannel<WebSocketMessage, string>>((resolve, reject) => {\n rejectOpen = reject;\n resolveOpen = resolve;\n });\n}\n","import { safeCaptureStackTrace, SOLANA_ERROR__RPC__INTEGER_OVERFLOW, SolanaError } from '@solana/errors';\nimport type { KeyPath } from '@solana/rpc-transformers';\n\nexport function createSolanaJsonRpcIntegerOverflowError(\n methodName: string,\n keyPath: KeyPath,\n value: bigint,\n): SolanaError<typeof SOLANA_ERROR__RPC__INTEGER_OVERFLOW> {\n let argumentLabel = '';\n if (typeof keyPath[0] === 'number') {\n const argPosition = keyPath[0] + 1;\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n argumentLabel = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n argumentLabel = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n argumentLabel = argPosition + 'rd';\n } else {\n argumentLabel = argPosition + 'th';\n }\n } else {\n argumentLabel = `\\`${keyPath[0].toString()}\\``;\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : undefined;\n const error = new SolanaError(SOLANA_ERROR__RPC__INTEGER_OVERFLOW, {\n argumentLabel,\n keyPath: keyPath as readonly (number | string | symbol)[],\n methodName,\n optionalPathLabel: path ? ` at path \\`${path}\\`` : '',\n value,\n ...(path !== undefined ? { path } : undefined),\n });\n safeCaptureStackTrace(error, createSolanaJsonRpcIntegerOverflowError);\n return error;\n}\n","import type { createSolanaRpcSubscriptionsApi } from '@solana/rpc-subscriptions-api';\n\nimport { createSolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_SUBSCRIPTIONS_CONFIG: Partial<\n NonNullable<Parameters<typeof createSolanaRpcSubscriptionsApi>[0]>\n> = {\n defaultCommitment: 'confirmed',\n onIntegerOverflow(request, keyPath, value) {\n throw createSolanaJsonRpcIntegerOverflowError(request.methodName, keyPath, value);\n },\n};\n","import { isSolanaError, SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED } from '@solana/errors';\nimport type { RpcSubscriptionsChannel } from '@solana/rpc-subscriptions-spec';\n\ntype Config<TChannel extends RpcSubscriptionsChannel<unknown, unknown>> = Readonly<{\n abortSignal: AbortSignal;\n channel: TChannel;\n intervalMs: number;\n}>;\n\nconst PING_PAYLOAD = {\n jsonrpc: '2.0',\n method: 'ping',\n} as const;\n\nexport function getRpcSubscriptionsChannelWithAutoping<TChannel extends RpcSubscriptionsChannel<object, unknown>>({\n abortSignal: callerAbortSignal,\n channel,\n intervalMs,\n}: Config<TChannel>): TChannel {\n let intervalId: ReturnType<typeof setInterval> | undefined;\n function sendPing() {\n channel.send(PING_PAYLOAD).catch((e: unknown) => {\n if (isSolanaError(e, SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED)) {\n pingerAbortController.abort();\n }\n });\n }\n function restartPingTimer() {\n clearInterval(intervalId);\n intervalId = setInterval(sendPing, intervalMs);\n }\n const pingerAbortController = new AbortController();\n pingerAbortController.signal.addEventListener('abort', () => {\n clearInterval(intervalId);\n });\n callerAbortSignal.addEventListener('abort', () => {\n pingerAbortController.abort();\n });\n channel.on(\n 'error',\n () => {\n pingerAbortController.abort();\n },\n { signal: pingerAbortController.signal },\n );\n channel.on('message', restartPingTimer, { signal: pingerAbortController.signal });\n if (!__BROWSER__ || globalThis.navigator.onLine) {\n restartPingTimer();\n }\n if (__BROWSER__) {\n globalThis.window.addEventListener(\n 'offline',\n function handleOffline() {\n clearInterval(intervalId);\n },\n { signal: pingerAbortController.signal },\n );\n globalThis.window.addEventListener(\n 'online',\n function handleOnline() {\n sendPing();\n restartPingTimer();\n },\n { signal: pingerAbortController.signal },\n );\n }\n return {\n ...channel,\n send(...args) {\n if (!pingerAbortController.signal.aborted) {\n restartPingTimer();\n }\n return channel.send(...args);\n },\n };\n}\n","import { RpcSubscriptionsChannel } from '@solana/rpc-subscriptions-spec';\n\nexport type ChannelPoolEntry = {\n channel: PromiseLike<RpcSubscriptionsChannel<unknown, unknown>> | RpcSubscriptionsChannel<unknown, unknown>;\n readonly dispose: () => void;\n subscriptionCount: number;\n};\n\ntype ChannelPool = { readonly entries: ChannelPoolEntry[]; freeChannelIndex: number };\n\nexport function createChannelPool(): ChannelPool {\n return {\n entries: [],\n freeChannelIndex: -1,\n };\n}\n","import { RpcSubscriptionsChannelCreator } from '@solana/rpc-subscriptions-spec';\n\nimport { ChannelPoolEntry, createChannelPool } from './rpc-subscriptions-channel-pool-internal';\n\ntype Config = Readonly<{\n maxSubscriptionsPerChannel: number;\n minChannels: number;\n}>;\n\nexport function getChannelPoolingChannelCreator<\n TChannelCreator extends RpcSubscriptionsChannelCreator<unknown, unknown>,\n>(createChannel: TChannelCreator, { maxSubscriptionsPerChannel, minChannels }: Config): TChannelCreator {\n const pool = createChannelPool();\n /**\n * This function advances the free channel index to the pool entry with the most capacity. It\n * sets the index to `-1` if all channels are full.\n */\n function recomputeFreeChannelIndex() {\n if (pool.entries.length < minChannels) {\n // Don't set the free channel index until the pool fills up; we want to keep creating\n // channels before we start rotating among them.\n pool.freeChannelIndex = -1;\n return;\n }\n let mostFreeChannel: Readonly<{ poolIndex: number; subscriptionCount: number }> | undefined;\n for (let ii = 0; ii < pool.entries.length; ii++) {\n const nextPoolIndex = (pool.freeChannelIndex + ii + 2) % pool.entries.length;\n const nextPoolEntry =\n // Start from the item two positions after the current item. This way, the\n // search will finish on the item after the current one. This ensures that, if\n // any channels tie for having the most capacity, the one that will be chosen is\n // the one immediately to the current one's right (wrapping around).\n pool.entries[nextPoolIndex];\n if (\n nextPoolEntry.subscriptionCount < maxSubscriptionsPerChannel &&\n (!mostFreeChannel || mostFreeChannel.subscriptionCount >= nextPoolEntry.subscriptionCount)\n ) {\n mostFreeChannel = {\n poolIndex: nextPoolIndex,\n subscriptionCount: nextPoolEntry.subscriptionCount,\n };\n }\n }\n pool.freeChannelIndex = mostFreeChannel?.poolIndex ?? -1;\n }\n return function getExistingChannelWithMostCapacityOrCreateChannel({ abortSignal }) {\n let poolEntry: ChannelPoolEntry;\n function destroyPoolEntry() {\n const index = pool.entries.findIndex(entry => entry === poolEntry);\n pool.entries.splice(index, 1);\n poolEntry.dispose();\n recomputeFreeChannelIndex();\n }\n if (pool.freeChannelIndex === -1) {\n const abortController = new AbortController();\n const newChannelPromise = createChannel({ abortSignal: abortController.signal });\n newChannelPromise\n .then(newChannel => {\n newChannel.on('error', destroyPoolEntry, { signal: abortController.signal });\n })\n .catch(destroyPoolEntry);\n poolEntry = {\n channel: newChannelPromise,\n dispose() {\n abortController.abort();\n },\n subscriptionCount: 0,\n };\n pool.entries.push(poolEntry);\n } else {\n poolEntry = pool.entries[pool.freeChannelIndex];\n }\n /**\n * A note about subscription counts.\n * Because of https://github.com/solana-labs/solana/pull/18943, two subscriptions for\n * materially the same notification will be coalesced on the server. This means they will be\n * assigned the same subscription id, and will occupy one subscription slot. We can't tell,\n * from here, whether a subscription will be treated in this way or not, so we\n * unconditionally increment the subscription count every time a subscription request is\n * made. This may result in subscription channels being treated as out-of-capacity when in\n * fact they are not.\n */\n poolEntry.subscriptionCount++;\n abortSignal.addEventListener('abort', function destroyConsumer() {\n poolEntry.subscriptionCount--;\n if (poolEntry.subscriptionCount === 0) {\n destroyPoolEntry();\n } else if (pool.freeChannelIndex !== -1) {\n // Back the free channel index up one position, and recompute it.\n pool.freeChannelIndex--;\n recomputeFreeChannelIndex();\n }\n });\n recomputeFreeChannelIndex();\n return poolEntry.channel;\n } as TChannelCreator;\n}\n","import { pipe } from '@solana/functional';\nimport {\n RpcSubscriptionsChannel,\n transformChannelInboundMessages,\n transformChannelOutboundMessages,\n} from '@solana/rpc-subscriptions-spec';\n\nexport function getRpcSubscriptionsChannelWithJSONSerialization(\n channel: RpcSubscriptionsChannel<string, string>,\n): RpcSubscriptionsChannel<unknown, unknown> {\n return pipe(\n channel,\n c => transformChannelInboundMessages(c, JSON.parse),\n c => transformChannelOutboundMessages(c, JSON.stringify),\n );\n}\n","import { pipe } from '@solana/functional';\nimport { parseJsonWithBigInts, stringifyJsonWithBigints } from '@solana/rpc-spec-types';\nimport {\n RpcSubscriptionsChannel,\n transformChannelInboundMessages,\n transformChannelOutboundMessages,\n} from '@solana/rpc-subscriptions-spec';\n\nexport function getRpcSubscriptionsChannelWithBigIntJSONSerialization(\n channel: RpcSubscriptionsChannel<string, string>,\n): RpcSubscriptionsChannel<unknown, unknown> {\n return pipe(\n channel,\n c => transformChannelInboundMessages(c, parseJsonWithBigInts),\n c => transformChannelOutboundMessages(c, stringifyJsonWithBigints),\n );\n}\n","import { createWebSocketChannel } from '@solana/rpc-subscriptions-channel-websocket';\nimport type { RpcSubscriptionsChannel } from '@solana/rpc-subscriptions-spec';\nimport type { ClusterUrl } from '@solana/rpc-types';\n\nimport { getRpcSubscriptionsChannelWithAutoping } from './rpc-subscriptions-autopinger';\nimport { getChannelPoolingChannelCreator } from './rpc-subscriptions-channel-pool';\nimport { RpcSubscriptionsChannelCreatorFromClusterUrl } from './rpc-subscriptions-clusters';\nimport { getRpcSubscriptionsChannelWithJSONSerialization } from './rpc-subscriptions-json';\nimport { getRpcSubscriptionsChannelWithBigIntJSONSerialization } from './rpc-subscriptions-json-bigint';\n\nexport type DefaultRpcSubscriptionsChannelConfig<TClusterUrl extends ClusterUrl> = Readonly<{\n intervalMs?: number;\n maxSubscriptionsPerChannel?: number;\n minChannels?: number;\n sendBufferHighWatermark?: number;\n url: TClusterUrl;\n}>;\n\nexport function createDefaultSolanaRpcSubscriptionsChannelCreator<TClusterUrl extends ClusterUrl>(\n config: DefaultRpcSubscriptionsChannelConfig<TClusterUrl>,\n): RpcSubscriptionsChannelCreatorFromClusterUrl<TClusterUrl, unknown, unknown> {\n return createDefaultRpcSubscriptionsChannelCreatorImpl({\n ...config,\n jsonSerializer: getRpcSubscriptionsChannelWithBigIntJSONSerialization,\n });\n}\n\nexport function createDefaultRpcSubscriptionsChannelCreator<TClusterUrl extends ClusterUrl>(\n config: DefaultRpcSubscriptionsChannelConfig<TClusterUrl>,\n): RpcSubscriptionsChannelCreatorFromClusterUrl<TClusterUrl, unknown, unknown> {\n return createDefaultRpcSubscriptionsChannelCreatorImpl({\n ...config,\n jsonSerializer: getRpcSubscriptionsChannelWithJSONSerialization,\n });\n}\n\nfunction createDefaultRpcSubscriptionsChannelCreatorImpl<TClusterUrl extends ClusterUrl>(\n config: DefaultRpcSubscriptionsChannelConfig<TClusterUrl> & {\n jsonSerializer: (channel: RpcSubscriptionsChannel<string, string>) => RpcSubscriptionsChannel<unknown, unknown>;\n },\n): RpcSubscriptionsChannelCreatorFromClusterUrl<TClusterUrl, unknown, unknown> {\n if (/^wss?:/i.test(config.url) === false) {\n const protocolMatch = config.url.match(/^([^:]+):/);\n throw new DOMException(\n protocolMatch\n ? \"Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or \" +\n `'wss'. '${protocolMatch[1]}:' is not allowed.`\n : `Failed to construct 'WebSocket': The URL '${config.url}' is invalid.`,\n );\n }\n const { intervalMs, ...rest } = config;\n const createDefaultRpcSubscriptionsChannel = (({ abortSignal }) => {\n return createWebSocketChannel({\n ...rest,\n sendBufferHighWatermark:\n config.sendBufferHighWatermark ??\n // Let 128KB of data into the WebSocket buffer before buffering it in the app.\n 131_072,\n signal: abortSignal,\n })\n .then(config.jsonSerializer)\n .then(channel =>\n getRpcSubscriptionsChannelWithAutoping({\n abortSignal,\n channel,\n intervalMs: intervalMs ?? 5_000,\n }),\n );\n }) as RpcSubscriptionsChannelCreatorFromClusterUrl<TClusterUrl, unknown, unknown>;\n return getChannelPoolingChannelCreator(createDefaultRpcSubscriptionsChannel, {\n maxSubscriptionsPerChannel:\n config.maxSubscriptionsPerChannel ??\n /**\n * A note about this default. The idea here is that, because some RPC providers impose\n * an upper limit on the number of subscriptions you can make per channel, we must\n * choose a number low enough to avoid hitting that limit. Without knowing what provider\n * a given person is using, or what their limit is, we have to choose the lowest of all\n * known limits. As of this writing (October 2024) that is the public mainnet RPC node\n * (api.mainnet-beta.solana.com) at 100 subscriptions.\n */\n 100,\n minChannels: config.minChannels ?? 1,\n });\n}\n","import fastStableStringify from '@solana/fast-stable-stringify';\nimport { RpcSubscriptionsTransport } from '@solana/rpc-subscriptions-spec';\nimport { DataPublisher } from '@solana/subscribable';\n\ntype CacheEntry = {\n readonly abortController: AbortController;\n readonly dataPublisherPromise: Promise<DataPublisher>;\n numSubscribers: number;\n};\n\nexport function getRpcSubscriptionsTransportWithSubscriptionCoalescing<TTransport extends RpcSubscriptionsTransport>(\n transport: TTransport,\n): TTransport {\n const cache = new Map<string, CacheEntry>();\n return function rpcSubscriptionsTransportWithSubscriptionCoalescing(config) {\n const { request, signal } = config;\n const subscriptionConfigurationHash = fastStableStringify([request.methodName, request.params]);\n\n let cachedDataPublisherPromise = cache.get(subscriptionConfigurationHash);\n if (!cachedDataPublisherPromise) {\n const abortController = new AbortController();\n const dataPublisherPromise = transport({\n ...config,\n signal: abortController.signal,\n });\n dataPublisherPromise\n .then(dataPublisher => {\n dataPublisher.on(\n 'error',\n () => {\n cache.delete(subscriptionConfigurationHash);\n abortController.abort();\n },\n { signal: abortController.signal },\n );\n })\n .catch(() => {});\n cache.set(\n subscriptionConfigurationHash,\n (cachedDataPublisherPromise = {\n abortController,\n dataPublisherPromise,\n numSubscribers: 0,\n }),\n );\n }\n cachedDataPublisherPromise.numSubscribers++;\n signal.addEventListener(\n 'abort',\n () => {\n cachedDataPublisherPromise.numSubscribers--;\n if (cachedDataPublisherPromise.numSubscribers === 0) {\n queueMicrotask(() => {\n if (cachedDataPublisherPromise.numSubscribers === 0) {\n cache.delete(subscriptionConfigurationHash);\n cachedDataPublisherPromise.abortController.abort();\n }\n });\n }\n },\n { signal: cachedDataPublisherPromise.abortController.signal },\n );\n return cachedDataPublisherPromise.dataPublisherPromise;\n } as TTransport;\n}\n","import { pipe } from '@solana/functional';\nimport { RpcSubscriptionsChannelCreator, RpcSubscriptionsTransport } from '@solana/rpc-subscriptions-spec';\nimport { ClusterUrl } from '@solana/rpc-types';\n\nimport {\n RpcSubscriptionsChannelCreatorDevnet,\n RpcSubscriptionsChannelCreatorFromClusterUrl,\n RpcSubscriptionsChannelCreatorMainnet,\n RpcSubscriptionsChannelCreatorTestnet,\n RpcSubscriptionsTransportDevnet,\n RpcSubscriptionsTransportFromClusterUrl,\n RpcSubscriptionsTransportMainnet,\n RpcSubscriptionsTransportTestnet,\n} from './rpc-subscriptions-clusters';\nimport { getRpcSubscriptionsTransportWithSubscriptionCoalescing } from './rpc-subscriptions-coalescer';\n\nexport type DefaultRpcSubscriptionsTransportConfig<TClusterUrl extends ClusterUrl> = Readonly<{\n createChannel: RpcSubscriptionsChannelCreatorFromClusterUrl<TClusterUrl, unknown, unknown>;\n}>;\n\nexport function createDefaultRpcSubscriptionsTransport<TClusterUrl extends ClusterUrl>({\n createChannel,\n}: DefaultRpcSubscriptionsTransportConfig<TClusterUrl>) {\n return pipe(\n createRpcSubscriptionsTransportFromChannelCreator(\n createChannel,\n ) as RpcSubscriptionsTransport as RpcSubscriptionsTransportFromClusterUrl<TClusterUrl>,\n transport => getRpcSubscriptionsTransportWithSubscriptionCoalescing(transport),\n );\n}\n\nexport function createRpcSubscriptionsTransportFromChannelCreator<\n TChannelCreator extends RpcSubscriptionsChannelCreator<TOutboundMessage, TInboundMessage>,\n TInboundMessage,\n TOutboundMessage,\n>(createChannel: TChannelCreator) {\n return (async ({ execute, signal }) => {\n const channel = await createChannel({ abortSignal: signal });\n return await execute({ channel, signal });\n }) as TChannelCreator extends RpcSubscriptionsChannelCreatorDevnet<TOutboundMessage, TInboundMessage>\n ? RpcSubscriptionsTransportDevnet\n : TChannelCreator extends RpcSubscriptionsChannelCreatorTestnet<TOutboundMessage, TInboundMessage>\n ? RpcSubscriptionsTransportTestnet\n : TChannelCreator extends RpcSubscriptionsChannelCreatorMainnet<TOutboundMessage, TInboundMessage>\n ? RpcSubscriptionsTransportMainnet\n : RpcSubscriptionsTransport;\n}\n","import type { SolanaRpcSubscriptionsApi, SolanaRpcSubscriptionsApiUnstable } from '@solana/rpc-subscriptions-api';\nimport { createSolanaRpcSubscriptionsApi } from '@solana/rpc-subscriptions-api';\nimport {\n createSubscriptionRpc,\n RpcSubscriptionsApiMethods,\n type RpcSubscriptionsTransport,\n} from '@solana/rpc-subscriptions-spec';\nimport { ClusterUrl } from '@solana/rpc-types';\n\nimport { DEFAULT_RPC_SUBSCRIPTIONS_CONFIG } from './rpc-default-config';\nimport {\n createDefaultSolanaRpcSubscriptionsChannelCreator,\n DefaultRpcSubscriptionsChannelConfig,\n} from './rpc-subscriptions-channel';\nimport type { RpcSubscriptionsFromTransport } from './rpc-subscriptions-clusters';\nimport { createDefaultRpcSubscriptionsTransport } from './rpc-subscriptions-transport';\n\ntype Config<TClusterUrl extends ClusterUrl> = DefaultRpcSubscriptionsChannelConfig<TClusterUrl>;\n\nfunction createSolanaRpcSubscriptionsImpl<TClusterUrl extends ClusterUrl, TApi extends RpcSubscriptionsApiMethods>(\n clusterUrl: TClusterUrl,\n config?: Omit<Config<TClusterUrl>, 'url'>,\n) {\n const transport = createDefaultRpcSubscriptionsTransport({\n createChannel: createDefaultSolanaRpcSubscriptionsChannelCreator({ ...config, url: clusterUrl }),\n });\n return createSolanaRpcSubscriptionsFromTransport<typeof transport, TApi>(transport);\n}\n\nexport function createSolanaRpcSubscriptions<TClusterUrl extends ClusterUrl>(\n clusterUrl: TClusterUrl,\n config?: Omit<Config<TClusterUrl>, 'url'>,\n) {\n return createSolanaRpcSubscriptionsImpl<TClusterUrl, SolanaRpcSubscriptionsApi>(clusterUrl, config);\n}\n\nexport function createSolanaRpcSubscriptions_UNSTABLE<TClusterUrl extends ClusterUrl>(\n clusterUrl: TClusterUrl,\n config?: Omit<Config<TClusterUrl>, 'url'>,\n) {\n return createSolanaRpcSubscriptionsImpl<TClusterUrl, SolanaRpcSubscriptionsApi & SolanaRpcSubscriptionsApiUnstable>(\n clusterUrl,\n config,\n );\n}\n\nexport function createSolanaRpcSubscriptionsFromTransport<\n TTransport extends RpcSubscriptionsTransport,\n TApi extends RpcSubscriptionsApiMethods = SolanaRpcSubscriptionsApi,\n>(transport: TTransport) {\n return createSubscriptionRpc({\n api: createSolanaRpcSubscriptionsApi<TApi>(DEFAULT_RPC_SUBSCRIPTIONS_CONFIG),\n transport,\n }) as RpcSubscriptionsFromTransport<TApi, TTransport>;\n}\n","import {\n combineCodec,\n Decoder,\n Encoder,\n fixDecoderSize,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n fixEncoderSize,\n transformEncoder,\n} from '@solana/codecs-core';\nimport { getBase58Decoder, getBase58Encoder } from '@solana/codecs-strings';\nimport {\n SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH,\n SolanaError,\n} from '@solana/errors';\n\nexport type Blockhash = string & { readonly __brand: unique symbol };\n\nlet memoizedBase58Encoder: Encoder<string> | undefined;\nlet memoizedBase58Decoder: Decoder<string> | undefined;\n\nfunction getMemoizedBase58Encoder(): Encoder<string> {\n if (!memoizedBase58Encoder) memoizedBase58Encoder = getBase58Encoder();\n return memoizedBase58Encoder;\n}\n\nfunction getMemoizedBase58Decoder(): Decoder<string> {\n if (!memoizedBase58Decoder) memoizedBase58Decoder = getBase58Decoder();\n return memoizedBase58Decoder;\n}\n\nexport function isBlockhash(putativeBlockhash: string): putativeBlockhash is Blockhash {\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest value (32 bytes of zeroes)\n putativeBlockhash.length < 32 ||\n // Highest value (32 bytes of 255)\n putativeBlockhash.length > 44\n ) {\n return false;\n }\n // Slow-path; actually attempt to decode the input string.\n const base58Encoder = getMemoizedBase58Encoder();\n const bytes = base58Encoder.encode(putativeBlockhash);\n const numBytes = bytes.byteLength;\n if (numBytes !== 32) {\n return false;\n }\n return true;\n}\n\nexport function assertIsBlockhash(putativeBlockhash: string): asserts putativeBlockhash is Blockhash {\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest value (32 bytes of zeroes)\n putativeBlockhash.length < 32 ||\n // Highest value (32 bytes of 255)\n putativeBlockhash.length > 44\n ) {\n throw new SolanaError(SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE, {\n actualLength: putativeBlockhash.length,\n });\n }\n // Slow-path; actually attempt to decode the input string.\n const base58Encoder = getMemoizedBase58Encoder();\n const bytes = base58Encoder.encode(putativeBlockhash);\n const numBytes = bytes.byteLength;\n if (numBytes !== 32) {\n throw new SolanaError(SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH, {\n actualLength: numBytes,\n });\n }\n}\n\nexport function blockhash(putativeBlockhash: string): Blockhash {\n assertIsBlockhash(putativeBlockhash);\n return putativeBlockhash;\n}\n\nexport function getBlockhashEncoder(): FixedSizeEncoder<Blockhash, 32> {\n return transformEncoder(fixEncoderSize(getMemoizedBase58Encoder(), 32), putativeBlockhash =>\n blockhash(putativeBlockhash),\n );\n}\n\nexport function getBlockhashDecoder(): FixedSizeDecoder<Blockhash, 32> {\n return fixDecoderSize(getMemoizedBase58Decoder(), 32) as FixedSizeDecoder<Blockhash, 32>;\n}\n\nexport function getBlockhashCodec(): FixedSizeCodec<Blockhash, Blockhash, 32> {\n return combineCodec(getBlockhashEncoder(), getBlockhashDecoder());\n}\n\nexport function getBlockhashComparator(): (x: string, y: string) => number {\n return new Intl.Collator('en', {\n caseFirst: 'lower',\n ignorePunctuation: false,\n localeMatcher: 'best fit',\n numeric: false,\n sensitivity: 'variant',\n usage: 'sort',\n }).compare;\n}\n","export type MainnetUrl = string & { '~cluster': 'mainnet' };\nexport type DevnetUrl = string & { '~cluster': 'devnet' };\nexport type TestnetUrl = string & { '~cluster': 'testnet' };\nexport type ClusterUrl = DevnetUrl | MainnetUrl | TestnetUrl | string;\n\nexport function mainnet(putativeString: string): MainnetUrl {\n return putativeString as MainnetUrl;\n}\nexport function devnet(putativeString: string): DevnetUrl {\n return putativeString as DevnetUrl;\n}\nexport function testnet(putativeString: string): TestnetUrl {\n return putativeString as TestnetUrl;\n}\n","import { SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE, SolanaError } from '@solana/errors';\n\nexport type Commitment = 'confirmed' | 'finalized' | 'processed';\n\nfunction getCommitmentScore(commitment: Commitment): number {\n switch (commitment) {\n case 'finalized':\n return 2;\n case 'confirmed':\n return 1;\n case 'processed':\n return 0;\n default:\n throw new SolanaError(SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE, {\n unexpectedValue: commitment satisfies never,\n });\n }\n}\n\nexport function commitmentComparator(a: Commitment, b: Commitment): -1 | 0 | 1 {\n if (a === b) {\n return 0;\n }\n return getCommitmentScore(a) < getCommitmentScore(b) ? -1 : 1;\n}\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n} from '@solana/codecs-core';\nimport { getU64Decoder, getU64Encoder, NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\nimport { SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\nexport type Lamports = bigint & { readonly __brand: unique symbol };\n\n// Largest possible value to be represented by a u64\nconst maxU64Value = 18446744073709551615n; // 2n ** 64n - 1n\n\nlet memoizedU64Encoder: FixedSizeEncoder<bigint | number, 8> | undefined;\nlet memoizedU64Decoder: FixedSizeDecoder<bigint, 8> | undefined;\n\nfunction getMemoizedU64Encoder(): FixedSizeEncoder<bigint | number, 8> {\n if (!memoizedU64Encoder) memoizedU64Encoder = getU64Encoder();\n return memoizedU64Encoder;\n}\n\nfunction getMemoizedU64Decoder(): FixedSizeDecoder<bigint, 8> {\n if (!memoizedU64Decoder) memoizedU64Decoder = getU64Decoder();\n return memoizedU64Decoder;\n}\n\nexport function isLamports(putativeLamports: bigint): putativeLamports is Lamports {\n return putativeLamports >= 0 && putativeLamports <= maxU64Value;\n}\n\nexport function assertIsLamports(putativeLamports: bigint): asserts putativeLamports is Lamports {\n if (putativeLamports < 0 || putativeLamports > maxU64Value) {\n throw new SolanaError(SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE);\n }\n}\n\nexport function lamports(putativeLamports: bigint): Lamports {\n assertIsLamports(putativeLamports);\n return putativeLamports;\n}\n\ntype ExtractAdditionalProps<T, U> = Omit<T, keyof U>;\n\nexport function getDefaultLamportsEncoder(): FixedSizeEncoder<Lamports, 8> {\n return getLamportsEncoder(getMemoizedU64Encoder());\n}\n\nexport function getLamportsEncoder<TEncoder extends NumberEncoder>(\n innerEncoder: TEncoder,\n): Encoder<Lamports> & ExtractAdditionalProps<TEncoder, NumberEncoder> {\n return innerEncoder;\n}\n\nexport function getDefaultLamportsDecoder(): FixedSizeDecoder<Lamports, 8> {\n return getLamportsDecoder(getMemoizedU64Decoder());\n}\n\nexport function getLamportsDecoder<TDecoder extends NumberDecoder>(\n innerDecoder: TDecoder,\n): Decoder<Lamports> & ExtractAdditionalProps<TDecoder, NumberDecoder> {\n return transformDecoder<bigint | number, Lamports>(innerDecoder, value =>\n lamports(typeof value === 'bigint' ? value : BigInt(value)),\n ) as Decoder<Lamports> & ExtractAdditionalProps<TDecoder, NumberDecoder>;\n}\n\nexport function getDefaultLamportsCodec(): FixedSizeCodec<Lamports, Lamports, 8> {\n return combineCodec(getDefaultLamportsEncoder(), getDefaultLamportsDecoder());\n}\n\nexport function getLamportsCodec<TCodec extends NumberCodec>(\n innerCodec: TCodec,\n): Codec<Lamports, Lamports> & ExtractAdditionalProps<TCodec, NumberCodec> {\n return combineCodec(getLamportsEncoder(innerCodec), getLamportsDecoder(innerCodec)) as Codec<Lamports, Lamports> &\n ExtractAdditionalProps<TCodec, NumberCodec>;\n}\n","import { SOLANA_ERROR__MALFORMED_BIGINT_STRING, SolanaError } from '@solana/errors';\n\nexport type StringifiedBigInt = string & { readonly __brand: unique symbol };\n\nexport function isStringifiedBigInt(putativeBigInt: string): putativeBigInt is StringifiedBigInt {\n try {\n BigInt(putativeBigInt);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function assertIsStringifiedBigInt(putativeBigInt: string): asserts putativeBigInt is StringifiedBigInt {\n try {\n BigInt(putativeBigInt);\n } catch {\n throw new SolanaError(SOLANA_ERROR__MALFORMED_BIGINT_STRING, {\n value: putativeBigInt,\n });\n }\n}\n\nexport function stringifiedBigInt(putativeBigInt: string): StringifiedBigInt {\n assertIsStringifiedBigInt(putativeBigInt);\n return putativeBigInt;\n}\n","import { SOLANA_ERROR__MALFORMED_NUMBER_STRING, SolanaError } from '@solana/errors';\n\nexport type StringifiedNumber = string & { readonly __brand: unique symbol };\n\nexport function isStringifiedNumber(putativeNumber: string): putativeNumber is StringifiedNumber {\n return !Number.isNaN(Number(putativeNumber));\n}\n\nexport function assertIsStringifiedNumber(putativeNumber: string): asserts putativeNumber is StringifiedNumber {\n if (Number.isNaN(Number(putativeNumber))) {\n throw new SolanaError(SOLANA_ERROR__MALFORMED_NUMBER_STRING, {\n value: putativeNumber,\n });\n }\n}\n\nexport function stringifiedNumber(putativeNumber: string): StringifiedNumber {\n assertIsStringifiedNumber(putativeNumber);\n return putativeNumber;\n}\n","import { SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\nexport type UnixTimestamp = bigint & { readonly __brand: unique symbol };\n\n// Largest possible value to be represented by an i64\nconst maxI64Value = 9223372036854775807n; // 2n ** 63n - 1n\nconst minI64Value = -9223372036854775808n; // -(2n ** 63n)\n\nexport function isUnixTimestamp(putativeTimestamp: bigint): putativeTimestamp is UnixTimestamp {\n return putativeTimestamp >= minI64Value && putativeTimestamp <= maxI64Value;\n}\n\nexport function assertIsUnixTimestamp(putativeTimestamp: bigint): asserts putativeTimestamp is UnixTimestamp {\n if (putativeTimestamp < minI64Value || putativeTimestamp > maxI64Value) {\n throw new SolanaError(SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE, {\n value: putativeTimestamp,\n });\n }\n}\n\nexport function unixTimestamp(putativeTimestamp: bigint): UnixTimestamp {\n assertIsUnixTimestamp(putativeTimestamp);\n return putativeTimestamp;\n}\n","import { SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME, SolanaError } from '@solana/errors';\nimport { assertIsBlockhash, type Blockhash } from '@solana/rpc-types';\n\nimport { TransactionMessageWithDurableNonceLifetime } from './durable-nonce';\nimport { BaseTransactionMessage } from './transaction-message';\n\ntype BlockhashLifetimeConstraint = Readonly<{\n blockhash: Blockhash;\n lastValidBlockHeight: bigint;\n}>;\n\nexport interface TransactionMessageWithBlockhashLifetime {\n readonly lifetimeConstraint: BlockhashLifetimeConstraint;\n}\n\nexport function isTransactionMessageWithBlockhashLifetime(\n transaction: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithBlockhashLifetime),\n): transaction is BaseTransactionMessage & TransactionMessageWithBlockhashLifetime {\n const lifetimeConstraintShapeMatches =\n 'lifetimeConstraint' in transaction &&\n typeof transaction.lifetimeConstraint.blockhash === 'string' &&\n typeof transaction.lifetimeConstraint.lastValidBlockHeight === 'bigint';\n if (!lifetimeConstraintShapeMatches) return false;\n try {\n assertIsBlockhash(transaction.lifetimeConstraint.blockhash);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function assertIsTransactionMessageWithBlockhashLifetime(\n transaction: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithBlockhashLifetime),\n): asserts transaction is BaseTransactionMessage & TransactionMessageWithBlockhashLifetime {\n if (!isTransactionMessageWithBlockhashLifetime(transaction)) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME);\n }\n}\n\nexport function setTransactionMessageLifetimeUsingBlockhash<\n TTransaction extends BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime,\n>(\n blockhashLifetimeConstraint: BlockhashLifetimeConstraint,\n transaction: TTransaction,\n): Omit<TTransaction, 'lifetimeConstraint'> & TransactionMessageWithBlockhashLifetime;\n\nexport function setTransactionMessageLifetimeUsingBlockhash<\n TTransaction extends BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithBlockhashLifetime),\n>(\n blockhashLifetimeConstraint: BlockhashLifetimeConstraint,\n transaction: TTransaction,\n): TransactionMessageWithBlockhashLifetime & TTransaction;\n\nexport function setTransactionMessageLifetimeUsingBlockhash(\n blockhashLifetimeConstraint: BlockhashLifetimeConstraint,\n transaction: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithBlockhashLifetime),\n) {\n if (\n 'lifetimeConstraint' in transaction &&\n transaction.lifetimeConstraint.blockhash === blockhashLifetimeConstraint.blockhash &&\n transaction.lifetimeConstraint.lastValidBlockHeight === blockhashLifetimeConstraint.lastValidBlockHeight\n ) {\n return transaction;\n }\n const out = {\n ...transaction,\n lifetimeConstraint: Object.freeze(blockhashLifetimeConstraint),\n };\n Object.freeze(out);\n return out;\n}\n","import { getAddressDecoder, getAddressEncoder } from '@solana/addresses';\nimport {\n combineCodec,\n type Encoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { getArrayDecoder, getArrayEncoder, getStructDecoder, getStructEncoder } from '@solana/codecs-data-structures';\nimport { getShortU16Decoder, getShortU16Encoder, getU8Decoder, getU8Encoder } from '@solana/codecs-numbers';\n\nimport type { getCompiledAddressTableLookups } from '../compile/address-table-lookups';\n\ntype AddressTableLookup = ReturnType<typeof getCompiledAddressTableLookups>[number];\n\nlet memoizedAddressTableLookupEncoder: VariableSizeEncoder<AddressTableLookup> | undefined;\nexport function getAddressTableLookupEncoder(): VariableSizeEncoder<AddressTableLookup> {\n if (!memoizedAddressTableLookupEncoder) {\n memoizedAddressTableLookupEncoder = getStructEncoder([\n ['lookupTableAddress', getAddressEncoder()],\n [\n 'writableIndices',\n getArrayEncoder(getU8Encoder(), { size: getShortU16Encoder() }) as Encoder<readonly number[]>,\n ],\n [\n 'readableIndices',\n getArrayEncoder(getU8Encoder(), { size: getShortU16Encoder() }) as Encoder<readonly number[]>,\n ],\n ]);\n }\n\n return memoizedAddressTableLookupEncoder;\n}\n\nlet memoizedAddressTableLookupDecoder: VariableSizeDecoder<AddressTableLookup> | undefined;\nexport function getAddressTableLookupDecoder(): VariableSizeDecoder<AddressTableLookup> {\n if (!memoizedAddressTableLookupDecoder) {\n memoizedAddressTableLookupDecoder = getStructDecoder([\n ['lookupTableAddress', getAddressDecoder()],\n ['writableIndices', getArrayDecoder(getU8Decoder(), { size: getShortU16Decoder() })],\n ['readableIndices', getArrayDecoder(getU8Decoder(), { size: getShortU16Decoder() })],\n ]);\n }\n\n return memoizedAddressTableLookupDecoder;\n}\n\nexport function getAddressTableLookupCodec(): VariableSizeCodec<AddressTableLookup> {\n return combineCodec(getAddressTableLookupEncoder(), getAddressTableLookupDecoder());\n}\n","import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\nimport { getStructCodec, getStructDecoder, getStructEncoder } from '@solana/codecs-data-structures';\nimport { getU8Codec, getU8Decoder, getU8Encoder } from '@solana/codecs-numbers';\n\nimport { getCompiledMessageHeader } from '../compile/header';\n\ntype MessageHeader = ReturnType<typeof getCompiledMessageHeader>;\n\nlet memoizedU8Encoder: FixedSizeEncoder<number, 1> | undefined;\nfunction getMemoizedU8Encoder(): FixedSizeEncoder<number, 1> {\n if (!memoizedU8Encoder) memoizedU8Encoder = getU8Encoder();\n return memoizedU8Encoder;\n}\n\nlet memoizedU8Decoder: FixedSizeDecoder<number, 1> | undefined;\nfunction getMemoizedU8Decoder(): FixedSizeDecoder<number, 1> {\n if (!memoizedU8Decoder) memoizedU8Decoder = getU8Decoder();\n return memoizedU8Decoder;\n}\n\nlet memoizedU8Codec: FixedSizeCodec<number, number, 1> | undefined;\nfunction getMemoizedU8Codec(): FixedSizeCodec<number, number, 1> {\n if (!memoizedU8Codec) memoizedU8Codec = getU8Codec();\n return memoizedU8Codec;\n}\n\nexport function getMessageHeaderEncoder(): FixedSizeEncoder<MessageHeader, 3> {\n return getStructEncoder([\n ['numSignerAccounts', getMemoizedU8Encoder()],\n ['numReadonlySignerAccounts', getMemoizedU8Encoder()],\n ['numReadonlyNonSignerAccounts', getMemoizedU8Encoder()],\n ]) as FixedSizeEncoder<MessageHeader, 3>;\n}\n\nexport function getMessageHeaderDecoder(): FixedSizeDecoder<MessageHeader, 3> {\n return getStructDecoder([\n ['numSignerAccounts', getMemoizedU8Decoder()],\n ['numReadonlySignerAccounts', getMemoizedU8Decoder()],\n ['numReadonlyNonSignerAccounts', getMemoizedU8Decoder()],\n ]) as FixedSizeDecoder<MessageHeader, 3>;\n}\n\nexport function getMessageHeaderCodec(): FixedSizeCodec<MessageHeader, MessageHeader, 3> {\n return getStructCodec([\n ['numSignerAccounts', getMemoizedU8Codec()],\n ['numReadonlySignerAccounts', getMemoizedU8Codec()],\n ['numReadonlyNonSignerAccounts', getMemoizedU8Codec()],\n ]) as FixedSizeCodec<MessageHeader, MessageHeader, 3>;\n}\n","import {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n} from '@solana/codecs-data-structures';\nimport { getShortU16Decoder, getShortU16Encoder, getU8Decoder, getU8Encoder } from '@solana/codecs-numbers';\n\nimport { getCompiledInstructions } from '../compile/instructions';\n\ntype Instruction = ReturnType<typeof getCompiledInstructions>[number];\n\nlet memoizedGetInstructionEncoder: VariableSizeEncoder<Instruction> | undefined;\nexport function getInstructionEncoder(): VariableSizeEncoder<Instruction> {\n if (!memoizedGetInstructionEncoder) {\n memoizedGetInstructionEncoder = transformEncoder<Required<Instruction>, Instruction>(\n getStructEncoder([\n ['programAddressIndex', getU8Encoder()],\n ['accountIndices', getArrayEncoder(getU8Encoder(), { size: getShortU16Encoder() })],\n ['data', addEncoderSizePrefix(getBytesEncoder(), getShortU16Encoder())],\n ]),\n // Convert an instruction to have all fields defined\n (instruction: Instruction): Required<Instruction> => {\n if (instruction.accountIndices !== undefined && instruction.data !== undefined) {\n return instruction as Required<Instruction>;\n }\n return {\n ...instruction,\n accountIndices: instruction.accountIndices ?? [],\n data: instruction.data ?? new Uint8Array(0),\n } as Required<Instruction>;\n },\n );\n }\n\n return memoizedGetInstructionEncoder;\n}\n\nlet memoizedGetInstructionDecoder: VariableSizeDecoder<Instruction> | undefined;\nexport function getInstructionDecoder(): VariableSizeDecoder<Instruction> {\n if (!memoizedGetInstructionDecoder) {\n memoizedGetInstructionDecoder = transformDecoder<Required<Instruction>, Instruction>(\n getStructDecoder([\n ['programAddressIndex', getU8Decoder()],\n ['accountIndices', getArrayDecoder(getU8Decoder(), { size: getShortU16Decoder() })],\n [\n 'data',\n addDecoderSizePrefix(getBytesDecoder(), getShortU16Decoder()) as VariableSizeDecoder<Uint8Array>,\n ],\n ]),\n // Convert an instruction to exclude optional fields if they are empty\n (instruction: Required<Instruction>): Instruction => {\n if (instruction.accountIndices.length && instruction.data.byteLength) {\n return instruction;\n }\n const { accountIndices, data, ...rest } = instruction;\n return {\n ...rest,\n ...(accountIndices.length ? { accountIndices } : null),\n ...(data.byteLength ? { data } : null),\n };\n },\n );\n }\n return memoizedGetInstructionDecoder;\n}\n\nexport function getInstructionCodec(): VariableSizeCodec<Instruction> {\n return combineCodec(getInstructionEncoder(), getInstructionDecoder());\n}\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\nimport { TransactionVersion } from '../transaction-message';\n\nconst VERSION_FLAG_MASK = 0x80;\n\nexport function getTransactionVersionEncoder(): VariableSizeEncoder<TransactionVersion> {\n return createEncoder({\n getSizeFromValue: value => (value === 'legacy' ? 0 : 1),\n maxSize: 1,\n write: (value, bytes, offset) => {\n if (value === 'legacy') {\n return offset;\n }\n if (value < 0 || value > 127) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE, {\n actualVersion: value,\n });\n }\n bytes.set([value | VERSION_FLAG_MASK], offset);\n return offset + 1;\n },\n });\n}\n\nexport function getTransactionVersionDecoder(): VariableSizeDecoder<TransactionVersion> {\n return createDecoder({\n maxSize: 1,\n read: (bytes, offset) => {\n const firstByte = bytes[offset];\n if ((firstByte & VERSION_FLAG_MASK) === 0) {\n // No version flag set; it's a legacy (unversioned) transaction.\n return ['legacy', offset];\n } else {\n const version = (firstByte ^ VERSION_FLAG_MASK) as TransactionVersion;\n return [version, offset + 1];\n }\n },\n });\n}\n\nexport function getTransactionVersionCodec(): VariableSizeCodec<TransactionVersion> {\n return combineCodec(getTransactionVersionEncoder(), getTransactionVersionDecoder());\n}\n","import { getAddressDecoder, getAddressEncoder } from '@solana/addresses';\nimport {\n combineCodec,\n createEncoder,\n Decoder,\n fixDecoderSize,\n fixEncoderSize,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { getArrayDecoder, getArrayEncoder, getStructDecoder, getStructEncoder } from '@solana/codecs-data-structures';\nimport { getShortU16Decoder, getShortU16Encoder } from '@solana/codecs-numbers';\nimport { getBase58Decoder, getBase58Encoder } from '@solana/codecs-strings';\n\nimport { getCompiledAddressTableLookups } from '../compile/address-table-lookups';\nimport { CompiledTransactionMessage } from '../compile/message';\nimport { getAddressTableLookupDecoder, getAddressTableLookupEncoder } from './address-table-lookup';\nimport { getMessageHeaderDecoder, getMessageHeaderEncoder } from './header';\nimport { getInstructionDecoder, getInstructionEncoder } from './instruction';\nimport { getTransactionVersionDecoder, getTransactionVersionEncoder } from './transaction-version';\n\nfunction getCompiledMessageLegacyEncoder(): VariableSizeEncoder<CompiledTransactionMessage> {\n return getStructEncoder(getPreludeStructEncoderTuple()) as VariableSizeEncoder<CompiledTransactionMessage>;\n}\n\nfunction getCompiledMessageVersionedEncoder(): VariableSizeEncoder<CompiledTransactionMessage> {\n return transformEncoder(\n getStructEncoder([\n ...getPreludeStructEncoderTuple(),\n ['addressTableLookups', getAddressTableLookupArrayEncoder()],\n ]) as VariableSizeEncoder<CompiledTransactionMessage>,\n (value: CompiledTransactionMessage) => {\n if (value.version === 'legacy') {\n return value;\n }\n return {\n ...value,\n addressTableLookups: value.addressTableLookups ?? [],\n } as Exclude<CompiledTransactionMessage, { readonly version: 'legacy' }>;\n },\n );\n}\n\nfunction getPreludeStructEncoderTuple() {\n return [\n ['version', getTransactionVersionEncoder()],\n ['header', getMessageHeaderEncoder()],\n ['staticAccounts', getArrayEncoder(getAddressEncoder(), { size: getShortU16Encoder() })],\n ['lifetimeToken', fixEncoderSize(getBase58Encoder(), 32)],\n ['instructions', getArrayEncoder(getInstructionEncoder(), { size: getShortU16Encoder() })],\n ] as const;\n}\n\nfunction getPreludeStructDecoderTuple() {\n return [\n ['version', getTransactionVersionDecoder() as Decoder<number>],\n ['header', getMessageHeaderDecoder()],\n ['staticAccounts', getArrayDecoder(getAddressDecoder(), { size: getShortU16Decoder() })],\n ['lifetimeToken', fixDecoderSize(getBase58Decoder(), 32)],\n ['instructions', getArrayDecoder(getInstructionDecoder(), { size: getShortU16Decoder() })],\n ['addressTableLookups', getAddressTableLookupArrayDecoder()],\n ] as const;\n}\n\nfunction getAddressTableLookupArrayEncoder() {\n return getArrayEncoder(getAddressTableLookupEncoder(), { size: getShortU16Encoder() });\n}\n\nfunction getAddressTableLookupArrayDecoder() {\n return getArrayDecoder(getAddressTableLookupDecoder(), { size: getShortU16Decoder() });\n}\n\nexport function getCompiledTransactionMessageEncoder(): VariableSizeEncoder<CompiledTransactionMessage> {\n return createEncoder({\n getSizeFromValue: (compiledMessage: CompiledTransactionMessage) => {\n if (compiledMessage.version === 'legacy') {\n return getCompiledMessageLegacyEncoder().getSizeFromValue(compiledMessage);\n } else {\n return getCompiledMessageVersionedEncoder().getSizeFromValue(compiledMessage);\n }\n },\n write: (compiledMessage, bytes, offset) => {\n if (compiledMessage.version === 'legacy') {\n return getCompiledMessageLegacyEncoder().write(compiledMessage, bytes, offset);\n } else {\n return getCompiledMessageVersionedEncoder().write(compiledMessage, bytes, offset);\n }\n },\n });\n}\n\nexport function getCompiledTransactionMessageDecoder(): VariableSizeDecoder<CompiledTransactionMessage> {\n return transformDecoder(\n getStructDecoder(getPreludeStructDecoderTuple()) as VariableSizeDecoder<\n CompiledTransactionMessage & { addressTableLookups?: ReturnType<typeof getCompiledAddressTableLookups> }\n >,\n ({ addressTableLookups, ...restOfMessage }) => {\n if (restOfMessage.version === 'legacy' || !addressTableLookups?.length) {\n return restOfMessage;\n }\n return { ...restOfMessage, addressTableLookups } as Exclude<\n CompiledTransactionMessage,\n { readonly version: 'legacy' }\n >;\n },\n );\n}\n\nexport function getCompiledTransactionMessageCodec(): VariableSizeCodec<CompiledTransactionMessage> {\n return combineCodec(getCompiledTransactionMessageEncoder(), getCompiledTransactionMessageDecoder());\n}\n","import { Address, getAddressComparator } from '@solana/addresses';\nimport {\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES,\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE,\n SolanaError,\n} from '@solana/errors';\nimport {\n AccountRole,\n IAccountLookupMeta,\n IAccountMeta,\n IInstruction,\n isSignerRole,\n isWritableRole,\n mergeRoles,\n ReadonlyAccount,\n ReadonlyAccountLookup,\n ReadonlySignerAccount,\n WritableAccount,\n WritableAccountLookup,\n WritableSignerAccount,\n} from '@solana/instructions';\n\nexport const enum AddressMapEntryType {\n FEE_PAYER,\n LOOKUP_TABLE,\n STATIC,\n}\n\ntype AddressMap = {\n [address: string]: FeePayerAccountEntry | LookupTableAccountEntry | StaticAccountEntry;\n};\ntype FeePayerAccountEntry = Omit<WritableSignerAccount, 'address'> & {\n [TYPE]: AddressMapEntryType.FEE_PAYER;\n};\ntype LookupTableAccountEntry = Omit<ReadonlyAccountLookup | WritableAccountLookup, 'address'> & {\n [TYPE]: AddressMapEntryType.LOOKUP_TABLE;\n};\nexport type OrderedAccounts = (IAccountLookupMeta | IAccountMeta)[] & { readonly __brand: unique symbol };\ntype StaticAccountEntry = Omit<\n ReadonlyAccount | ReadonlySignerAccount | WritableAccount | WritableSignerAccount,\n 'address'\n> & { [TYPE]: AddressMapEntryType.STATIC };\n\nfunction upsert(\n addressMap: AddressMap,\n address: Address,\n update: (\n entry: FeePayerAccountEntry | LookupTableAccountEntry | Record<never, never> | StaticAccountEntry,\n ) => AddressMap[Address],\n) {\n addressMap[address] = update(addressMap[address] ?? { role: AccountRole.READONLY });\n}\n\nconst TYPE = Symbol('AddressMapTypeProperty');\nexport const ADDRESS_MAP_TYPE_PROPERTY: typeof TYPE = TYPE;\n\nexport function getAddressMapFromInstructions(feePayer: Address, instructions: readonly IInstruction[]): AddressMap {\n const addressMap: AddressMap = {\n [feePayer]: { [TYPE]: AddressMapEntryType.FEE_PAYER, role: AccountRole.WRITABLE_SIGNER },\n };\n const addressesOfInvokedPrograms = new Set<Address>();\n for (const instruction of instructions) {\n upsert(addressMap, instruction.programAddress, entry => {\n addressesOfInvokedPrograms.add(instruction.programAddress);\n if (TYPE in entry) {\n if (isWritableRole(entry.role)) {\n switch (entry[TYPE]) {\n case AddressMapEntryType.FEE_PAYER:\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES, {\n programAddress: instruction.programAddress,\n });\n default:\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE, {\n programAddress: instruction.programAddress,\n });\n }\n }\n if (entry[TYPE] === AddressMapEntryType.STATIC) {\n return entry;\n }\n }\n return { [TYPE]: AddressMapEntryType.STATIC, role: AccountRole.READONLY };\n });\n let addressComparator: ReturnType<typeof getAddressComparator>;\n if (!instruction.accounts) {\n continue;\n }\n for (const account of instruction.accounts) {\n upsert(addressMap, account.address, entry => {\n const {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n address: _,\n ...accountMeta\n } = account;\n if (TYPE in entry) {\n switch (entry[TYPE]) {\n case AddressMapEntryType.FEE_PAYER:\n // The fee payer already has the highest rank -- it is by definition\n // writable-signer. Return it, no matter how `account` is configured\n return entry;\n case AddressMapEntryType.LOOKUP_TABLE: {\n const nextRole = mergeRoles(entry.role, accountMeta.role);\n if ('lookupTableAddress' in accountMeta) {\n const shouldReplaceEntry =\n // Consider using the new LOOKUP_TABLE if its address is different...\n entry.lookupTableAddress !== accountMeta.lookupTableAddress &&\n // ...and sorts before the existing one.\n (addressComparator ||= getAddressComparator())(\n accountMeta.lookupTableAddress,\n entry.lookupTableAddress,\n ) < 0;\n if (shouldReplaceEntry) {\n return {\n [TYPE]: AddressMapEntryType.LOOKUP_TABLE,\n ...accountMeta,\n role: nextRole,\n } as LookupTableAccountEntry;\n }\n } else if (isSignerRole(accountMeta.role)) {\n // Upgrade this LOOKUP_TABLE entry to a static entry if it must sign.\n return {\n [TYPE]: AddressMapEntryType.STATIC,\n role: nextRole,\n } as StaticAccountEntry;\n }\n if (entry.role !== nextRole) {\n return {\n ...entry,\n role: nextRole,\n } as LookupTableAccountEntry;\n } else {\n return entry;\n }\n }\n case AddressMapEntryType.STATIC: {\n const nextRole = mergeRoles(entry.role, accountMeta.role);\n if (\n // Check to see if this address represents a program that is invoked\n // in this transaction.\n addressesOfInvokedPrograms.has(account.address)\n ) {\n if (isWritableRole(accountMeta.role)) {\n throw new SolanaError(\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE,\n {\n programAddress: account.address,\n },\n );\n }\n if (entry.role !== nextRole) {\n return {\n ...entry,\n role: nextRole,\n } as StaticAccountEntry;\n } else {\n return entry;\n }\n } else if (\n 'lookupTableAddress' in accountMeta &&\n // Static accounts can be 'upgraded' to lookup table accounts as\n // long as they are not require to sign the transaction.\n !isSignerRole(entry.role)\n ) {\n return {\n ...accountMeta,\n [TYPE]: AddressMapEntryType.LOOKUP_TABLE,\n role: nextRole,\n } as LookupTableAccountEntry;\n } else {\n if (entry.role !== nextRole) {\n // The account's role ranks higher than the current entry's.\n return {\n ...entry,\n role: nextRole,\n } as StaticAccountEntry;\n } else {\n return entry;\n }\n }\n }\n }\n }\n if ('lookupTableAddress' in accountMeta) {\n return {\n ...accountMeta,\n [TYPE]: AddressMapEntryType.LOOKUP_TABLE,\n };\n } else {\n return {\n ...accountMeta,\n [TYPE]: AddressMapEntryType.STATIC,\n };\n }\n });\n }\n }\n return addressMap;\n}\n\nexport function getOrderedAccountsFromAddressMap(addressMap: AddressMap): OrderedAccounts {\n let addressComparator: ReturnType<typeof getAddressComparator>;\n const orderedAccounts: (IAccountLookupMeta | IAccountMeta)[] = Object.entries(addressMap)\n .sort(([leftAddress, leftEntry], [rightAddress, rightEntry]) => {\n // STEP 1: Rapid precedence check. Fee payer, then static addresses, then lookups.\n if (leftEntry[TYPE] !== rightEntry[TYPE]) {\n if (leftEntry[TYPE] === AddressMapEntryType.FEE_PAYER) {\n return -1;\n } else if (rightEntry[TYPE] === AddressMapEntryType.FEE_PAYER) {\n return 1;\n } else if (leftEntry[TYPE] === AddressMapEntryType.STATIC) {\n return -1;\n } else if (rightEntry[TYPE] === AddressMapEntryType.STATIC) {\n return 1;\n }\n }\n // STEP 2: Sort by signer-writability.\n const leftIsSigner = isSignerRole(leftEntry.role);\n if (leftIsSigner !== isSignerRole(rightEntry.role)) {\n return leftIsSigner ? -1 : 1;\n }\n const leftIsWritable = isWritableRole(leftEntry.role);\n if (leftIsWritable !== isWritableRole(rightEntry.role)) {\n return leftIsWritable ? -1 : 1;\n }\n // STEP 3: Sort by address.\n addressComparator ||= getAddressComparator();\n if (\n leftEntry[TYPE] === AddressMapEntryType.LOOKUP_TABLE &&\n rightEntry[TYPE] === AddressMapEntryType.LOOKUP_TABLE &&\n leftEntry.lookupTableAddress !== rightEntry.lookupTableAddress\n ) {\n return addressComparator(leftEntry.lookupTableAddress, rightEntry.lookupTableAddress);\n } else {\n return addressComparator(leftAddress, rightAddress);\n }\n })\n .map(([address, addressMeta]) => ({\n address: address as Address<typeof address>,\n ...addressMeta,\n }));\n return orderedAccounts as unknown as OrderedAccounts;\n}\n","import { Address, getAddressComparator } from '@solana/addresses';\nimport { AccountRole } from '@solana/instructions';\n\nimport { OrderedAccounts } from '../compile/accounts';\n\ntype AddressTableLookup = Readonly<{\n lookupTableAddress: Address;\n readableIndices: readonly number[];\n writableIndices: readonly number[];\n}>;\n\nexport function getCompiledAddressTableLookups(orderedAccounts: OrderedAccounts): AddressTableLookup[] {\n const index: Record<Address, { readonly readableIndices: number[]; readonly writableIndices: number[] }> = {};\n for (const account of orderedAccounts) {\n if (!('lookupTableAddress' in account)) {\n continue;\n }\n const entry = (index[account.lookupTableAddress] ||= {\n readableIndices: [],\n writableIndices: [],\n });\n if (account.role === AccountRole.WRITABLE) {\n entry.writableIndices.push(account.addressIndex);\n } else {\n entry.readableIndices.push(account.addressIndex);\n }\n }\n return Object.keys(index)\n .sort(getAddressComparator())\n .map(lookupTableAddress => ({\n lookupTableAddress: lookupTableAddress as Address,\n ...index[lookupTableAddress as unknown as Address],\n }));\n}\n","import { isSignerRole, isWritableRole } from '@solana/instructions';\n\nimport { OrderedAccounts } from '../compile/accounts';\n\ntype MessageHeader = Readonly<{\n numReadonlyNonSignerAccounts: number;\n numReadonlySignerAccounts: number;\n numSignerAccounts: number;\n}>;\n\nexport function getCompiledMessageHeader(orderedAccounts: OrderedAccounts): MessageHeader {\n let numReadonlyNonSignerAccounts = 0;\n let numReadonlySignerAccounts = 0;\n let numSignerAccounts = 0;\n for (const account of orderedAccounts) {\n if ('lookupTableAddress' in account) {\n break;\n }\n const accountIsWritable = isWritableRole(account.role);\n if (isSignerRole(account.role)) {\n numSignerAccounts++;\n if (!accountIsWritable) {\n numReadonlySignerAccounts++;\n }\n } else if (!accountIsWritable) {\n numReadonlyNonSignerAccounts++;\n }\n }\n return {\n numReadonlyNonSignerAccounts,\n numReadonlySignerAccounts,\n numSignerAccounts,\n };\n}\n","import { Address } from '@solana/addresses';\nimport { IInstruction } from '@solana/instructions';\n\nimport { OrderedAccounts } from './accounts';\n\ntype CompiledInstruction = Readonly<{\n accountIndices?: number[];\n data?: Uint8Array;\n programAddressIndex: number;\n}>;\n\nfunction getAccountIndex(orderedAccounts: OrderedAccounts) {\n const out: Record<Address, number> = {};\n for (const [index, account] of orderedAccounts.entries()) {\n out[account.address] = index;\n }\n return out;\n}\n\nexport function getCompiledInstructions(\n instructions: readonly IInstruction[],\n orderedAccounts: OrderedAccounts,\n): CompiledInstruction[] {\n const accountIndex = getAccountIndex(orderedAccounts);\n return instructions.map(({ accounts, data, programAddress }) => {\n return {\n programAddressIndex: accountIndex[programAddress],\n ...(accounts ? { accountIndices: accounts.map(({ address }) => accountIndex[address]) } : null),\n ...(data ? { data } : null),\n };\n });\n}\n","import { TransactionMessageWithBlockhashLifetime, TransactionMessageWithDurableNonceLifetime } from '../index';\n\nexport function getCompiledLifetimeToken(\n lifetimeConstraint: (\n | TransactionMessageWithBlockhashLifetime\n | TransactionMessageWithDurableNonceLifetime\n )['lifetimeConstraint'],\n): string {\n if ('nonce' in lifetimeConstraint) {\n return lifetimeConstraint.nonce;\n }\n return lifetimeConstraint.blockhash;\n}\n","import { Address } from '@solana/addresses';\n\nimport { OrderedAccounts } from './accounts';\n\nexport function getCompiledStaticAccounts(orderedAccounts: OrderedAccounts): Address[] {\n const firstLookupTableAccountIndex = orderedAccounts.findIndex(account => 'lookupTableAddress' in account);\n const orderedStaticAccounts =\n firstLookupTableAccountIndex === -1 ? orderedAccounts : orderedAccounts.slice(0, firstLookupTableAccountIndex);\n return orderedStaticAccounts.map(({ address }) => address);\n}\n","import { CompilableTransactionMessage } from '../compilable-transaction-message';\nimport { getAddressMapFromInstructions, getOrderedAccountsFromAddressMap } from './accounts';\nimport { getCompiledAddressTableLookups } from './address-table-lookups';\nimport { getCompiledMessageHeader } from './header';\nimport { getCompiledInstructions } from './instructions';\nimport { getCompiledLifetimeToken } from './lifetime-token';\nimport { getCompiledStaticAccounts } from './static-accounts';\n\ntype BaseCompiledTransactionMessage = Readonly<{\n header: ReturnType<typeof getCompiledMessageHeader>;\n instructions: ReturnType<typeof getCompiledInstructions>;\n lifetimeToken: ReturnType<typeof getCompiledLifetimeToken>;\n staticAccounts: ReturnType<typeof getCompiledStaticAccounts>;\n}>;\n\nexport type CompiledTransactionMessage = LegacyCompiledTransactionMessage | VersionedCompiledTransactionMessage;\n\ntype LegacyCompiledTransactionMessage = BaseCompiledTransactionMessage &\n Readonly<{\n version: 'legacy';\n }>;\n\ntype VersionedCompiledTransactionMessage = BaseCompiledTransactionMessage &\n Readonly<{\n addressTableLookups?: ReturnType<typeof getCompiledAddressTableLookups>;\n version: number;\n }>;\n\nexport function compileTransactionMessage(\n transaction: CompilableTransactionMessage & Readonly<{ version: 'legacy' }>,\n): LegacyCompiledTransactionMessage;\nexport function compileTransactionMessage(\n transaction: CompilableTransactionMessage,\n): VersionedCompiledTransactionMessage;\nexport function compileTransactionMessage(transaction: CompilableTransactionMessage): CompiledTransactionMessage {\n const addressMap = getAddressMapFromInstructions(transaction.feePayer.address, transaction.instructions);\n const orderedAccounts = getOrderedAccountsFromAddressMap(addressMap);\n return {\n ...(transaction.version !== 'legacy'\n ? { addressTableLookups: getCompiledAddressTableLookups(orderedAccounts) }\n : null),\n header: getCompiledMessageHeader(orderedAccounts),\n instructions: getCompiledInstructions(transaction.instructions, orderedAccounts),\n lifetimeToken: getCompiledLifetimeToken(transaction.lifetimeConstraint),\n staticAccounts: getCompiledStaticAccounts(orderedAccounts),\n version: transaction.version,\n };\n}\n","import { Address } from '@solana/addresses';\nimport { AccountRole, IAccountLookupMeta, IAccountMeta, IInstruction, isSignerRole } from '@solana/instructions';\n\nimport { AddressesByLookupTableAddress } from './addresses-by-lookup-table-address';\nimport { BaseTransactionMessage, TransactionMessage } from './transaction-message';\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\n// Look up the address in lookup tables, return a lookup meta if it is found in any of them\nfunction findAddressInLookupTables(\n address: Address,\n role: AccountRole.READONLY | AccountRole.WRITABLE,\n addressesByLookupTableAddress: AddressesByLookupTableAddress,\n): IAccountLookupMeta | undefined {\n for (const [lookupTableAddress, addresses] of Object.entries(addressesByLookupTableAddress)) {\n for (let i = 0; i < addresses.length; i++) {\n if (address === addresses[i]) {\n return {\n address,\n addressIndex: i,\n lookupTableAddress: lookupTableAddress as Address,\n role,\n };\n }\n }\n }\n}\n\ntype TransactionMessageNotLegacy = Exclude<TransactionMessage, { version: 'legacy' }>;\n\n// Each account can be IAccountLookupMeta | IAccountMeta\ntype WidenInstructionAccounts<TInstruction extends IInstruction> =\n TInstruction extends IInstruction<infer TProgramAddress, infer TAccounts>\n ? IInstruction<\n TProgramAddress,\n {\n [K in keyof TAccounts]: TAccounts[K] extends IAccountMeta<infer TAddress>\n ? IAccountLookupMeta<TAddress> | IAccountMeta<TAddress>\n : TAccounts[K];\n }\n >\n : TInstruction;\n\ntype ExtractAdditionalProps<T, U> = Omit<T, keyof U>;\n\ntype WidenTransactionMessageInstructions<TTransactionMessage extends TransactionMessage> =\n TTransactionMessage extends BaseTransactionMessage<infer TVersion, infer TInstruction>\n ? BaseTransactionMessage<TVersion, WidenInstructionAccounts<TInstruction>> &\n ExtractAdditionalProps<\n TTransactionMessage,\n BaseTransactionMessage<TVersion, WidenInstructionAccounts<TInstruction>>\n >\n : TTransactionMessage;\n\nexport function compressTransactionMessageUsingAddressLookupTables<\n TTransactionMessage extends TransactionMessageNotLegacy = TransactionMessageNotLegacy,\n>(\n transactionMessage: TTransactionMessage,\n addressesByLookupTableAddress: AddressesByLookupTableAddress,\n): TTransactionMessage | WidenTransactionMessageInstructions<TTransactionMessage> {\n const lookupTableAddresses = new Set(Object.values(addressesByLookupTableAddress).flatMap(a => a));\n\n const newInstructions: IInstruction[] = [];\n let updatedAnyInstructions = false;\n for (const instruction of transactionMessage.instructions) {\n if (!instruction.accounts) {\n newInstructions.push(instruction);\n continue;\n }\n\n const newAccounts: Mutable<NonNullable<IInstruction['accounts']>> = [];\n let updatedAnyAccounts = false;\n for (const account of instruction.accounts) {\n // If the address is already a lookup, is not in any lookup tables, or is a signer role, return as-is\n if (\n 'lookupTableAddress' in account ||\n !lookupTableAddresses.has(account.address) ||\n isSignerRole(account.role)\n ) {\n newAccounts.push(account);\n continue;\n }\n\n // We already checked it's in one of the lookup tables\n const lookupMetaAccount = findAddressInLookupTables(\n account.address,\n account.role,\n addressesByLookupTableAddress,\n )!;\n newAccounts.push(Object.freeze(lookupMetaAccount));\n updatedAnyAccounts = true;\n updatedAnyInstructions = true;\n }\n\n newInstructions.push(\n Object.freeze(updatedAnyAccounts ? { ...instruction, accounts: newAccounts } : instruction),\n );\n }\n\n return Object.freeze(\n updatedAnyInstructions ? { ...transactionMessage, instructions: newInstructions } : transactionMessage,\n );\n}\n","import { TransactionMessage, TransactionVersion } from './transaction-message';\n\ntype TransactionConfig<TVersion extends TransactionVersion> = Readonly<{\n version: TVersion;\n}>;\n\nexport function createTransactionMessage<TVersion extends TransactionVersion>(\n config: TransactionConfig<TVersion>,\n): Extract<TransactionMessage, { version: TVersion }>;\nexport function createTransactionMessage<TVersion extends TransactionVersion>({\n version,\n}: TransactionConfig<TVersion>): TransactionMessage {\n return Object.freeze({\n instructions: Object.freeze([]),\n version,\n }) as TransactionMessage;\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME, SolanaError } from '@solana/errors';\nimport {\n AccountRole,\n IInstruction,\n IInstructionWithAccounts,\n IInstructionWithData,\n isSignerRole,\n ReadonlyAccount,\n ReadonlySignerAccount,\n WritableAccount,\n WritableSignerAccount,\n} from '@solana/instructions';\n\nimport { BaseTransactionMessage } from './transaction-message';\n\ntype AdvanceNonceAccountInstruction<\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n> = IInstruction<'11111111111111111111111111111111'> &\n IInstructionWithAccounts<\n readonly [\n WritableAccount<TNonceAccountAddress>,\n ReadonlyAccount<'SysvarRecentB1ockHashes11111111111111111111'>,\n ReadonlySignerAccount<TNonceAuthorityAddress> | WritableSignerAccount<TNonceAuthorityAddress>,\n ]\n > &\n IInstructionWithData<AdvanceNonceAccountInstructionData>;\ntype AdvanceNonceAccountInstructionData = Uint8Array & {\n readonly __brand: unique symbol;\n};\ntype DurableNonceConfig<\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n TNonceValue extends string = string,\n> = Readonly<{\n readonly nonce: Nonce<TNonceValue>;\n readonly nonceAccountAddress: Address<TNonceAccountAddress>;\n readonly nonceAuthorityAddress: Address<TNonceAuthorityAddress>;\n}>;\nexport type Nonce<TNonceValue extends string = string> = TNonceValue & { readonly __brand: unique symbol };\ntype NonceLifetimeConstraint<TNonceValue extends string = string> = Readonly<{\n nonce: Nonce<TNonceValue>;\n}>;\n\nconst RECENT_BLOCKHASHES_SYSVAR_ADDRESS =\n 'SysvarRecentB1ockHashes11111111111111111111' as Address<'SysvarRecentB1ockHashes11111111111111111111'>;\nconst SYSTEM_PROGRAM_ADDRESS = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n\nexport interface TransactionMessageWithDurableNonceLifetime<\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n TNonceValue extends string = string,\n> {\n readonly instructions: readonly [\n // The first instruction *must* be the system program's `AdvanceNonceAccount` instruction.\n AdvanceNonceAccountInstruction<TNonceAccountAddress, TNonceAuthorityAddress>,\n ...IInstruction[],\n ];\n readonly lifetimeConstraint: NonceLifetimeConstraint<TNonceValue>;\n}\n\nexport function assertIsDurableNonceTransactionMessage(\n transaction: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime),\n): asserts transaction is BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime {\n if (!isDurableNonceTransaction(transaction)) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME);\n }\n}\n\nfunction createAdvanceNonceAccountInstruction<\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n>(\n nonceAccountAddress: Address<TNonceAccountAddress>,\n nonceAuthorityAddress: Address<TNonceAuthorityAddress>,\n): AdvanceNonceAccountInstruction<TNonceAccountAddress, TNonceAuthorityAddress> {\n return {\n accounts: [\n { address: nonceAccountAddress, role: AccountRole.WRITABLE },\n {\n address: RECENT_BLOCKHASHES_SYSVAR_ADDRESS,\n role: AccountRole.READONLY,\n },\n { address: nonceAuthorityAddress, role: AccountRole.READONLY_SIGNER },\n ],\n data: new Uint8Array([4, 0, 0, 0]) as AdvanceNonceAccountInstructionData,\n programAddress: SYSTEM_PROGRAM_ADDRESS,\n };\n}\n\nexport function isAdvanceNonceAccountInstruction(\n instruction: IInstruction,\n): instruction is AdvanceNonceAccountInstruction {\n return (\n instruction.programAddress === SYSTEM_PROGRAM_ADDRESS &&\n // Test for `AdvanceNonceAccount` instruction data\n instruction.data != null &&\n isAdvanceNonceAccountInstructionData(instruction.data) &&\n // Test for exactly 3 accounts\n instruction.accounts?.length === 3 &&\n // First account is nonce account address\n instruction.accounts[0].address != null &&\n instruction.accounts[0].role === AccountRole.WRITABLE &&\n // Second account is recent blockhashes sysvar\n instruction.accounts[1].address === RECENT_BLOCKHASHES_SYSVAR_ADDRESS &&\n instruction.accounts[1].role === AccountRole.READONLY &&\n // Third account is nonce authority account\n instruction.accounts[2].address != null &&\n isSignerRole(instruction.accounts[2].role)\n );\n}\n\nfunction isAdvanceNonceAccountInstructionData(data: Uint8Array): data is AdvanceNonceAccountInstructionData {\n // AdvanceNonceAccount is the fifth instruction in the System Program (index 4)\n return data.byteLength === 4 && data[0] === 4 && data[1] === 0 && data[2] === 0 && data[3] === 0;\n}\n\nexport function isDurableNonceTransaction(\n transaction: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime),\n): transaction is BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime {\n return (\n 'lifetimeConstraint' in transaction &&\n typeof transaction.lifetimeConstraint.nonce === 'string' &&\n transaction.instructions[0] != null &&\n isAdvanceNonceAccountInstruction(transaction.instructions[0])\n );\n}\n\nfunction isAdvanceNonceAccountInstructionForNonce<\n TNonceAccountAddress extends Address = Address,\n TNonceAuthorityAddress extends Address = Address,\n>(\n instruction: AdvanceNonceAccountInstruction,\n nonceAccountAddress: TNonceAccountAddress,\n nonceAuthorityAddress: TNonceAuthorityAddress,\n): instruction is AdvanceNonceAccountInstruction<TNonceAccountAddress, TNonceAuthorityAddress> {\n return (\n instruction.accounts[0].address === nonceAccountAddress &&\n instruction.accounts[2].address === nonceAuthorityAddress\n );\n}\n\nexport function setTransactionMessageLifetimeUsingDurableNonce<\n TTransaction extends BaseTransactionMessage,\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n TNonceValue extends string = string,\n>(\n {\n nonce,\n nonceAccountAddress,\n nonceAuthorityAddress,\n }: DurableNonceConfig<TNonceAccountAddress, TNonceAuthorityAddress, TNonceValue>,\n transaction: TTransaction | (TransactionMessageWithDurableNonceLifetime & TTransaction),\n): TransactionMessageWithDurableNonceLifetime<TNonceAccountAddress, TNonceAuthorityAddress, TNonceValue> &\n TTransaction {\n let newInstructions: [\n AdvanceNonceAccountInstruction<TNonceAccountAddress, TNonceAuthorityAddress>,\n ...IInstruction[],\n ];\n\n const firstInstruction = transaction.instructions[0];\n if (firstInstruction && isAdvanceNonceAccountInstruction(firstInstruction)) {\n if (isAdvanceNonceAccountInstructionForNonce(firstInstruction, nonceAccountAddress, nonceAuthorityAddress)) {\n if (isDurableNonceTransaction(transaction) && transaction.lifetimeConstraint.nonce === nonce) {\n return transaction as TransactionMessageWithDurableNonceLifetime<\n TNonceAccountAddress,\n TNonceAuthorityAddress,\n TNonceValue\n > &\n TTransaction;\n } else {\n // we already have the right first instruction, leave it as-is\n newInstructions = [firstInstruction, ...transaction.instructions.slice(1)];\n }\n } else {\n // we have a different advance nonce instruction as the first instruction, replace it\n newInstructions = [\n Object.freeze(createAdvanceNonceAccountInstruction(nonceAccountAddress, nonceAuthorityAddress)),\n ...transaction.instructions.slice(1),\n ];\n }\n } else {\n // we don't have an existing advance nonce instruction as the first instruction, prepend one\n newInstructions = [\n Object.freeze(createAdvanceNonceAccountInstruction(nonceAccountAddress, nonceAuthorityAddress)),\n ...transaction.instructions,\n ];\n }\n\n return Object.freeze({\n ...transaction,\n instructions: Object.freeze(newInstructions),\n lifetimeConstraint: Object.freeze({\n nonce,\n }),\n }) as TransactionMessageWithDurableNonceLifetime<TNonceAccountAddress, TNonceAuthorityAddress, TNonceValue> &\n TTransaction;\n}\n","import { Address } from '@solana/addresses';\n\nimport { BaseTransactionMessage } from './transaction-message';\n\nexport interface ITransactionMessageWithFeePayer<TAddress extends string = string> {\n readonly feePayer: Readonly<{ address: Address<TAddress> }>;\n}\n\nexport function setTransactionMessageFeePayer<\n TFeePayerAddress extends string,\n TTransactionMessage extends BaseTransactionMessage & Partial<ITransactionMessageWithFeePayer>,\n>(\n feePayer: Address<TFeePayerAddress>,\n transactionMessage: TTransactionMessage,\n): ITransactionMessageWithFeePayer<TFeePayerAddress> & Omit<TTransactionMessage, 'feePayer'> {\n if (\n 'feePayer' in transactionMessage &&\n feePayer === transactionMessage.feePayer?.address &&\n isAddressOnlyFeePayer(transactionMessage.feePayer)\n ) {\n return transactionMessage as unknown as ITransactionMessageWithFeePayer<TFeePayerAddress> &\n Omit<TTransactionMessage, 'feePayer'>;\n }\n const out = {\n ...transactionMessage,\n feePayer: Object.freeze({ address: feePayer }),\n };\n Object.freeze(out);\n return out;\n}\n\nfunction isAddressOnlyFeePayer(\n feePayer: Partial<ITransactionMessageWithFeePayer>['feePayer'],\n): feePayer is { address: Address } {\n return (\n !!feePayer &&\n 'address' in feePayer &&\n typeof feePayer.address === 'string' &&\n Object.keys(feePayer).length === 1\n );\n}\n","import { BaseTransactionMessage } from './transaction-message';\n\nexport function appendTransactionMessageInstruction<TTransaction extends BaseTransactionMessage>(\n instruction: TTransaction['instructions'][number],\n transaction: TTransaction,\n): TTransaction {\n return appendTransactionMessageInstructions([instruction], transaction);\n}\n\nexport function appendTransactionMessageInstructions<TTransaction extends BaseTransactionMessage>(\n instructions: ReadonlyArray<TTransaction['instructions'][number]>,\n transaction: TTransaction,\n): TTransaction {\n return Object.freeze({\n ...transaction,\n instructions: Object.freeze([...transaction.instructions, ...instructions]),\n });\n}\n\nexport function prependTransactionMessageInstruction<TTransaction extends BaseTransactionMessage>(\n instruction: TTransaction['instructions'][number],\n transaction: TTransaction,\n): TTransaction {\n return prependTransactionMessageInstructions([instruction], transaction);\n}\n\nexport function prependTransactionMessageInstructions<TTransaction extends BaseTransactionMessage>(\n instructions: ReadonlyArray<TTransaction['instructions'][number]>,\n transaction: TTransaction,\n): TTransaction {\n return Object.freeze({\n ...transaction,\n instructions: Object.freeze([...instructions, ...transaction.instructions]),\n });\n}\n","import { Address, assertIsAddress } from '@solana/addresses';\nimport {\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND,\n SolanaError,\n} from '@solana/errors';\nimport { pipe } from '@solana/functional';\nimport { AccountRole, IAccountLookupMeta, IAccountMeta, IInstruction } from '@solana/instructions';\nimport type { Blockhash } from '@solana/rpc-types';\n\nimport { AddressesByLookupTableAddress } from './addresses-by-lookup-table-address';\nimport { setTransactionMessageLifetimeUsingBlockhash } from './blockhash';\nimport { CompilableTransactionMessage } from './compilable-transaction-message';\nimport { CompiledTransactionMessage } from './compile';\nimport type { getCompiledAddressTableLookups } from './compile/address-table-lookups';\nimport { createTransactionMessage } from './create-transaction-message';\nimport {\n isAdvanceNonceAccountInstruction,\n Nonce,\n setTransactionMessageLifetimeUsingDurableNonce,\n} from './durable-nonce';\nimport { setTransactionMessageFeePayer } from './fee-payer';\nimport { appendTransactionMessageInstruction } from './instructions';\nimport { TransactionVersion } from './transaction-message';\n\nfunction getAccountMetas(message: CompiledTransactionMessage): IAccountMeta[] {\n const { header } = message;\n const numWritableSignerAccounts = header.numSignerAccounts - header.numReadonlySignerAccounts;\n const numWritableNonSignerAccounts =\n message.staticAccounts.length - header.numSignerAccounts - header.numReadonlyNonSignerAccounts;\n\n const accountMetas: IAccountMeta[] = [];\n\n let accountIndex = 0;\n for (let i = 0; i < numWritableSignerAccounts; i++) {\n accountMetas.push({\n address: message.staticAccounts[accountIndex],\n role: AccountRole.WRITABLE_SIGNER,\n });\n accountIndex++;\n }\n\n for (let i = 0; i < header.numReadonlySignerAccounts; i++) {\n accountMetas.push({\n address: message.staticAccounts[accountIndex],\n role: AccountRole.READONLY_SIGNER,\n });\n accountIndex++;\n }\n\n for (let i = 0; i < numWritableNonSignerAccounts; i++) {\n accountMetas.push({\n address: message.staticAccounts[accountIndex],\n role: AccountRole.WRITABLE,\n });\n accountIndex++;\n }\n\n for (let i = 0; i < header.numReadonlyNonSignerAccounts; i++) {\n accountMetas.push({\n address: message.staticAccounts[accountIndex],\n role: AccountRole.READONLY,\n });\n accountIndex++;\n }\n\n return accountMetas;\n}\n\nfunction getAddressLookupMetas(\n compiledAddressTableLookups: ReturnType<typeof getCompiledAddressTableLookups>,\n addressesByLookupTableAddress: AddressesByLookupTableAddress,\n): IAccountLookupMeta[] {\n // check that all message lookups are known\n const compiledAddressTableLookupAddresses = compiledAddressTableLookups.map(l => l.lookupTableAddress);\n const missing = compiledAddressTableLookupAddresses.filter(a => addressesByLookupTableAddress[a] === undefined);\n if (missing.length > 0) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING, {\n lookupTableAddresses: missing,\n });\n }\n\n const readOnlyMetas: IAccountLookupMeta[] = [];\n const writableMetas: IAccountLookupMeta[] = [];\n\n // we know that for each lookup, knownLookups[lookup.lookupTableAddress] is defined\n for (const lookup of compiledAddressTableLookups) {\n const addresses = addressesByLookupTableAddress[lookup.lookupTableAddress];\n\n const highestIndex = Math.max(...lookup.readableIndices, ...lookup.writableIndices);\n if (highestIndex >= addresses.length) {\n throw new SolanaError(\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE,\n {\n highestKnownIndex: addresses.length - 1,\n highestRequestedIndex: highestIndex,\n lookupTableAddress: lookup.lookupTableAddress,\n },\n );\n }\n\n const readOnlyForLookup: IAccountLookupMeta[] = lookup.readableIndices.map(r => ({\n address: addresses[r],\n addressIndex: r,\n lookupTableAddress: lookup.lookupTableAddress,\n role: AccountRole.READONLY,\n }));\n readOnlyMetas.push(...readOnlyForLookup);\n\n const writableForLookup: IAccountLookupMeta[] = lookup.writableIndices.map(w => ({\n address: addresses[w],\n addressIndex: w,\n lookupTableAddress: lookup.lookupTableAddress,\n role: AccountRole.WRITABLE,\n }));\n writableMetas.push(...writableForLookup);\n }\n\n return [...writableMetas, ...readOnlyMetas];\n}\n\nfunction convertInstruction(\n instruction: CompiledTransactionMessage['instructions'][0],\n accountMetas: IAccountMeta[],\n): IInstruction {\n const programAddress = accountMetas[instruction.programAddressIndex]?.address;\n if (!programAddress) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND, {\n index: instruction.programAddressIndex,\n });\n }\n\n const accounts = instruction.accountIndices?.map(accountIndex => accountMetas[accountIndex]);\n const { data } = instruction;\n\n return Object.freeze({\n programAddress,\n ...(accounts && accounts.length ? { accounts: Object.freeze(accounts) } : {}),\n ...(data && data.length ? { data } : {}),\n });\n}\n\ntype LifetimeConstraint =\n | {\n blockhash: Blockhash;\n lastValidBlockHeight: bigint;\n }\n | {\n nonce: Nonce;\n nonceAccountAddress: Address;\n nonceAuthorityAddress: Address;\n };\n\nfunction getLifetimeConstraint(\n messageLifetimeToken: string,\n firstInstruction?: IInstruction,\n lastValidBlockHeight?: bigint,\n): LifetimeConstraint {\n if (!firstInstruction || !isAdvanceNonceAccountInstruction(firstInstruction)) {\n // first instruction is not advance durable nonce, so use blockhash lifetime constraint\n return {\n blockhash: messageLifetimeToken as Blockhash,\n lastValidBlockHeight: lastValidBlockHeight ?? 2n ** 64n - 1n, // U64 MAX\n };\n } else {\n // We know these accounts are defined because we checked `isAdvanceNonceAccountInstruction`\n const nonceAccountAddress = firstInstruction.accounts[0].address;\n assertIsAddress(nonceAccountAddress);\n\n const nonceAuthorityAddress = firstInstruction.accounts[2].address;\n assertIsAddress(nonceAuthorityAddress);\n\n return {\n nonce: messageLifetimeToken as Nonce,\n nonceAccountAddress,\n nonceAuthorityAddress,\n };\n }\n}\n\nexport type DecompileTransactionMessageConfig = {\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n lastValidBlockHeight?: bigint;\n};\n\nexport function decompileTransactionMessage(\n compiledTransactionMessage: CompiledTransactionMessage,\n config?: DecompileTransactionMessageConfig,\n): CompilableTransactionMessage {\n const feePayer = compiledTransactionMessage.staticAccounts[0];\n if (!feePayer) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING);\n }\n\n const accountMetas = getAccountMetas(compiledTransactionMessage);\n const accountLookupMetas =\n 'addressTableLookups' in compiledTransactionMessage &&\n compiledTransactionMessage.addressTableLookups !== undefined &&\n compiledTransactionMessage.addressTableLookups.length > 0\n ? getAddressLookupMetas(\n compiledTransactionMessage.addressTableLookups,\n config?.addressesByLookupTableAddress ?? {},\n )\n : [];\n const transactionMetas = [...accountMetas, ...accountLookupMetas];\n\n const instructions: IInstruction[] = compiledTransactionMessage.instructions.map(compiledInstruction =>\n convertInstruction(compiledInstruction, transactionMetas),\n );\n\n const firstInstruction = instructions[0];\n const lifetimeConstraint = getLifetimeConstraint(\n compiledTransactionMessage.lifetimeToken,\n firstInstruction,\n config?.lastValidBlockHeight,\n );\n\n return pipe(\n createTransactionMessage({ version: compiledTransactionMessage.version as TransactionVersion }),\n tx => setTransactionMessageFeePayer(feePayer, tx),\n tx =>\n instructions.reduce((acc, instruction) => {\n return appendTransactionMessageInstruction(instruction, acc);\n }, tx),\n tx =>\n 'blockhash' in lifetimeConstraint\n ? setTransactionMessageLifetimeUsingBlockhash(lifetimeConstraint, tx)\n : setTransactionMessageLifetimeUsingDurableNonce(lifetimeConstraint, tx),\n );\n}\n","import { fixEncoderSize, transformEncoder, VariableSizeEncoder } from '@solana/codecs-core';\nimport { getArrayEncoder, getBytesEncoder } from '@solana/codecs-data-structures';\nimport { getShortU16Encoder } from '@solana/codecs-numbers';\nimport { SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\n\nimport { SignaturesMap } from '../transaction';\n\nfunction getSignaturesToEncode(signaturesMap: SignaturesMap): SignatureBytes[] {\n const signatures = Object.values(signaturesMap);\n if (signatures.length === 0) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES);\n }\n\n return signatures.map(signature => {\n if (!signature) {\n return new Uint8Array(64).fill(0) as SignatureBytes;\n }\n return signature;\n });\n}\n\nexport function getSignaturesEncoder(): VariableSizeEncoder<SignaturesMap> {\n return transformEncoder(\n getArrayEncoder(fixEncoderSize(getBytesEncoder(), 64), { size: getShortU16Encoder() }),\n getSignaturesToEncode,\n );\n}\n","import { getAddressDecoder } from '@solana/addresses';\nimport {\n combineCodec,\n fixDecoderSize,\n padRightDecoder,\n ReadonlyUint8Array,\n transformDecoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n getArrayDecoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n} from '@solana/codecs-data-structures';\nimport { getShortU16Decoder, getU8Decoder } from '@solana/codecs-numbers';\nimport { SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getTransactionVersionDecoder } from '@solana/transaction-messages';\n\nimport { SignaturesMap, Transaction, TransactionMessageBytes } from '../transaction';\nimport { getSignaturesEncoder } from './signatures-encoder';\n\nexport function getTransactionEncoder(): VariableSizeEncoder<Transaction> {\n return getStructEncoder([\n ['signatures', getSignaturesEncoder()],\n ['messageBytes', getBytesEncoder()],\n ]);\n}\n\nexport function getTransactionDecoder(): VariableSizeDecoder<Transaction> {\n return transformDecoder(\n getStructDecoder([\n ['signatures', getArrayDecoder(fixDecoderSize(getBytesDecoder(), 64), { size: getShortU16Decoder() })],\n ['messageBytes', getBytesDecoder()],\n ]),\n decodePartiallyDecodedTransaction,\n );\n}\n\nexport function getTransactionCodec(): VariableSizeCodec<Transaction> {\n return combineCodec(getTransactionEncoder(), getTransactionDecoder());\n}\n\ntype PartiallyDecodedTransaction = {\n messageBytes: ReadonlyUint8Array;\n signatures: ReadonlyUint8Array[];\n};\n\nfunction decodePartiallyDecodedTransaction(transaction: PartiallyDecodedTransaction): Transaction {\n const { messageBytes, signatures } = transaction;\n\n /*\n Relevant message structure is at the start:\n - transaction version (0 bytes for legacy transactions, 1 byte for versioned transactions)\n - `numRequiredSignatures` (1 byte, we verify this matches the length of signatures)\n - `numReadOnlySignedAccounts` (1 byte, not used here)\n - `numReadOnlyUnsignedAccounts` (1 byte, not used here)\n - static addresses, with signers first. This is an array of addresses, prefixed with a short-u16 length\n */\n\n const signerAddressesDecoder = getTupleDecoder([\n // read transaction version\n getTransactionVersionDecoder(),\n // read first byte of header, `numSignerAccounts`\n // padRight to skip the next 2 bytes, `numReadOnlySignedAccounts` and `numReadOnlyUnsignedAccounts` which we don't need\n padRightDecoder(getU8Decoder(), 2),\n // read static addresses\n getArrayDecoder(getAddressDecoder(), { size: getShortU16Decoder() }),\n ]);\n const [_txVersion, numRequiredSignatures, staticAddresses] = signerAddressesDecoder.decode(messageBytes);\n\n const signerAddresses = staticAddresses.slice(0, numRequiredSignatures);\n\n // signer addresses and signatures must be the same length\n // we encode an all-zero signature when the signature is missing\n if (signerAddresses.length !== signatures.length) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH, {\n numRequiredSignatures,\n signaturesLength: signatures.length,\n signerAddresses,\n });\n }\n\n // combine the signer addresses + signatures into the signatures map\n const signaturesMap: SignaturesMap = {};\n signerAddresses.forEach((address, index) => {\n const signatureForAddress = signatures[index];\n if (signatureForAddress.every(b => b === 0)) {\n signaturesMap[address] = null;\n } else {\n signaturesMap[address] = signatureForAddress as SignatureBytes;\n }\n });\n\n return {\n messageBytes: messageBytes as TransactionMessageBytes,\n signatures: Object.freeze(signaturesMap),\n };\n}\n","import {\n CompilableTransactionMessage,\n compileTransactionMessage,\n getCompiledTransactionMessageEncoder,\n isTransactionMessageWithBlockhashLifetime,\n TransactionMessageWithBlockhashLifetime,\n TransactionMessageWithDurableNonceLifetime,\n} from '@solana/transaction-messages';\n\nimport {\n TransactionWithBlockhashLifetime,\n TransactionWithDurableNonceLifetime,\n TransactionWithLifetime,\n} from './lifetime';\nimport { SignaturesMap, Transaction, TransactionMessageBytes } from './transaction';\n\nexport function compileTransaction(\n transactionMessage: CompilableTransactionMessage & TransactionMessageWithBlockhashLifetime,\n): Readonly<Transaction & TransactionWithBlockhashLifetime>;\n\nexport function compileTransaction(\n transactionMessage: CompilableTransactionMessage & TransactionMessageWithDurableNonceLifetime,\n): Readonly<Transaction & TransactionWithDurableNonceLifetime>;\n\nexport function compileTransaction(\n transactionMessage: CompilableTransactionMessage,\n): Readonly<Transaction & TransactionWithLifetime>;\n\nexport function compileTransaction(\n transactionMessage: CompilableTransactionMessage,\n): Readonly<Transaction & TransactionWithLifetime> {\n const compiledMessage = compileTransactionMessage(transactionMessage);\n const messageBytes = getCompiledTransactionMessageEncoder().encode(compiledMessage) as TransactionMessageBytes;\n\n const transactionSigners = compiledMessage.staticAccounts.slice(0, compiledMessage.header.numSignerAccounts);\n const signatures: SignaturesMap = {};\n for (const signerAddress of transactionSigners) {\n signatures[signerAddress] = null;\n }\n\n let lifetimeConstraint: TransactionWithLifetime['lifetimeConstraint'];\n if (isTransactionMessageWithBlockhashLifetime(transactionMessage)) {\n lifetimeConstraint = {\n blockhash: transactionMessage.lifetimeConstraint.blockhash,\n lastValidBlockHeight: transactionMessage.lifetimeConstraint.lastValidBlockHeight,\n };\n } else {\n lifetimeConstraint = {\n nonce: transactionMessage.lifetimeConstraint.nonce,\n nonceAccountAddress: transactionMessage.instructions[0].accounts[0].address,\n };\n }\n\n const transaction: Transaction & TransactionWithLifetime = {\n lifetimeConstraint,\n messageBytes: messageBytes,\n signatures: Object.freeze(signatures),\n };\n\n return Object.freeze(transaction);\n}\n","import { Address, getAddressFromPublicKey } from '@solana/addresses';\nimport { Decoder } from '@solana/codecs-core';\nimport { getBase58Decoder } from '@solana/codecs-strings';\nimport {\n SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION,\n SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING,\n SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING,\n SolanaError,\n} from '@solana/errors';\nimport { Signature, SignatureBytes, signBytes } from '@solana/keys';\n\nimport { Transaction } from './transaction';\n\nexport interface FullySignedTransaction extends Transaction {\n readonly __brand: unique symbol;\n}\n\nlet base58Decoder: Decoder<string> | undefined;\n\nexport function getSignatureFromTransaction(transaction: Transaction): Signature {\n if (!base58Decoder) base58Decoder = getBase58Decoder();\n\n // We have ordered signatures from the compiled message accounts\n // first signature is the fee payer\n const signatureBytes = Object.values(transaction.signatures)[0];\n if (!signatureBytes) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING);\n }\n const transactionSignature = base58Decoder.decode(signatureBytes);\n return transactionSignature as Signature;\n}\n\nfunction uint8ArraysEqual(arr1: Uint8Array, arr2: Uint8Array) {\n return arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]);\n}\n\nexport async function partiallySignTransaction<T extends Transaction>(\n keyPairs: CryptoKeyPair[],\n transaction: T,\n): Promise<T> {\n let newSignatures: Record<Address, SignatureBytes> | undefined;\n let unexpectedSigners: Set<Address> | undefined;\n\n await Promise.all(\n keyPairs.map(async keyPair => {\n const address = await getAddressFromPublicKey(keyPair.publicKey);\n const existingSignature = transaction.signatures[address];\n\n // Check if the address is expected to sign the transaction\n if (existingSignature === undefined) {\n // address is not an expected signer for this transaction\n unexpectedSigners ||= new Set();\n unexpectedSigners.add(address);\n return;\n }\n\n // Return if there are any unexpected signers already since we won't be using signatures\n if (unexpectedSigners) {\n return;\n }\n\n const newSignature = await signBytes(keyPair.privateKey, transaction.messageBytes);\n\n if (existingSignature !== null && uint8ArraysEqual(newSignature, existingSignature)) {\n // already have the same signature set\n return;\n }\n\n newSignatures ||= {};\n newSignatures[address] = newSignature;\n }),\n );\n\n if (unexpectedSigners && unexpectedSigners.size > 0) {\n const expectedSigners = Object.keys(transaction.signatures);\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION, {\n expectedAddresses: expectedSigners,\n unexpectedAddresses: [...unexpectedSigners],\n });\n }\n\n if (!newSignatures) {\n return transaction;\n }\n\n return Object.freeze({\n ...transaction,\n signatures: Object.freeze({\n ...transaction.signatures,\n ...newSignatures,\n }),\n });\n}\n\nexport async function signTransaction<T extends Transaction>(\n keyPairs: CryptoKeyPair[],\n transaction: T,\n): Promise<FullySignedTransaction & T> {\n const out = await partiallySignTransaction(keyPairs, transaction);\n assertTransactionIsFullySigned(out);\n Object.freeze(out);\n return out;\n}\n\nexport function assertTransactionIsFullySigned(\n transaction: Transaction,\n): asserts transaction is FullySignedTransaction {\n const missingSigs: Address[] = [];\n Object.entries(transaction.signatures).forEach(([address, signatureBytes]) => {\n if (!signatureBytes) {\n missingSigs.push(address as Address);\n }\n });\n\n if (missingSigs.length > 0) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING, {\n addresses: missingSigs,\n });\n }\n}\n","import { getBase64Decoder } from '@solana/codecs-strings';\n\nimport { getTransactionEncoder } from './codecs';\nimport { Transaction } from './transaction';\n\nexport type Base64EncodedWireTransaction = string & {\n readonly __brand: unique symbol;\n};\n\nexport function getBase64EncodedWireTransaction(transaction: Transaction): Base64EncodedWireTransaction {\n const wireTransactionBytes = getTransactionEncoder().encode(transaction);\n return getBase64Decoder().decode(wireTransactionBytes) as Base64EncodedWireTransaction;\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS, SolanaError } from '@solana/errors';\n\nimport { MessageSigner } from './message-signer';\nimport { TransactionSigner } from './transaction-signer';\n\n/** Removes all duplicated signers from a provided array by comparing their addresses. */\nexport function deduplicateSigners<TSigner extends MessageSigner | TransactionSigner>(\n signers: readonly TSigner[],\n): readonly TSigner[] {\n const deduplicated: Record<Address, TSigner> = {};\n signers.forEach(signer => {\n if (!deduplicated[signer.address]) {\n deduplicated[signer.address] = signer;\n } else if (deduplicated[signer.address] !== signer) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS, {\n address: signer.address,\n });\n }\n });\n return Object.values(deduplicated);\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER, SolanaError } from '@solana/errors';\nimport { Transaction } from '@solana/transactions';\n\nimport { BaseTransactionSignerConfig } from './types';\n\nexport type TransactionModifyingSignerConfig = BaseTransactionSignerConfig;\n\n/** Defines a signer capable of signing transactions. */\nexport type TransactionModifyingSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n modifyAndSignTransactions<T extends Transaction>(\n transactions: readonly T[],\n config?: TransactionModifyingSignerConfig,\n ): Promise<readonly T[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link TransactionModifyingSigner} interface. */\nexport function isTransactionModifyingSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is TransactionModifyingSigner<TAddress> {\n return 'modifyAndSignTransactions' in value && typeof value.modifyAndSignTransactions === 'function';\n}\n\n/** Asserts that the provided value implements the {@link TransactionModifyingSigner} interface. */\nexport function assertIsTransactionModifyingSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is TransactionModifyingSigner<TAddress> {\n if (!isTransactionModifyingSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER, SolanaError } from '@solana/errors';\nimport { Transaction } from '@solana/transactions';\n\nimport { BaseTransactionSignerConfig, SignatureDictionary } from './types';\n\nexport type TransactionPartialSignerConfig = BaseTransactionSignerConfig;\n\n/** Defines a signer capable of signing transactions. */\nexport type TransactionPartialSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n signTransactions(\n transactions: readonly Transaction[],\n config?: TransactionPartialSignerConfig,\n ): Promise<readonly SignatureDictionary[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link TransactionPartialSigner} interface. */\nexport function isTransactionPartialSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is TransactionPartialSigner<TAddress> {\n return 'signTransactions' in value && typeof value.signTransactions === 'function';\n}\n\n/** Asserts that the provided value implements the {@link TransactionPartialSigner} interface. */\nexport function assertIsTransactionPartialSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is TransactionPartialSigner<TAddress> {\n if (!isTransactionPartialSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { Transaction } from '@solana/transactions';\n\nimport { BaseTransactionSignerConfig } from './types';\n\nexport type TransactionSendingSignerConfig = BaseTransactionSignerConfig;\n\n/** Defines a signer capable of signing and sending transactions simultaneously. */\nexport type TransactionSendingSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n signAndSendTransactions(\n transactions: readonly Transaction[],\n config?: TransactionSendingSignerConfig,\n ): Promise<readonly SignatureBytes[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link TransactionSendingSigner} interface. */\nexport function isTransactionSendingSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is TransactionSendingSigner<TAddress> {\n return 'signAndSendTransactions' in value && typeof value.signAndSendTransactions === 'function';\n}\n\n/** Asserts that the provided value implements the {@link TransactionSendingSigner} interface. */\nexport function assertIsTransactionSendingSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is TransactionSendingSigner<TAddress> {\n if (!isTransactionSendingSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER, SolanaError } from '@solana/errors';\n\nimport { isTransactionModifyingSigner, TransactionModifyingSigner } from './transaction-modifying-signer';\nimport { isTransactionPartialSigner, TransactionPartialSigner } from './transaction-partial-signer';\nimport { isTransactionSendingSigner, TransactionSendingSigner } from './transaction-sending-signer';\n\n/** Defines a signer capable of signing transactions. */\nexport type TransactionSigner<TAddress extends string = string> =\n | TransactionModifyingSigner<TAddress>\n | TransactionPartialSigner<TAddress>\n | TransactionSendingSigner<TAddress>;\n\n/** Checks whether the provided value implements the {@link TransactionSigner} interface. */\nexport function isTransactionSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is TransactionSigner<TAddress> {\n return (\n isTransactionPartialSigner(value) || isTransactionModifyingSigner(value) || isTransactionSendingSigner(value)\n );\n}\n\n/** Asserts that the provided value implements the {@link TransactionSigner} interface. */\nexport function assertIsTransactionSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is TransactionSigner<TAddress> {\n if (!isTransactionSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { AccountRole, IAccountLookupMeta, IAccountMeta, IInstruction } from '@solana/instructions';\nimport {\n BaseTransactionMessage,\n ITransactionMessageWithFeePayer,\n TransactionVersion,\n} from '@solana/transaction-messages';\n\nimport { deduplicateSigners } from './deduplicate-signers';\nimport { ITransactionMessageWithFeePayerSigner } from './fee-payer-signer';\nimport { isTransactionSigner, TransactionSigner } from './transaction-signer';\n\n/** An extension of the IAccountMeta type that keeps track of its transaction signer. */\nexport interface IAccountSignerMeta<\n TAddress extends string = string,\n TSigner extends TransactionSigner<TAddress> = TransactionSigner<TAddress>,\n> extends IAccountMeta<TAddress> {\n readonly role: AccountRole.READONLY_SIGNER | AccountRole.WRITABLE_SIGNER;\n readonly signer: TSigner;\n}\n\ntype IAccountMetaWithSigner<TSigner extends TransactionSigner = TransactionSigner> =\n | IAccountLookupMeta\n | IAccountMeta\n | IAccountSignerMeta<string, TSigner>;\n\n/** A variation of the instruction type that allows IAccountSignerMeta in its account metas. */\nexport type IInstructionWithSigners<\n TSigner extends TransactionSigner = TransactionSigner,\n TAccounts extends readonly IAccountMetaWithSigner<TSigner>[] = readonly IAccountMetaWithSigner<TSigner>[],\n> = Pick<IInstruction<string, TAccounts>, 'accounts'>;\n\n/** A variation of the transaction message type that allows IAccountSignerMeta in its account metas. */\nexport type ITransactionMessageWithSigners<\n TAddress extends string = string,\n TSigner extends TransactionSigner<TAddress> = TransactionSigner<TAddress>,\n TAccounts extends readonly IAccountMetaWithSigner<TSigner>[] = readonly IAccountMetaWithSigner<TSigner>[],\n> = Partial<ITransactionMessageWithFeePayer<TAddress> | ITransactionMessageWithFeePayerSigner<TAddress, TSigner>> &\n Pick<\n BaseTransactionMessage<TransactionVersion, IInstruction & IInstructionWithSigners<TSigner, TAccounts>>,\n 'instructions'\n >;\n\n/** Extract all signers from an instruction that may contain IAccountSignerMeta accounts. */\nexport function getSignersFromInstruction<TSigner extends TransactionSigner = TransactionSigner>(\n instruction: IInstructionWithSigners<TSigner>,\n): readonly TSigner[] {\n return deduplicateSigners(\n (instruction.accounts ?? []).flatMap(account => ('signer' in account ? account.signer : [])),\n );\n}\n\n/** Extract all signers from a transaction message that may contain IAccountSignerMeta accounts. */\nexport function getSignersFromTransactionMessage<\n TAddress extends string = string,\n TSigner extends TransactionSigner<TAddress> = TransactionSigner<TAddress>,\n TTransactionMessage extends ITransactionMessageWithSigners<TAddress, TSigner> = ITransactionMessageWithSigners<\n TAddress,\n TSigner\n >,\n>(transaction: TTransactionMessage): readonly TSigner[] {\n return deduplicateSigners([\n ...(transaction.feePayer && isTransactionSigner(transaction.feePayer) ? [transaction.feePayer as TSigner] : []),\n ...transaction.instructions.flatMap(getSignersFromInstruction),\n ]);\n}\n","import { IInstruction, isSignerRole } from '@solana/instructions';\nimport { BaseTransactionMessage } from '@solana/transaction-messages';\n\nimport { IAccountSignerMeta, IInstructionWithSigners, ITransactionMessageWithSigners } from './account-signer-meta';\nimport { deduplicateSigners } from './deduplicate-signers';\nimport { TransactionSigner } from './transaction-signer';\n\n/** Attaches the provided signers to the account metas of an instruction when applicable. */\nexport function addSignersToInstruction<TInstruction extends IInstruction>(\n signers: TransactionSigner[],\n instruction: TInstruction | (IInstructionWithSigners & TInstruction),\n): IInstructionWithSigners & TInstruction {\n if (!instruction.accounts || instruction.accounts.length === 0) {\n return instruction as IInstructionWithSigners & TInstruction;\n }\n\n const signerByAddress = new Map(deduplicateSigners(signers).map(signer => [signer.address, signer]));\n return Object.freeze({\n ...instruction,\n accounts: instruction.accounts.map(account => {\n const signer = signerByAddress.get(account.address);\n if (!isSignerRole(account.role) || 'signer' in account || !signer) {\n return account;\n }\n return Object.freeze({ ...account, signer } as IAccountSignerMeta);\n }),\n });\n}\n\n/** Attaches the provided signers to the account metas of a transaction message when applicable. */\nexport function addSignersToTransactionMessage<TTransactionMessage extends BaseTransactionMessage>(\n signers: TransactionSigner[],\n transactionMessage: TTransactionMessage | (ITransactionMessageWithSigners & TTransactionMessage),\n): ITransactionMessageWithSigners & TTransactionMessage {\n if (transactionMessage.instructions.length === 0) {\n return transactionMessage as ITransactionMessageWithSigners & TTransactionMessage;\n }\n\n return Object.freeze({\n ...transactionMessage,\n instructions: transactionMessage.instructions.map(instruction => addSignersToInstruction(signers, instruction)),\n });\n}\n","import { BaseTransactionMessage, ITransactionMessageWithFeePayer } from '@solana/transaction-messages';\n\nimport { TransactionSigner } from './transaction-signer';\n\nexport interface ITransactionMessageWithFeePayerSigner<\n TAddress extends string = string,\n TSigner extends TransactionSigner<TAddress> = TransactionSigner<TAddress>,\n> {\n readonly feePayer: TSigner;\n}\n\nexport function setTransactionMessageFeePayerSigner<\n TFeePayerAddress extends string,\n TTransactionMessage extends BaseTransactionMessage &\n Partial<ITransactionMessageWithFeePayer | ITransactionMessageWithFeePayerSigner>,\n>(\n feePayer: TransactionSigner<TFeePayerAddress>,\n transactionMessage: TTransactionMessage,\n): ITransactionMessageWithFeePayerSigner<TFeePayerAddress> & Omit<TTransactionMessage, 'feePayer'> {\n Object.freeze(feePayer);\n const out = { ...transactionMessage, feePayer };\n Object.freeze(out);\n return out;\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER, SolanaError } from '@solana/errors';\n\nimport { SignableMessage } from './signable-message';\nimport { BaseSignerConfig, SignatureDictionary } from './types';\n\nexport type MessagePartialSignerConfig = BaseSignerConfig;\n\n/** Defines a signer capable of signing messages. */\nexport type MessagePartialSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n signMessages(\n messages: readonly SignableMessage[],\n config?: MessagePartialSignerConfig,\n ): Promise<readonly SignatureDictionary[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link MessagePartialSigner} interface. */\nexport function isMessagePartialSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is MessagePartialSigner<TAddress> {\n return 'signMessages' in value && typeof value.signMessages === 'function';\n}\n\n/** Asserts that the provided value implements the {@link MessagePartialSigner} interface. */\nexport function assertIsMessagePartialSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is MessagePartialSigner<TAddress> {\n if (!isMessagePartialSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { Address, getAddressFromPublicKey } from '@solana/addresses';\nimport { ReadonlyUint8Array } from '@solana/codecs-core';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER, SolanaError } from '@solana/errors';\nimport { createKeyPairFromBytes, createKeyPairFromPrivateKeyBytes, generateKeyPair, signBytes } from '@solana/keys';\nimport { partiallySignTransaction } from '@solana/transactions';\n\nimport { isMessagePartialSigner, MessagePartialSigner } from './message-partial-signer';\nimport { isTransactionPartialSigner, TransactionPartialSigner } from './transaction-partial-signer';\n\n/** Defines a signer capable of signing messages and transactions using a CryptoKeyPair. */\nexport type KeyPairSigner<TAddress extends string = string> = MessagePartialSigner<TAddress> &\n TransactionPartialSigner<TAddress> & { keyPair: CryptoKeyPair };\n\n/** Checks whether the provided value implements the {@link KeyPairSigner} interface. */\nexport function isKeyPairSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is KeyPairSigner<TAddress> {\n return (\n 'keyPair' in value &&\n typeof value.keyPair === 'object' &&\n isMessagePartialSigner(value) &&\n isTransactionPartialSigner(value)\n );\n}\n\n/** Asserts that the provided value implements the {@link KeyPairSigner} interface. */\nexport function assertIsKeyPairSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is KeyPairSigner<TAddress> {\n if (!isKeyPairSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER, {\n address: value.address,\n });\n }\n}\n\n/** Creates a KeyPairSigner from the provided Crypto KeyPair. */\nexport async function createSignerFromKeyPair(keyPair: CryptoKeyPair): Promise<KeyPairSigner> {\n const address = await getAddressFromPublicKey(keyPair.publicKey);\n const out: KeyPairSigner = {\n address,\n keyPair,\n signMessages: messages =>\n Promise.all(\n messages.map(async message =>\n Object.freeze({ [address]: await signBytes(keyPair.privateKey, message.content) }),\n ),\n ),\n signTransactions: transactions =>\n Promise.all(\n transactions.map(async transaction => {\n const signedTransaction = await partiallySignTransaction([keyPair], transaction);\n // we know that the address has signed `signedTransaction` because it comes from the keypair\n return Object.freeze({ [address]: signedTransaction.signatures[address]! });\n }),\n ),\n };\n\n return Object.freeze(out);\n}\n\n/** Securely generates a signer capable of signing messages and transactions using a Crypto KeyPair. */\nexport async function generateKeyPairSigner(): Promise<KeyPairSigner> {\n return await createSignerFromKeyPair(await generateKeyPair());\n}\n\n/** Creates a signer capable of signing messages and transactions using the 64 bytes of a KeyPair. */\nexport async function createKeyPairSignerFromBytes(\n bytes: ReadonlyUint8Array,\n extractable?: boolean,\n): Promise<KeyPairSigner> {\n return await createSignerFromKeyPair(await createKeyPairFromBytes(bytes, extractable));\n}\n\n/** Creates a signer capable of signing messages and transactions using the 32 bytes of a private key. */\nexport async function createKeyPairSignerFromPrivateKeyBytes(\n bytes: ReadonlyUint8Array,\n extractable?: boolean,\n): Promise<KeyPairSigner> {\n return await createSignerFromKeyPair(await createKeyPairFromPrivateKeyBytes(bytes, extractable));\n}\n","import { Address, isAddress } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER, SolanaError } from '@solana/errors';\n\nimport { SignableMessage } from './signable-message';\nimport { BaseSignerConfig } from './types';\n\nexport type MessageModifyingSignerConfig = BaseSignerConfig;\n\n/** Defines a signer capable of signing messages. */\nexport type MessageModifyingSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n modifyAndSignMessages(\n messages: readonly SignableMessage[],\n config?: MessageModifyingSignerConfig,\n ): Promise<readonly SignableMessage[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link MessageModifyingSigner} interface. */\nexport function isMessageModifyingSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is MessageModifyingSigner<TAddress> {\n return (\n isAddress(value.address) &&\n 'modifyAndSignMessages' in value &&\n typeof value.modifyAndSignMessages === 'function'\n );\n}\n\n/** Asserts that the provided value implements the {@link MessageModifyingSigner} interface. */\nexport function assertIsMessageModifyingSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is MessageModifyingSigner<TAddress> {\n if (!isMessageModifyingSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER, SolanaError } from '@solana/errors';\n\nimport { isMessageModifyingSigner, MessageModifyingSigner } from './message-modifying-signer';\nimport { isMessagePartialSigner, MessagePartialSigner } from './message-partial-signer';\n\n/** Defines a signer capable of signing messages. */\nexport type MessageSigner<TAddress extends string = string> =\n | MessageModifyingSigner<TAddress>\n | MessagePartialSigner<TAddress>;\n\n/** Checks whether the provided value implements the {@link MessageSigner} interface. */\nexport function isMessageSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is MessageSigner<TAddress> {\n return isMessagePartialSigner(value) || isMessageModifyingSigner(value);\n}\n\n/** Asserts that the provided value implements the {@link MessageSigner} interface. */\nexport function assertIsMessageSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is MessageSigner<TAddress> {\n if (!isMessageSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { Address } from '@solana/addresses';\n\nimport { MessagePartialSigner } from './message-partial-signer';\nimport { TransactionPartialSigner } from './transaction-partial-signer';\n\n/** Defines a no-operation signer that pretends to partially sign messages and transactions. */\nexport type NoopSigner<TAddress extends string = string> = MessagePartialSigner<TAddress> &\n TransactionPartialSigner<TAddress>;\n\n/** Creates a NoopSigner from the provided Address. */\nexport function createNoopSigner(address: Address): NoopSigner {\n const out: NoopSigner = {\n address,\n signMessages: messages => Promise.resolve(messages.map(() => Object.freeze({}))),\n signTransactions: transactions => Promise.resolve(transactions.map(() => Object.freeze({}))),\n };\n\n return Object.freeze(out);\n}\n","import {\n SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS,\n SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING,\n SolanaError,\n} from '@solana/errors';\nimport { CompilableTransactionMessage } from '@solana/transaction-messages';\n\nimport { getSignersFromTransactionMessage, ITransactionMessageWithSigners } from './account-signer-meta';\nimport { isTransactionModifyingSigner } from './transaction-modifying-signer';\nimport { isTransactionPartialSigner } from './transaction-partial-signer';\nimport { isTransactionSendingSigner } from './transaction-sending-signer';\n\n/** Defines a transaction message with exactly one {@link TransactionSendingSigner}. */\nexport type ITransactionMessageWithSingleSendingSigner = ITransactionMessageWithSigners & {\n readonly __transactionWithSingleSendingSigner: unique symbol;\n};\n\n/** Checks whether the provided transaction has exactly one {@link TransactionSendingSigner}. */\nexport function isTransactionMessageWithSingleSendingSigner<TTransactionMessage extends CompilableTransactionMessage>(\n transaction: TTransactionMessage,\n): transaction is ITransactionMessageWithSingleSendingSigner & TTransactionMessage {\n try {\n assertIsTransactionMessageWithSingleSendingSigner(transaction);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Asserts that the provided transaction has exactly one {@link TransactionSendingSigner}. */\nexport function assertIsTransactionMessageWithSingleSendingSigner<\n TTransactionMessage extends CompilableTransactionMessage,\n>(\n transaction: TTransactionMessage,\n): asserts transaction is ITransactionMessageWithSingleSendingSigner & TTransactionMessage {\n const signers = getSignersFromTransactionMessage(transaction);\n const sendingSigners = signers.filter(isTransactionSendingSigner);\n\n if (sendingSigners.length === 0) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING);\n }\n\n // When identifying if there are multiple sending signers, we only need to check for\n // sending signers that do not implement other transaction signer interfaces as\n // they will be used as these other signer interfaces in case of a conflict.\n const sendingOnlySigners = sendingSigners.filter(\n signer => !isTransactionPartialSigner(signer) && !isTransactionModifyingSigner(signer),\n );\n\n if (sendingOnlySigners.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS);\n }\n}\n","import { SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport {\n CompilableTransactionMessage,\n TransactionMessageWithBlockhashLifetime,\n TransactionMessageWithDurableNonceLifetime,\n} from '@solana/transaction-messages';\nimport {\n assertTransactionIsFullySigned,\n compileTransaction,\n FullySignedTransaction,\n Transaction,\n TransactionWithBlockhashLifetime,\n TransactionWithDurableNonceLifetime,\n TransactionWithLifetime,\n} from '@solana/transactions';\n\nimport { getSignersFromTransactionMessage, ITransactionMessageWithSigners } from './account-signer-meta';\nimport { deduplicateSigners } from './deduplicate-signers';\nimport {\n isTransactionModifyingSigner,\n TransactionModifyingSigner,\n TransactionModifyingSignerConfig,\n} from './transaction-modifying-signer';\nimport {\n isTransactionPartialSigner,\n TransactionPartialSigner,\n TransactionPartialSignerConfig,\n} from './transaction-partial-signer';\nimport {\n isTransactionSendingSigner,\n TransactionSendingSigner,\n TransactionSendingSignerConfig,\n} from './transaction-sending-signer';\nimport { isTransactionSigner, TransactionSigner } from './transaction-signer';\nimport { assertIsTransactionMessageWithSingleSendingSigner } from './transaction-with-single-sending-signer';\n\ntype CompilableTransactionMessageWithSigners = CompilableTransactionMessage & ITransactionMessageWithSigners;\n\n/**\n * Signs a transaction using any signers that may be stored in IAccountSignerMeta instruction accounts\n * as well as any signers provided explicitly to this function.\n * It will ignore TransactionSendingSigners since this function does not send the transaction.\n */\nexport async function partiallySignTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners &\n TransactionMessageWithBlockhashLifetime = CompilableTransactionMessageWithSigners &\n TransactionMessageWithBlockhashLifetime,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Transaction & TransactionWithBlockhashLifetime>;\n\nexport async function partiallySignTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners &\n TransactionMessageWithDurableNonceLifetime = CompilableTransactionMessageWithSigners &\n TransactionMessageWithDurableNonceLifetime,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<Transaction & TransactionWithDurableNonceLifetime>>;\n\nexport async function partiallySignTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners = CompilableTransactionMessageWithSigners,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<Transaction & TransactionWithLifetime>>;\n\nexport async function partiallySignTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners = CompilableTransactionMessageWithSigners,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<Transaction & TransactionWithLifetime>> {\n const { partialSigners, modifyingSigners } = categorizeTransactionSigners(\n deduplicateSigners(getSignersFromTransactionMessage(transactionMessage).filter(isTransactionSigner)),\n { identifySendingSigner: false },\n );\n\n return await signModifyingAndPartialTransactionSigners(\n transactionMessage,\n modifyingSigners,\n partialSigners,\n config,\n );\n}\n\n/**\n * Signs a transaction using any signers that may be stored in IAccountSignerMeta instruction accounts\n * as well as any signers provided explicitly to this function.\n * It will assert that the transaction is fully signed before returning.\n * It will ignore TransactionSendingSigners since this function does not send the transaction.\n */\nexport async function signTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners &\n TransactionMessageWithBlockhashLifetime = CompilableTransactionMessageWithSigners &\n TransactionMessageWithBlockhashLifetime,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<FullySignedTransaction & TransactionWithBlockhashLifetime>>;\n\nexport async function signTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners &\n TransactionMessageWithDurableNonceLifetime = CompilableTransactionMessageWithSigners &\n TransactionMessageWithDurableNonceLifetime,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<FullySignedTransaction & TransactionWithDurableNonceLifetime>>;\n\nexport async function signTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners = CompilableTransactionMessageWithSigners,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<FullySignedTransaction & TransactionWithLifetime>>;\n\nexport async function signTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners = CompilableTransactionMessageWithSigners,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<FullySignedTransaction & TransactionWithLifetime>> {\n const signedTransaction = await partiallySignTransactionMessageWithSigners(transactionMessage, config);\n assertTransactionIsFullySigned(signedTransaction);\n return signedTransaction;\n}\n\n/**\n * Signs and sends a transaction using any signers that may be stored in IAccountSignerMeta\n * instruction accounts as well as any signers provided explicitly to this function.\n * It will identify a single TransactionSendingSigners to use for sending the transaction, if any.\n * Otherwise, it will send the transaction using the provided fallbackSender.\n */\nexport async function signAndSendTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners = CompilableTransactionMessageWithSigners,\n>(transaction: TTransactionMessage, config?: TransactionSendingSignerConfig): Promise<SignatureBytes> {\n assertIsTransactionMessageWithSingleSendingSigner(transaction);\n\n const abortSignal = config?.abortSignal;\n const { partialSigners, modifyingSigners, sendingSigner } = categorizeTransactionSigners(\n deduplicateSigners(getSignersFromTransactionMessage(transaction).filter(isTransactionSigner)),\n );\n\n abortSignal?.throwIfAborted();\n const signedTransaction = await signModifyingAndPartialTransactionSigners(\n transaction,\n modifyingSigners,\n partialSigners,\n config,\n );\n\n if (!sendingSigner) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING);\n }\n\n abortSignal?.throwIfAborted();\n const [signature] = await sendingSigner.signAndSendTransactions([signedTransaction], config);\n abortSignal?.throwIfAborted();\n\n return signature;\n}\n\n/**\n * Identifies each provided TransactionSigner and categorizes them into their respective types.\n * When a signer implements multiple interface, it will try to used to most powerful interface\n * but fallback to the least powerful interface when necessary.\n * For instance, if a signer implements TransactionSendingSigner and TransactionModifyingSigner,\n * it will be categorized as a TransactionSendingSigner if and only if no other signers implement\n * the TransactionSendingSigner interface.\n */\nfunction categorizeTransactionSigners(\n signers: readonly TransactionSigner[],\n config: { identifySendingSigner?: boolean } = {},\n): Readonly<{\n modifyingSigners: readonly TransactionModifyingSigner[];\n partialSigners: readonly TransactionPartialSigner[];\n sendingSigner: TransactionSendingSigner | null;\n}> {\n // Identify the unique sending signer that should be used.\n const identifySendingSigner = config.identifySendingSigner ?? true;\n const sendingSigner = identifySendingSigner ? identifyTransactionSendingSigner(signers) : null;\n\n // Now, focus on the other signers.\n // I.e. the modifying or partial signers that are not the identified sending signer.\n // Note that any other sending only signers will be discarded.\n const otherSigners = signers.filter(\n (signer): signer is TransactionModifyingSigner | TransactionPartialSigner =>\n signer !== sendingSigner && (isTransactionModifyingSigner(signer) || isTransactionPartialSigner(signer)),\n );\n\n // Identify the modifying signers from the other signers.\n const modifyingSigners = identifyTransactionModifyingSigners(otherSigners);\n\n // Use any remaining signers as partial signers.\n const partialSigners = otherSigners\n .filter(isTransactionPartialSigner)\n .filter(signer => !(modifyingSigners as typeof otherSigners).includes(signer));\n\n return Object.freeze({ modifyingSigners, partialSigners, sendingSigner });\n}\n\n/** Identifies the best signer to use as a TransactionSendingSigner, if any */\nfunction identifyTransactionSendingSigner(signers: readonly TransactionSigner[]): TransactionSendingSigner | null {\n // Ensure there are any TransactionSendingSigners in the first place.\n const sendingSigners = signers.filter(isTransactionSendingSigner);\n if (sendingSigners.length === 0) return null;\n\n // Prefer sending signers that do not offer other interfaces.\n const sendingOnlySigners = sendingSigners.filter(\n signer => !isTransactionModifyingSigner(signer) && !isTransactionPartialSigner(signer),\n );\n if (sendingOnlySigners.length > 0) {\n return sendingOnlySigners[0];\n }\n\n // Otherwise, choose any sending signer.\n return sendingSigners[0];\n}\n\n/** Identifies the best signers to use as TransactionModifyingSigners, if any */\nfunction identifyTransactionModifyingSigners(\n signers: readonly (TransactionModifyingSigner | TransactionPartialSigner)[],\n): readonly TransactionModifyingSigner[] {\n // Ensure there are any TransactionModifyingSigner in the first place.\n const modifyingSigners = signers.filter(isTransactionModifyingSigner);\n if (modifyingSigners.length === 0) return [];\n\n // Prefer modifying signers that do not offer partial signing.\n const nonPartialSigners = modifyingSigners.filter(signer => !isTransactionPartialSigner(signer));\n if (nonPartialSigners.length > 0) return nonPartialSigners;\n\n // Otherwise, choose only one modifying signer (whichever).\n return [modifyingSigners[0]];\n}\n\n/**\n * Signs a transaction using the provided TransactionModifyingSigners\n * sequentially followed by the TransactionPartialSigners in parallel.\n */\nasync function signModifyingAndPartialTransactionSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners = CompilableTransactionMessageWithSigners,\n>(\n transactionMessage: TTransactionMessage,\n modifyingSigners: readonly TransactionModifyingSigner[] = [],\n partialSigners: readonly TransactionPartialSigner[] = [],\n config?: TransactionModifyingSignerConfig,\n): Promise<Readonly<Transaction & TransactionWithLifetime>> {\n // serialize the transaction\n const transaction = compileTransaction(transactionMessage);\n\n // Handle modifying signers sequentially.\n const modifiedTransaction = await modifyingSigners.reduce(\n async (transaction, modifyingSigner) => {\n config?.abortSignal?.throwIfAborted();\n const [tx] = await modifyingSigner.modifyAndSignTransactions([await transaction], config);\n return Object.freeze(tx);\n },\n Promise.resolve(transaction) as Promise<Readonly<Transaction & TransactionWithLifetime>>,\n );\n\n // Handle partial signers in parallel.\n config?.abortSignal?.throwIfAborted();\n const signatureDictionaries = await Promise.all(\n partialSigners.map(async partialSigner => {\n const [signatures] = await partialSigner.signTransactions([modifiedTransaction], config);\n return signatures;\n }),\n );\n const signedTransaction: Readonly<Transaction & TransactionWithLifetime> = {\n ...modifiedTransaction,\n signatures: Object.freeze(\n signatureDictionaries.reduce((signatures, signatureDictionary) => {\n return { ...signatures, ...signatureDictionary };\n }, modifiedTransaction.signatures ?? {}),\n ),\n };\n\n return Object.freeze(signedTransaction);\n}\n","import { TextEncoder } from '@solana/text-encoding-impl';\n\nimport { SignatureDictionary } from './types';\n\n/** Defines a message that needs signing and its current set of signatures if any. */\nexport type SignableMessage = Readonly<{\n content: Uint8Array;\n signatures: SignatureDictionary;\n}>;\n\n/**\n * Creates a signable message from a provided content.\n * If a string is provided, it will be UTF-8 encoded.\n */\nexport function createSignableMessage(\n content: Uint8Array | string,\n signatures: SignatureDictionary = {},\n): SignableMessage {\n return Object.freeze({\n content: typeof content === 'string' ? new TextEncoder().encode(content) : content,\n signatures: Object.freeze({ ...signatures }),\n });\n}\n","import { SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED, SolanaError } from '@solana/errors';\nimport type { GetEpochInfoApi, Rpc } from '@solana/rpc';\nimport type { RpcSubscriptions, SlotNotificationsApi } from '@solana/rpc-subscriptions';\nimport type { Commitment } from '@solana/rpc-types';\n\ntype GetBlockHeightExceedencePromiseFn = (config: {\n abortSignal: AbortSignal;\n commitment?: Commitment;\n lastValidBlockHeight: bigint;\n}) => Promise<void>;\n\ntype CreateBlockHeightExceedencePromiseFactoryyConfig<TCluster> = {\n rpc: Rpc<GetEpochInfoApi> & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions<SlotNotificationsApi> & { '~cluster'?: TCluster };\n};\n\nexport function createBlockHeightExceedencePromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateBlockHeightExceedencePromiseFactoryyConfig<'devnet'>): GetBlockHeightExceedencePromiseFn;\nexport function createBlockHeightExceedencePromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateBlockHeightExceedencePromiseFactoryyConfig<'testnet'>): GetBlockHeightExceedencePromiseFn;\nexport function createBlockHeightExceedencePromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateBlockHeightExceedencePromiseFactoryyConfig<'mainnet'>): GetBlockHeightExceedencePromiseFn;\nexport function createBlockHeightExceedencePromiseFactory<\n TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void,\n>({\n rpc,\n rpcSubscriptions,\n}: CreateBlockHeightExceedencePromiseFactoryyConfig<TCluster>): GetBlockHeightExceedencePromiseFn {\n return async function getBlockHeightExceedencePromise({\n abortSignal: callerAbortSignal,\n commitment,\n lastValidBlockHeight,\n }): Promise<never> {\n callerAbortSignal.throwIfAborted();\n const abortController = new AbortController();\n const handleAbort = () => {\n abortController.abort();\n };\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n async function getBlockHeightAndDifferenceBetweenSlotHeightAndBlockHeight() {\n const { absoluteSlot, blockHeight } = await rpc\n .getEpochInfo({ commitment })\n .send({ abortSignal: abortController.signal });\n return {\n blockHeight,\n differenceBetweenSlotHeightAndBlockHeight: absoluteSlot - blockHeight,\n };\n }\n try {\n const [slotNotifications, { blockHeight: initialBlockHeight, differenceBetweenSlotHeightAndBlockHeight }] =\n await Promise.all([\n rpcSubscriptions.slotNotifications().subscribe({ abortSignal: abortController.signal }),\n getBlockHeightAndDifferenceBetweenSlotHeightAndBlockHeight(),\n ]);\n callerAbortSignal.throwIfAborted();\n let currentBlockHeight = initialBlockHeight;\n if (currentBlockHeight <= lastValidBlockHeight) {\n let lastKnownDifferenceBetweenSlotHeightAndBlockHeight = differenceBetweenSlotHeightAndBlockHeight;\n for await (const slotNotification of slotNotifications) {\n const { slot } = slotNotification;\n if (slot - lastKnownDifferenceBetweenSlotHeightAndBlockHeight > lastValidBlockHeight) {\n // Before making a final decision, recheck the actual block height.\n const {\n blockHeight: recheckedBlockHeight,\n differenceBetweenSlotHeightAndBlockHeight: currentDifferenceBetweenSlotHeightAndBlockHeight,\n } = await getBlockHeightAndDifferenceBetweenSlotHeightAndBlockHeight();\n currentBlockHeight = recheckedBlockHeight;\n if (currentBlockHeight > lastValidBlockHeight) {\n // Verified; the block height has been exceeded.\n break;\n } else {\n // The block height has not been exceeded, which implies that the\n // difference between the slot height and the block height has grown\n // (ie. some blocks have been skipped since we started). Recalibrate the\n // difference and keep waiting.\n lastKnownDifferenceBetweenSlotHeightAndBlockHeight =\n currentDifferenceBetweenSlotHeightAndBlockHeight;\n }\n }\n }\n }\n callerAbortSignal.throwIfAborted();\n throw new SolanaError(SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED, {\n currentBlockHeight,\n lastValidBlockHeight,\n });\n } finally {\n abortController.abort();\n }\n };\n}\n","import type { Address } from '@solana/addresses';\nimport { getBase58Decoder, getBase64Encoder } from '@solana/codecs-strings';\nimport { SOLANA_ERROR__INVALID_NONCE, SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND, SolanaError } from '@solana/errors';\nimport { safeRace } from '@solana/promises';\nimport type { GetAccountInfoApi, Rpc } from '@solana/rpc';\nimport type { AccountNotificationsApi, RpcSubscriptions } from '@solana/rpc-subscriptions';\nimport type { Base64EncodedDataResponse, Commitment } from '@solana/rpc-types';\nimport { Nonce } from '@solana/transaction-messages';\n\ntype GetNonceInvalidationPromiseFn = (config: {\n abortSignal: AbortSignal;\n commitment: Commitment;\n currentNonceValue: Nonce;\n nonceAccountAddress: Address;\n}) => Promise<void>;\n\ntype CreateNonceInvalidationPromiseFactoryConfig<TCluster> = {\n rpc: Rpc<GetAccountInfoApi> & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions<AccountNotificationsApi> & { '~cluster'?: TCluster };\n};\n\nconst NONCE_VALUE_OFFSET =\n 4 + // version(u32)\n 4 + // state(u32)\n 32; // nonce authority(pubkey)\n// Then comes the nonce value.\n\nexport function createNonceInvalidationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateNonceInvalidationPromiseFactoryConfig<'devnet'>): GetNonceInvalidationPromiseFn;\nexport function createNonceInvalidationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateNonceInvalidationPromiseFactoryConfig<'testnet'>): GetNonceInvalidationPromiseFn;\nexport function createNonceInvalidationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateNonceInvalidationPromiseFactoryConfig<'mainnet'>): GetNonceInvalidationPromiseFn;\nexport function createNonceInvalidationPromiseFactory<TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void>({\n rpc,\n rpcSubscriptions,\n}: CreateNonceInvalidationPromiseFactoryConfig<TCluster>): GetNonceInvalidationPromiseFn {\n return async function getNonceInvalidationPromise({\n abortSignal: callerAbortSignal,\n commitment,\n currentNonceValue: expectedNonceValue,\n nonceAccountAddress,\n }) {\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n /**\n * STEP 1: Set up a subscription for nonce account changes.\n */\n const accountNotifications = await rpcSubscriptions\n .accountNotifications(nonceAccountAddress, { commitment, encoding: 'base64' })\n .subscribe({ abortSignal: abortController.signal });\n const base58Decoder = getBase58Decoder();\n const base64Encoder = getBase64Encoder();\n function getNonceFromAccountData([base64EncodedBytes]: Base64EncodedDataResponse): Nonce {\n const data = base64Encoder.encode(base64EncodedBytes);\n const nonceValueBytes = data.slice(NONCE_VALUE_OFFSET, NONCE_VALUE_OFFSET + 32);\n return base58Decoder.decode(nonceValueBytes) as Nonce;\n }\n const nonceAccountDidAdvancePromise = (async () => {\n for await (const accountNotification of accountNotifications) {\n const nonceValue = getNonceFromAccountData(accountNotification.value.data);\n if (nonceValue !== expectedNonceValue) {\n throw new SolanaError(SOLANA_ERROR__INVALID_NONCE, {\n actualNonceValue: nonceValue,\n expectedNonceValue,\n });\n }\n }\n })();\n /**\n * STEP 2: Having subscribed for updates, make a one-shot request for the current nonce\n * value to check if it has already been advanced.\n */\n const nonceIsAlreadyInvalidPromise = (async () => {\n const { value: nonceAccount } = await rpc\n .getAccountInfo(nonceAccountAddress, {\n commitment,\n dataSlice: { length: 32, offset: NONCE_VALUE_OFFSET },\n encoding: 'base58',\n })\n .send({ abortSignal: abortController.signal });\n if (!nonceAccount) {\n throw new SolanaError(SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND, {\n nonceAccountAddress,\n });\n }\n const nonceValue =\n // This works because we asked for the exact slice of data representing the nonce\n // value, and furthermore asked for it in `base58` encoding.\n nonceAccount.data[0] as unknown as Nonce;\n if (nonceValue !== expectedNonceValue) {\n throw new SolanaError(SOLANA_ERROR__INVALID_NONCE, {\n actualNonceValue: nonceValue,\n expectedNonceValue,\n });\n } else {\n await new Promise(() => {\n /* never resolve */\n });\n }\n })();\n try {\n return await safeRace([nonceAccountDidAdvancePromise, nonceIsAlreadyInvalidPromise]);\n } finally {\n abortController.abort();\n }\n };\n}\n","import { getSolanaErrorFromTransactionError } from '@solana/errors';\nimport type { Signature } from '@solana/keys';\nimport { safeRace } from '@solana/promises';\nimport type { GetSignatureStatusesApi, Rpc } from '@solana/rpc';\nimport type { RpcSubscriptions, SignatureNotificationsApi } from '@solana/rpc-subscriptions';\nimport { type Commitment, commitmentComparator } from '@solana/rpc-types';\n\ntype GetRecentSignatureConfirmationPromiseFn = (config: {\n abortSignal: AbortSignal;\n commitment: Commitment;\n signature: Signature;\n}) => Promise<void>;\n\ntype CreateRecentSignatureConfirmationPromiseFactoryConfig<TCluster> = {\n rpc: Rpc<GetSignatureStatusesApi> & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi> & { '~cluster'?: TCluster };\n};\n\nexport function createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateRecentSignatureConfirmationPromiseFactoryConfig<'devnet'>): GetRecentSignatureConfirmationPromiseFn;\nexport function createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateRecentSignatureConfirmationPromiseFactoryConfig<'testnet'>): GetRecentSignatureConfirmationPromiseFn;\nexport function createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateRecentSignatureConfirmationPromiseFactoryConfig<'mainnet'>): GetRecentSignatureConfirmationPromiseFn;\nexport function createRecentSignatureConfirmationPromiseFactory<\n TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void,\n>({\n rpc,\n rpcSubscriptions,\n}: CreateRecentSignatureConfirmationPromiseFactoryConfig<TCluster>): GetRecentSignatureConfirmationPromiseFn {\n return async function getRecentSignatureConfirmationPromise({\n abortSignal: callerAbortSignal,\n commitment,\n signature,\n }) {\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n /**\n * STEP 1: Set up a subscription for status changes to a signature.\n */\n const signatureStatusNotifications = await rpcSubscriptions\n .signatureNotifications(signature, { commitment })\n .subscribe({ abortSignal: abortController.signal });\n const signatureDidCommitPromise = (async () => {\n for await (const signatureStatusNotification of signatureStatusNotifications) {\n if (signatureStatusNotification.value.err) {\n throw getSolanaErrorFromTransactionError(signatureStatusNotification.value.err);\n } else {\n return;\n }\n }\n })();\n /**\n * STEP 2: Having subscribed for updates, make a one-shot request for the current status.\n * This will only yield a result if the signature is still in the status cache.\n */\n const signatureStatusLookupPromise = (async () => {\n const { value: signatureStatusResults } = await rpc\n .getSignatureStatuses([signature])\n .send({ abortSignal: abortController.signal });\n const signatureStatus = signatureStatusResults[0];\n if (\n signatureStatus &&\n signatureStatus.confirmationStatus &&\n commitmentComparator(signatureStatus.confirmationStatus, commitment) >= 0\n ) {\n return;\n } else {\n await new Promise(() => {\n /* never resolve */\n });\n }\n })();\n try {\n return await safeRace([signatureDidCommitPromise, signatureStatusLookupPromise]);\n } finally {\n abortController.abort();\n }\n };\n}\n","import type { Commitment } from '@solana/rpc-types';\n\ntype Config = Readonly<{\n abortSignal: AbortSignal;\n commitment: Commitment;\n}>;\n\nexport async function getTimeoutPromise({ abortSignal: callerAbortSignal, commitment }: Config) {\n return await new Promise((_, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n clearTimeout(timeoutId);\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n callerAbortSignal.addEventListener('abort', handleAbort);\n const timeoutMs = commitment === 'processed' ? 30_000 : 60_000;\n const startMs = performance.now();\n const timeoutId =\n // We use `setTimeout` instead of `AbortSignal.timeout()` because we want to measure\n // elapsed time instead of active time.\n // See https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/timeout_static\n setTimeout(() => {\n const elapsedMs = performance.now() - startMs;\n reject(new DOMException(`Timeout elapsed after ${elapsedMs} ms`, 'TimeoutError'));\n }, timeoutMs);\n });\n}\n","import type { Signature } from '@solana/keys';\nimport { safeRace } from '@solana/promises';\nimport type { Commitment } from '@solana/rpc-types';\n\nimport { createRecentSignatureConfirmationPromiseFactory } from './confirmation-strategy-recent-signature';\n\nexport interface BaseTransactionConfirmationStrategyConfig {\n abortSignal?: AbortSignal;\n commitment: Commitment;\n getRecentSignatureConfirmationPromise: ReturnType<typeof createRecentSignatureConfirmationPromiseFactory>;\n}\n\ntype WithNonNullableAbortSignal<T> = Omit<T, 'abortSignal'> & Readonly<{ abortSignal: AbortSignal }>;\n\nexport async function raceStrategies<TConfig extends BaseTransactionConfirmationStrategyConfig>(\n signature: Signature,\n config: TConfig,\n getSpecificStrategiesForRace: (config: WithNonNullableAbortSignal<TConfig>) => readonly Promise<unknown>[],\n) {\n const { abortSignal: callerAbortSignal, commitment, getRecentSignatureConfirmationPromise } = config;\n callerAbortSignal?.throwIfAborted();\n const abortController = new AbortController();\n if (callerAbortSignal) {\n const handleAbort = () => {\n abortController.abort();\n };\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n }\n try {\n const specificStrategies = getSpecificStrategiesForRace({\n ...config,\n abortSignal: abortController.signal,\n });\n return await safeRace([\n getRecentSignatureConfirmationPromise({\n abortSignal: abortController.signal,\n commitment,\n signature,\n }),\n ...specificStrategies,\n ]);\n } finally {\n abortController.abort();\n }\n}\n","import { Signature } from '@solana/keys';\nimport { getSignatureFromTransaction, Transaction } from '@solana/transactions';\nimport {\n TransactionWithBlockhashLifetime,\n TransactionWithDurableNonceLifetime,\n} from '@solana/transactions/dist/types/lifetime';\n\nimport { createBlockHeightExceedencePromiseFactory } from './confirmation-strategy-blockheight';\nimport { createNonceInvalidationPromiseFactory } from './confirmation-strategy-nonce';\nimport { BaseTransactionConfirmationStrategyConfig, raceStrategies } from './confirmation-strategy-racer';\nimport { getTimeoutPromise } from './confirmation-strategy-timeout';\n\ninterface WaitForDurableNonceTransactionConfirmationConfig extends BaseTransactionConfirmationStrategyConfig {\n getNonceInvalidationPromise: ReturnType<typeof createNonceInvalidationPromiseFactory>;\n transaction: Readonly<Transaction & TransactionWithDurableNonceLifetime>;\n}\n\ninterface WaitForRecentTransactionWithBlockhashLifetimeConfirmationConfig\n extends BaseTransactionConfirmationStrategyConfig {\n getBlockHeightExceedencePromise: ReturnType<typeof createBlockHeightExceedencePromiseFactory>;\n transaction: Readonly<Transaction & TransactionWithBlockhashLifetime>;\n}\n\ninterface WaitForRecentTransactionWithTimeBasedLifetimeConfirmationConfig\n extends BaseTransactionConfirmationStrategyConfig {\n getTimeoutPromise: typeof getTimeoutPromise;\n signature: Signature;\n}\n\nexport async function waitForDurableNonceTransactionConfirmation(\n config: WaitForDurableNonceTransactionConfirmationConfig,\n): Promise<void> {\n await raceStrategies(\n getSignatureFromTransaction(config.transaction),\n config,\n function getSpecificStrategiesForRace({ abortSignal, commitment, getNonceInvalidationPromise, transaction }) {\n return [\n getNonceInvalidationPromise({\n abortSignal,\n commitment,\n currentNonceValue: transaction.lifetimeConstraint.nonce,\n nonceAccountAddress: transaction.lifetimeConstraint.nonceAccountAddress,\n }),\n ];\n },\n );\n}\n\nexport async function waitForRecentTransactionConfirmation(\n config: WaitForRecentTransactionWithBlockhashLifetimeConfirmationConfig,\n): Promise<void> {\n await raceStrategies(\n getSignatureFromTransaction(config.transaction),\n config,\n function getSpecificStrategiesForRace({\n abortSignal,\n commitment,\n getBlockHeightExceedencePromise,\n transaction,\n }) {\n return [\n getBlockHeightExceedencePromise({\n abortSignal,\n commitment,\n lastValidBlockHeight: transaction.lifetimeConstraint.lastValidBlockHeight,\n }),\n ];\n },\n );\n}\n\n/** @deprecated */\nexport async function waitForRecentTransactionConfirmationUntilTimeout(\n config: WaitForRecentTransactionWithTimeBasedLifetimeConfirmationConfig,\n): Promise<void> {\n await raceStrategies(\n config.signature,\n config,\n function getSpecificStrategiesForRace({ abortSignal, commitment, getTimeoutPromise }) {\n return [\n getTimeoutPromise({\n abortSignal,\n commitment,\n }),\n ];\n },\n );\n}\n","import type { Address } from '@solana/addresses';\nimport type { Signature } from '@solana/keys';\nimport type { RequestAirdropApi, Rpc } from '@solana/rpc';\nimport type { Commitment, Lamports } from '@solana/rpc-types';\nimport { waitForRecentTransactionConfirmationUntilTimeout } from '@solana/transaction-confirmation';\n\ntype RequestAndConfirmAirdropConfig = Readonly<{\n abortSignal?: AbortSignal;\n commitment: Commitment;\n confirmSignatureOnlyTransaction: (\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmationUntilTimeout>[0],\n 'getRecentSignatureConfirmationPromise' | 'getTimeoutPromise'\n >,\n ) => Promise<void>;\n lamports: Lamports;\n recipientAddress: Address;\n rpc: Rpc<RequestAirdropApi>;\n}>;\n\nexport async function requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n confirmSignatureOnlyTransaction,\n lamports,\n recipientAddress,\n rpc,\n}: RequestAndConfirmAirdropConfig): Promise<Signature> {\n const airdropTransactionSignature = await rpc\n .requestAirdrop(recipientAddress, lamports, { commitment })\n .send({ abortSignal });\n await confirmSignatureOnlyTransaction({\n abortSignal,\n commitment,\n signature: airdropTransactionSignature,\n });\n return airdropTransactionSignature;\n}\n","import type { Signature } from '@solana/keys';\nimport type { GetSignatureStatusesApi, RequestAirdropApi, Rpc } from '@solana/rpc';\nimport type { RpcSubscriptions, SignatureNotificationsApi } from '@solana/rpc-subscriptions';\nimport {\n createRecentSignatureConfirmationPromiseFactory,\n getTimeoutPromise,\n waitForRecentTransactionConfirmationUntilTimeout,\n} from '@solana/transaction-confirmation';\n\nimport { requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT } from './airdrop-internal';\n\ntype AirdropFunction = (\n config: Omit<\n Parameters<typeof requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT>[0],\n 'confirmSignatureOnlyTransaction' | 'rpc'\n >,\n) => Promise<Signature>;\n\ntype AirdropFactoryConfig<TCluster> = {\n rpc: Rpc<GetSignatureStatusesApi & RequestAirdropApi> & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi> & { '~cluster'?: TCluster };\n};\n\nexport function airdropFactory({ rpc, rpcSubscriptions }: AirdropFactoryConfig<'devnet'>): AirdropFunction;\nexport function airdropFactory({ rpc, rpcSubscriptions }: AirdropFactoryConfig<'mainnet'>): AirdropFunction;\nexport function airdropFactory({ rpc, rpcSubscriptions }: AirdropFactoryConfig<'testnet'>): AirdropFunction;\nexport function airdropFactory<TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void>({\n rpc,\n rpcSubscriptions,\n}: AirdropFactoryConfig<TCluster>): AirdropFunction {\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n } as Parameters<typeof createRecentSignatureConfirmationPromiseFactory>[0]);\n async function confirmSignatureOnlyTransaction(\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmationUntilTimeout>[0],\n 'getRecentSignatureConfirmationPromise' | 'getTimeoutPromise'\n >,\n ) {\n await waitForRecentTransactionConfirmationUntilTimeout({\n ...config,\n getRecentSignatureConfirmationPromise,\n getTimeoutPromise,\n });\n }\n return async function airdrop(config) {\n return await requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n confirmSignatureOnlyTransaction,\n rpc,\n });\n };\n}\n","import { Address } from '@solana/addresses';\nimport { getU32Encoder } from '@solana/codecs';\nimport {\n isSolanaError,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT,\n SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT,\n SolanaError,\n} from '@solana/errors';\nimport {\n IInstruction,\n IInstructionWithData,\n isInstructionForProgram,\n isInstructionWithData,\n} from '@solana/instructions';\nimport { Rpc, SimulateTransactionApi } from '@solana/rpc';\nimport { Blockhash, Commitment, Slot } from '@solana/rpc-types';\nimport {\n appendTransactionMessageInstruction,\n CompilableTransactionMessage,\n isDurableNonceTransaction,\n isTransactionMessageWithBlockhashLifetime,\n ITransactionMessageWithFeePayer,\n setTransactionMessageLifetimeUsingBlockhash,\n TransactionMessage,\n} from '@solana/transaction-messages';\nimport { compileTransaction, getBase64EncodedWireTransaction } from '@solana/transactions';\n\ntype ComputeUnitEstimateForTransactionMessageConfig = Readonly<{\n abortSignal?: AbortSignal;\n commitment?: Commitment;\n minContextSlot?: Slot;\n rpc: Rpc<SimulateTransactionApi>;\n transactionMessage: CompilableTransactionMessage | (ITransactionMessageWithFeePayer & TransactionMessage);\n}>;\n\nconst COMPUTE_BUDGET_PROGRAM_ADDRESS =\n 'ComputeBudget111111111111111111111111111111' as Address<'ComputeBudget111111111111111111111111111111'>;\n// HACK: Since the `compileTransaction()` method will not compile a transaction with no lifetime we\n// supply a dummy lifetime.\nconst INVALID_BUT_SUFFICIENT_FOR_COMPILATION_BLOCKHASH = {\n blockhash: '11111111111111111111111111111111' as Blockhash,\n lastValidBlockHeight: 0n, // This is not included in compiled transactions; it can be anything.\n} as const;\nconst SET_COMPUTE_UNIT_LIMIT_INSTRUCTION_INDEX = 0x02;\n\nfunction createComputeUnitLimitInstruction(units: number): IInstruction<typeof COMPUTE_BUDGET_PROGRAM_ADDRESS> {\n const data = new Uint8Array(5);\n data[0] = SET_COMPUTE_UNIT_LIMIT_INSTRUCTION_INDEX;\n getU32Encoder().write(units, data, 1 /* offset */);\n return Object.freeze({\n data,\n programAddress: COMPUTE_BUDGET_PROGRAM_ADDRESS,\n });\n}\n\nfunction isSetComputeLimitInstruction(\n instruction: IInstruction,\n): instruction is IInstruction<typeof COMPUTE_BUDGET_PROGRAM_ADDRESS> & IInstructionWithData<Uint8Array> {\n return (\n isInstructionForProgram(instruction, COMPUTE_BUDGET_PROGRAM_ADDRESS) &&\n isInstructionWithData(instruction) &&\n instruction.data[0] === SET_COMPUTE_UNIT_LIMIT_INSTRUCTION_INDEX\n );\n}\n\n/**\n * Simulates a transaction message on the network and returns the number of compute units it\n * consumed during simulation.\n *\n * The estimate this function returns can be used to set a compute unit limit on the transaction.\n * Correctly budgeting a compute unit limit for your transaction message can increase the probability\n * that your transaction will be accepted for processing.\n *\n * If you don't declare a compute unit limit on your transaction, validators will assume an upper\n * limit of 200K compute units (CU) per instruction. Since validators have an incentive to pack as\n * many transactions into each block as possible, they may choose to include transactions that they\n * know will fit into the remaining compute budget for the current block over transactions that\n * might not. For this reason, you should set a compute unit limit on each of your transaction\n * messages, whenever possible.\n *\n * ## Example\n *\n * ```ts\n * import { getSetComputeLimitInstruction } from '@solana-program/compute-budget';\n * import { createSolanaRpc, getComputeUnitEstimateForTransactionMessageFactory, pipe } from '@solana/web3.js';\n *\n * // Create an estimator function.\n * const rpc = createSolanaRpc('http://127.0.0.1:8899');\n * const getComputeUnitEstimateForTransactionMessage =\n * getComputeUnitEstimateForTransactionMessageFactory({ rpc });\n *\n * // Create your transaction message.\n * const transactionMessage = pipe(\n * createTransactionMessage({ version: 'legacy' }),\n * /* ... *\\/\n * );\n *\n * // Request an estimate of the actual compute units this message will consume.\n * const computeUnitsEstimate =\n * await getComputeUnitEstimateForTransactionMessage(transactionMessage);\n *\n * // Set the transaction message's compute unit budget.\n * const transactionMessageWithComputeUnitLimit = prependTransactionMessageInstruction(\n * getSetComputeLimitInstruction({ units: computeUnitsEstimate }),\n * transactionMessage,\n * );\n * ```\n *\n * > [!WARNING]\n * > The compute unit estimate is just that &ndash; an estimate. The compute unit consumption of the\n * > actual transaction might be higher or lower than what was observed in simulation. Unless you\n * > are confident that your particular transaction message will consume the same or fewer compute\n * > units as was estimated, you might like to augment the estimate by either a fixed number of CUs\n * > or a multiplier.\n *\n * > [!NOTE]\n * > If you are preparing an _unsigned_ transaction, destined to be signed and submitted to the\n * > network by a wallet, you might like to leave it up to the wallet to determine the compute unit\n * > limit. Consider that the wallet might have a more global view of how many compute units certain\n * > types of transactions consume, and might be able to make better estimates of an appropriate\n * > compute unit budget.\n */\nexport async function getComputeUnitEstimateForTransactionMessage_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n rpc,\n transactionMessage,\n ...simulateConfig\n}: ComputeUnitEstimateForTransactionMessageConfig): Promise<number> {\n /**\n * STEP 1: Make sure the transaction message will not fail in simulation for lack of a lifetime\n * - either a recent blockhash lifetime or a nonce.\n */\n const isDurableNonceTransactionMessage = isDurableNonceTransaction(transactionMessage);\n let compilableTransactionMessage;\n if (isDurableNonceTransactionMessage || isTransactionMessageWithBlockhashLifetime(transactionMessage)) {\n compilableTransactionMessage = transactionMessage;\n } else {\n compilableTransactionMessage = setTransactionMessageLifetimeUsingBlockhash(\n INVALID_BUT_SUFFICIENT_FOR_COMPILATION_BLOCKHASH,\n transactionMessage,\n );\n }\n /**\n * STEP 2: Ensure that the message has a `SetComputeLimit` instruction. The set compute limit\n * instruction itself consumes compute units, so it must be included in the simulation.\n */\n const existingSetComputeUnitLimitInstructionIndex =\n transactionMessage.instructions.findIndex(isSetComputeLimitInstruction);\n const maxComputeUnitLimitInstruction = createComputeUnitLimitInstruction(1_400_000 /* MAX_COMPUTE_UNIT_LIMIT */);\n if (existingSetComputeUnitLimitInstructionIndex === -1) {\n compilableTransactionMessage = appendTransactionMessageInstruction(\n maxComputeUnitLimitInstruction,\n compilableTransactionMessage,\n );\n } else {\n const nextInstructions = [...compilableTransactionMessage.instructions];\n nextInstructions.splice(existingSetComputeUnitLimitInstructionIndex, 1, maxComputeUnitLimitInstruction);\n compilableTransactionMessage = Object.freeze({\n ...compilableTransactionMessage,\n instructions: nextInstructions,\n } as typeof compilableTransactionMessage);\n }\n /**\n * STEP 3: Simulate the transaction to measure its compute unit consumption.\n */\n const compiledTransaction = compileTransaction(compilableTransactionMessage);\n const wireTransactionBytes = getBase64EncodedWireTransaction(compiledTransaction);\n try {\n const {\n value: { err: transactionError, unitsConsumed },\n } = await rpc\n .simulateTransaction(wireTransactionBytes, {\n ...simulateConfig,\n encoding: 'base64',\n replaceRecentBlockhash: !isDurableNonceTransactionMessage,\n sigVerify: false,\n })\n .send({ abortSignal });\n if (unitsConsumed == null) {\n // This should never be hit, because all RPCs should support `unitsConsumed` by now.\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT);\n }\n // FIXME(https://github.com/anza-xyz/agave/issues/1295): The simulation response returns\n // compute units as a u64, but the `SetComputeLimit` instruction only accepts a u32. Until\n // this changes, downcast it.\n const downcastUnitsConsumed = unitsConsumed > 4_294_967_295n ? 4_294_967_295 : Number(unitsConsumed);\n if (transactionError) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT, {\n cause: transactionError,\n unitsConsumed: downcastUnitsConsumed,\n });\n }\n return downcastUnitsConsumed;\n } catch (e) {\n if (isSolanaError(e, SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT)) throw e;\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT, {\n cause: e,\n });\n }\n}\n","import { Rpc, SimulateTransactionApi } from '@solana/rpc';\nimport {\n CompilableTransactionMessage,\n ITransactionMessageWithFeePayer,\n TransactionMessage,\n} from '@solana/transaction-messages';\n\nimport { getComputeUnitEstimateForTransactionMessage_INTERNAL_ONLY_DO_NOT_EXPORT } from './compute-limit-internal';\n\ntype ComputeUnitEstimateForTransactionMessageFactoryConfig = Readonly<{\n rpc: Rpc<SimulateTransactionApi>;\n}>;\ntype ComputeUnitEstimateForTransactionMessageFunction = (\n transactionMessage: CompilableTransactionMessage | (ITransactionMessageWithFeePayer & TransactionMessage),\n config?: Omit<\n Parameters<typeof getComputeUnitEstimateForTransactionMessage_INTERNAL_ONLY_DO_NOT_EXPORT>[0],\n 'rpc' | 'transactionMessage'\n >,\n) => Promise<number>;\n\nexport function getComputeUnitEstimateForTransactionMessageFactory({\n rpc,\n}: ComputeUnitEstimateForTransactionMessageFactoryConfig): ComputeUnitEstimateForTransactionMessageFunction {\n return async function getComputeUnitEstimateForTransactionMessage(transactionMessage, config) {\n return await getComputeUnitEstimateForTransactionMessage_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n rpc,\n transactionMessage,\n });\n };\n}\n","import {\n assertAccountsDecoded,\n assertAccountsExist,\n type FetchAccountsConfig,\n fetchJsonParsedAccounts,\n} from '@solana/accounts';\nimport type { Address } from '@solana/addresses';\nimport type { GetMultipleAccountsApi, Rpc } from '@solana/rpc';\nimport {\n type AddressesByLookupTableAddress,\n CompilableTransactionMessage,\n CompiledTransactionMessage,\n decompileTransactionMessage,\n} from '@solana/transaction-messages';\n\ntype FetchedAddressLookup = {\n addresses: Address[];\n};\n\nasync function fetchLookupTables(\n lookupTableAddresses: Address[],\n rpc: Rpc<GetMultipleAccountsApi>,\n config?: FetchAccountsConfig,\n): Promise<AddressesByLookupTableAddress> {\n const fetchedLookupTables = await fetchJsonParsedAccounts<FetchedAddressLookup[]>(\n rpc,\n lookupTableAddresses,\n config,\n );\n assertAccountsDecoded(fetchedLookupTables);\n assertAccountsExist(fetchedLookupTables);\n\n return fetchedLookupTables.reduce<AddressesByLookupTableAddress>((acc, lookup) => {\n return {\n ...acc,\n [lookup.address]: lookup.data.addresses,\n };\n }, {});\n}\n\ntype DecompileTransactionMessageFetchingLookupTablesConfig = FetchAccountsConfig & {\n lastValidBlockHeight?: bigint;\n};\n\nexport async function decompileTransactionMessageFetchingLookupTables(\n compiledTransactionMessage: CompiledTransactionMessage,\n rpc: Rpc<GetMultipleAccountsApi>,\n config?: DecompileTransactionMessageFetchingLookupTablesConfig,\n): Promise<CompilableTransactionMessage> {\n const lookupTables =\n 'addressTableLookups' in compiledTransactionMessage &&\n compiledTransactionMessage.addressTableLookups !== undefined &&\n compiledTransactionMessage.addressTableLookups.length > 0\n ? compiledTransactionMessage.addressTableLookups\n : [];\n const lookupTableAddresses = lookupTables.map(l => l.lookupTableAddress);\n\n const { lastValidBlockHeight, ...fetchAccountsConfig } = config ?? {};\n const addressesByLookupTableAddress =\n lookupTableAddresses.length > 0 ? await fetchLookupTables(lookupTableAddresses, rpc, fetchAccountsConfig) : {};\n\n return decompileTransactionMessage(compiledTransactionMessage, {\n addressesByLookupTableAddress,\n lastValidBlockHeight,\n });\n}\n","import type { Signature } from '@solana/keys';\nimport type { Rpc, SendTransactionApi } from '@solana/rpc';\nimport { Commitment, commitmentComparator } from '@solana/rpc-types';\nimport {\n waitForDurableNonceTransactionConfirmation,\n waitForRecentTransactionConfirmation,\n} from '@solana/transaction-confirmation';\nimport {\n FullySignedTransaction,\n getBase64EncodedWireTransaction,\n TransactionWithBlockhashLifetime,\n TransactionWithDurableNonceLifetime,\n} from '@solana/transactions';\n\ninterface SendAndConfirmDurableNonceTransactionConfig\n extends SendTransactionBaseConfig,\n SendTransactionConfigWithoutEncoding {\n confirmDurableNonceTransaction: (\n config: Omit<\n Parameters<typeof waitForDurableNonceTransactionConfirmation>[0],\n 'getNonceInvalidationPromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) => Promise<void>;\n transaction: FullySignedTransaction & TransactionWithDurableNonceLifetime;\n}\n\ninterface SendAndConfirmTransactionWithBlockhashLifetimeConfig\n extends SendTransactionBaseConfig,\n SendTransactionConfigWithoutEncoding {\n confirmRecentTransaction: (\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmation>[0],\n 'getBlockHeightExceedencePromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) => Promise<void>;\n transaction: FullySignedTransaction & TransactionWithBlockhashLifetime;\n}\n\ninterface SendTransactionBaseConfig extends SendTransactionConfigWithoutEncoding {\n abortSignal?: AbortSignal;\n commitment: Commitment;\n rpc: Rpc<SendTransactionApi>;\n transaction: FullySignedTransaction;\n}\n\ntype SendTransactionConfigWithoutEncoding = Omit<\n NonNullable<Parameters<SendTransactionApi['sendTransaction']>[1]>,\n 'encoding'\n>;\n\nfunction getSendTransactionConfigWithAdjustedPreflightCommitment(\n commitment: Commitment,\n config?: SendTransactionConfigWithoutEncoding,\n): SendTransactionConfigWithoutEncoding | void {\n if (\n // The developer has supplied no value for `preflightCommitment`.\n !config?.preflightCommitment &&\n // The value of `commitment` is lower than the server default of `preflightCommitment`.\n commitmentComparator(commitment, 'finalized' /* default value of `preflightCommitment` */) < 0\n ) {\n return {\n ...config,\n // In the common case, it is unlikely that you want to simulate a transaction at\n // `finalized` commitment when your standard of commitment for confirming the\n // transaction is lower. Cap the simulation commitment level to the level of the\n // confirmation commitment.\n preflightCommitment: commitment,\n };\n }\n // The commitment at which the developer wishes to confirm the transaction is at least as\n // high as the commitment at which they want to simulate it. Honour the config as-is.\n return config;\n}\n\nexport async function sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendTransactionBaseConfig): Promise<Signature> {\n const base64EncodedWireTransaction = getBase64EncodedWireTransaction(transaction);\n return await rpc\n .sendTransaction(base64EncodedWireTransaction, {\n ...getSendTransactionConfigWithAdjustedPreflightCommitment(commitment, sendTransactionConfig),\n encoding: 'base64',\n })\n .send({ abortSignal });\n}\n\nexport async function sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n confirmDurableNonceTransaction,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendAndConfirmDurableNonceTransactionConfig): Promise<Signature> {\n const transactionSignature = await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...sendTransactionConfig,\n abortSignal,\n commitment,\n rpc,\n transaction,\n });\n await confirmDurableNonceTransaction({\n abortSignal,\n commitment,\n transaction,\n });\n return transactionSignature;\n}\n\nexport async function sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n confirmRecentTransaction,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendAndConfirmTransactionWithBlockhashLifetimeConfig): Promise<Signature> {\n const transactionSignature = await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...sendTransactionConfig,\n abortSignal,\n commitment,\n rpc,\n transaction,\n });\n await confirmRecentTransaction({\n abortSignal,\n commitment,\n transaction,\n });\n return transactionSignature;\n}\n","import type { GetAccountInfoApi, GetSignatureStatusesApi, Rpc, SendTransactionApi } from '@solana/rpc';\nimport type { AccountNotificationsApi, RpcSubscriptions, SignatureNotificationsApi } from '@solana/rpc-subscriptions';\nimport {\n createNonceInvalidationPromiseFactory,\n createRecentSignatureConfirmationPromiseFactory,\n waitForDurableNonceTransactionConfirmation,\n} from '@solana/transaction-confirmation';\nimport { FullySignedTransaction, TransactionWithDurableNonceLifetime } from '@solana/transactions';\n\nimport { sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT } from './send-transaction-internal';\n\ntype SendAndConfirmDurableNonceTransactionFunction = (\n transaction: FullySignedTransaction & TransactionWithDurableNonceLifetime,\n config: Omit<\n Parameters<typeof sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT>[0],\n 'confirmDurableNonceTransaction' | 'rpc' | 'transaction'\n >,\n) => Promise<void>;\n\ntype SendAndConfirmDurableNonceTransactionFactoryConfig<TCluster> = {\n rpc: Rpc<GetAccountInfoApi & GetSignatureStatusesApi & SendTransactionApi> & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions<AccountNotificationsApi & SignatureNotificationsApi> & { '~cluster'?: TCluster };\n};\n\nexport function sendAndConfirmDurableNonceTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmDurableNonceTransactionFactoryConfig<'devnet'>): SendAndConfirmDurableNonceTransactionFunction;\nexport function sendAndConfirmDurableNonceTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmDurableNonceTransactionFactoryConfig<'testnet'>): SendAndConfirmDurableNonceTransactionFunction;\nexport function sendAndConfirmDurableNonceTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmDurableNonceTransactionFactoryConfig<'mainnet'>): SendAndConfirmDurableNonceTransactionFunction;\nexport function sendAndConfirmDurableNonceTransactionFactory<\n TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void,\n>({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmDurableNonceTransactionFactoryConfig<TCluster>): SendAndConfirmDurableNonceTransactionFunction {\n const getNonceInvalidationPromise = createNonceInvalidationPromiseFactory({ rpc, rpcSubscriptions } as Parameters<\n typeof createNonceInvalidationPromiseFactory\n >[0]);\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n } as Parameters<typeof createRecentSignatureConfirmationPromiseFactory>[0]);\n async function confirmDurableNonceTransaction(\n config: Omit<\n Parameters<typeof waitForDurableNonceTransactionConfirmation>[0],\n 'getNonceInvalidationPromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) {\n await waitForDurableNonceTransactionConfirmation({\n ...config,\n getNonceInvalidationPromise,\n getRecentSignatureConfirmationPromise,\n });\n }\n return async function sendAndConfirmDurableNonceTransaction(transaction, config) {\n await sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n confirmDurableNonceTransaction,\n rpc,\n transaction,\n });\n };\n}\n","import type { GetEpochInfoApi, GetSignatureStatusesApi, Rpc, SendTransactionApi } from '@solana/rpc';\nimport type { RpcSubscriptions, SignatureNotificationsApi, SlotNotificationsApi } from '@solana/rpc-subscriptions';\nimport {\n createBlockHeightExceedencePromiseFactory,\n createRecentSignatureConfirmationPromiseFactory,\n waitForRecentTransactionConfirmation,\n} from '@solana/transaction-confirmation';\nimport { FullySignedTransaction, TransactionWithBlockhashLifetime } from '@solana/transactions';\n\nimport { sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT } from './send-transaction-internal';\n\ntype SendAndConfirmTransactionWithBlockhashLifetimeFunction = (\n transaction: FullySignedTransaction & TransactionWithBlockhashLifetime,\n config: Omit<\n Parameters<typeof sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT>[0],\n 'confirmRecentTransaction' | 'rpc' | 'transaction'\n >,\n) => Promise<void>;\n\ntype SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<TCluster> = {\n rpc: Rpc<GetEpochInfoApi & GetSignatureStatusesApi & SendTransactionApi> & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi & SlotNotificationsApi> & { '~cluster'?: TCluster };\n};\n\nexport function sendAndConfirmTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<'devnet'>): SendAndConfirmTransactionWithBlockhashLifetimeFunction;\nexport function sendAndConfirmTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<'testnet'>): SendAndConfirmTransactionWithBlockhashLifetimeFunction;\nexport function sendAndConfirmTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<'mainnet'>): SendAndConfirmTransactionWithBlockhashLifetimeFunction;\nexport function sendAndConfirmTransactionFactory<TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void>({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<TCluster>): SendAndConfirmTransactionWithBlockhashLifetimeFunction {\n const getBlockHeightExceedencePromise = createBlockHeightExceedencePromiseFactory({\n rpc,\n rpcSubscriptions,\n } as Parameters<typeof createBlockHeightExceedencePromiseFactory>[0]);\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n } as Parameters<typeof createRecentSignatureConfirmationPromiseFactory>[0]);\n async function confirmRecentTransaction(\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmation>[0],\n 'getBlockHeightExceedencePromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) {\n await waitForRecentTransactionConfirmation({\n ...config,\n getBlockHeightExceedencePromise,\n getRecentSignatureConfirmationPromise,\n });\n }\n return async function sendAndConfirmTransaction(transaction, config) {\n await sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n confirmRecentTransaction,\n rpc,\n transaction,\n });\n };\n}\n","import type { Rpc, SendTransactionApi } from '@solana/rpc';\nimport { FullySignedTransaction } from '@solana/transactions';\n\nimport { sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT } from './send-transaction-internal';\n\ntype SendTransactionWithoutConfirmingFunction = (\n transaction: FullySignedTransaction,\n config: Omit<Parameters<typeof sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT>[0], 'rpc' | 'transaction'>,\n) => Promise<void>;\n\ninterface SendTransactionWithoutConfirmingFactoryConfig {\n rpc: Rpc<SendTransactionApi>;\n}\n\nexport function sendTransactionWithoutConfirmingFactory({\n rpc,\n}: SendTransactionWithoutConfirmingFactoryConfig): SendTransactionWithoutConfirmingFunction {\n return async function sendTransactionWithoutConfirming(transaction, config) {\n await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n rpc,\n transaction,\n });\n };\n}\n"]}
1
+ {"version":3,"sources":["../../errors/src/codes.ts","../../errors/src/messages.ts","../../errors/src/message-formatter.ts","../../errors/src/error.ts","../../errors/src/stack-trace.ts","../../errors/src/rpc-enum-errors.ts","../../errors/src/instruction-error.ts","../../errors/src/transaction-error.ts","../../errors/src/json-rpc-error.ts","../../codecs-core/src/bytes.ts","../../codecs-core/src/codec.ts","../../codecs-core/src/combine-codec.ts","../../codecs-core/src/add-codec-sentinel.ts","../../codecs-core/src/assertions.ts","../../codecs-core/src/add-codec-size-prefix.ts","../../codecs-core/src/fix-codec-size.ts","../../codecs-core/src/offset-codec.ts","../../codecs-core/src/resize-codec.ts","../../codecs-core/src/pad-codec.ts","../../codecs-core/src/reverse-codec.ts","../../codecs-core/src/transform-codec.ts","../../codecs-strings/src/assertions.ts","../../codecs-strings/src/baseX.ts","../../codecs-strings/src/base10.ts","../../codecs-strings/src/base16.ts","../../codecs-strings/src/base58.ts","../../codecs-strings/src/baseX-reslice.ts","../../codecs-strings/src/base64.ts","../../codecs-strings/src/null-characters.ts","../../text-encoding-impl/src/index.browser.ts","../../codecs-strings/src/utf8.ts","../../accounts/src/account.ts","../../accounts/src/decode-account.ts","../../accounts/src/parse-account.ts","../../accounts/src/fetch-account.ts","../../accounts/src/maybe-account.ts","../../assertions/src/subtle-crypto.ts","../../assertions/src/crypto.ts","../../addresses/src/address.ts","../../addresses/src/vendor/noble/ed25519.ts","../../addresses/src/curve.ts","../../addresses/src/program-derived-address.ts","../../addresses/src/public-key.ts","../../codecs-numbers/src/assertions.ts","../../codecs-numbers/src/common.ts","../../codecs-numbers/src/utils.ts","../../codecs-numbers/src/f32.ts","../../codecs-numbers/src/f64.ts","../../codecs-numbers/src/i128.ts","../../codecs-numbers/src/i16.ts","../../codecs-numbers/src/i32.ts","../../codecs-numbers/src/i64.ts","../../codecs-numbers/src/i8.ts","../../codecs-numbers/src/short-u16.ts","../../codecs-numbers/src/u128.ts","../../codecs-numbers/src/u16.ts","../../codecs-numbers/src/u32.ts","../../codecs-numbers/src/u64.ts","../../codecs-numbers/src/u8.ts","../../codecs-data-structures/src/assertions.ts","../../codecs-data-structures/src/utils.ts","../../codecs-data-structures/src/array.ts","../../codecs-data-structures/src/bit-array.ts","../../codecs-data-structures/src/boolean.ts","../../codecs-data-structures/src/bytes.ts","../../codecs-data-structures/src/constant.ts","../../codecs-data-structures/src/tuple.ts","../../codecs-data-structures/src/union.ts","../../codecs-data-structures/src/discriminated-union.ts","../../codecs-data-structures/src/enum-helpers.ts","../../codecs-data-structures/src/enum.ts","../../codecs-data-structures/src/hidden-prefix.ts","../../codecs-data-structures/src/hidden-suffix.ts","../../codecs-data-structures/src/map.ts","../../codecs-data-structures/src/unit.ts","../../codecs-data-structures/src/nullable.ts","../../codecs-data-structures/src/set.ts","../../codecs-data-structures/src/struct.ts","../../options/src/option.ts","../../options/src/unwrap-option.ts","../../options/src/option-codec.ts","../../options/src/unwrap-option-recursively.ts","../../functional/src/pipe.ts","../../instructions/src/instruction.ts","../../instructions/src/roles.ts","../../keys/src/private-key.ts","../../keys/src/public-key.ts","../../keys/src/signatures.ts","../../keys/src/key-pair.ts","../../programs/src/program-error.ts","../../rpc-spec-types/src/parse-json-with-bigints.ts","../../rpc-spec-types/src/rpc-message.ts","../../rpc-spec-types/src/stringify-json-with-bigints.ts","../../rpc-spec/src/rpc.ts","../../rpc-spec/src/rpc-api.ts","../../rpc-spec/src/rpc-transport.ts","../../rpc-transformers/src/tree-traversal.ts","../../rpc-transformers/src/request-transformer-bigint-downcast.ts","../../rpc-transformers/src/request-transformer-default-commitment.ts","../../rpc-transformers/src/request-transformer-integer-overflow.ts","../../rpc-transformers/src/request-transformer-options-object-position-config.ts","../../rpc-transformers/src/request-transformer.ts","../../rpc-transformers/src/response-transformer-bigint-upcast.ts","../../rpc-transformers/src/response-transformer-result.ts","../../rpc-transformers/src/response-transformer-throw-solana-error.ts","../../rpc-transformers/src/response-transformer.ts","../../rpc-transformers/src/response-transformer-allowed-numeric-values.ts","../../rpc-api/src/index.ts","../../rpc-transport-http/src/http-transport-headers.ts","../../rpc-transport-http/src/http-transport.ts","../../rpc-transport-http/src/is-solana-request.ts","../../rpc-transport-http/src/http-transport-for-solana-rpc.ts","../../fast-stable-stringify/src/index.ts","../../rpc/src/rpc-integer-overflow-error.ts","../../rpc/src/rpc-default-config.ts","../../rpc/src/rpc-request-coalescer.ts","../../rpc/src/rpc-request-deduplication.ts","../../rpc/src/rpc-transport.ts","../../rpc/src/rpc.ts","../../subscribable/src/async-iterable.ts","../../subscribable/src/data-publisher.ts","../../subscribable/src/demultiplex.ts","../../promises/src/race.ts","../../rpc-subscriptions-spec/src/rpc-subscriptions.ts","../../rpc-subscriptions-spec/src/rpc-subscriptions-api.ts","../../rpc-subscriptions-spec/src/rpc-subscriptions-channel.ts","../../rpc-subscriptions-spec/src/rpc-subscriptions-pubsub-plan.ts","../../rpc-subscriptions-api/src/index.ts","../../ws-impl/src/index.browser.ts","../../rpc-subscriptions-channel-websocket/src/websocket-channel.ts","../../rpc-subscriptions/src/rpc-integer-overflow-error.ts","../../rpc-subscriptions/src/rpc-default-config.ts","../../rpc-subscriptions/src/rpc-subscriptions-autopinger.ts","../../rpc-subscriptions/src/rpc-subscriptions-channel-pool-internal.ts","../../rpc-subscriptions/src/rpc-subscriptions-channel-pool.ts","../../rpc-subscriptions/src/rpc-subscriptions-json.ts","../../rpc-subscriptions/src/rpc-subscriptions-json-bigint.ts","../../rpc-subscriptions/src/rpc-subscriptions-channel.ts","../../rpc-subscriptions/src/rpc-subscriptions-coalescer.ts","../../rpc-subscriptions/src/rpc-subscriptions-transport.ts","../../rpc-subscriptions/src/rpc-subscriptions.ts","../../rpc-types/src/blockhash.ts","../../rpc-types/src/cluster-url.ts","../../rpc-types/src/commitment.ts","../../rpc-types/src/lamports.ts","../../rpc-types/src/stringified-bigint.ts","../../rpc-types/src/stringified-number.ts","../../rpc-types/src/unix-timestamp.ts","../../transaction-messages/src/blockhash.ts","../../transaction-messages/src/codecs/address-table-lookup.ts","../../transaction-messages/src/codecs/header.ts","../../transaction-messages/src/codecs/instruction.ts","../../transaction-messages/src/codecs/transaction-version.ts","../../transaction-messages/src/codecs/message.ts","../../transaction-messages/src/compile/accounts.ts","../../transaction-messages/src/compile/address-table-lookups.ts","../../transaction-messages/src/compile/header.ts","../../transaction-messages/src/compile/instructions.ts","../../transaction-messages/src/compile/lifetime-token.ts","../../transaction-messages/src/compile/static-accounts.ts","../../transaction-messages/src/compile/message.ts","../../transaction-messages/src/compress-transaction-message.ts","../../transaction-messages/src/create-transaction-message.ts","../../transaction-messages/src/durable-nonce.ts","../../transaction-messages/src/fee-payer.ts","../../transaction-messages/src/instructions.ts","../../transaction-messages/src/decompile-message.ts","../../transactions/src/codecs/signatures-encoder.ts","../../transactions/src/codecs/transaction-codec.ts","../../transactions/src/compile-transaction.ts","../../transactions/src/signatures.ts","../../transactions/src/wire-transaction.ts","../../signers/src/deduplicate-signers.ts","../../signers/src/transaction-modifying-signer.ts","../../signers/src/transaction-partial-signer.ts","../../signers/src/transaction-sending-signer.ts","../../signers/src/transaction-signer.ts","../../signers/src/account-signer-meta.ts","../../signers/src/add-signers.ts","../../signers/src/fee-payer-signer.ts","../../signers/src/message-partial-signer.ts","../../signers/src/keypair-signer.ts","../../signers/src/message-modifying-signer.ts","../../signers/src/message-signer.ts","../../signers/src/noop-signer.ts","../../signers/src/transaction-with-single-sending-signer.ts","../../signers/src/sign-transaction.ts","../../signers/src/signable-message.ts","../../transaction-confirmation/src/confirmation-strategy-blockheight.ts","../../transaction-confirmation/src/confirmation-strategy-nonce.ts","../../transaction-confirmation/src/confirmation-strategy-recent-signature.ts","../../transaction-confirmation/src/confirmation-strategy-timeout.ts","../../transaction-confirmation/src/confirmation-strategy-racer.ts","../../transaction-confirmation/src/waiters.ts","../src/airdrop-internal.ts","../src/airdrop.ts","../src/compute-limit-internal.ts","../src/compute-limit.ts","../src/decompile-transaction-message-fetching-lookup-tables.ts","../src/send-transaction-internal.ts","../src/send-and-confirm-durable-nonce-transaction.ts","../src/send-and-confirm-transaction.ts","../src/send-transaction-without-confirming.ts"],"names":["e","isSolanaError","ORDERED_ERROR_NAMES","SolanaError","alphabet","createEncoder","SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE","hexBytes","createDecoder","combineCodec","TextDecoder","TextEncoder","address","base58Encoder","Endian","newOffset","_a","getBase16Decoder","getEncodedSize","isFixedSize","getU8Encoder","transformEncoder","getU8Decoder","transformDecoder","containsBytes","AccountRole","signature","privateKey","unwrapBigIntValueObject","wrapBigIntValueObject","pipe","normalizeHeaders","EXPLICIT_ABORT_TOKEN","createExplicitAbortToken","getAllowedNumericKeypaths","memoizedKeypaths","index_browser_default","createSolanaJsonRpcIntegerOverflowError","transformChannelInboundMessages","transformChannelOutboundMessages","cache","memoizedBase58Encoder","memoizedBase58Decoder","getMemoizedBase58Encoder","getMemoizedBase58Decoder","assertValidBaseString","getBaseXEncoder","partitionLeadingZeroes","getBigIntFromBaseX","getBaseXDecoder","getBaseXFromBigInt","getBase58Encoder","getBase58Decoder","getStructEncoder","getStructDecoder","getArrayEncoder","getShortU16Encoder","getArrayDecoder","getShortU16Decoder","getAddressEncoder","getAddressDecoder","TYPE","getAddressComparator","isWritableRole","isSignerRole","getBytesEncoder","SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING","transaction","o","base58Decoder","safeRace","getTimeoutPromise","lamports"],"mappings":"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","file":"index.development.js","sourcesContent":["/**\n * To add a new error, follow the instructions at\n * https://github.com/solana-labs/solana-web3.js/tree/master/packages/errors/#adding-a-new-error\n *\n * WARNING:\n * - Don't remove error codes\n * - Don't change or reorder error codes.\n *\n * Good naming conventions:\n * - Prefixing common errors — e.g. under the same package — can be a good way to namespace them. E.g. All codec-related errors start with `SOLANA_ERROR__CODECS__`.\n * - Use consistent names — e.g. choose `PDA` or `PROGRAM_DERIVED_ADDRESS` and stick with it. Ensure your names are consistent with existing error codes. The decision might have been made for you.\n * - Recommended prefixes and suffixes:\n * - `MALFORMED_`: Some input was not constructed properly. E.g. `MALFORMED_BASE58_ENCODED_ADDRESS`.\n * - `INVALID_`: Some input is invalid (other than because it was MALFORMED). E.g. `INVALID_NUMBER_OF_BYTES`.\n * - `EXPECTED_`: Some input was different than expected, no need to specify the \"GOT\" part unless necessary. E.g. `EXPECTED_DECODED_ACCOUNT`.\n * - `_CANNOT_`: Some operation cannot be performed or some input cannot be used due to some condition. E.g. `CANNOT_DECODE_EMPTY_BYTE_ARRAY` or `PDA_CANNOT_END_WITH_PDA_MARKER`.\n * - `_MUST_BE_`: Some condition must be true. E.g. `NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE`.\n * - `_FAILED_TO_`: Tried to perform some operation and failed. E.g. `FAILED_TO_DECODE_ACCOUNT`.\n * - `_NOT_FOUND`: Some operation lead to not finding something. E.g. `ACCOUNT_NOT_FOUND`.\n * - `_OUT_OF_RANGE`: Some value is out of range. E.g. `ENUM_DISCRIMINATOR_OUT_OF_RANGE`.\n * - `_EXCEEDED`: Some limit was exceeded. E.g. `PDA_MAX_SEED_LENGTH_EXCEEDED`.\n * - `_MISMATCH`: Some elements do not match. E.g. `ENCODER_DECODER_FIXED_SIZE_MISMATCH`.\n * - `_MISSING`: Some required input is missing. E.g. `TRANSACTION_FEE_PAYER_MISSING`.\n * - `_UNIMPLEMENTED`: Some required component is not available in the environment. E.g. `SUBTLE_CRYPTO_VERIFY_FUNCTION_UNIMPLEMENTED`.\n */\nexport const SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED = 1;\nexport const SOLANA_ERROR__INVALID_NONCE = 2;\nexport const SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND = 3;\nexport const SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE = 4;\nexport const SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH = 5;\nexport const SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE = 6;\nexport const SOLANA_ERROR__MALFORMED_BIGINT_STRING = 7;\nexport const SOLANA_ERROR__MALFORMED_NUMBER_STRING = 8;\nexport const SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE = 9;\n\n// JSON-RPC-related errors.\n// Reserve error codes in the range [-32768, -32000]\n// Keep in sync with https://github.com/anza-xyz/agave/blob/master/rpc-client-api/src/custom_error.rs\nexport const SOLANA_ERROR__JSON_RPC__PARSE_ERROR = -32700;\nexport const SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR = -32603;\nexport const SOLANA_ERROR__JSON_RPC__INVALID_PARAMS = -32602;\nexport const SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND = -32601;\nexport const SOLANA_ERROR__JSON_RPC__INVALID_REQUEST = -32600;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED = -32016;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION = -32015;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET = -32014;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH = -32013;\nexport const SOLANA_ERROR__JSON_RPC__SCAN_ERROR = -32012;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE = -32011;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX = -32010;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED = -32009;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT = -32008;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED = -32007;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE = -32006;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY = -32005;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE = -32004;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE = -32003;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE = -32002;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP = -32001;\n\n// Addresses-related errors.\n// Reserve error codes in the range [2800000-2800999].\nexport const SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH = 2800000;\nexport const SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE = 2800001;\nexport const SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS = 2800002;\nexport const SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY = 2800003;\nexport const SOLANA_ERROR__ADDRESSES__MALFORMED_PDA = 2800004;\nexport const SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE = 2800005;\nexport const SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED = 2800006;\nexport const SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED = 2800007;\nexport const SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE = 2800008;\nexport const SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED = 2800009;\nexport const SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER = 2800010;\n\n// Account-related errors.\n// Reserve error codes in the range [3230000-3230999].\nexport const SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND = 3230000;\nexport const SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND = 32300001;\nexport const SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT = 3230002;\nexport const SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT = 3230003;\nexport const SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED = 3230004;\n\n// Subtle-Crypto-related errors.\n// Reserve error codes in the range [3610000-3610999].\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT = 3610000;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED = 3610001;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED = 3610002;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED = 3610003;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED = 3610004;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED = 3610005;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED = 3610006;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY = 3610007;\n\n// Crypto-related errors.\n// Reserve error codes in the range [3611000-3611050].\nexport const SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED = 3611000;\n\n// Key-related errors.\n// Reserve error codes in the range [3704000-3704999].\nexport const SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH = 3704000;\nexport const SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH = 3704001;\nexport const SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH = 3704002;\nexport const SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE = 3704003;\nexport const SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY = 3704004;\n\n// Instruction-related errors.\n// Reserve error codes in the range [4128000-4128999].\nexport const SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS = 4128000;\nexport const SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA = 4128001;\nexport const SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH = 4128002;\n\n// Instruction errors.\n// Reserve error codes starting with [4615000-4615999] for the Rust enum `InstructionError`.\n// Error names here are dictated by the RPC (see ./instruction-error.ts).\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN = 4615000;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR = 4615001;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT = 4615002;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA = 4615003;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA = 4615004;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL = 4615005;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS = 4615006;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID = 4615007;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE = 4615008;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED = 4615009;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT = 4615010;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION = 4615011;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID = 4615012;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND = 4615013;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED = 4615014;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE = 4615015;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED = 4615016;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX = 4615017;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED = 4615018;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED = 4615019;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS = 4615020;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED = 4615021;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE = 4615022;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED = 4615023;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = 4615024;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC = 4615025;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM = 4615026;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR = 4615027;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED = 4615028;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE = 4615029;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT = 4615030;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID = 4615031;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH = 4615032;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT = 4615033;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED = 4615034;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED = 4615035;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS = 4615036;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC = 4615037;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED = 4615038;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION = 4615039;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE = 4615040;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE = 4615041;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE = 4615042;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE = 4615043;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY = 4615044;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR = 4615045;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT = 4615046;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER = 4615047;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW = 4615048;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR = 4615049;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER = 4615050;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED = 4615051;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED = 4615052;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED = 4615053;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS = 4615054;\n\n// Signer-related errors.\n// Reserve error codes in the range [5508000-5508999].\nexport const SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS = 5508000;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER = 5508001;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER = 5508002;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER = 5508003;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER = 5508004;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER = 5508005;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER = 5508006;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER = 5508007;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER = 5508008;\nexport const SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS = 5508009;\nexport const SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING = 5508010;\nexport const SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED = 5508011;\n\n// Transaction-related errors.\n// Reserve error codes in the range [5663000-5663999].\nexport const SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES = 5663000;\nexport const SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE = 5663001;\nexport const SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME = 5663002;\nexport const SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME = 5663003;\nexport const SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE = 5663004;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING = 5663005;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE = 5663006;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND = 5663007;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING = 5663008;\nexport const SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING = 5663009;\nexport const SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING = 5663010;\nexport const SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING = 5663011;\nexport const SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING = 5663012;\nexport const SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING = 5663013;\nexport const SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE = 5663014;\nexport const SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION = 5663015;\nexport const SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES = 5663016;\nexport const SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH = 5663017;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT = 5663018;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT = 5663019;\n\n// Transaction errors.\n// Reserve error codes starting with [7050000-7050999] for the Rust enum `TransactionError`.\n// Error names here are dictated by the RPC (see ./transaction-error.ts).\nexport const SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN = 7050000;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE = 7050001;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE = 7050002;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND = 7050003;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND = 7050004;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE = 7050005;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE = 7050006;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED = 7050007;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND = 7050008;\n// `InstructionError` intentionally omitted.\nexport const SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP = 7050009;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE = 7050010;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX = 7050011;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE = 7050012;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION = 7050013;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE = 7050014;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE = 7050015;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = 7050016;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT = 7050017;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION = 7050018;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT = 7050019;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT = 7050020;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT = 7050021;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS = 7050022;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND = 7050023;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER = 7050024;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA = 7050025;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX = 7050026;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT = 7050027;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT = 7050028;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT = 7050029;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION = 7050030;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT = 7050031;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED = 7050032;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT = 7050033;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED = 7050034;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED = 7050035;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION = 7050036;\n\n// Codec-related errors.\n// Reserve error codes in the range [8078000-8078999].\nexport const SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY = 8078000;\nexport const SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH = 8078001;\nexport const SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH = 8078002;\nexport const SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH = 8078003;\nexport const SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH = 8078004;\nexport const SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH = 8078005;\nexport const SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH = 8078006;\nexport const SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS = 8078007;\nexport const SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE = 8078008;\nexport const SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT = 8078009;\nexport const SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT = 8078010;\nexport const SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE = 8078011;\nexport const SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE = 8078012;\nexport const SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH = 8078013;\nexport const SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE = 8078014;\nexport const SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT = 8078015;\nexport const SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE = 8078016;\nexport const SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE = 8078017;\nexport const SOLANA_ERROR__CODECS__INVALID_CONSTANT = 8078018;\nexport const SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE = 8078019;\nexport const SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL = 8078020;\nexport const SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES = 8078021;\nexport const SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS = 8078022;\n\n// RPC-related errors.\n// Reserve error codes in the range [8100000-8100999].\nexport const SOLANA_ERROR__RPC__INTEGER_OVERFLOW = 8100000;\nexport const SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN = 8100001;\nexport const SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR = 8100002;\nexport const SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD = 8100003;\n\n// RPC-Subscriptions-related errors.\n// Reserve error codes in the range [8190000-8190999].\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN = 8190000;\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID = 8190001;\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED = 8190002;\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED = 8190003;\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT = 8190004;\n\n// Invariant violation errors.\n// Reserve error codes in the range [9900000-9900999].\n// These errors should only be thrown when there is a bug with the\n// library itself and should, in theory, never reach the end user.\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING = 9900000;\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE = 9900001;\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING = 9900002;\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE = 9900003;\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED = 9900004;\n\n/**\n * A union of every Solana error code\n *\n * You might be wondering why this is not a TypeScript enum or const enum.\n *\n * One of the goals of this library is to enable people to use some or none of it without having to\n * bundle all of it.\n *\n * If we made the set of error codes an enum then anyone who imported it (even if to only use a\n * single error code) would be forced to bundle every code and its label.\n *\n * Const enums appear to solve this problem by letting the compiler inline only the codes that are\n * actually used. Unfortunately exporting ambient (const) enums from a library like `@solana/errors`\n * is not safe, for a variety of reasons covered here: https://stackoverflow.com/a/28818850\n */\nexport type SolanaErrorCode =\n | typeof SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND\n | typeof SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED\n | typeof SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT\n | typeof SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT\n | typeof SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND\n | typeof SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED\n | typeof SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS\n | typeof SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH\n | typeof SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY\n | typeof SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE\n | typeof SOLANA_ERROR__ADDRESSES__MALFORMED_PDA\n | typeof SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED\n | typeof SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED\n | typeof SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE\n | typeof SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER\n | typeof SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE\n | typeof SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED\n | typeof SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY\n | typeof SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS\n | typeof SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL\n | typeof SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH\n | typeof SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH\n | typeof SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH\n | typeof SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH\n | typeof SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH\n | typeof SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH\n | typeof SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE\n | typeof SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH\n | typeof SOLANA_ERROR__CODECS__INVALID_CONSTANT\n | typeof SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT\n | typeof SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT\n | typeof SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT\n | typeof SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS\n | typeof SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE\n | typeof SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES\n | typeof SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS\n | typeof SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA\n | typeof SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR\n | typeof SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH\n | typeof SOLANA_ERROR__INVALID_NONCE\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE\n | typeof SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR\n | typeof SOLANA_ERROR__JSON_RPC__INVALID_PARAMS\n | typeof SOLANA_ERROR__JSON_RPC__INVALID_REQUEST\n | typeof SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND\n | typeof SOLANA_ERROR__JSON_RPC__PARSE_ERROR\n | typeof SOLANA_ERROR__JSON_RPC__SCAN_ERROR\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION\n | typeof SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH\n | typeof SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH\n | typeof SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH\n | typeof SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY\n | typeof SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE\n | typeof SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE\n | typeof SOLANA_ERROR__MALFORMED_BIGINT_STRING\n | typeof SOLANA_ERROR__MALFORMED_NUMBER_STRING\n | typeof SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND\n | typeof SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD\n | typeof SOLANA_ERROR__RPC__INTEGER_OVERFLOW\n | typeof SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR\n | typeof SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID\n | typeof SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER\n | typeof SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS\n | typeof SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING\n | typeof SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE\n | typeof SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION\n | typeof SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES\n | typeof SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME\n | typeof SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE\n | typeof SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES\n | typeof SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE\n | typeof SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH\n | typeof SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT;\n\n/**\n * Errors of this type are understood to have an optional `SolanaError` nested inside as `cause`.\n */\nexport type SolanaErrorCodeWithCause = typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE;\n","import {\n SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED,\n SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT,\n SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT,\n SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND,\n SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED,\n SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS,\n SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY,\n SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE,\n SOLANA_ERROR__ADDRESSES__MALFORMED_PDA,\n SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE,\n SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER,\n SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED,\n SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY,\n SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS,\n SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH,\n SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH,\n SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH,\n SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE,\n SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__INVALID_CONSTANT,\n SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT,\n SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT,\n SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT,\n SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS,\n SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE,\n SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES,\n SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE,\n SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS,\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA,\n SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT,\n SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW,\n SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS,\n SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH,\n SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX,\n SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND,\n SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER,\n SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE,\n SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY,\n SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID,\n SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT,\n SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE,\n SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID,\n SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS,\n SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION,\n SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE,\n SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE,\n SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE,\n SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE,\n SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED,\n SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR,\n SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH,\n SOLANA_ERROR__INVALID_NONCE,\n SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING,\n SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED,\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE,\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING,\n SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE,\n SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR,\n SOLANA_ERROR__JSON_RPC__INVALID_PARAMS,\n SOLANA_ERROR__JSON_RPC__INVALID_REQUEST,\n SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND,\n SOLANA_ERROR__JSON_RPC__PARSE_ERROR,\n SOLANA_ERROR__JSON_RPC__SCAN_ERROR,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION,\n SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY,\n SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE,\n SOLANA_ERROR__MALFORMED_BIGINT_STRING,\n SOLANA_ERROR__MALFORMED_NUMBER_STRING,\n SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD,\n SOLANA_ERROR__RPC__INTEGER_OVERFLOW,\n SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR,\n SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID,\n SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS,\n SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER,\n SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS,\n SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING,\n SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY,\n SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT,\n SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING,\n SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION,\n SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES,\n SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME,\n SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT,\n SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT,\n SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING,\n SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING,\n SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE,\n SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING,\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES,\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE,\n SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH,\n SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING,\n SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING,\n SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE,\n SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE,\n SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED,\n SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP,\n SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE,\n SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION,\n SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE,\n SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT,\n SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED,\n SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE,\n SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED,\n SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED,\n SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE,\n SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE,\n SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS,\n SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION,\n SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN,\n SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT,\n SolanaErrorCode,\n} from './codes';\n\n/**\n * To add a new error, follow the instructions at\n * https://github.com/solana-labs/solana-web3.js/tree/master/packages/errors#adding-a-new-error\n *\n * WARNING:\n * - Don't change the meaning of an error message.\n */\nexport const SolanaErrorMessages: Readonly<{\n // This type makes this data structure exhaustive with respect to `SolanaErrorCode`.\n // TypeScript will fail to build this project if add an error code without a message.\n [P in SolanaErrorCode]: string;\n}> = {\n [SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND]: 'Account not found at address: $address',\n [SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED]:\n 'Not all accounts were decoded. Encoded accounts found at addresses: $addresses.',\n [SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT]: 'Expected decoded account at address: $address',\n [SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT]: 'Failed to decode account data at address: $address',\n [SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND]: 'Accounts not found at addresses: $addresses',\n [SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED]:\n 'Unable to find a viable program address bump seed.',\n [SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS]: '$putativeAddress is not a base58-encoded address.',\n [SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH]:\n 'Expected base58 encoded address to decode to a byte array of length 32. Actual length: $actualLength.',\n [SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY]: 'The `CryptoKey` must be an `Ed25519` public key.',\n [SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE]: 'Invalid seeds; point must fall off the Ed25519 curve.',\n [SOLANA_ERROR__ADDRESSES__MALFORMED_PDA]:\n 'Expected given program derived address to have the following format: [Address, ProgramDerivedAddressBump].',\n [SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED]:\n 'A maximum of $maxSeeds seeds, including the bump seed, may be supplied when creating an address. Received: $actual.',\n [SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED]:\n 'The seed at index $index with length $actual exceeds the maximum length of $maxSeedLength bytes.',\n [SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE]:\n 'Expected program derived address bump to be in the range [0, 255], got: $bump.',\n [SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER]: 'Program address cannot end with PDA marker.',\n [SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE]:\n 'Expected base58-encoded address string of length in the range [32, 44]. Actual length: $actualLength.',\n [SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE]:\n 'Expected base58-encoded blockash string of length in the range [32, 44]. Actual length: $actualLength.',\n [SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED]:\n 'The network has progressed past the last block for which this transaction could have been committed.',\n [SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY]:\n 'Codec [$codecDescription] cannot decode empty byte arrays.',\n [SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS]:\n 'Enum codec cannot use lexical values [$stringValues] as discriminators. Either remove all lexical values or set `useValuesAsDiscriminators` to `false`.',\n [SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL]:\n 'Sentinel [$hexSentinel] must not be present in encoded bytes [$hexEncodedBytes].',\n [SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH]:\n 'Encoder and decoder must have the same fixed size, got [$encoderFixedSize] and [$decoderFixedSize].',\n [SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH]:\n 'Encoder and decoder must have the same max size, got [$encoderMaxSize] and [$decoderMaxSize].',\n [SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH]:\n 'Encoder and decoder must either both be fixed-size or variable-size.',\n [SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE]:\n 'Enum discriminator out of range. Expected a number in [$formattedValidDiscriminators], got $discriminator.',\n [SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH]: 'Expected a fixed-size codec, got a variable-size one.',\n [SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH]:\n 'Codec [$codecDescription] expected a positive byte length, got $bytesLength.',\n [SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH]: 'Expected a variable-size codec, got a fixed-size one.',\n [SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE]:\n 'Codec [$codecDescription] expected zero-value [$hexZeroValue] to have the same size as the provided fixed-size item [$expectedSize bytes].',\n [SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH]:\n 'Codec [$codecDescription] expected $expected bytes, got $bytesLength.',\n [SOLANA_ERROR__CODECS__INVALID_CONSTANT]:\n 'Expected byte array constant [$hexConstant] to be present in data [$hexData] at offset [$offset].',\n [SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT]:\n 'Invalid discriminated union variant. Expected one of [$variants], got $value.',\n [SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT]:\n 'Invalid enum variant. Expected one of [$stringValues] or a number in [$formattedNumericalValues], got $variant.',\n [SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT]:\n 'Invalid literal union variant. Expected one of [$variants], got $value.',\n [SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS]:\n 'Expected [$codecDescription] to have $expected items, got $actual.',\n [SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE]: 'Invalid value $value for base $base with alphabet $alphabet.',\n [SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE]:\n 'Literal union discriminator out of range. Expected a number between $minRange and $maxRange, got $discriminator.',\n [SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE]:\n 'Codec [$codecDescription] expected number to be in the range [$min, $max], got $value.',\n [SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE]:\n 'Codec [$codecDescription] expected offset to be in the range [0, $bytesLength], got $offset.',\n [SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES]:\n 'Expected sentinel [$hexSentinel] to be present in decoded bytes [$hexDecodedBytes].',\n [SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE]:\n 'Union variant out of range. Expected an index between $minRange and $maxRange, got $variant.',\n [SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED]: 'No random values implementation could be found.',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED]: 'instruction requires an uninitialized account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED]:\n 'instruction tries to borrow reference for an account which is already borrowed',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING]:\n 'instruction left account with an outstanding borrowed reference',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED]:\n \"program other than the account's owner changed the size of the account data\",\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL]: 'account data too small for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE]: 'instruction expected an executable account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT]:\n 'An account does not have enough lamports to be rent-exempt',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW]: 'Program arithmetic overflowed',\n [SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR]: 'Failed to serialize or deserialize account data: $encodedData',\n [SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS]:\n 'Builtin programs must consume compute units',\n [SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH]: 'Cross-program invocation call depth too deep',\n [SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED]: 'Computational budget exceeded',\n [SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM]: 'custom program error: #$code',\n [SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX]: 'instruction contains duplicate accounts',\n [SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC]:\n 'instruction modifications of multiply-passed account differ',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT]: 'executable accounts must be rent exempt',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED]: 'instruction changed executable accounts data',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE]:\n 'instruction changed the balance of an executable account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED]: 'instruction changed executable bit of an account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED]:\n 'instruction modified data of an account it does not own',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND]:\n 'instruction spent from the balance of an account it does not own',\n [SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR]: 'generic instruction error',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER]: 'Provided owner is not allowed',\n [SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE]: 'Account is immutable',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY]: 'Incorrect authority provided',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID]: 'incorrect program id for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS]: 'insufficient funds for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA]: 'invalid account data for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER]: 'Invalid account owner',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT]: 'invalid program argument',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR]: 'program returned invalid error code',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA]: 'invalid instruction data',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC]: 'Failed to reallocate account data',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS]: 'Provided seeds do not result in a valid address',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED]:\n 'Accounts data allocations exceeded the maximum allowed per transaction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED]: 'Max accounts exceeded',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED]: 'Max instruction trace length exceeded',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED]:\n 'Length of the seed is too long for address generation',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT]: 'An account required by the instruction is missing',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE]: 'missing required signature for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID]:\n 'instruction illegally modified the program id of an account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS]: 'insufficient account keys for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION]:\n 'Cross-program invocation with unauthorized signer or writable account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE]:\n 'Failed to create program execution environment',\n [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE]: 'Program failed to compile',\n [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE]: 'Program failed to complete',\n [SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED]: 'instruction modified data of a read-only account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE]:\n 'instruction changed the balance of a read-only account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED]:\n 'Cross-program invocation reentrancy not allowed for this instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED]: 'instruction modified rent epoch of an account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION]:\n 'sum of account balances before and after instruction do not match',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT]: 'instruction requires an initialized account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN]: '',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID]: 'Unsupported program id',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR]: 'Unsupported sysvar',\n [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS]: 'The instruction does not have any accounts.',\n [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA]: 'The instruction does not have any data.',\n [SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH]:\n 'Expected instruction to have progress address $expectedProgramAddress, got $actualProgramAddress.',\n [SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH]:\n 'Expected base58 encoded blockhash to decode to a byte array of length 32. Actual length: $actualLength.',\n [SOLANA_ERROR__INVALID_NONCE]:\n 'The nonce `$expectedNonceValue` is no longer valid. It has advanced to `$actualNonceValue`',\n [SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING]:\n 'Invariant violation: Found no abortable iterable cache entry for key `$cacheKey`. It ' +\n 'should be impossible to hit this error; please file an issue at ' +\n 'https://sola.na/web3invariant',\n [SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED]:\n 'Invariant violation: This data publisher does not publish to the channel named ' +\n '`$channelName`. Supported channels include $supportedChannelNames.',\n [SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE]:\n 'Invariant violation: WebSocket message iterator state is corrupt; iterated without first ' +\n 'resolving existing message promise. It should be impossible to hit this error; please ' +\n 'file an issue at https://sola.na/web3invariant',\n [SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING]:\n 'Invariant violation: WebSocket message iterator is missing state storage. It should be ' +\n 'impossible to hit this error; please file an issue at https://sola.na/web3invariant',\n [SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE]:\n 'Invariant violation: Switch statement non-exhaustive. Received unexpected value ' +\n '`$unexpectedValue`. It should be impossible to hit this error; please file an issue at ' +\n 'https://sola.na/web3invariant',\n [SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR]: 'JSON-RPC error: Internal JSON-RPC error ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__INVALID_PARAMS]: 'JSON-RPC error: Invalid method parameter(s) ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__INVALID_REQUEST]:\n 'JSON-RPC error: The JSON sent is not a valid `Request` object ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND]:\n 'JSON-RPC error: The method does not exist / is not available ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__PARSE_ERROR]:\n 'JSON-RPC error: An error occurred on the server while parsing the JSON text ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__SCAN_ERROR]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED]: 'Minimum context slot has not been reached',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY]: 'Node is unhealthy; behind by $numSlotsBehind slots',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT]: 'No snapshot',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE]: 'Transaction simulation failed',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE]:\n 'Transaction history is not available from this node',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH]: 'Transaction signature length mismatch',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE]:\n 'Transaction signature verification failure',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION]: '$__serverMessage',\n [SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH]: 'Key pair bytes must be of length 64, got $byteLength.',\n [SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH]:\n 'Expected private key bytes with length 32. Actual length: $actualLength.',\n [SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH]:\n 'Expected base58-encoded signature to decode to a byte array of length 64. Actual length: $actualLength.',\n [SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY]:\n 'The provided private key does not match the provided public key.',\n [SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE]:\n 'Expected base58-encoded signature string of length in the range [64, 88]. Actual length: $actualLength.',\n [SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE]: 'Lamports value must be in the range [0, 2e64-1]',\n [SOLANA_ERROR__MALFORMED_BIGINT_STRING]: '`$value` cannot be parsed as a `BigInt`',\n [SOLANA_ERROR__MALFORMED_NUMBER_STRING]: '`$value` cannot be parsed as a `Number`',\n [SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND]: 'No nonce account could be found at address `$nonceAccountAddress`',\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN]:\n \"The notification name must end in 'Notifications' and the API must supply a \" +\n \"subscription plan creator function for the notification '$notificationName'.\",\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED]:\n 'WebSocket was closed before payload could be added to the send buffer',\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED]: 'WebSocket connection closed',\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT]: 'WebSocket failed to connect',\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID]:\n 'Failed to obtain a subscription id from the server',\n [SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD]: 'Could not find an API plan for RPC method: `$method`',\n [SOLANA_ERROR__RPC__INTEGER_OVERFLOW]:\n 'The $argumentLabel argument to the `$methodName` RPC method$optionalPathLabel was ' +\n '`$value`. This number is unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.',\n [SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR]: 'HTTP error ($statusCode): $message',\n [SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN]:\n 'HTTP header(s) forbidden: $headers. Learn more at ' +\n 'https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name.',\n [SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS]:\n 'Multiple distinct signers were identified for address `$address`. Please ensure that ' +\n 'you are using the same signer instance for each address.',\n [SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER]:\n 'The provided value does not implement the `KeyPairSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER]:\n 'The provided value does not implement the `MessageModifyingSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER]:\n 'The provided value does not implement the `MessagePartialSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER]:\n 'The provided value does not implement any of the `MessageSigner` interfaces',\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER]:\n 'The provided value does not implement the `TransactionModifyingSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER]:\n 'The provided value does not implement the `TransactionPartialSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER]:\n 'The provided value does not implement the `TransactionSendingSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER]:\n 'The provided value does not implement any of the `TransactionSigner` interfaces',\n [SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS]:\n 'More than one `TransactionSendingSigner` was identified.',\n [SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING]:\n 'No `TransactionSendingSigner` was identified. Please provide a valid ' +\n '`ITransactionWithSingleSendingSigner` transaction.',\n [SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED]:\n 'Wallet account signers do not support signing multiple messages/transactions in a single operation',\n [SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY]: 'Cannot export a non-extractable key.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED]: 'No digest implementation could be found.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT]:\n 'Cryptographic operations are only allowed in secure browser contexts. Read more ' +\n 'here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED]:\n 'This runtime does not support the generation of Ed25519 key pairs.\\n\\nInstall ' +\n '@solana/webcrypto-ed25519-polyfill and call its `install` function before generating keys in ' +\n 'environments that do not support Ed25519.\\n\\nFor a list of runtimes that ' +\n 'currently support Ed25519 operations, visit ' +\n 'https://github.com/WICG/webcrypto-secure-curves/issues/20.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED]:\n 'No signature verification implementation could be found.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED]: 'No key generation implementation could be found.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED]: 'No signing implementation could be found.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED]: 'No key export implementation could be found.',\n [SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE]:\n 'Timestamp value must be in the range [-(2n ** 63n), (2n ** 63n) - 1]. `$value` given',\n [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING]:\n 'Transaction processing left an account with an outstanding borrowed reference',\n [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE]: 'Account in use',\n [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE]: 'Account loaded twice',\n [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND]:\n 'Attempt to debit an account but found no record of a prior credit.',\n [SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND]:\n \"Transaction loads an address table account that doesn't exist\",\n [SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED]: 'This transaction has already been processed',\n [SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND]: 'Blockhash not found',\n [SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP]: 'Loader call chain is too deep',\n [SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE]:\n 'Transactions are currently disabled due to cluster maintenance',\n [SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION]:\n 'Transaction contains a duplicate instruction ($index) that is not allowed',\n [SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE]: 'Insufficient funds for fee',\n [SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT]:\n 'Transaction results in an account ($accountIndex) with insufficient funds for rent',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE]: 'This account may not be used to pay transaction fees',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX]: 'Transaction contains an invalid account reference',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA]:\n 'Transaction loads an address table account with invalid data',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX]:\n 'Transaction address table lookup uses an invalid index',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER]:\n 'Transaction loads an address table account with an invalid owner',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT]:\n 'LoadedAccountsDataSizeLimit set for transaction must be greater than 0.',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION]:\n 'This program may not be used for executing instructions',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT]:\n 'Transaction leaves an account with a lower balance than rent-exempt minimum',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT]:\n 'Transaction loads a writable account that cannot be written',\n [SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED]:\n 'Transaction exceeded max loaded accounts data size cap',\n [SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE]:\n 'Transaction requires a fee but has no signature present',\n [SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND]: 'Attempt to load a program that does not exist',\n [SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED]:\n 'Execution of the program referenced by account at index $accountIndex is temporarily restricted.',\n [SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED]: 'ResanitizationNeeded',\n [SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE]: 'Transaction failed to sanitize accounts offsets correctly',\n [SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE]: 'Transaction did not pass signature verification',\n [SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS]: 'Transaction locked too many accounts',\n [SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION]:\n 'Sum of account balances before and after transaction do not match',\n [SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN]: 'The transaction failed with the error `$errorName`',\n [SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION]: 'Transaction version is unsupported',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT]:\n 'Transaction would exceed account data limit within the block',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT]:\n 'Transaction would exceed total account data limit',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT]:\n 'Transaction would exceed max account limit within the block',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT]:\n 'Transaction would exceed max Block Cost Limit',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT]: 'Transaction would exceed max Vote Cost Limit',\n [SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION]:\n 'Attempted to sign a transaction with an address that is not a signer for it',\n [SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING]: 'Transaction is missing an address at index: $index.',\n [SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES]:\n 'Transaction has no expected signers therefore it cannot be encoded',\n [SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME]: 'Transaction does not have a blockhash lifetime',\n [SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME]: 'Transaction is not a durable nonce transaction',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING]:\n 'Contents of these address lookup tables unknown: $lookupTableAddresses',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE]:\n 'Lookup of address at index $highestRequestedIndex failed for lookup table ' +\n '`$lookupTableAddress`. Highest known index is $highestKnownIndex. The lookup table ' +\n 'may have been extended since its contents were retrieved',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING]: 'No fee payer set in CompiledTransaction',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND]:\n 'Could not find program address at index $index',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT]:\n 'Failed to estimate the compute unit consumption for this transaction message. This is ' +\n 'likely because simulating the transaction failed. Inspect the `cause` property of this ' +\n 'error to learn more',\n [SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT]:\n 'Transaction failed when it was simulated in order to estimate the compute unit consumption. ' +\n 'The compute unit estimate provided is for a transaction that failed when simulated and may not ' +\n 'be representative of the compute units this transaction would consume if successful. Inspect the ' +\n '`cause` property of this error to learn more',\n [SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING]: 'Transaction is missing a fee payer.',\n [SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING]:\n \"Could not determine this transaction's signature. Make sure that the transaction has \" +\n 'been signed by its fee payer.',\n [SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE]:\n 'Transaction first instruction is not advance nonce account instruction.',\n [SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING]:\n 'Transaction with no instructions cannot be durable nonce transaction.',\n [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES]:\n 'This transaction includes an address (`$programAddress`) which is both ' +\n 'invoked and set as the fee payer. Program addresses may not pay fees',\n [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE]:\n 'This transaction includes an address (`$programAddress`) which is both invoked and ' +\n 'marked writable. Program addresses may not be writable',\n [SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH]:\n 'The transaction message expected the transaction to have $signerAddressesLength signatures, got $signaturesLength.',\n [SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING]: 'Transaction is missing signatures for addresses: $addresses.',\n [SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE]:\n 'Transaction version must be in the range [0, 127]. `$actualVersion` given',\n};\n","import { SolanaErrorCode } from './codes';\nimport { encodeContextObject } from './context';\nimport { SolanaErrorMessages } from './messages';\n\nconst enum StateType {\n EscapeSequence,\n Text,\n Variable,\n}\ntype State = Readonly<{\n [START_INDEX]: number;\n [TYPE]: StateType;\n}>;\nconst START_INDEX = 'i';\nconst TYPE = 't';\n\nexport function getHumanReadableErrorMessage<TErrorCode extends SolanaErrorCode>(\n code: TErrorCode,\n context: object = {},\n): string {\n const messageFormatString = SolanaErrorMessages[code];\n if (messageFormatString.length === 0) {\n return '';\n }\n let state: State;\n function commitStateUpTo(endIndex?: number) {\n if (state[TYPE] === StateType.Variable) {\n const variableName = messageFormatString.slice(state[START_INDEX] + 1, endIndex);\n\n fragments.push(\n variableName in context ? `${context[variableName as keyof typeof context]}` : `$${variableName}`,\n );\n } else if (state[TYPE] === StateType.Text) {\n fragments.push(messageFormatString.slice(state[START_INDEX], endIndex));\n }\n }\n const fragments: string[] = [];\n messageFormatString.split('').forEach((char, ii) => {\n if (ii === 0) {\n state = {\n [START_INDEX]: 0,\n [TYPE]:\n messageFormatString[0] === '\\\\'\n ? StateType.EscapeSequence\n : messageFormatString[0] === '$'\n ? StateType.Variable\n : StateType.Text,\n };\n return;\n }\n let nextState;\n switch (state[TYPE]) {\n case StateType.EscapeSequence:\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.Text };\n break;\n case StateType.Text:\n if (char === '\\\\') {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.EscapeSequence };\n } else if (char === '$') {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.Variable };\n }\n break;\n case StateType.Variable:\n if (char === '\\\\') {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.EscapeSequence };\n } else if (char === '$') {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.Variable };\n } else if (!char.match(/\\w/)) {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.Text };\n }\n break;\n }\n if (nextState) {\n if (state !== nextState) {\n commitStateUpTo(ii);\n }\n state = nextState;\n }\n });\n commitStateUpTo();\n return fragments.join('');\n}\n\nexport function getErrorMessage<TErrorCode extends SolanaErrorCode>(\n code: TErrorCode,\n context: Record<string, unknown> = {},\n): string {\n if (process.env.NODE_ENV !== \"production\") {\n return getHumanReadableErrorMessage(code, context);\n } else {\n let decodingAdviceMessage = `Solana error #${code}; Decode this error by running \\`npx @solana/errors decode -- ${code}`;\n if (Object.keys(context).length) {\n /**\n * DANGER: Be sure that the shell command is escaped in such a way that makes it\n * impossible for someone to craft malicious context values that would result in\n * an exploit against anyone who bindly copy/pastes it into their terminal.\n */\n decodingAdviceMessage += ` '${encodeContextObject(context)}'`;\n }\n return `${decodingAdviceMessage}\\``;\n }\n}\n","import { SolanaErrorCode, SolanaErrorCodeWithCause } from './codes';\nimport { SolanaErrorContext } from './context';\nimport { getErrorMessage } from './message-formatter';\n\nexport function isSolanaError<TErrorCode extends SolanaErrorCode>(\n e: unknown,\n code?: TErrorCode,\n): e is SolanaError<TErrorCode> {\n const isSolanaError = e instanceof Error && e.name === 'SolanaError';\n if (isSolanaError) {\n if (code !== undefined) {\n return (e as SolanaError<TErrorCode>).context.__code === code;\n }\n return true;\n }\n return false;\n}\n\ntype SolanaErrorCodedContext = Readonly<{\n [P in SolanaErrorCode]: (SolanaErrorContext[P] extends undefined ? object : SolanaErrorContext[P]) & {\n __code: P;\n };\n}>;\n\nexport class SolanaError<TErrorCode extends SolanaErrorCode = SolanaErrorCode> extends Error {\n readonly cause?: TErrorCode extends SolanaErrorCodeWithCause ? SolanaError : unknown = this.cause;\n readonly context: SolanaErrorCodedContext[TErrorCode];\n constructor(\n ...[code, contextAndErrorOptions]: SolanaErrorContext[TErrorCode] extends undefined\n ? [code: TErrorCode, errorOptions?: ErrorOptions | undefined]\n : [code: TErrorCode, contextAndErrorOptions: SolanaErrorContext[TErrorCode] & (ErrorOptions | undefined)]\n ) {\n let context: SolanaErrorContext[TErrorCode] | undefined;\n let errorOptions: ErrorOptions | undefined;\n if (contextAndErrorOptions) {\n // If the `ErrorOptions` type ever changes, update this code.\n const { cause, ...contextRest } = contextAndErrorOptions;\n if (cause) {\n errorOptions = { cause };\n }\n if (Object.keys(contextRest).length > 0) {\n context = contextRest as SolanaErrorContext[TErrorCode];\n }\n }\n const message = getErrorMessage(code, context);\n super(message, errorOptions);\n this.context = {\n __code: code,\n ...context,\n } as SolanaErrorCodedContext[TErrorCode];\n // This is necessary so that `isSolanaError()` can identify a `SolanaError` without having\n // to import the class for use in an `instanceof` check.\n this.name = 'SolanaError';\n }\n}\n","export function safeCaptureStackTrace(...args: Parameters<typeof Error.captureStackTrace>): void {\n if ('captureStackTrace' in Error && typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(...args);\n }\n}\n","import { SolanaErrorCode } from './codes';\nimport { SolanaErrorContext } from './context';\nimport { SolanaError } from './error';\nimport { safeCaptureStackTrace } from './stack-trace';\n\ntype Config = Readonly<{\n /**\n * Oh, hello. You might wonder what in tarnation is going on here. Allow us to explain.\n *\n * One of the goals of `@solana/errors` is to allow errors that are not interesting to your\n * application to shake out of your app bundle in production. This means that we must never\n * export large hardcoded maps of error codes/messages.\n *\n * Unfortunately, where instruction and transaction errors from the RPC are concerned, we have\n * no choice but to keep a map between the RPC `rpcEnumError` enum name and its corresponding\n * `SolanaError` code. In the interest of implementing that map in as few bytes of source code\n * as possible, we do the following:\n *\n * 1. Reserve a block of sequential error codes for the enum in question\n * 2. Hardcode the list of enum names in that same order\n * 3. Match the enum error name from the RPC with its index in that list, and reconstruct the\n * `SolanaError` code by adding the `errorCodeBaseOffset` to that index\n */\n errorCodeBaseOffset: number;\n getErrorContext: (\n errorCode: SolanaErrorCode,\n rpcErrorName: string,\n rpcErrorContext?: unknown,\n ) => SolanaErrorContext[SolanaErrorCode];\n orderedErrorNames: string[];\n rpcEnumError: string | { [key: string]: unknown };\n}>;\n\nexport function getSolanaErrorFromRpcError(\n { errorCodeBaseOffset, getErrorContext, orderedErrorNames, rpcEnumError }: Config,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n constructorOpt: Function,\n): SolanaError {\n let rpcErrorName;\n let rpcErrorContext;\n if (typeof rpcEnumError === 'string') {\n rpcErrorName = rpcEnumError;\n } else {\n rpcErrorName = Object.keys(rpcEnumError)[0];\n rpcErrorContext = rpcEnumError[rpcErrorName];\n }\n const codeOffset = orderedErrorNames.indexOf(rpcErrorName);\n const errorCode = (errorCodeBaseOffset + codeOffset) as SolanaErrorCode;\n const errorContext = getErrorContext(errorCode, rpcErrorName, rpcErrorContext);\n const err = new SolanaError(errorCode, errorContext);\n safeCaptureStackTrace(err, constructorOpt);\n return err;\n}\n","import {\n SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN,\n} from './codes';\nimport { SolanaError } from './error';\nimport { getSolanaErrorFromRpcError } from './rpc-enum-errors';\n\nconst ORDERED_ERROR_NAMES = [\n // Keep synced with RPC source: https://github.com/anza-xyz/agave/blob/master/sdk/program/src/instruction.rs\n // If this list ever gets too large, consider implementing a compression strategy like this:\n // https://gist.github.com/steveluscher/aaa7cbbb5433b1197983908a40860c47\n 'GenericError',\n 'InvalidArgument',\n 'InvalidInstructionData',\n 'InvalidAccountData',\n 'AccountDataTooSmall',\n 'InsufficientFunds',\n 'IncorrectProgramId',\n 'MissingRequiredSignature',\n 'AccountAlreadyInitialized',\n 'UninitializedAccount',\n 'UnbalancedInstruction',\n 'ModifiedProgramId',\n 'ExternalAccountLamportSpend',\n 'ExternalAccountDataModified',\n 'ReadonlyLamportChange',\n 'ReadonlyDataModified',\n 'DuplicateAccountIndex',\n 'ExecutableModified',\n 'RentEpochModified',\n 'NotEnoughAccountKeys',\n 'AccountDataSizeChanged',\n 'AccountNotExecutable',\n 'AccountBorrowFailed',\n 'AccountBorrowOutstanding',\n 'DuplicateAccountOutOfSync',\n 'Custom',\n 'InvalidError',\n 'ExecutableDataModified',\n 'ExecutableLamportChange',\n 'ExecutableAccountNotRentExempt',\n 'UnsupportedProgramId',\n 'CallDepth',\n 'MissingAccount',\n 'ReentrancyNotAllowed',\n 'MaxSeedLengthExceeded',\n 'InvalidSeeds',\n 'InvalidRealloc',\n 'ComputationalBudgetExceeded',\n 'PrivilegeEscalation',\n 'ProgramEnvironmentSetupFailure',\n 'ProgramFailedToComplete',\n 'ProgramFailedToCompile',\n 'Immutable',\n 'IncorrectAuthority',\n 'BorshIoError',\n 'AccountNotRentExempt',\n 'InvalidAccountOwner',\n 'ArithmeticOverflow',\n 'UnsupportedSysvar',\n 'IllegalOwner',\n 'MaxAccountsDataAllocationsExceeded',\n 'MaxAccountsExceeded',\n 'MaxInstructionTraceLengthExceeded',\n 'BuiltinProgramsMustConsumeComputeUnits',\n];\n\nexport function getSolanaErrorFromInstructionError(\n index: bigint | number,\n instructionError: string | { [key: string]: unknown },\n): SolanaError {\n const numberIndex = Number(index);\n return getSolanaErrorFromRpcError(\n {\n errorCodeBaseOffset: 4615001,\n getErrorContext(errorCode, rpcErrorName, rpcErrorContext) {\n if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN) {\n return {\n errorName: rpcErrorName,\n index: numberIndex,\n ...(rpcErrorContext !== undefined ? { instructionErrorContext: rpcErrorContext } : null),\n };\n } else if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM) {\n return {\n code: Number(rpcErrorContext as bigint | number),\n index: numberIndex,\n };\n } else if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR) {\n return {\n encodedData: rpcErrorContext as string,\n index: numberIndex,\n };\n }\n return { index: numberIndex };\n },\n orderedErrorNames: ORDERED_ERROR_NAMES,\n rpcEnumError: instructionError,\n },\n getSolanaErrorFromInstructionError,\n );\n}\n","import {\n SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION,\n SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT,\n SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED,\n SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN,\n} from './codes';\nimport { SolanaError } from './error';\nimport { getSolanaErrorFromInstructionError } from './instruction-error';\nimport { getSolanaErrorFromRpcError } from './rpc-enum-errors';\n\n/**\n * How to add an error when an entry is added to the RPC `TransactionError` enum:\n *\n * 1. Follow the instructions in `./codes.ts` to add a corresponding Solana error code\n * 2. Add the `TransactionError` enum name in the same order as it appears in `./codes.ts`\n * 3. Add the new error name/code mapping to `./__tests__/transaction-error-test.ts`\n */\nconst ORDERED_ERROR_NAMES = [\n // Keep synced with RPC source: https://github.com/anza-xyz/agave/blob/master/sdk/src/transaction/error.rs\n // If this list ever gets too large, consider implementing a compression strategy like this:\n // https://gist.github.com/steveluscher/aaa7cbbb5433b1197983908a40860c47\n 'AccountInUse',\n 'AccountLoadedTwice',\n 'AccountNotFound',\n 'ProgramAccountNotFound',\n 'InsufficientFundsForFee',\n 'InvalidAccountForFee',\n 'AlreadyProcessed',\n 'BlockhashNotFound',\n // `InstructionError` intentionally omitted; delegated to `getSolanaErrorFromInstructionError`\n 'CallChainTooDeep',\n 'MissingSignatureForFee',\n 'InvalidAccountIndex',\n 'SignatureFailure',\n 'InvalidProgramForExecution',\n 'SanitizeFailure',\n 'ClusterMaintenance',\n 'AccountBorrowOutstanding',\n 'WouldExceedMaxBlockCostLimit',\n 'UnsupportedVersion',\n 'InvalidWritableAccount',\n 'WouldExceedMaxAccountCostLimit',\n 'WouldExceedAccountDataBlockLimit',\n 'TooManyAccountLocks',\n 'AddressLookupTableNotFound',\n 'InvalidAddressLookupTableOwner',\n 'InvalidAddressLookupTableData',\n 'InvalidAddressLookupTableIndex',\n 'InvalidRentPayingAccount',\n 'WouldExceedMaxVoteCostLimit',\n 'WouldExceedAccountDataTotalLimit',\n 'DuplicateInstruction',\n 'InsufficientFundsForRent',\n 'MaxLoadedAccountsDataSizeExceeded',\n 'InvalidLoadedAccountsDataSizeLimit',\n 'ResanitizationNeeded',\n 'ProgramExecutionTemporarilyRestricted',\n 'UnbalancedTransaction',\n];\n\nexport function getSolanaErrorFromTransactionError(transactionError: string | { [key: string]: unknown }): SolanaError {\n if (typeof transactionError === 'object' && 'InstructionError' in transactionError) {\n return getSolanaErrorFromInstructionError(\n ...(transactionError.InstructionError as Parameters<typeof getSolanaErrorFromInstructionError>),\n );\n }\n return getSolanaErrorFromRpcError(\n {\n errorCodeBaseOffset: 7050001,\n getErrorContext(errorCode, rpcErrorName, rpcErrorContext) {\n if (errorCode === SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN) {\n return {\n errorName: rpcErrorName,\n ...(rpcErrorContext !== undefined ? { transactionErrorContext: rpcErrorContext } : null),\n };\n } else if (errorCode === SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION) {\n return {\n index: Number(rpcErrorContext as bigint | number),\n };\n } else if (\n errorCode === SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT ||\n errorCode === SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED\n ) {\n return {\n accountIndex: Number((rpcErrorContext as { account_index: bigint | number }).account_index),\n };\n }\n },\n orderedErrorNames: ORDERED_ERROR_NAMES,\n rpcEnumError: transactionError,\n },\n getSolanaErrorFromTransactionError,\n );\n}\n","import {\n SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR,\n SOLANA_ERROR__JSON_RPC__INVALID_PARAMS,\n SOLANA_ERROR__JSON_RPC__INVALID_REQUEST,\n SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND,\n SOLANA_ERROR__JSON_RPC__PARSE_ERROR,\n SOLANA_ERROR__JSON_RPC__SCAN_ERROR,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION,\n SolanaErrorCode,\n} from './codes';\nimport { SolanaErrorContext } from './context';\nimport { SolanaError } from './error';\nimport { safeCaptureStackTrace } from './stack-trace';\nimport { getSolanaErrorFromTransactionError } from './transaction-error';\n\ninterface RpcErrorResponse {\n code: bigint | number;\n data?: unknown;\n message: string;\n}\n\ntype TransactionError = string | { [key: string]: unknown };\n\n// Keep in sync with https://github.com/anza-xyz/agave/blob/master/rpc-client-api/src/response.rs\nexport interface RpcSimulateTransactionResult {\n accounts:\n | ({\n data:\n | string // LegacyBinary\n | {\n // Json\n parsed: unknown;\n program: string;\n space: number;\n }\n // Binary\n | [encodedBytes: string, encoding: 'base58' | 'base64' | 'base64+zstd' | 'binary' | 'jsonParsed'];\n executable: boolean;\n lamports: number;\n owner: string;\n rentEpoch: number;\n space?: number;\n } | null)[]\n | null;\n err: TransactionError | null;\n // Enabled by `enable_cpi_recording`\n innerInstructions?:\n | {\n index: number;\n instructions: (\n | {\n // Compiled\n accounts: number[];\n data: string;\n programIdIndex: number;\n stackHeight?: number;\n }\n | {\n // Parsed\n parsed: unknown;\n program: string;\n programId: string;\n stackHeight?: number;\n }\n | {\n // PartiallyDecoded\n accounts: string[];\n data: string;\n programId: string;\n stackHeight?: number;\n }\n )[];\n }[]\n | null;\n logs: string[] | null;\n returnData: {\n data: [string, 'base64'];\n programId: string;\n } | null;\n unitsConsumed: number | null;\n}\n\nexport function getSolanaErrorFromJsonRpcError({ code: rawCode, data, message }: RpcErrorResponse): SolanaError {\n let out: SolanaError;\n const code = Number(rawCode);\n if (code === SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE) {\n const { err, ...preflightErrorContext } = data as RpcSimulateTransactionResult;\n const causeObject = err ? { cause: getSolanaErrorFromTransactionError(err) } : null;\n out = new SolanaError(SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE, {\n ...preflightErrorContext,\n ...causeObject,\n });\n } else {\n let errorContext;\n switch (code) {\n case SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR:\n case SOLANA_ERROR__JSON_RPC__INVALID_PARAMS:\n case SOLANA_ERROR__JSON_RPC__INVALID_REQUEST:\n case SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND:\n case SOLANA_ERROR__JSON_RPC__PARSE_ERROR:\n case SOLANA_ERROR__JSON_RPC__SCAN_ERROR:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION:\n // The server supplies no structured data, but rather a pre-formatted message. Put\n // the server message in `context` so as not to completely lose the data. The long\n // term fix for this is to add data to the server responses and modify the\n // messages in `@solana/errors` to be actual format strings.\n errorContext = { __serverMessage: message };\n break;\n default:\n if (typeof data === 'object' && !Array.isArray(data)) {\n errorContext = data;\n }\n }\n out = new SolanaError(code as SolanaErrorCode, errorContext as SolanaErrorContext[SolanaErrorCode]);\n }\n safeCaptureStackTrace(out, getSolanaErrorFromJsonRpcError);\n return out;\n}\n","import { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Concatenates an array of `Uint8Array`s into a single `Uint8Array`.\n * Reuses the original byte array when applicable.\n */\nexport const mergeBytes = (byteArrays: Uint8Array[]): Uint8Array => {\n const nonEmptyByteArrays = byteArrays.filter(arr => arr.length);\n if (nonEmptyByteArrays.length === 0) {\n return byteArrays.length ? byteArrays[0] : new Uint8Array();\n }\n\n if (nonEmptyByteArrays.length === 1) {\n return nonEmptyByteArrays[0];\n }\n\n const totalLength = nonEmptyByteArrays.reduce((total, arr) => total + arr.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n nonEmptyByteArrays.forEach(arr => {\n result.set(arr, offset);\n offset += arr.length;\n });\n return result;\n};\n\n/**\n * Pads a `Uint8Array` with zeroes to the specified length.\n * If the array is longer than the specified length, it is returned as-is.\n */\nexport const padBytes = (bytes: ReadonlyUint8Array | Uint8Array, length: number): ReadonlyUint8Array | Uint8Array => {\n if (bytes.length >= length) return bytes;\n const paddedBytes = new Uint8Array(length).fill(0);\n paddedBytes.set(bytes);\n return paddedBytes;\n};\n\n/**\n * Fixes a `Uint8Array` to the specified length.\n * If the array is longer than the specified length, it is truncated.\n * If the array is shorter than the specified length, it is padded with zeroes.\n */\nexport const fixBytes = (bytes: ReadonlyUint8Array | Uint8Array, length: number): ReadonlyUint8Array | Uint8Array =>\n padBytes(bytes.length <= length ? bytes : bytes.slice(0, length), length);\n\n/**\n * Returns true if and only if the provided `data` byte array contains\n * the provided `bytes` byte array at the specified `offset`.\n */\nexport function containsBytes(\n data: ReadonlyUint8Array | Uint8Array,\n bytes: ReadonlyUint8Array | Uint8Array,\n offset: number,\n): boolean {\n const slice = offset === 0 && data.length === bytes.length ? data : data.slice(offset, offset + bytes.length);\n if (slice.length !== bytes.length) return false;\n return bytes.every((b, i) => b === slice[i]);\n}\n","import {\n SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH,\n SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH,\n SolanaError,\n} from '@solana/errors';\n\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Defines an offset in bytes.\n */\nexport type Offset = number;\n\ntype BaseEncoder<TFrom> = {\n /** Encode the provided value and return the encoded bytes directly. */\n readonly encode: (value: TFrom) => ReadonlyUint8Array;\n /**\n * Writes the encoded value into the provided byte array at the given offset.\n * Returns the offset of the next byte after the encoded value.\n */\n readonly write: (value: TFrom, bytes: Uint8Array, offset: Offset) => Offset;\n};\n\nexport type FixedSizeEncoder<TFrom, TSize extends number = number> = BaseEncoder<TFrom> & {\n /** The fixed size of the encoded value in bytes. */\n readonly fixedSize: TSize;\n};\n\nexport type VariableSizeEncoder<TFrom> = BaseEncoder<TFrom> & {\n /** The total size of the encoded value in bytes. */\n readonly getSizeFromValue: (value: TFrom) => number;\n /** The maximum size an encoded value can be in bytes, if applicable. */\n readonly maxSize?: number;\n};\n\n/**\n * An object that can encode a value to a `Uint8Array`.\n */\nexport type Encoder<TFrom> = FixedSizeEncoder<TFrom> | VariableSizeEncoder<TFrom>;\n\ntype BaseDecoder<TTo> = {\n /** Decodes the provided byte array at the given offset (or zero) and returns the value directly. */\n readonly decode: (bytes: ReadonlyUint8Array | Uint8Array, offset?: Offset) => TTo;\n /**\n * Reads the encoded value from the provided byte array at the given offset.\n * Returns the decoded value and the offset of the next byte after the encoded value.\n */\n readonly read: (bytes: ReadonlyUint8Array | Uint8Array, offset: Offset) => [TTo, Offset];\n};\n\nexport type FixedSizeDecoder<TTo, TSize extends number = number> = BaseDecoder<TTo> & {\n /** The fixed size of the encoded value in bytes. */\n readonly fixedSize: TSize;\n};\n\nexport type VariableSizeDecoder<TTo> = BaseDecoder<TTo> & {\n /** The maximum size an encoded value can be in bytes, if applicable. */\n readonly maxSize?: number;\n};\n\n/**\n * An object that can decode a value from a `Uint8Array`.\n */\nexport type Decoder<TTo> = FixedSizeDecoder<TTo> | VariableSizeDecoder<TTo>;\n\nexport type FixedSizeCodec<TFrom, TTo extends TFrom = TFrom, TSize extends number = number> = FixedSizeDecoder<\n TTo,\n TSize\n> &\n FixedSizeEncoder<TFrom, TSize>;\n\nexport type VariableSizeCodec<TFrom, TTo extends TFrom = TFrom> = VariableSizeDecoder<TTo> & VariableSizeEncoder<TFrom>;\n\n/**\n * An object that can encode and decode a value to and from a `Uint8Array`.\n * It supports encoding looser types than it decodes for convenience.\n * For example, a `bigint` encoder will always decode to a `bigint`\n * but can be used to encode a `number`.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value. Defaults to `TFrom`.\n */\nexport type Codec<TFrom, TTo extends TFrom = TFrom> = FixedSizeCodec<TFrom, TTo> | VariableSizeCodec<TFrom, TTo>;\n\n/**\n * Get the encoded size of a given value in bytes.\n */\nexport function getEncodedSize<TFrom>(\n value: TFrom,\n encoder: { fixedSize: number } | { getSizeFromValue: (value: TFrom) => number },\n): number {\n return 'fixedSize' in encoder ? encoder.fixedSize : encoder.getSizeFromValue(value);\n}\n\n/** Fills the missing `encode` function using the existing `write` function. */\nexport function createEncoder<TFrom, TSize extends number>(\n encoder: Omit<FixedSizeEncoder<TFrom, TSize>, 'encode'>,\n): FixedSizeEncoder<TFrom, TSize>;\nexport function createEncoder<TFrom>(encoder: Omit<VariableSizeEncoder<TFrom>, 'encode'>): VariableSizeEncoder<TFrom>;\nexport function createEncoder<TFrom>(\n encoder: Omit<FixedSizeEncoder<TFrom>, 'encode'> | Omit<VariableSizeEncoder<TFrom>, 'encode'>,\n): Encoder<TFrom>;\nexport function createEncoder<TFrom>(\n encoder: Omit<FixedSizeEncoder<TFrom>, 'encode'> | Omit<VariableSizeEncoder<TFrom>, 'encode'>,\n): Encoder<TFrom> {\n return Object.freeze({\n ...encoder,\n encode: value => {\n const bytes = new Uint8Array(getEncodedSize(value, encoder));\n encoder.write(value, bytes, 0);\n return bytes;\n },\n });\n}\n\n/** Fills the missing `decode` function using the existing `read` function. */\nexport function createDecoder<TTo, TSize extends number>(\n decoder: Omit<FixedSizeDecoder<TTo, TSize>, 'decode'>,\n): FixedSizeDecoder<TTo, TSize>;\nexport function createDecoder<TTo>(decoder: Omit<VariableSizeDecoder<TTo>, 'decode'>): VariableSizeDecoder<TTo>;\nexport function createDecoder<TTo>(\n decoder: Omit<FixedSizeDecoder<TTo>, 'decode'> | Omit<VariableSizeDecoder<TTo>, 'decode'>,\n): Decoder<TTo>;\nexport function createDecoder<TTo>(\n decoder: Omit<FixedSizeDecoder<TTo>, 'decode'> | Omit<VariableSizeDecoder<TTo>, 'decode'>,\n): Decoder<TTo> {\n return Object.freeze({\n ...decoder,\n decode: (bytes, offset = 0) => decoder.read(bytes, offset)[0],\n });\n}\n\n/** Fills the missing `encode` and `decode` function using the existing `write` and `read` functions. */\nexport function createCodec<TFrom, TTo extends TFrom = TFrom, TSize extends number = number>(\n codec: Omit<FixedSizeCodec<TFrom, TTo, TSize>, 'decode' | 'encode'>,\n): FixedSizeCodec<TFrom, TTo, TSize>;\nexport function createCodec<TFrom, TTo extends TFrom = TFrom>(\n codec: Omit<VariableSizeCodec<TFrom, TTo>, 'decode' | 'encode'>,\n): VariableSizeCodec<TFrom, TTo>;\nexport function createCodec<TFrom, TTo extends TFrom = TFrom>(\n codec:\n | Omit<FixedSizeCodec<TFrom, TTo>, 'decode' | 'encode'>\n | Omit<VariableSizeCodec<TFrom, TTo>, 'decode' | 'encode'>,\n): Codec<TFrom, TTo>;\nexport function createCodec<TFrom, TTo extends TFrom = TFrom>(\n codec:\n | Omit<FixedSizeCodec<TFrom, TTo>, 'decode' | 'encode'>\n | Omit<VariableSizeCodec<TFrom, TTo>, 'decode' | 'encode'>,\n): Codec<TFrom, TTo> {\n return Object.freeze({\n ...codec,\n decode: (bytes, offset = 0) => codec.read(bytes, offset)[0],\n encode: value => {\n const bytes = new Uint8Array(getEncodedSize(value, codec));\n codec.write(value, bytes, 0);\n return bytes;\n },\n });\n}\n\nexport function isFixedSize<TFrom, TSize extends number>(\n encoder: FixedSizeEncoder<TFrom, TSize> | VariableSizeEncoder<TFrom>,\n): encoder is FixedSizeEncoder<TFrom, TSize>;\nexport function isFixedSize<TTo, TSize extends number>(\n decoder: FixedSizeDecoder<TTo, TSize> | VariableSizeDecoder<TTo>,\n): decoder is FixedSizeDecoder<TTo, TSize>;\nexport function isFixedSize<TFrom, TTo extends TFrom, TSize extends number>(\n codec: FixedSizeCodec<TFrom, TTo, TSize> | VariableSizeCodec<TFrom, TTo>,\n): codec is FixedSizeCodec<TFrom, TTo, TSize>;\nexport function isFixedSize<TSize extends number>(\n codec: { fixedSize: TSize } | { maxSize?: number },\n): codec is { fixedSize: TSize };\nexport function isFixedSize(codec: { fixedSize: number } | { maxSize?: number }): codec is { fixedSize: number } {\n return 'fixedSize' in codec && typeof codec.fixedSize === 'number';\n}\n\nexport function assertIsFixedSize<TFrom, TSize extends number>(\n encoder: FixedSizeEncoder<TFrom, TSize> | VariableSizeEncoder<TFrom>,\n): asserts encoder is FixedSizeEncoder<TFrom, TSize>;\nexport function assertIsFixedSize<TTo, TSize extends number>(\n decoder: FixedSizeDecoder<TTo, TSize> | VariableSizeDecoder<TTo>,\n): asserts decoder is FixedSizeDecoder<TTo, TSize>;\nexport function assertIsFixedSize<TFrom, TTo extends TFrom, TSize extends number>(\n codec: FixedSizeCodec<TFrom, TTo, TSize> | VariableSizeCodec<TFrom, TTo>,\n): asserts codec is FixedSizeCodec<TFrom, TTo, TSize>;\nexport function assertIsFixedSize<TSize extends number>(\n codec: { fixedSize: TSize } | { maxSize?: number },\n): asserts codec is { fixedSize: TSize };\nexport function assertIsFixedSize(\n codec: { fixedSize: number } | { maxSize?: number },\n): asserts codec is { fixedSize: number } {\n if (!isFixedSize(codec)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH);\n }\n}\n\nexport function isVariableSize<TFrom>(encoder: Encoder<TFrom>): encoder is VariableSizeEncoder<TFrom>;\nexport function isVariableSize<TTo>(decoder: Decoder<TTo>): decoder is VariableSizeDecoder<TTo>;\nexport function isVariableSize<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n): codec is VariableSizeCodec<TFrom, TTo>;\nexport function isVariableSize(codec: { fixedSize: number } | { maxSize?: number }): codec is { maxSize?: number };\nexport function isVariableSize(codec: { fixedSize: number } | { maxSize?: number }): codec is { maxSize?: number } {\n return !isFixedSize(codec);\n}\n\nexport function assertIsVariableSize<T>(encoder: Encoder<T>): asserts encoder is VariableSizeEncoder<T>;\nexport function assertIsVariableSize<T>(decoder: Decoder<T>): asserts decoder is VariableSizeDecoder<T>;\nexport function assertIsVariableSize<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n): asserts codec is VariableSizeCodec<TFrom, TTo>;\nexport function assertIsVariableSize(\n codec: { fixedSize: number } | { maxSize?: number },\n): asserts codec is { maxSize?: number };\nexport function assertIsVariableSize(\n codec: { fixedSize: number } | { maxSize?: number },\n): asserts codec is { maxSize?: number } {\n if (!isVariableSize(codec)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH);\n }\n}\n","import {\n SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH,\n SolanaError,\n} from '@solana/errors';\n\nimport {\n Codec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isFixedSize,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from './codec';\n\n/**\n * Combines an encoder and a decoder into a codec.\n * The encoder and decoder must have the same fixed size, max size and description.\n * If a description is provided, it will override the encoder and decoder descriptions.\n */\nexport function combineCodec<TFrom, TTo extends TFrom, TSize extends number>(\n encoder: FixedSizeEncoder<TFrom, TSize>,\n decoder: FixedSizeDecoder<TTo, TSize>,\n): FixedSizeCodec<TFrom, TTo, TSize>;\nexport function combineCodec<TFrom, TTo extends TFrom>(\n encoder: VariableSizeEncoder<TFrom>,\n decoder: VariableSizeDecoder<TTo>,\n): VariableSizeCodec<TFrom, TTo>;\nexport function combineCodec<TFrom, TTo extends TFrom>(\n encoder: Encoder<TFrom>,\n decoder: Decoder<TTo>,\n): Codec<TFrom, TTo>;\nexport function combineCodec<TFrom, TTo extends TFrom>(\n encoder: Encoder<TFrom>,\n decoder: Decoder<TTo>,\n): Codec<TFrom, TTo> {\n if (isFixedSize(encoder) !== isFixedSize(decoder)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH);\n }\n\n if (isFixedSize(encoder) && isFixedSize(decoder) && encoder.fixedSize !== decoder.fixedSize) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH, {\n decoderFixedSize: decoder.fixedSize,\n encoderFixedSize: encoder.fixedSize,\n });\n }\n\n if (!isFixedSize(encoder) && !isFixedSize(decoder) && encoder.maxSize !== decoder.maxSize) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH, {\n decoderMaxSize: decoder.maxSize,\n encoderMaxSize: encoder.maxSize,\n });\n }\n\n return {\n ...decoder,\n ...encoder,\n decode: decoder.decode,\n encode: encoder.encode,\n read: decoder.read,\n write: encoder.write,\n };\n}\n","import {\n SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL,\n SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES,\n SolanaError,\n} from '@solana/errors';\n\nimport { containsBytes } from './bytes';\nimport {\n Codec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isFixedSize,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from './codec';\nimport { combineCodec } from './combine-codec';\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Creates an encoder that writes a `Uint8Array` sentinel after the encoded value.\n * This is useful to delimit the encoded value when being read by a decoder.\n *\n * Note that, if the sentinel is found in the encoded value, an error is thrown.\n */\nexport function addEncoderSentinel<TFrom>(\n encoder: FixedSizeEncoder<TFrom>,\n sentinel: ReadonlyUint8Array,\n): FixedSizeEncoder<TFrom>;\nexport function addEncoderSentinel<TFrom>(\n encoder: Encoder<TFrom>,\n sentinel: ReadonlyUint8Array,\n): VariableSizeEncoder<TFrom>;\nexport function addEncoderSentinel<TFrom>(encoder: Encoder<TFrom>, sentinel: ReadonlyUint8Array): Encoder<TFrom> {\n const write = ((value, bytes, offset) => {\n // Here we exceptionally use the `encode` function instead of the `write`\n // function to contain the content of the encoder within its own bounds\n // and to avoid writing the sentinel as part of the encoded value.\n const encoderBytes = encoder.encode(value);\n if (findSentinelIndex(encoderBytes, sentinel) >= 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL, {\n encodedBytes: encoderBytes,\n hexEncodedBytes: hexBytes(encoderBytes),\n hexSentinel: hexBytes(sentinel),\n sentinel,\n });\n }\n bytes.set(encoderBytes, offset);\n offset += encoderBytes.length;\n bytes.set(sentinel, offset);\n offset += sentinel.length;\n return offset;\n }) as Encoder<TFrom>['write'];\n\n if (isFixedSize(encoder)) {\n return createEncoder({ ...encoder, fixedSize: encoder.fixedSize + sentinel.length, write });\n }\n\n return createEncoder({\n ...encoder,\n ...(encoder.maxSize != null ? { maxSize: encoder.maxSize + sentinel.length } : {}),\n getSizeFromValue: value => encoder.getSizeFromValue(value) + sentinel.length,\n write,\n });\n}\n\n/**\n * Creates a decoder that continues reading until a `Uint8Array` sentinel is found.\n *\n * If the sentinel is not found in the byte array to decode, an error is thrown.\n */\nexport function addDecoderSentinel<TTo>(\n decoder: FixedSizeDecoder<TTo>,\n sentinel: ReadonlyUint8Array,\n): FixedSizeDecoder<TTo>;\nexport function addDecoderSentinel<TTo>(decoder: Decoder<TTo>, sentinel: ReadonlyUint8Array): VariableSizeDecoder<TTo>;\nexport function addDecoderSentinel<TTo>(decoder: Decoder<TTo>, sentinel: ReadonlyUint8Array): Decoder<TTo> {\n const read = ((bytes, offset) => {\n const candidateBytes = offset === 0 ? bytes : bytes.slice(offset);\n const sentinelIndex = findSentinelIndex(candidateBytes, sentinel);\n if (sentinelIndex === -1) {\n throw new SolanaError(SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES, {\n decodedBytes: candidateBytes,\n hexDecodedBytes: hexBytes(candidateBytes),\n hexSentinel: hexBytes(sentinel),\n sentinel,\n });\n }\n const preSentinelBytes = candidateBytes.slice(0, sentinelIndex);\n // Here we exceptionally use the `decode` function instead of the `read`\n // function to contain the content of the decoder within its own bounds\n // and ensure that the sentinel is not part of the decoded value.\n return [decoder.decode(preSentinelBytes), offset + preSentinelBytes.length + sentinel.length];\n }) as Decoder<TTo>['read'];\n\n if (isFixedSize(decoder)) {\n return createDecoder({ ...decoder, fixedSize: decoder.fixedSize + sentinel.length, read });\n }\n\n return createDecoder({\n ...decoder,\n ...(decoder.maxSize != null ? { maxSize: decoder.maxSize + sentinel.length } : {}),\n read,\n });\n}\n\n/**\n * Creates a Codec that writes a `Uint8Array` sentinel after the encoded\n * value and, when decoding, continues reading until the sentinel is found.\n *\n * Note that, if the sentinel is found in the encoded value\n * or not found in the byte array to decode, an error is thrown.\n */\nexport function addCodecSentinel<TFrom, TTo extends TFrom>(\n codec: FixedSizeCodec<TFrom, TTo>,\n sentinel: ReadonlyUint8Array,\n): FixedSizeCodec<TFrom, TTo>;\nexport function addCodecSentinel<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n sentinel: ReadonlyUint8Array,\n): VariableSizeCodec<TFrom, TTo>;\nexport function addCodecSentinel<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n sentinel: ReadonlyUint8Array,\n): Codec<TFrom, TTo> {\n return combineCodec(addEncoderSentinel(codec, sentinel), addDecoderSentinel(codec, sentinel));\n}\n\nfunction findSentinelIndex(bytes: ReadonlyUint8Array, sentinel: ReadonlyUint8Array) {\n return bytes.findIndex((byte, index, arr) => {\n if (sentinel.length === 1) return byte === sentinel[0];\n return containsBytes(arr, sentinel, index);\n });\n}\n\nfunction hexBytes(bytes: ReadonlyUint8Array): string {\n return bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n","import {\n SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY,\n SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE,\n SolanaError,\n} from '@solana/errors';\n\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Asserts that a given byte array is not empty.\n */\nexport function assertByteArrayIsNotEmptyForCodec(\n codecDescription: string,\n bytes: ReadonlyUint8Array | Uint8Array,\n offset = 0,\n) {\n if (bytes.length - offset <= 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY, {\n codecDescription,\n });\n }\n}\n\n/**\n * Asserts that a given byte array has enough bytes to decode.\n */\nexport function assertByteArrayHasEnoughBytesForCodec(\n codecDescription: string,\n expected: number,\n bytes: ReadonlyUint8Array | Uint8Array,\n offset = 0,\n) {\n const bytesLength = bytes.length - offset;\n if (bytesLength < expected) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, {\n bytesLength,\n codecDescription,\n expected,\n });\n }\n}\n\n/**\n * Asserts that a given offset is within the byte array bounds.\n * This range is between 0 and the byte array length and is inclusive.\n * An offset equals to the byte array length is considered a valid offset\n * as it allows the post-offset of codecs to signal the end of the byte array.\n */\nexport function assertByteArrayOffsetIsNotOutOfRange(codecDescription: string, offset: number, bytesLength: number) {\n if (offset < 0 || offset > bytesLength) {\n throw new SolanaError(SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE, {\n bytesLength,\n codecDescription,\n offset,\n });\n }\n}\n","import { assertByteArrayHasEnoughBytesForCodec } from './assertions';\nimport {\n Codec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n getEncodedSize,\n isFixedSize,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from './codec';\nimport { combineCodec } from './combine-codec';\n\ntype NumberEncoder = Encoder<bigint | number> | Encoder<number>;\ntype FixedSizeNumberEncoder<TSize extends number = number> =\n | FixedSizeEncoder<bigint | number, TSize>\n | FixedSizeEncoder<number, TSize>;\ntype NumberDecoder = Decoder<bigint> | Decoder<number>;\ntype FixedSizeNumberDecoder<TSize extends number = number> =\n | FixedSizeDecoder<bigint, TSize>\n | FixedSizeDecoder<number, TSize>;\ntype NumberCodec = Codec<bigint | number, bigint> | Codec<number>;\ntype FixedSizeNumberCodec<TSize extends number = number> =\n | FixedSizeCodec<bigint | number, bigint, TSize>\n | FixedSizeCodec<number, number, TSize>;\n\n/**\n * Stores the size of the `encoder` in bytes as a prefix using the `prefix` encoder.\n */\nexport function addEncoderSizePrefix<TFrom>(\n encoder: FixedSizeEncoder<TFrom>,\n prefix: FixedSizeNumberEncoder,\n): FixedSizeEncoder<TFrom>;\nexport function addEncoderSizePrefix<TFrom>(encoder: Encoder<TFrom>, prefix: NumberEncoder): VariableSizeEncoder<TFrom>;\nexport function addEncoderSizePrefix<TFrom>(encoder: Encoder<TFrom>, prefix: NumberEncoder): Encoder<TFrom> {\n const write = ((value, bytes, offset) => {\n // Here we exceptionally use the `encode` function instead of the `write`\n // function to contain the content of the encoder within its own bounds.\n const encoderBytes = encoder.encode(value);\n offset = prefix.write(encoderBytes.length, bytes, offset);\n bytes.set(encoderBytes, offset);\n return offset + encoderBytes.length;\n }) as Encoder<TFrom>['write'];\n\n if (isFixedSize(prefix) && isFixedSize(encoder)) {\n return createEncoder({ ...encoder, fixedSize: prefix.fixedSize + encoder.fixedSize, write });\n }\n\n const prefixMaxSize = isFixedSize(prefix) ? prefix.fixedSize : (prefix.maxSize ?? null);\n const encoderMaxSize = isFixedSize(encoder) ? encoder.fixedSize : (encoder.maxSize ?? null);\n const maxSize = prefixMaxSize !== null && encoderMaxSize !== null ? prefixMaxSize + encoderMaxSize : null;\n\n return createEncoder({\n ...encoder,\n ...(maxSize !== null ? { maxSize } : {}),\n getSizeFromValue: value => {\n const encoderSize = getEncodedSize(value, encoder);\n return getEncodedSize(encoderSize, prefix) + encoderSize;\n },\n write,\n });\n}\n\n/**\n * Bounds the size of the `decoder` by reading the `prefix` encoder prefix.\n */\nexport function addDecoderSizePrefix<TTo>(\n decoder: FixedSizeDecoder<TTo>,\n prefix: FixedSizeNumberDecoder,\n): FixedSizeDecoder<TTo>;\nexport function addDecoderSizePrefix<TTo>(decoder: Decoder<TTo>, prefix: NumberDecoder): VariableSizeDecoder<TTo>;\nexport function addDecoderSizePrefix<TTo>(decoder: Decoder<TTo>, prefix: NumberDecoder): Decoder<TTo> {\n const read = ((bytes, offset) => {\n const [bigintSize, decoderOffset] = prefix.read(bytes, offset);\n const size = Number(bigintSize);\n offset = decoderOffset;\n // Slice the byte array to the contained size if necessary.\n if (offset > 0 || bytes.length > size) {\n bytes = bytes.slice(offset, offset + size);\n }\n assertByteArrayHasEnoughBytesForCodec('addDecoderSizePrefix', size, bytes);\n // Here we exceptionally use the `decode` function instead of the `read`\n // function to contain the content of the decoder within its own bounds.\n return [decoder.decode(bytes), offset + size];\n }) as Decoder<TTo>['read'];\n\n if (isFixedSize(prefix) && isFixedSize(decoder)) {\n return createDecoder({ ...decoder, fixedSize: prefix.fixedSize + decoder.fixedSize, read });\n }\n\n const prefixMaxSize = isFixedSize(prefix) ? prefix.fixedSize : (prefix.maxSize ?? null);\n const decoderMaxSize = isFixedSize(decoder) ? decoder.fixedSize : (decoder.maxSize ?? null);\n const maxSize = prefixMaxSize !== null && decoderMaxSize !== null ? prefixMaxSize + decoderMaxSize : null;\n return createDecoder({ ...decoder, ...(maxSize !== null ? { maxSize } : {}), read });\n}\n\n/**\n * Bounds the size of the `codec` using the provided `prefix` codec prefix.\n */\nexport function addCodecSizePrefix<TFrom, TTo extends TFrom>(\n codec: FixedSizeCodec<TFrom, TTo>,\n prefix: FixedSizeNumberCodec,\n): FixedSizeCodec<TFrom, TTo>;\nexport function addCodecSizePrefix<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n prefix: NumberCodec,\n): VariableSizeCodec<TFrom, TTo>;\nexport function addCodecSizePrefix<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n prefix: NumberCodec,\n): Codec<TFrom, TTo> {\n return combineCodec(addEncoderSizePrefix(codec, prefix), addDecoderSizePrefix(codec, prefix));\n}\n","import { assertByteArrayHasEnoughBytesForCodec } from './assertions';\nimport { fixBytes } from './bytes';\nimport {\n Codec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isFixedSize,\n Offset,\n} from './codec';\nimport { combineCodec } from './combine-codec';\n\n/**\n * Creates a fixed-size encoder from a given encoder.\n *\n * @param encoder - The encoder to wrap into a fixed-size encoder.\n * @param fixedBytes - The fixed number of bytes to write.\n */\nexport function fixEncoderSize<TFrom, TSize extends number>(\n encoder: Encoder<TFrom>,\n fixedBytes: TSize,\n): FixedSizeEncoder<TFrom, TSize> {\n return createEncoder({\n fixedSize: fixedBytes,\n write: (value: TFrom, bytes: Uint8Array, offset: Offset) => {\n // Here we exceptionally use the `encode` function instead of the `write`\n // function as using the nested `write` function on a fixed-sized byte\n // array may result in a out-of-bounds error on the nested encoder.\n const variableByteArray = encoder.encode(value);\n const fixedByteArray =\n variableByteArray.length > fixedBytes ? variableByteArray.slice(0, fixedBytes) : variableByteArray;\n bytes.set(fixedByteArray, offset);\n return offset + fixedBytes;\n },\n });\n}\n\n/**\n * Creates a fixed-size decoder from a given decoder.\n *\n * @param decoder - The decoder to wrap into a fixed-size decoder.\n * @param fixedBytes - The fixed number of bytes to read.\n */\nexport function fixDecoderSize<TTo, TSize extends number>(\n decoder: Decoder<TTo>,\n fixedBytes: TSize,\n): FixedSizeDecoder<TTo, TSize> {\n return createDecoder({\n fixedSize: fixedBytes,\n read: (bytes, offset) => {\n assertByteArrayHasEnoughBytesForCodec('fixCodecSize', fixedBytes, bytes, offset);\n // Slice the byte array to the fixed size if necessary.\n if (offset > 0 || bytes.length > fixedBytes) {\n bytes = bytes.slice(offset, offset + fixedBytes);\n }\n // If the nested decoder is fixed-size, pad and truncate the byte array accordingly.\n if (isFixedSize(decoder)) {\n bytes = fixBytes(bytes, decoder.fixedSize);\n }\n // Decode the value using the nested decoder.\n const [value] = decoder.read(bytes, 0);\n return [value, offset + fixedBytes];\n },\n });\n}\n\n/**\n * Creates a fixed-size codec from a given codec.\n *\n * @param codec - The codec to wrap into a fixed-size codec.\n * @param fixedBytes - The fixed number of bytes to read/write.\n */\nexport function fixCodecSize<TFrom, TTo extends TFrom, TSize extends number>(\n codec: Codec<TFrom, TTo>,\n fixedBytes: TSize,\n): FixedSizeCodec<TFrom, TTo, TSize> {\n return combineCodec(fixEncoderSize(codec, fixedBytes), fixDecoderSize(codec, fixedBytes));\n}\n","import { assertByteArrayOffsetIsNotOutOfRange } from './assertions';\nimport { Codec, createDecoder, createEncoder, Decoder, Encoder, Offset } from './codec';\nimport { combineCodec } from './combine-codec';\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyEncoder = Encoder<any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyDecoder = Decoder<any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyCodec = Codec<any>;\n\ntype OffsetConfig = {\n postOffset?: PostOffsetFunction;\n preOffset?: PreOffsetFunction;\n};\n\ntype PreOffsetFunctionScope = {\n /** The entire byte array. */\n bytes: ReadonlyUint8Array | Uint8Array;\n /** The original offset prior to encode or decode. */\n preOffset: Offset;\n /** Wraps the offset to the byte array length. */\n wrapBytes: (offset: Offset) => Offset;\n};\n\ntype PreOffsetFunction = (scope: PreOffsetFunctionScope) => Offset;\ntype PostOffsetFunction = (\n scope: PreOffsetFunctionScope & {\n /** The modified offset used to encode or decode. */\n newPreOffset: Offset;\n /** The original offset returned by the encoder or decoder. */\n postOffset: Offset;\n },\n) => Offset;\n\n/**\n * Moves the offset of a given encoder.\n */\nexport function offsetEncoder<TEncoder extends AnyEncoder>(encoder: TEncoder, config: OffsetConfig): TEncoder {\n return createEncoder({\n ...encoder,\n write: (value, bytes, preOffset) => {\n const wrapBytes = (offset: Offset) => modulo(offset, bytes.length);\n const newPreOffset = config.preOffset ? config.preOffset({ bytes, preOffset, wrapBytes }) : preOffset;\n assertByteArrayOffsetIsNotOutOfRange('offsetEncoder', newPreOffset, bytes.length);\n const postOffset = encoder.write(value, bytes, newPreOffset);\n const newPostOffset = config.postOffset\n ? config.postOffset({ bytes, newPreOffset, postOffset, preOffset, wrapBytes })\n : postOffset;\n assertByteArrayOffsetIsNotOutOfRange('offsetEncoder', newPostOffset, bytes.length);\n return newPostOffset;\n },\n }) as TEncoder;\n}\n\n/**\n * Moves the offset of a given decoder.\n */\nexport function offsetDecoder<TDecoder extends AnyDecoder>(decoder: TDecoder, config: OffsetConfig): TDecoder {\n return createDecoder({\n ...decoder,\n read: (bytes, preOffset) => {\n const wrapBytes = (offset: Offset) => modulo(offset, bytes.length);\n const newPreOffset = config.preOffset ? config.preOffset({ bytes, preOffset, wrapBytes }) : preOffset;\n assertByteArrayOffsetIsNotOutOfRange('offsetDecoder', newPreOffset, bytes.length);\n const [value, postOffset] = decoder.read(bytes, newPreOffset);\n const newPostOffset = config.postOffset\n ? config.postOffset({ bytes, newPreOffset, postOffset, preOffset, wrapBytes })\n : postOffset;\n assertByteArrayOffsetIsNotOutOfRange('offsetDecoder', newPostOffset, bytes.length);\n return [value, newPostOffset];\n },\n }) as TDecoder;\n}\n\n/**\n * Moves the offset of a given codec.\n */\nexport function offsetCodec<TCodec extends AnyCodec>(codec: TCodec, config: OffsetConfig): TCodec {\n return combineCodec(offsetEncoder(codec, config), offsetDecoder(codec, config)) as TCodec;\n}\n\n/** A modulo function that handles negative dividends and zero divisors. */\nfunction modulo(dividend: number, divisor: number) {\n if (divisor === 0) return 0;\n return ((dividend % divisor) + divisor) % divisor;\n}\n","import { SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, SolanaError } from '@solana/errors';\n\nimport {\n Codec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isFixedSize,\n} from './codec';\nimport { combineCodec } from './combine-codec';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyEncoder = Encoder<any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyDecoder = Decoder<any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyCodec = Codec<any>;\n\n/**\n * Updates the size of a given encoder.\n */\nexport function resizeEncoder<TFrom, TSize extends number, TNewSize extends number>(\n encoder: FixedSizeEncoder<TFrom, TSize>,\n resize: (size: TSize) => TNewSize,\n): FixedSizeEncoder<TFrom, TNewSize>;\nexport function resizeEncoder<TEncoder extends AnyEncoder>(\n encoder: TEncoder,\n resize: (size: number) => number,\n): TEncoder;\nexport function resizeEncoder<TEncoder extends AnyEncoder>(\n encoder: TEncoder,\n resize: (size: number) => number,\n): TEncoder {\n if (isFixedSize(encoder)) {\n const fixedSize = resize(encoder.fixedSize);\n if (fixedSize < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, {\n bytesLength: fixedSize,\n codecDescription: 'resizeEncoder',\n });\n }\n return createEncoder({ ...encoder, fixedSize }) as TEncoder;\n }\n return createEncoder({\n ...encoder,\n getSizeFromValue: value => {\n const newSize = resize(encoder.getSizeFromValue(value));\n if (newSize < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, {\n bytesLength: newSize,\n codecDescription: 'resizeEncoder',\n });\n }\n return newSize;\n },\n }) as TEncoder;\n}\n\n/**\n * Updates the size of a given decoder.\n */\n\nexport function resizeDecoder<TFrom, TSize extends number, TNewSize extends number>(\n decoder: FixedSizeDecoder<TFrom, TSize>,\n resize: (size: TSize) => TNewSize,\n): FixedSizeDecoder<TFrom, TNewSize>;\nexport function resizeDecoder<TDecoder extends AnyDecoder>(\n decoder: TDecoder,\n resize: (size: number) => number,\n): TDecoder;\nexport function resizeDecoder<TDecoder extends AnyDecoder>(\n decoder: TDecoder,\n resize: (size: number) => number,\n): TDecoder {\n if (isFixedSize(decoder)) {\n const fixedSize = resize(decoder.fixedSize);\n if (fixedSize < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, {\n bytesLength: fixedSize,\n codecDescription: 'resizeDecoder',\n });\n }\n return createDecoder({ ...decoder, fixedSize }) as TDecoder;\n }\n return decoder;\n}\n\n/**\n * Updates the size of a given codec.\n */\nexport function resizeCodec<TFrom, TTo extends TFrom, TSize extends number, TNewSize extends number>(\n codec: FixedSizeCodec<TFrom, TTo, TSize>,\n resize: (size: TSize) => TNewSize,\n): FixedSizeCodec<TFrom, TTo, TNewSize>;\nexport function resizeCodec<TCodec extends AnyCodec>(codec: TCodec, resize: (size: number) => number): TCodec;\nexport function resizeCodec<TCodec extends AnyCodec>(codec: TCodec, resize: (size: number) => number): TCodec {\n return combineCodec(resizeEncoder(codec, resize), resizeDecoder(codec, resize)) as TCodec;\n}\n","import { Codec, Decoder, Encoder, Offset } from './codec';\nimport { combineCodec } from './combine-codec';\nimport { offsetDecoder, offsetEncoder } from './offset-codec';\nimport { resizeDecoder, resizeEncoder } from './resize-codec';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyEncoder = Encoder<any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyDecoder = Decoder<any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyCodec = Codec<any>;\n\n/**\n * Adds left padding to the given encoder.\n */\nexport function padLeftEncoder<TEncoder extends AnyEncoder>(encoder: TEncoder, offset: Offset): TEncoder {\n return offsetEncoder(\n resizeEncoder(encoder, size => size + offset),\n { preOffset: ({ preOffset }) => preOffset + offset },\n );\n}\n\n/**\n * Adds right padding to the given encoder.\n */\nexport function padRightEncoder<TEncoder extends AnyEncoder>(encoder: TEncoder, offset: Offset): TEncoder {\n return offsetEncoder(\n resizeEncoder(encoder, size => size + offset),\n { postOffset: ({ postOffset }) => postOffset + offset },\n );\n}\n\n/**\n * Adds left padding to the given decoder.\n */\nexport function padLeftDecoder<TDecoder extends AnyDecoder>(decoder: TDecoder, offset: Offset): TDecoder {\n return offsetDecoder(\n resizeDecoder(decoder, size => size + offset),\n { preOffset: ({ preOffset }) => preOffset + offset },\n );\n}\n\n/**\n * Adds right padding to the given decoder.\n */\nexport function padRightDecoder<TDecoder extends AnyDecoder>(decoder: TDecoder, offset: Offset): TDecoder {\n return offsetDecoder(\n resizeDecoder(decoder, size => size + offset),\n { postOffset: ({ postOffset }) => postOffset + offset },\n );\n}\n\n/**\n * Adds left padding to the given codec.\n */\nexport function padLeftCodec<TCodec extends AnyCodec>(codec: TCodec, offset: Offset): TCodec {\n return combineCodec(padLeftEncoder(codec, offset), padLeftDecoder(codec, offset)) as TCodec;\n}\n\n/**\n * Adds right padding to the given codec.\n */\nexport function padRightCodec<TCodec extends AnyCodec>(codec: TCodec, offset: Offset): TCodec {\n return combineCodec(padRightEncoder(codec, offset), padRightDecoder(codec, offset)) as TCodec;\n}\n","import {\n assertIsFixedSize,\n createDecoder,\n createEncoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n} from './codec';\nimport { combineCodec } from './combine-codec';\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\nfunction copySourceToTargetInReverse(\n source: ReadonlyUint8Array,\n target_WILL_MUTATE: Uint8Array,\n sourceOffset: number,\n sourceLength: number,\n targetOffset: number = 0,\n) {\n while (sourceOffset < --sourceLength) {\n const leftValue = source[sourceOffset];\n target_WILL_MUTATE[sourceOffset + targetOffset] = source[sourceLength];\n target_WILL_MUTATE[sourceLength + targetOffset] = leftValue;\n sourceOffset++;\n }\n if (sourceOffset === sourceLength) {\n target_WILL_MUTATE[sourceOffset + targetOffset] = source[sourceOffset];\n }\n}\n\n/**\n * Reverses the bytes of a fixed-size encoder.\n */\nexport function reverseEncoder<TFrom, TSize extends number>(\n encoder: FixedSizeEncoder<TFrom, TSize>,\n): FixedSizeEncoder<TFrom, TSize> {\n assertIsFixedSize(encoder);\n return createEncoder({\n ...encoder,\n write: (value: TFrom, bytes, offset) => {\n const newOffset = encoder.write(value, bytes, offset);\n copySourceToTargetInReverse(\n bytes /* source */,\n bytes /* target_WILL_MUTATE */,\n offset /* sourceOffset */,\n offset + encoder.fixedSize /* sourceLength */,\n );\n return newOffset;\n },\n });\n}\n\n/**\n * Reverses the bytes of a fixed-size decoder.\n */\nexport function reverseDecoder<TTo, TSize extends number>(\n decoder: FixedSizeDecoder<TTo, TSize>,\n): FixedSizeDecoder<TTo, TSize> {\n assertIsFixedSize(decoder);\n return createDecoder({\n ...decoder,\n read: (bytes, offset) => {\n const reversedBytes = bytes.slice();\n copySourceToTargetInReverse(\n bytes /* source */,\n reversedBytes /* target_WILL_MUTATE */,\n offset /* sourceOffset */,\n offset + decoder.fixedSize /* sourceLength */,\n );\n return decoder.read(reversedBytes, offset);\n },\n });\n}\n\n/**\n * Reverses the bytes of a fixed-size codec.\n */\nexport function reverseCodec<TFrom, TTo extends TFrom, TSize extends number>(\n codec: FixedSizeCodec<TFrom, TTo, TSize>,\n): FixedSizeCodec<TFrom, TTo, TSize> {\n return combineCodec(reverseEncoder(codec), reverseDecoder(codec));\n}\n","import {\n Codec,\n createCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isVariableSize,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from './codec';\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Converts an encoder A to a encoder B by mapping their values.\n */\nexport function transformEncoder<TOldFrom, TNewFrom, TSize extends number>(\n encoder: FixedSizeEncoder<TOldFrom, TSize>,\n unmap: (value: TNewFrom) => TOldFrom,\n): FixedSizeEncoder<TNewFrom, TSize>;\nexport function transformEncoder<TOldFrom, TNewFrom>(\n encoder: VariableSizeEncoder<TOldFrom>,\n unmap: (value: TNewFrom) => TOldFrom,\n): VariableSizeEncoder<TNewFrom>;\nexport function transformEncoder<TOldFrom, TNewFrom>(\n encoder: Encoder<TOldFrom>,\n unmap: (value: TNewFrom) => TOldFrom,\n): Encoder<TNewFrom>;\nexport function transformEncoder<TOldFrom, TNewFrom>(\n encoder: Encoder<TOldFrom>,\n unmap: (value: TNewFrom) => TOldFrom,\n): Encoder<TNewFrom> {\n return createEncoder({\n ...(isVariableSize(encoder)\n ? { ...encoder, getSizeFromValue: (value: TNewFrom) => encoder.getSizeFromValue(unmap(value)) }\n : encoder),\n write: (value: TNewFrom, bytes, offset) => encoder.write(unmap(value), bytes, offset),\n });\n}\n\n/**\n * Converts an decoder A to a decoder B by mapping their values.\n */\nexport function transformDecoder<TOldTo, TNewTo, TSize extends number>(\n decoder: FixedSizeDecoder<TOldTo, TSize>,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): FixedSizeDecoder<TNewTo, TSize>;\nexport function transformDecoder<TOldTo, TNewTo>(\n decoder: VariableSizeDecoder<TOldTo>,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): VariableSizeDecoder<TNewTo>;\nexport function transformDecoder<TOldTo, TNewTo>(\n decoder: Decoder<TOldTo>,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): Decoder<TNewTo>;\nexport function transformDecoder<TOldTo, TNewTo>(\n decoder: Decoder<TOldTo>,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): Decoder<TNewTo> {\n return createDecoder({\n ...decoder,\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n const [value, newOffset] = decoder.read(bytes, offset);\n return [map(value, bytes, offset), newOffset];\n },\n });\n}\n\n/**\n * Converts a codec A to a codec B by mapping their values.\n */\nexport function transformCodec<TOldFrom, TNewFrom, TTo extends TNewFrom & TOldFrom, TSize extends number>(\n codec: FixedSizeCodec<TOldFrom, TTo, TSize>,\n unmap: (value: TNewFrom) => TOldFrom,\n): FixedSizeCodec<TNewFrom, TTo, TSize>;\nexport function transformCodec<TOldFrom, TNewFrom, TTo extends TNewFrom & TOldFrom>(\n codec: VariableSizeCodec<TOldFrom, TTo>,\n unmap: (value: TNewFrom) => TOldFrom,\n): VariableSizeCodec<TNewFrom, TTo>;\nexport function transformCodec<TOldFrom, TNewFrom, TTo extends TNewFrom & TOldFrom>(\n codec: Codec<TOldFrom, TTo>,\n unmap: (value: TNewFrom) => TOldFrom,\n): Codec<TNewFrom, TTo>;\nexport function transformCodec<\n TOldFrom,\n TNewFrom,\n TOldTo extends TOldFrom,\n TNewTo extends TNewFrom,\n TSize extends number,\n>(\n codec: FixedSizeCodec<TOldFrom, TOldTo, TSize>,\n unmap: (value: TNewFrom) => TOldFrom,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): FixedSizeCodec<TNewFrom, TNewTo, TSize>;\nexport function transformCodec<TOldFrom, TNewFrom, TOldTo extends TOldFrom, TNewTo extends TNewFrom>(\n codec: VariableSizeCodec<TOldFrom, TOldTo>,\n unmap: (value: TNewFrom) => TOldFrom,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): VariableSizeCodec<TNewFrom, TNewTo>;\nexport function transformCodec<TOldFrom, TNewFrom, TOldTo extends TOldFrom, TNewTo extends TNewFrom>(\n codec: Codec<TOldFrom, TOldTo>,\n unmap: (value: TNewFrom) => TOldFrom,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): Codec<TNewFrom, TNewTo>;\nexport function transformCodec<TOldFrom, TNewFrom, TOldTo extends TOldFrom, TNewTo extends TNewFrom>(\n codec: Codec<TOldFrom, TOldTo>,\n unmap: (value: TNewFrom) => TOldFrom,\n map?: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): Codec<TNewFrom, TNewTo> {\n return createCodec({\n ...transformEncoder(codec, unmap),\n read: map ? transformDecoder(codec, map).read : (codec.read as unknown as Decoder<TNewTo>['read']),\n });\n}\n","import { SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, SolanaError } from '@solana/errors';\n\n/**\n * Asserts that a given string matches a given alphabet.\n */\nexport function assertValidBaseString(alphabet: string, testValue: string, givenValue = testValue) {\n if (!testValue.match(new RegExp(`^[${alphabet}]*$`))) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n alphabet,\n base: alphabet.length,\n value: givenValue,\n });\n }\n}\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertValidBaseString } from './assertions';\n\n/**\n * Encodes a string using a custom alphabet by dividing\n * by the base and handling leading zeroes.\n * @see {@link getBaseXCodec} for a more detailed description.\n */\nexport const getBaseXEncoder = (alphabet: string): VariableSizeEncoder<string> => {\n return createEncoder({\n getSizeFromValue: (value: string): number => {\n const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet[0]);\n if (!tailChars) return value.length;\n\n const base10Number = getBigIntFromBaseX(tailChars, alphabet);\n return leadingZeroes.length + Math.ceil(base10Number.toString(16).length / 2);\n },\n write(value: string, bytes, offset) {\n // Check if the value is valid.\n assertValidBaseString(alphabet, value);\n if (value === '') return offset;\n\n // Handle leading zeroes.\n const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet[0]);\n if (!tailChars) {\n bytes.set(new Uint8Array(leadingZeroes.length).fill(0), offset);\n return offset + leadingZeroes.length;\n }\n\n // From baseX to base10.\n let base10Number = getBigIntFromBaseX(tailChars, alphabet);\n\n // From base10 to bytes.\n const tailBytes: number[] = [];\n while (base10Number > 0n) {\n tailBytes.unshift(Number(base10Number % 256n));\n base10Number /= 256n;\n }\n\n const bytesToAdd = [...Array(leadingZeroes.length).fill(0), ...tailBytes];\n bytes.set(bytesToAdd, offset);\n return offset + bytesToAdd.length;\n },\n });\n};\n\n/**\n * Decodes a string using a custom alphabet by dividing\n * by the base and handling leading zeroes.\n * @see {@link getBaseXCodec} for a more detailed description.\n */\nexport const getBaseXDecoder = (alphabet: string): VariableSizeDecoder<string> => {\n return createDecoder({\n read(rawBytes, offset): [string, number] {\n const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset);\n if (bytes.length === 0) return ['', 0];\n\n // Handle leading zeroes.\n let trailIndex = bytes.findIndex(n => n !== 0);\n trailIndex = trailIndex === -1 ? bytes.length : trailIndex;\n const leadingZeroes = alphabet[0].repeat(trailIndex);\n if (trailIndex === bytes.length) return [leadingZeroes, rawBytes.length];\n\n // From bytes to base10.\n const base10Number = bytes.slice(trailIndex).reduce((sum, byte) => sum * 256n + BigInt(byte), 0n);\n\n // From base10 to baseX.\n const tailChars = getBaseXFromBigInt(base10Number, alphabet);\n\n return [leadingZeroes + tailChars, rawBytes.length];\n },\n });\n};\n\n/**\n * A string codec that requires a custom alphabet and uses\n * the length of that alphabet as the base. It then divides\n * the input by the base as many times as necessary to get\n * the output. It also supports leading zeroes by using the\n * first character of the alphabet as the zero character.\n *\n * This can be used to create codecs such as base10 or base58.\n */\nexport const getBaseXCodec = (alphabet: string): VariableSizeCodec<string> =>\n combineCodec(getBaseXEncoder(alphabet), getBaseXDecoder(alphabet));\n\nfunction partitionLeadingZeroes(\n value: string,\n zeroCharacter: string,\n): [leadingZeros: string, tailChars: string | undefined] {\n const [leadingZeros, tailChars] = value.split(new RegExp(`((?!${zeroCharacter}).*)`));\n return [leadingZeros, tailChars];\n}\n\nfunction getBigIntFromBaseX(value: string, alphabet: string): bigint {\n const base = BigInt(alphabet.length);\n let sum = 0n;\n for (const char of value) {\n sum *= base;\n sum += BigInt(alphabet.indexOf(char));\n }\n return sum;\n}\n\nfunction getBaseXFromBigInt(value: bigint, alphabet: string): string {\n const base = BigInt(alphabet.length);\n const tailChars = [];\n while (value > 0n) {\n tailChars.unshift(alphabet[Number(value % base)]);\n value /= base;\n }\n return tailChars.join('');\n}\n","import { getBaseXCodec, getBaseXDecoder, getBaseXEncoder } from './baseX';\n\nconst alphabet = '0123456789';\n\n/** Encodes strings in base10. */\nexport const getBase10Encoder = () => getBaseXEncoder(alphabet);\n\n/** Decodes strings in base10. */\nexport const getBase10Decoder = () => getBaseXDecoder(alphabet);\n\n/** Encodes and decodes strings in base10. */\nexport const getBase10Codec = () => getBaseXCodec(alphabet);\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, SolanaError } from '@solana/errors';\n\nconst enum HexC {\n ZERO = 48, // 0\n NINE = 57, // 9\n A_UP = 65, // A\n F_UP = 70, // F\n A_LO = 97, // a\n F_LO = 102, // f\n}\n\nconst INVALID_STRING_ERROR_BASE_CONFIG = {\n alphabet: '0123456789abcdef',\n base: 16,\n} as const;\n\nfunction charCodeToBase16(char: number) {\n if (char >= HexC.ZERO && char <= HexC.NINE) return char - HexC.ZERO;\n if (char >= HexC.A_UP && char <= HexC.F_UP) return char - (HexC.A_UP - 10);\n if (char >= HexC.A_LO && char <= HexC.F_LO) return char - (HexC.A_LO - 10);\n}\n\n/** Encodes strings in base16. */\nexport const getBase16Encoder = (): VariableSizeEncoder<string> =>\n createEncoder({\n getSizeFromValue: (value: string) => Math.ceil(value.length / 2),\n write(value: string, bytes, offset) {\n const len = value.length;\n const al = len / 2;\n if (len === 1) {\n const c = value.charCodeAt(0);\n const n = charCodeToBase16(c);\n if (n === undefined) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n ...INVALID_STRING_ERROR_BASE_CONFIG,\n value,\n });\n }\n bytes.set([n], offset);\n return 1 + offset;\n }\n const hexBytes = new Uint8Array(al);\n for (let i = 0, j = 0; i < al; i++) {\n const c1 = value.charCodeAt(j++);\n const c2 = value.charCodeAt(j++);\n\n const n1 = charCodeToBase16(c1);\n const n2 = charCodeToBase16(c2);\n if (n1 === undefined || (n2 === undefined && !Number.isNaN(c2))) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n ...INVALID_STRING_ERROR_BASE_CONFIG,\n value,\n });\n }\n hexBytes[i] = !Number.isNaN(c2) ? (n1 << 4) | (n2 ?? 0) : n1;\n }\n\n bytes.set(hexBytes, offset);\n return hexBytes.length + offset;\n },\n });\n\n/** Decodes strings in base16. */\nexport const getBase16Decoder = (): VariableSizeDecoder<string> =>\n createDecoder({\n read(bytes, offset) {\n const value = bytes.slice(offset).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n return [value, bytes.length];\n },\n });\n\n/** Encodes and decodes strings in base16. */\nexport const getBase16Codec = (): VariableSizeCodec<string> => combineCodec(getBase16Encoder(), getBase16Decoder());\n","import { getBaseXCodec, getBaseXDecoder, getBaseXEncoder } from './baseX';\n\nconst alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\n/** Encodes strings in base58. */\nexport const getBase58Encoder = () => getBaseXEncoder(alphabet);\n\n/** Decodes strings in base58. */\nexport const getBase58Decoder = () => getBaseXDecoder(alphabet);\n\n/** Encodes and decodes strings in base58. */\nexport const getBase58Codec = () => getBaseXCodec(alphabet);\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertValidBaseString } from './assertions';\n\n/**\n * Encodes a string using a custom alphabet by reslicing the bits of the byte array.\n * @see {@link getBaseXResliceCodec} for a more detailed description.\n */\nexport const getBaseXResliceEncoder = (alphabet: string, bits: number): VariableSizeEncoder<string> =>\n createEncoder({\n getSizeFromValue: (value: string) => Math.floor((value.length * bits) / 8),\n write(value: string, bytes, offset) {\n assertValidBaseString(alphabet, value);\n if (value === '') return offset;\n const charIndices = [...value].map(c => alphabet.indexOf(c));\n const reslicedBytes = reslice(charIndices, bits, 8, false);\n bytes.set(reslicedBytes, offset);\n return reslicedBytes.length + offset;\n },\n });\n\n/**\n * Decodes a string using a custom alphabet by reslicing the bits of the byte array.\n * @see {@link getBaseXResliceCodec} for a more detailed description.\n */\nexport const getBaseXResliceDecoder = (alphabet: string, bits: number): VariableSizeDecoder<string> =>\n createDecoder({\n read(rawBytes, offset = 0): [string, number] {\n const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset);\n if (bytes.length === 0) return ['', rawBytes.length];\n const charIndices = reslice([...bytes], 8, bits, true);\n return [charIndices.map(i => alphabet[i]).join(''), rawBytes.length];\n },\n });\n\n/**\n * A string serializer that reslices bytes into custom chunks\n * of bits that are then mapped to a custom alphabet.\n *\n * This can be used to create serializers whose alphabet\n * is a power of 2 such as base16 or base64.\n */\nexport const getBaseXResliceCodec = (alphabet: string, bits: number): VariableSizeCodec<string> =>\n combineCodec(getBaseXResliceEncoder(alphabet, bits), getBaseXResliceDecoder(alphabet, bits));\n\n/** Helper function to reslice the bits inside bytes. */\nfunction reslice(input: number[], inputBits: number, outputBits: number, useRemainder: boolean): number[] {\n const output = [];\n let accumulator = 0;\n let bitsInAccumulator = 0;\n const mask = (1 << outputBits) - 1;\n for (const value of input) {\n accumulator = (accumulator << inputBits) | value;\n bitsInAccumulator += inputBits;\n while (bitsInAccumulator >= outputBits) {\n bitsInAccumulator -= outputBits;\n output.push((accumulator >> bitsInAccumulator) & mask);\n }\n }\n if (useRemainder && bitsInAccumulator > 0) {\n output.push((accumulator << (outputBits - bitsInAccumulator)) & mask);\n }\n return output;\n}\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, SolanaError } from '@solana/errors';\n\nimport { assertValidBaseString } from './assertions';\nimport { getBaseXResliceDecoder, getBaseXResliceEncoder } from './baseX-reslice';\n\nconst alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n/** Encodes strings in base64. */\nexport const getBase64Encoder = (): VariableSizeEncoder<string> => {\n if (__BROWSER__) {\n return createEncoder({\n getSizeFromValue: (value: string) => {\n try {\n return (atob as Window['atob'])(value).length;\n } catch {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n alphabet,\n base: 64,\n value,\n });\n }\n },\n write(value: string, bytes, offset) {\n try {\n const bytesToAdd = (atob as Window['atob'])(value)\n .split('')\n .map(c => c.charCodeAt(0));\n bytes.set(bytesToAdd, offset);\n return bytesToAdd.length + offset;\n } catch {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n alphabet,\n base: 64,\n value,\n });\n }\n },\n });\n }\n\n if (__NODEJS__) {\n return createEncoder({\n getSizeFromValue: (value: string) => Buffer.from(value, 'base64').length,\n write(value: string, bytes, offset) {\n assertValidBaseString(alphabet, value.replace(/=/g, ''));\n const buffer = Buffer.from(value, 'base64');\n bytes.set(buffer, offset);\n return buffer.length + offset;\n },\n });\n }\n\n return transformEncoder(getBaseXResliceEncoder(alphabet, 6), (value: string): string => value.replace(/=/g, ''));\n};\n\n/** Decodes strings in base64. */\nexport const getBase64Decoder = (): VariableSizeDecoder<string> => {\n if (__BROWSER__) {\n return createDecoder({\n read(bytes, offset = 0) {\n const slice = bytes.slice(offset);\n const value = (btoa as Window['btoa'])(String.fromCharCode(...slice));\n return [value, bytes.length];\n },\n });\n }\n\n if (__NODEJS__) {\n return createDecoder({\n read: (bytes, offset = 0) => [Buffer.from(bytes, offset).toString('base64'), bytes.length],\n });\n }\n\n return transformDecoder(getBaseXResliceDecoder(alphabet, 6), (value: string): string =>\n value.padEnd(Math.ceil(value.length / 4) * 4, '='),\n );\n};\n\n/** Encodes and decodes strings in base64. */\nexport const getBase64Codec = (): VariableSizeCodec<string> => combineCodec(getBase64Encoder(), getBase64Decoder());\n","/**Removes null characters from a string. */\nexport const removeNullCharacters = (value: string) =>\n // eslint-disable-next-line no-control-regex\n value.replace(/\\u0000/g, '');\n\n/** Pads a string with null characters at the end. */\nexport const padNullCharacters = (value: string, chars: number) => value.padEnd(chars, '\\u0000');\n","export const TextDecoder = globalThis.TextDecoder;\nexport const TextEncoder = globalThis.TextEncoder;\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { TextDecoder, TextEncoder } from '@solana/text-encoding-impl';\n\nimport { removeNullCharacters } from './null-characters';\n\n/** Encodes UTF-8 strings using the native `TextEncoder` API. */\nexport const getUtf8Encoder = (): VariableSizeEncoder<string> => {\n let textEncoder: TextEncoder;\n return createEncoder({\n getSizeFromValue: value => (textEncoder ||= new TextEncoder()).encode(value).length,\n write: (value: string, bytes, offset) => {\n const bytesToAdd = (textEncoder ||= new TextEncoder()).encode(value);\n bytes.set(bytesToAdd, offset);\n return offset + bytesToAdd.length;\n },\n });\n};\n\n/** Decodes UTF-8 strings using the native `TextDecoder` API. */\nexport const getUtf8Decoder = (): VariableSizeDecoder<string> => {\n let textDecoder: TextDecoder;\n return createDecoder({\n read(bytes, offset) {\n const value = (textDecoder ||= new TextDecoder()).decode(bytes.slice(offset));\n return [removeNullCharacters(value), bytes.length];\n },\n });\n};\n\n/** Encodes and decodes UTF-8 strings using the native `TextEncoder` and `TextDecoder` API. */\nexport const getUtf8Codec = (): VariableSizeCodec<string> => combineCodec(getUtf8Encoder(), getUtf8Decoder());\n","import type { Address } from '@solana/addresses';\nimport { ReadonlyUint8Array } from '@solana/codecs-core';\nimport type { Lamports } from '@solana/rpc-types';\n\n/** The amount of bytes required to store the base account information without its data. */\nexport const BASE_ACCOUNT_SIZE = 128;\n\n/** Describe the generic account details applicable to every account. */\nexport type BaseAccount = {\n readonly executable: boolean;\n readonly lamports: Lamports;\n readonly programAddress: Address;\n};\n\n/** Defines a Solana account with its generic details and parsed or encoded data. */\nexport type Account<TData extends Uint8Array | object, TAddress extends string = string> = BaseAccount & {\n readonly address: Address<TAddress>;\n readonly data: TData;\n};\n\n/** Defines a Solana account with its generic details and encoded data. */\nexport type EncodedAccount<TAddress extends string = string> = Account<ReadonlyUint8Array, TAddress>;\n","import type { Decoder, ReadonlyUint8Array } from '@solana/codecs-core';\nimport {\n SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED,\n SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT,\n SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT,\n SolanaError,\n} from '@solana/errors';\n\nimport type { Account, EncodedAccount } from './account';\nimport type { MaybeAccount, MaybeEncodedAccount } from './maybe-account';\n\n/** Decodes the data of a given account using the provided decoder. */\nexport function decodeAccount<TData extends object, TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n decoder: Decoder<TData>,\n): Account<TData, TAddress>;\nexport function decodeAccount<TData extends object, TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n decoder: Decoder<TData>,\n): MaybeAccount<TData, TAddress>;\nexport function decodeAccount<TData extends object, TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n decoder: Decoder<TData>,\n): Account<TData, TAddress> | MaybeAccount<TData, TAddress> {\n try {\n if ('exists' in encodedAccount && !encodedAccount.exists) {\n return encodedAccount;\n }\n return Object.freeze({ ...encodedAccount, data: decoder.decode(encodedAccount.data) });\n } catch {\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT, {\n address: encodedAccount.address,\n });\n }\n}\n\nfunction accountExists<TData extends object>(account: Account<TData> | MaybeAccount<TData>): account is Account<TData> {\n return !('exists' in account) || ('exists' in account && account.exists);\n}\n\n/** Asserts that an account has been decoded. */\nexport function assertAccountDecoded<TData extends object, TAddress extends string = string>(\n account: Account<TData | Uint8Array, TAddress>,\n): asserts account is Account<TData, TAddress>;\nexport function assertAccountDecoded<TData extends object, TAddress extends string = string>(\n account: MaybeAccount<TData | Uint8Array, TAddress>,\n): asserts account is MaybeAccount<TData, TAddress>;\nexport function assertAccountDecoded<TData extends object, TAddress extends string = string>(\n account: Account<TData | Uint8Array, TAddress> | MaybeAccount<TData | Uint8Array, TAddress>,\n): asserts account is Account<TData, TAddress> | MaybeAccount<TData, TAddress> {\n if (accountExists(account) && account.data instanceof Uint8Array) {\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT, {\n address: account.address,\n });\n }\n}\n\n/** Asserts that all accounts have been decoded. */\nexport function assertAccountsDecoded<TData extends object, TAddress extends string = string>(\n accounts: Account<ReadonlyUint8Array | TData, TAddress>[],\n): asserts accounts is Account<TData, TAddress>[];\nexport function assertAccountsDecoded<TData extends object, TAddress extends string = string>(\n accounts: MaybeAccount<ReadonlyUint8Array | TData, TAddress>[],\n): asserts accounts is MaybeAccount<TData, TAddress>[];\nexport function assertAccountsDecoded<TData extends object, TAddress extends string = string>(\n accounts: (Account<ReadonlyUint8Array | TData, TAddress> | MaybeAccount<ReadonlyUint8Array | TData, TAddress>)[],\n): asserts accounts is (Account<TData, TAddress> | MaybeAccount<TData, TAddress>)[] {\n const encoded = accounts.filter(a => accountExists(a) && a.data instanceof Uint8Array);\n if (encoded.length > 0) {\n const encodedAddresses = encoded.map(a => a.address);\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED, {\n addresses: encodedAddresses,\n });\n }\n}\n","import type { Address } from '@solana/addresses';\nimport { getBase58Encoder, getBase64Encoder } from '@solana/codecs-strings';\nimport type {\n AccountInfoBase,\n AccountInfoWithBase58Bytes,\n AccountInfoWithBase58EncodedData,\n AccountInfoWithBase64EncodedData,\n} from '@solana/rpc-types';\n\nimport type { Account, BaseAccount, EncodedAccount } from './account';\nimport type { MaybeAccount, MaybeEncodedAccount } from './maybe-account';\nimport type { JsonParsedDataResponse } from './rpc-api';\n\ntype Base64EncodedRpcAccount = AccountInfoBase & AccountInfoWithBase64EncodedData;\n\n/** Parse an account object received from a base64-encoded RPC call into an EncodedAccount or MaybeEncodedAccount type. */\nexport function parseBase64RpcAccount<TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: Base64EncodedRpcAccount,\n): EncodedAccount<TAddress>;\nexport function parseBase64RpcAccount<TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: Base64EncodedRpcAccount | null,\n): MaybeEncodedAccount<TAddress>;\nexport function parseBase64RpcAccount<TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: Base64EncodedRpcAccount | null,\n): EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress> {\n if (!rpcAccount) return Object.freeze({ address, exists: false });\n const data = getBase64Encoder().encode(rpcAccount.data[0]);\n return Object.freeze({ ...parseBaseAccount(rpcAccount), address, data, exists: true });\n}\n\ntype Base58EncodedRpcAccount = AccountInfoBase & (AccountInfoWithBase58Bytes | AccountInfoWithBase58EncodedData);\n\n/** Parse an account object received from a base58-encoded RPC call into an EncodedAccount or MaybeEncodedAccount type. */\nexport function parseBase58RpcAccount<TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: Base58EncodedRpcAccount,\n): EncodedAccount<TAddress>;\nexport function parseBase58RpcAccount<TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: Base58EncodedRpcAccount | null,\n): MaybeEncodedAccount<TAddress>;\nexport function parseBase58RpcAccount<TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: Base58EncodedRpcAccount | null,\n): EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress> {\n if (!rpcAccount) return Object.freeze({ address, exists: false });\n const data = getBase58Encoder().encode(typeof rpcAccount.data === 'string' ? rpcAccount.data : rpcAccount.data[0]);\n return Object.freeze({ ...parseBaseAccount(rpcAccount), address, data, exists: true });\n}\n\ntype JsonParsedRpcAccount = AccountInfoBase & { readonly data: JsonParsedDataResponse<unknown> };\n\n/** Parse an account object received from a json-parsed RPC call into an Account or MaybeAccount type. */\nexport function parseJsonRpcAccount<TData extends object, TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: JsonParsedRpcAccount,\n): Account<TData, TAddress>;\nexport function parseJsonRpcAccount<TData extends object, TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: JsonParsedRpcAccount | null,\n): MaybeAccount<TData, TAddress>;\nexport function parseJsonRpcAccount<TData extends object, TAddress extends string = string>(\n address: Address<TAddress>,\n rpcAccount: JsonParsedRpcAccount | null,\n): Account<TData, TAddress> | MaybeAccount<TData, TAddress> {\n if (!rpcAccount) return Object.freeze({ address, exists: false });\n const data = rpcAccount.data.parsed.info as TData;\n return Object.freeze({ ...parseBaseAccount(rpcAccount), address, data, exists: true });\n}\n\nfunction parseBaseAccount(rpcAccount: AccountInfoBase): BaseAccount {\n return Object.freeze({\n executable: rpcAccount.executable,\n lamports: rpcAccount.lamports,\n programAddress: rpcAccount.owner,\n });\n}\n","import type { Address } from '@solana/addresses';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Commitment, Slot } from '@solana/rpc-types';\n\nimport type { MaybeAccount, MaybeEncodedAccount } from './maybe-account';\nimport { parseBase64RpcAccount, parseJsonRpcAccount } from './parse-account';\nimport type { GetAccountInfoApi, GetMultipleAccountsApi } from './rpc-api';\n\n/** Optional configuration for fetching a singular account. */\nexport type FetchAccountConfig = {\n abortSignal?: AbortSignal;\n commitment?: Commitment;\n minContextSlot?: Slot;\n};\n\n/** Fetch a base64-encoded account that may or may not exist using an RPC client. */\nexport async function fetchEncodedAccount<TAddress extends string = string>(\n rpc: Rpc<GetAccountInfoApi>,\n address: Address<TAddress>,\n config: FetchAccountConfig = {},\n): Promise<MaybeEncodedAccount<TAddress>> {\n const { abortSignal, ...rpcConfig } = config;\n const response = await rpc.getAccountInfo(address, { ...rpcConfig, encoding: 'base64' }).send({ abortSignal });\n return parseBase64RpcAccount(address, response.value);\n}\n\n/** Fetch a json-parsed account that may or may not exist using an RPC client. */\nexport async function fetchJsonParsedAccount<TData extends object, TAddress extends string = string>(\n rpc: Rpc<GetAccountInfoApi>,\n address: Address<TAddress>,\n config: FetchAccountConfig = {},\n): Promise<MaybeAccount<TData, TAddress> | MaybeEncodedAccount<TAddress>> {\n const { abortSignal, ...rpcConfig } = config;\n const { value: account } = await rpc\n .getAccountInfo(address, { ...rpcConfig, encoding: 'jsonParsed' })\n .send({ abortSignal });\n return !!account && typeof account === 'object' && 'parsed' in account.data\n ? parseJsonRpcAccount<TData, TAddress>(address, account as Parameters<typeof parseJsonRpcAccount>[1])\n : parseBase64RpcAccount<TAddress>(address, account as Parameters<typeof parseBase64RpcAccount>[1]);\n}\n\n/** Optional configuration for fetching multiple accounts. */\nexport type FetchAccountsConfig = {\n abortSignal?: AbortSignal;\n commitment?: Commitment;\n minContextSlot?: Slot;\n};\n\n/** Fetch multiple base64-encoded accounts that may or may not exist using an RPC client. */\nexport async function fetchEncodedAccounts<\n TAddresses extends string[] = string[],\n TWrappedAddresses extends { [P in keyof TAddresses]: Address<TAddresses[P]> } = {\n [P in keyof TAddresses]: Address<TAddresses[P]>;\n },\n>(rpc: Rpc<GetMultipleAccountsApi>, addresses: TWrappedAddresses, config: FetchAccountsConfig = {}) {\n const { abortSignal, ...rpcConfig } = config;\n const response = await rpc\n .getMultipleAccounts(addresses, { ...rpcConfig, encoding: 'base64' })\n .send({ abortSignal });\n return response.value.map((account, index) => parseBase64RpcAccount(addresses[index], account)) as {\n [P in keyof TAddresses]: MaybeEncodedAccount<TAddresses[P]>;\n };\n}\n\n/** Fetch multiple json-parsed accounts that may or may not exist using an RPC client. */\nexport async function fetchJsonParsedAccounts<\n TData extends object[],\n TAddresses extends string[] = string[],\n TWrappedAddresses extends { [P in keyof TAddresses]: Address<TAddresses[P]> } = {\n [P in keyof TAddresses]: Address<TAddresses[P]>;\n },\n>(rpc: Rpc<GetMultipleAccountsApi>, addresses: TWrappedAddresses, config: FetchAccountsConfig = {}) {\n const { abortSignal, ...rpcConfig } = config;\n const response = await rpc\n .getMultipleAccounts(addresses, { ...rpcConfig, encoding: 'jsonParsed' })\n .send({ abortSignal });\n return response.value.map((account, index) => {\n return !!account && typeof account === 'object' && 'parsed' in account.data\n ? parseJsonRpcAccount(addresses[index], account as Parameters<typeof parseJsonRpcAccount>[1])\n : parseBase64RpcAccount(addresses[index], account as Parameters<typeof parseBase64RpcAccount>[1]);\n }) as {\n [P in keyof TAddresses]:\n | MaybeAccount<TData[P & keyof TData], TAddresses[P]>\n | MaybeEncodedAccount<TAddresses[P]>;\n } & {\n [P in keyof TData]:\n | MaybeAccount<TData[P], TAddresses[P & keyof TAddresses]>\n | MaybeEncodedAccount<TAddresses[P & keyof TAddresses]>;\n };\n}\n","import { Address } from '@solana/addresses';\nimport {\n SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND,\n SolanaError,\n} from '@solana/errors';\n\nimport { Account } from './account';\n\n/** Defines a Solana account that may or may not exist after having tried to fetch it. */\nexport type MaybeAccount<TData extends Uint8Array | object, TAddress extends string = string> =\n | { readonly address: Address<TAddress>; readonly exists: false }\n | (Account<TData, TAddress> & { readonly exists: true });\n\n/** Defines a Solana account with encoded data that may or may not exist after having tried to fetch it. */\nexport type MaybeEncodedAccount<TAddress extends string = string> = MaybeAccount<Uint8Array, TAddress>;\n\n/** Asserts that an account that may or may not exists, actually exists. */\nexport function assertAccountExists<TData extends Uint8Array | object, TAddress extends string = string>(\n account: MaybeAccount<TData, TAddress>,\n): asserts account is Account<TData, TAddress> & { exists: true } {\n if (!account.exists) {\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND, { address: account.address });\n }\n}\n\n/** Asserts that all accounts that may or may not exist, actually all exist. */\nexport function assertAccountsExist<TData extends Uint8Array | object, TAddress extends string = string>(\n accounts: MaybeAccount<TData, TAddress>[],\n): asserts accounts is (Account<TData, TAddress> & { exists: true })[] {\n const missingAccounts = accounts.filter(a => !a.exists);\n if (missingAccounts.length > 0) {\n const missingAddresses = missingAccounts.map(a => a.address);\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND, { addresses: missingAddresses });\n }\n}\n","import {\n SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT,\n SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED,\n SolanaError,\n} from '@solana/errors';\n\nfunction assertIsSecureContext() {\n if (__BROWSER__ && !globalThis.isSecureContext) {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT);\n }\n}\n\nlet cachedEd25519Decision: PromiseLike<boolean> | boolean | undefined;\nasync function isEd25519CurveSupported(subtle: SubtleCrypto): Promise<boolean> {\n if (cachedEd25519Decision === undefined) {\n cachedEd25519Decision = new Promise(resolve => {\n subtle\n .generateKey('Ed25519', /* extractable */ false, ['sign', 'verify'])\n .then(() => {\n resolve((cachedEd25519Decision = true));\n })\n .catch(() => {\n resolve((cachedEd25519Decision = false));\n });\n });\n }\n if (typeof cachedEd25519Decision === 'boolean') {\n return cachedEd25519Decision;\n } else {\n return await cachedEd25519Decision;\n }\n}\n\nexport function assertDigestCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.digest !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED);\n }\n}\n\nexport async function assertKeyGenerationIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.generateKey !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED);\n }\n if (!(await isEd25519CurveSupported(globalThis.crypto.subtle))) {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED);\n }\n}\n\nexport function assertKeyExporterIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.exportKey !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED);\n }\n}\n\nexport function assertSigningCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.sign !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED);\n }\n}\n\nexport function assertVerificationCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.verify !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED);\n }\n}\n","import { SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED, SolanaError } from '@solana/errors';\n\nexport function assertPRNGIsAvailable() {\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.getRandomValues !== 'function') {\n throw new SolanaError(SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED);\n }\n}\n","import {\n combineCodec,\n Decoder,\n Encoder,\n fixDecoderSize,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n fixEncoderSize,\n transformEncoder,\n} from '@solana/codecs-core';\nimport { getBase58Decoder, getBase58Encoder } from '@solana/codecs-strings';\nimport {\n SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE,\n SolanaError,\n} from '@solana/errors';\n\nexport type Address<TAddress extends string = string> = TAddress & {\n readonly __brand: unique symbol;\n};\n\nlet memoizedBase58Encoder: Encoder<string> | undefined;\nlet memoizedBase58Decoder: Decoder<string> | undefined;\n\nfunction getMemoizedBase58Encoder(): Encoder<string> {\n if (!memoizedBase58Encoder) memoizedBase58Encoder = getBase58Encoder();\n return memoizedBase58Encoder;\n}\n\nfunction getMemoizedBase58Decoder(): Decoder<string> {\n if (!memoizedBase58Decoder) memoizedBase58Decoder = getBase58Decoder();\n return memoizedBase58Decoder;\n}\n\nexport function isAddress(putativeAddress: string): putativeAddress is Address<typeof putativeAddress> {\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest address (32 bytes of zeroes)\n putativeAddress.length < 32 ||\n // Highest address (32 bytes of 255)\n putativeAddress.length > 44\n ) {\n return false;\n }\n // Slow-path; actually attempt to decode the input string.\n const base58Encoder = getMemoizedBase58Encoder();\n try {\n return base58Encoder.encode(putativeAddress).byteLength === 32;\n } catch {\n return false;\n }\n}\n\nexport function assertIsAddress(putativeAddress: string): asserts putativeAddress is Address<typeof putativeAddress> {\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest address (32 bytes of zeroes)\n putativeAddress.length < 32 ||\n // Highest address (32 bytes of 255)\n putativeAddress.length > 44\n ) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE, {\n actualLength: putativeAddress.length,\n });\n }\n // Slow-path; actually attempt to decode the input string.\n const base58Encoder = getMemoizedBase58Encoder();\n const bytes = base58Encoder.encode(putativeAddress);\n const numBytes = bytes.byteLength;\n if (numBytes !== 32) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH, {\n actualLength: numBytes,\n });\n }\n}\n\nexport function address<TAddress extends string = string>(putativeAddress: TAddress): Address<TAddress> {\n assertIsAddress(putativeAddress);\n return putativeAddress as Address<TAddress>;\n}\n\nexport function getAddressEncoder(): FixedSizeEncoder<Address, 32> {\n return transformEncoder(fixEncoderSize(getMemoizedBase58Encoder(), 32), putativeAddress =>\n address(putativeAddress),\n );\n}\n\nexport function getAddressDecoder(): FixedSizeDecoder<Address, 32> {\n return fixDecoderSize(getMemoizedBase58Decoder(), 32) as FixedSizeDecoder<Address, 32>;\n}\n\nexport function getAddressCodec(): FixedSizeCodec<Address, Address, 32> {\n return combineCodec(getAddressEncoder(), getAddressDecoder());\n}\n\nexport function getAddressComparator(): (x: string, y: string) => number {\n return new Intl.Collator('en', {\n caseFirst: 'lower',\n ignorePunctuation: false,\n localeMatcher: 'best fit',\n numeric: false,\n sensitivity: 'variant',\n usage: 'sort',\n }).compare;\n}\n","/**!\n * noble-ed25519\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Paul Miller (https://paulmillr.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the “Software”), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nconst D = 37095705934669439343138083508754565189542113879843219016388785533085940283555n;\nconst P = 57896044618658097711785492504343953926634992332820282019728792003956564819949n; // 2n ** 255n - 19n; ed25519 is twisted edwards curve\nconst RM1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; // √-1\n\n// mod division\nfunction mod(a: bigint): bigint {\n const r = a % P;\n return r >= 0n ? r : P + r;\n}\nfunction pow2(x: bigint, power: bigint): bigint {\n // pow2(x, 4) == x^(2^4)\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n}\nfunction pow_2_252_3(x: bigint): bigint {\n // x^(2^252-3) unrolled util for square root\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return pow_p_5_8;\n}\nfunction uvRatio(u: bigint, v: bigint): bigint | null {\n // for sqrt comp\n const v3 = mod(v * v * v); // v³\n const v7 = mod(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7); // (uv⁷)^(p-5)/8\n let x = mod(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1) x = root1;\n if (useRoot2 || noRoot) x = root2; // We return root2 anyway, for const-time\n if ((mod(x) & 1n) === 1n) x = mod(-x); // edIsNegative\n if (!useRoot1 && !useRoot2) {\n return null;\n }\n return x;\n}\n// https://datatracker.ietf.org/doc/html/rfc8032#section-5.1.3\nexport function pointIsOnCurve(y: bigint, lastByte: number): boolean {\n const y2 = mod(y * y); // y²\n const u = mod(y2 - 1n); // u=y²-1\n const v = mod(D * y2 + 1n);\n const x = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (x === null) {\n return false;\n }\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (x === 0n && isLastByteOdd) {\n return false;\n }\n return true;\n}\n","import { pointIsOnCurve } from './vendor/noble/ed25519';\n\nfunction byteToHex(byte: number): string {\n const hexString = byte.toString(16);\n if (hexString.length === 1) {\n return `0${hexString}`;\n } else {\n return hexString;\n }\n}\n\nfunction decompressPointBytes(bytes: Uint8Array): bigint {\n const hexString = bytes.reduce((acc, byte, ii) => `${byteToHex(ii === 31 ? byte & ~0x80 : byte)}${acc}`, '');\n const integerLiteralString = `0x${hexString}`;\n return BigInt(integerLiteralString);\n}\n\nexport function compressedPointBytesAreOnCurve(bytes: Uint8Array): boolean {\n if (bytes.byteLength !== 32) {\n return false;\n }\n const y = decompressPointBytes(bytes);\n return pointIsOnCurve(y, bytes[31]);\n}\n","import { assertDigestCapabilityIsAvailable } from '@solana/assertions';\nimport type { ReadonlyUint8Array } from '@solana/codecs-core';\nimport {\n isSolanaError,\n SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED,\n SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE,\n SOLANA_ERROR__ADDRESSES__MALFORMED_PDA,\n SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE,\n SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER,\n SolanaError,\n} from '@solana/errors';\n\nimport { Address, assertIsAddress, getAddressCodec, isAddress } from './address';\nimport { compressedPointBytesAreOnCurve } from './curve';\n\n/**\n * An address derived from a program address and a set of seeds.\n * It includes the bump seed used to derive the address and\n * ensure the address is not on the Ed25519 curve.\n */\nexport type ProgramDerivedAddress<TAddress extends string = string> = Readonly<\n [Address<TAddress>, ProgramDerivedAddressBump]\n>;\n\n/**\n * A number between 0 and 255, inclusive.\n */\nexport type ProgramDerivedAddressBump = number & {\n readonly __brand: unique symbol;\n};\n\n/**\n * Returns true if the input value is a program derived address.\n */\nexport function isProgramDerivedAddress<TAddress extends string = string>(\n value: unknown,\n): value is ProgramDerivedAddress<TAddress> {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'string' &&\n typeof value[1] === 'number' &&\n value[1] >= 0 &&\n value[1] <= 255 &&\n isAddress(value[0])\n );\n}\n\n/**\n * Fails if the input value is not a program derived address.\n */\nexport function assertIsProgramDerivedAddress<TAddress extends string = string>(\n value: unknown,\n): asserts value is ProgramDerivedAddress<TAddress> {\n const validFormat =\n Array.isArray(value) && value.length === 2 && typeof value[0] === 'string' && typeof value[1] === 'number';\n if (!validFormat) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__MALFORMED_PDA);\n }\n if (value[1] < 0 || value[1] > 255) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE, {\n bump: value[1],\n });\n }\n assertIsAddress(value[0]);\n}\n\ntype ProgramDerivedAddressInput = Readonly<{\n programAddress: Address;\n seeds: Seed[];\n}>;\n\ntype SeedInput = Readonly<{\n baseAddress: Address;\n programAddress: Address;\n seed: Seed;\n}>;\n\ntype Seed = ReadonlyUint8Array | string;\n\nconst MAX_SEED_LENGTH = 32;\nconst MAX_SEEDS = 16;\nconst PDA_MARKER_BYTES = [\n // The string 'ProgramDerivedAddress'\n 80, 114, 111, 103, 114, 97, 109, 68, 101, 114, 105, 118, 101, 100, 65, 100, 100, 114, 101, 115, 115,\n] as const;\n\nasync function createProgramDerivedAddress({ programAddress, seeds }: ProgramDerivedAddressInput): Promise<Address> {\n assertDigestCapabilityIsAvailable();\n if (seeds.length > MAX_SEEDS) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED, {\n actual: seeds.length,\n maxSeeds: MAX_SEEDS,\n });\n }\n let textEncoder: TextEncoder;\n const seedBytes = seeds.reduce((acc, seed, ii) => {\n const bytes = typeof seed === 'string' ? (textEncoder ||= new TextEncoder()).encode(seed) : seed;\n if (bytes.byteLength > MAX_SEED_LENGTH) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED, {\n actual: bytes.byteLength,\n index: ii,\n maxSeedLength: MAX_SEED_LENGTH,\n });\n }\n acc.push(...bytes);\n return acc;\n }, [] as number[]);\n const base58EncodedAddressCodec = getAddressCodec();\n const programAddressBytes = base58EncodedAddressCodec.encode(programAddress);\n const addressBytesBuffer = await crypto.subtle.digest(\n 'SHA-256',\n new Uint8Array([...seedBytes, ...programAddressBytes, ...PDA_MARKER_BYTES]),\n );\n const addressBytes = new Uint8Array(addressBytesBuffer);\n if (compressedPointBytesAreOnCurve(addressBytes)) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE);\n }\n return base58EncodedAddressCodec.decode(addressBytes);\n}\n\nexport async function getProgramDerivedAddress({\n programAddress,\n seeds,\n}: ProgramDerivedAddressInput): Promise<ProgramDerivedAddress> {\n let bumpSeed = 255;\n while (bumpSeed > 0) {\n try {\n const address = await createProgramDerivedAddress({\n programAddress,\n seeds: [...seeds, new Uint8Array([bumpSeed])],\n });\n return [address, bumpSeed as ProgramDerivedAddressBump];\n } catch (e) {\n if (isSolanaError(e, SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE)) {\n bumpSeed--;\n } else {\n throw e;\n }\n }\n }\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED);\n}\n\nexport async function createAddressWithSeed({ baseAddress, programAddress, seed }: SeedInput): Promise<Address> {\n const { encode, decode } = getAddressCodec();\n\n const seedBytes = typeof seed === 'string' ? new TextEncoder().encode(seed) : seed;\n if (seedBytes.byteLength > MAX_SEED_LENGTH) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED, {\n actual: seedBytes.byteLength,\n index: 0,\n maxSeedLength: MAX_SEED_LENGTH,\n });\n }\n\n const programAddressBytes = encode(programAddress);\n if (\n programAddressBytes.length >= PDA_MARKER_BYTES.length &&\n programAddressBytes.slice(-PDA_MARKER_BYTES.length).every((byte, index) => byte === PDA_MARKER_BYTES[index])\n ) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER);\n }\n\n const addressBytesBuffer = await crypto.subtle.digest(\n 'SHA-256',\n new Uint8Array([...encode(baseAddress), ...seedBytes, ...programAddressBytes]),\n );\n const addressBytes = new Uint8Array(addressBytesBuffer);\n\n return decode(addressBytes);\n}\n","import { assertKeyExporterIsAvailable } from '@solana/assertions';\nimport { SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY, SolanaError } from '@solana/errors';\n\nimport { Address, getAddressDecoder } from './address';\n\nexport async function getAddressFromPublicKey(publicKey: CryptoKey): Promise<Address> {\n assertKeyExporterIsAvailable();\n if (publicKey.type !== 'public' || publicKey.algorithm.name !== 'Ed25519') {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY);\n }\n const publicKeyBytes = await crypto.subtle.exportKey('raw', publicKey);\n return getAddressDecoder().decode(new Uint8Array(publicKeyBytes));\n}\n","import { SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\n/**\n * Asserts that a given number is between a given range.\n */\nexport function assertNumberIsBetweenForCodec(\n codecDescription: string,\n min: bigint | number,\n max: bigint | number,\n value: bigint | number,\n) {\n if (value < min || value > max) {\n throw new SolanaError(SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE, {\n codecDescription,\n max,\n min,\n value,\n });\n }\n}\n","import { Codec, Decoder, Encoder, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\n/** Defines a encoder for numbers and bigints. */\nexport type NumberEncoder = Encoder<bigint | number>;\n\n/** Defines a fixed-size encoder for numbers and bigints. */\nexport type FixedSizeNumberEncoder<TSize extends number = number> = FixedSizeEncoder<bigint | number, TSize>;\n\n/** Defines a decoder for numbers and bigints. */\nexport type NumberDecoder = Decoder<bigint> | Decoder<number>;\n\n/** Defines a fixed-size decoder for numbers and bigints. */\nexport type FixedSizeNumberDecoder<TSize extends number = number> =\n | FixedSizeDecoder<bigint, TSize>\n | FixedSizeDecoder<number, TSize>;\n\n/** Defines a codec for numbers and bigints. */\nexport type NumberCodec = Codec<bigint | number, bigint> | Codec<bigint | number, number>;\n\n/** Defines a fixed-size codec for numbers and bigints. */\nexport type FixedSizeNumberCodec<TSize extends number = number> =\n | FixedSizeCodec<bigint | number, bigint, TSize>\n | FixedSizeCodec<bigint | number, number, TSize>;\n\n/** Defines the config for number codecs that use more than one byte. */\nexport type NumberCodecConfig = {\n /**\n * Whether the serializer should use little-endian or big-endian encoding.\n * @defaultValue `Endian.Little`\n */\n endian?: Endian;\n};\n\n/** Defines the endianness of a number serializer. */\nexport enum Endian {\n Little,\n Big,\n}\n","import {\n assertByteArrayHasEnoughBytesForCodec,\n assertByteArrayIsNotEmptyForCodec,\n createDecoder,\n createEncoder,\n FixedSizeDecoder,\n FixedSizeEncoder,\n Offset,\n ReadonlyUint8Array,\n} from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\nimport { Endian, NumberCodecConfig } from './common';\n\ntype NumberFactorySharedInput<TSize extends number> = {\n config?: NumberCodecConfig;\n name: string;\n size: TSize;\n};\n\ntype NumberFactoryEncoderInput<TFrom, TSize extends number> = NumberFactorySharedInput<TSize> & {\n range?: [bigint | number, bigint | number];\n set: (view: DataView, value: TFrom, littleEndian?: boolean) => void;\n};\n\ntype NumberFactoryDecoderInput<TTo, TSize extends number> = NumberFactorySharedInput<TSize> & {\n get: (view: DataView, littleEndian?: boolean) => TTo;\n};\n\nfunction isLittleEndian(config?: NumberCodecConfig): boolean {\n return config?.endian === Endian.Big ? false : true;\n}\n\nexport function numberEncoderFactory<TFrom extends bigint | number, TSize extends number>(\n input: NumberFactoryEncoderInput<TFrom, TSize>,\n): FixedSizeEncoder<TFrom, TSize> {\n return createEncoder({\n fixedSize: input.size,\n write(value: TFrom, bytes: Uint8Array, offset: Offset): Offset {\n if (input.range) {\n assertNumberIsBetweenForCodec(input.name, input.range[0], input.range[1], value);\n }\n const arrayBuffer = new ArrayBuffer(input.size);\n input.set(new DataView(arrayBuffer), value, isLittleEndian(input.config));\n bytes.set(new Uint8Array(arrayBuffer), offset);\n return offset + input.size;\n },\n });\n}\n\nexport function numberDecoderFactory<TTo extends bigint | number, TSize extends number>(\n input: NumberFactoryDecoderInput<TTo, TSize>,\n): FixedSizeDecoder<TTo, TSize> {\n return createDecoder({\n fixedSize: input.size,\n read(bytes, offset = 0): [TTo, number] {\n assertByteArrayIsNotEmptyForCodec(input.name, bytes, offset);\n assertByteArrayHasEnoughBytesForCodec(input.name, input.size, bytes, offset);\n const view = new DataView(toArrayBuffer(bytes, offset, input.size));\n return [input.get(view, isLittleEndian(input.config)), offset + input.size];\n },\n });\n}\n\n/**\n * Helper function to ensure that the ArrayBuffer is converted properly from a Uint8Array\n * Source: https://stackoverflow.com/questions/37228285/uint8array-to-arraybuffer\n */\nfunction toArrayBuffer(bytes: ReadonlyUint8Array | Uint8Array, offset?: number, length?: number): ArrayBuffer {\n const bytesOffset = bytes.byteOffset + (offset ?? 0);\n const bytesLength = length ?? bytes.byteLength;\n return bytes.buffer.slice(bytesOffset, bytesOffset + bytesLength);\n}\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getF32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 4> =>\n numberEncoderFactory({\n config,\n name: 'f32',\n set: (view, value, le) => view.setFloat32(0, Number(value), le),\n size: 4,\n });\n\nexport const getF32Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 4> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getFloat32(0, le),\n name: 'f32',\n size: 4,\n });\n\nexport const getF32Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 4> =>\n combineCodec(getF32Encoder(config), getF32Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getF64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 8> =>\n numberEncoderFactory({\n config,\n name: 'f64',\n set: (view, value, le) => view.setFloat64(0, Number(value), le),\n size: 8,\n });\n\nexport const getF64Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 8> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getFloat64(0, le),\n name: 'f64',\n size: 8,\n });\n\nexport const getF64Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 8> =>\n combineCodec(getF64Encoder(config), getF64Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI128Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 16> =>\n numberEncoderFactory({\n config,\n name: 'i128',\n range: [-BigInt('0x7fffffffffffffffffffffffffffffff') - 1n, BigInt('0x7fffffffffffffffffffffffffffffff')],\n set: (view, value, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const rightMask = 0xffffffffffffffffn;\n view.setBigInt64(leftOffset, BigInt(value) >> 64n, le);\n view.setBigUint64(rightOffset, BigInt(value) & rightMask, le);\n },\n size: 16,\n });\n\nexport const getI128Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<bigint, 16> =>\n numberDecoderFactory({\n config,\n get: (view, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const left = view.getBigInt64(leftOffset, le);\n const right = view.getBigUint64(rightOffset, le);\n return (left << 64n) + right;\n },\n name: 'i128',\n size: 16,\n });\n\nexport const getI128Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, bigint, 16> =>\n combineCodec(getI128Encoder(config), getI128Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI16Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 2> =>\n numberEncoderFactory({\n config,\n name: 'i16',\n range: [-Number('0x7fff') - 1, Number('0x7fff')],\n set: (view, value, le) => view.setInt16(0, Number(value), le),\n size: 2,\n });\n\nexport const getI16Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 2> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getInt16(0, le),\n name: 'i16',\n size: 2,\n });\n\nexport const getI16Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 2> =>\n combineCodec(getI16Encoder(config), getI16Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 4> =>\n numberEncoderFactory({\n config,\n name: 'i32',\n range: [-Number('0x7fffffff') - 1, Number('0x7fffffff')],\n set: (view, value, le) => view.setInt32(0, Number(value), le),\n size: 4,\n });\n\nexport const getI32Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 4> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getInt32(0, le),\n name: 'i32',\n size: 4,\n });\n\nexport const getI32Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 4> =>\n combineCodec(getI32Encoder(config), getI32Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 8> =>\n numberEncoderFactory({\n config,\n name: 'i64',\n range: [-BigInt('0x7fffffffffffffff') - 1n, BigInt('0x7fffffffffffffff')],\n set: (view, value, le) => view.setBigInt64(0, BigInt(value), le),\n size: 8,\n });\n\nexport const getI64Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<bigint, 8> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getBigInt64(0, le),\n name: 'i64',\n size: 8,\n });\n\nexport const getI64Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, bigint, 8> =>\n combineCodec(getI64Encoder(config), getI64Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI8Encoder = (): FixedSizeEncoder<bigint | number, 1> =>\n numberEncoderFactory({\n name: 'i8',\n range: [-Number('0x7f') - 1, Number('0x7f')],\n set: (view, value) => view.setInt8(0, Number(value)),\n size: 1,\n });\n\nexport const getI8Decoder = (): FixedSizeDecoder<number, 1> =>\n numberDecoderFactory({\n get: view => view.getInt8(0),\n name: 'i8',\n size: 1,\n });\n\nexport const getI8Codec = (): FixedSizeCodec<bigint | number, number, 1> =>\n combineCodec(getI8Encoder(), getI8Decoder());\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n Offset,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\n\n/**\n * Encodes short u16 numbers.\n * @see {@link getShortU16Codec} for a more detailed description.\n */\nexport const getShortU16Encoder = (): VariableSizeEncoder<bigint | number> =>\n createEncoder({\n getSizeFromValue: (value: bigint | number): number => {\n if (value <= 0b01111111) return 1;\n if (value <= 0b0011111111111111) return 2;\n return 3;\n },\n maxSize: 3,\n write: (value: bigint | number, bytes: Uint8Array, offset: Offset): Offset => {\n assertNumberIsBetweenForCodec('shortU16', 0, 65535, value);\n const shortU16Bytes = [0];\n for (let ii = 0; ; ii += 1) {\n // Shift the bits of the value over such that the next 7 bits are at the right edge.\n const alignedValue = Number(value) >> (ii * 7);\n if (alignedValue === 0) {\n // No more bits to consume.\n break;\n }\n // Extract those 7 bits using a mask.\n const nextSevenBits = 0b1111111 & alignedValue;\n shortU16Bytes[ii] = nextSevenBits;\n if (ii > 0) {\n // Set the continuation bit of the previous slice.\n shortU16Bytes[ii - 1] |= 0b10000000;\n }\n }\n bytes.set(shortU16Bytes, offset);\n return offset + shortU16Bytes.length;\n },\n });\n\n/**\n * Decodes short u16 numbers.\n * @see {@link getShortU16Codec} for a more detailed description.\n */\nexport const getShortU16Decoder = (): VariableSizeDecoder<number> =>\n createDecoder({\n maxSize: 3,\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset): [number, Offset] => {\n let value = 0;\n let byteCount = 0;\n while (++byteCount) {\n const byteIndex = byteCount - 1;\n const currentByte = bytes[offset + byteIndex];\n const nextSevenBits = 0b1111111 & currentByte;\n // Insert the next group of seven bits into the correct slot of the output value.\n value |= nextSevenBits << (byteIndex * 7);\n if ((currentByte & 0b10000000) === 0) {\n // This byte does not have its continuation bit set. We're done.\n break;\n }\n }\n return [value, offset + byteCount];\n },\n });\n\n/**\n * Encodes and decodes short u16 numbers.\n *\n * Short u16 numbers are the same as u16, but serialized with 1 to 3 bytes.\n * If the value is above 0x7f, the top bit is set and the remaining\n * value is stored in the next bytes. Each byte follows the same\n * pattern until the 3rd byte. The 3rd byte, if needed, uses\n * all 8 bits to store the last byte of the original value.\n */\nexport const getShortU16Codec = (): VariableSizeCodec<bigint | number, number> =>\n combineCodec(getShortU16Encoder(), getShortU16Decoder());\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU128Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 16> =>\n numberEncoderFactory({\n config,\n name: 'u128',\n range: [0n, BigInt('0xffffffffffffffffffffffffffffffff')],\n set: (view, value, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const rightMask = 0xffffffffffffffffn;\n view.setBigUint64(leftOffset, BigInt(value) >> 64n, le);\n view.setBigUint64(rightOffset, BigInt(value) & rightMask, le);\n },\n size: 16,\n });\n\nexport const getU128Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<bigint, 16> =>\n numberDecoderFactory({\n config,\n get: (view, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const left = view.getBigUint64(leftOffset, le);\n const right = view.getBigUint64(rightOffset, le);\n return (left << 64n) + right;\n },\n name: 'u128',\n size: 16,\n });\n\nexport const getU128Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, bigint, 16> =>\n combineCodec(getU128Encoder(config), getU128Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU16Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 2> =>\n numberEncoderFactory({\n config,\n name: 'u16',\n range: [0, Number('0xffff')],\n set: (view, value, le) => view.setUint16(0, Number(value), le),\n size: 2,\n });\n\nexport const getU16Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 2> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getUint16(0, le),\n name: 'u16',\n size: 2,\n });\n\nexport const getU16Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 2> =>\n combineCodec(getU16Encoder(config), getU16Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 4> =>\n numberEncoderFactory({\n config,\n name: 'u32',\n range: [0, Number('0xffffffff')],\n set: (view, value, le) => view.setUint32(0, Number(value), le),\n size: 4,\n });\n\nexport const getU32Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 4> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getUint32(0, le),\n name: 'u32',\n size: 4,\n });\n\nexport const getU32Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 4> =>\n combineCodec(getU32Encoder(config), getU32Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 8> =>\n numberEncoderFactory({\n config,\n name: 'u64',\n range: [0n, BigInt('0xffffffffffffffff')],\n set: (view, value, le) => view.setBigUint64(0, BigInt(value), le),\n size: 8,\n });\n\nexport const getU64Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<bigint, 8> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getBigUint64(0, le),\n name: 'u64',\n size: 8,\n });\n\nexport const getU64Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, bigint, 8> =>\n combineCodec(getU64Encoder(config), getU64Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU8Encoder = (): FixedSizeEncoder<bigint | number, 1> =>\n numberEncoderFactory({\n name: 'u8',\n range: [0, Number('0xff')],\n set: (view, value) => view.setUint8(0, Number(value)),\n size: 1,\n });\n\nexport const getU8Decoder = (): FixedSizeDecoder<number, 1> =>\n numberDecoderFactory({\n get: view => view.getUint8(0),\n name: 'u8',\n size: 1,\n });\n\nexport const getU8Codec = (): FixedSizeCodec<bigint | number, number, 1> =>\n combineCodec(getU8Encoder(), getU8Decoder());\n","import { SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, SolanaError } from '@solana/errors';\n\n/** Checks the number of items in an array-like structure is expected. */\nexport function assertValidNumberOfItemsForCodec(\n codecDescription: string,\n expected: bigint | number,\n actual: bigint | number,\n) {\n if (expected !== actual) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual,\n codecDescription,\n expected,\n });\n }\n}\n","import { isFixedSize } from '@solana/codecs-core';\n\n/**\n * Functionally, this type helper is equivalent to the identity type — i.e. `type Identity<T> = T`.\n * However, wrapping generic object mappings in this type significantly reduces the number\n * of instantiation expressions processed, which increases TypeScript performance and\n * prevents \"Type instantiation is excessively deep and possibly infinite\" errors.\n *\n * This works because TypeScript doesn't create a new level of nesting when encountering conditional generic types.\n * @see https://github.com/microsoft/TypeScript/issues/34933\n * @see https://github.com/kysely-org/kysely/pull/483\n */\nexport type DrainOuterGeneric<T> = [T] extends [unknown] ? T : never;\n\nexport function maxCodecSizes(sizes: (number | null)[]): number | null {\n return sizes.reduce(\n (all, size) => (all === null || size === null ? null : Math.max(all, size)),\n 0 as number | null,\n );\n}\n\nexport function sumCodecSizes(sizes: (number | null)[]): number | null {\n return sizes.reduce((all, size) => (all === null || size === null ? null : all + size), 0 as number | null);\n}\n\nexport function getFixedSize(codec: { fixedSize: number } | { maxSize?: number }): number | null {\n return isFixedSize(codec) ? codec.fixedSize : null;\n}\n\nexport function getMaxSize(codec: { fixedSize: number } | { maxSize?: number }): number | null {\n return isFixedSize(codec) ? codec.fixedSize : (codec.maxSize ?? null);\n}\n","import {\n Codec,\n combineCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n getEncodedSize,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { getU32Decoder, getU32Encoder, NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\n\nimport { assertValidNumberOfItemsForCodec } from './assertions';\nimport { getFixedSize, getMaxSize } from './utils';\n\n/**\n * Represents all the size options for array-like codecs\n * — i.e. `array`, `map` and `set`.\n *\n * It can be one of the following:\n * - a {@link NumberCodec} that prefixes its content with its size.\n * - a fixed number of items.\n * - or `'remainder'` to infer the number of items by dividing\n * the rest of the byte array by the fixed size of its item.\n * Note that this option is only available for fixed-size items.\n */\nexport type ArrayLikeCodecSize<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> =\n | TPrefix\n | number\n | 'remainder';\n\n/** Defines the configs for array codecs. */\nexport type ArrayCodecConfig<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * The size of the array.\n * @defaultValue u32 prefix.\n */\n size?: ArrayLikeCodecSize<TPrefix>;\n};\n\n/**\n * Encodes an array of items.\n *\n * @param item - The encoder to use for the array's items.\n * @param config - A set of config for the encoder.\n */\nexport function getArrayEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: ArrayCodecConfig<NumberEncoder> & { size: 0 },\n): FixedSizeEncoder<TFrom[], 0>;\nexport function getArrayEncoder<TFrom>(\n item: FixedSizeEncoder<TFrom>,\n config: ArrayCodecConfig<NumberEncoder> & { size: number },\n): FixedSizeEncoder<TFrom[]>;\nexport function getArrayEncoder<TFrom>(\n item: Encoder<TFrom>,\n config?: ArrayCodecConfig<NumberEncoder>,\n): VariableSizeEncoder<TFrom[]>;\nexport function getArrayEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: ArrayCodecConfig<NumberEncoder> = {},\n): Encoder<TFrom[]> {\n const size = config.size ?? getU32Encoder();\n const fixedSize = computeArrayLikeCodecSize(size, getFixedSize(item));\n const maxSize = computeArrayLikeCodecSize(size, getMaxSize(item)) ?? undefined;\n\n return createEncoder({\n ...(fixedSize !== null\n ? { fixedSize }\n : {\n getSizeFromValue: (array: TFrom[]) => {\n const prefixSize = typeof size === 'object' ? getEncodedSize(array.length, size) : 0;\n return prefixSize + [...array].reduce((all, value) => all + getEncodedSize(value, item), 0);\n },\n maxSize,\n }),\n write: (array: TFrom[], bytes, offset) => {\n if (typeof size === 'number') {\n assertValidNumberOfItemsForCodec('array', size, array.length);\n }\n if (typeof size === 'object') {\n offset = size.write(array.length, bytes, offset);\n }\n array.forEach(value => {\n offset = item.write(value, bytes, offset);\n });\n return offset;\n },\n });\n}\n\n/**\n * Decodes an array of items.\n *\n * @param item - The encoder to use for the array's items.\n * @param config - A set of config for the encoder.\n */\nexport function getArrayDecoder<TTo>(\n item: Decoder<TTo>,\n config: ArrayCodecConfig<NumberDecoder> & { size: 0 },\n): FixedSizeDecoder<TTo[], 0>;\nexport function getArrayDecoder<TTo>(\n item: FixedSizeDecoder<TTo>,\n config: ArrayCodecConfig<NumberDecoder> & { size: number },\n): FixedSizeDecoder<TTo[]>;\nexport function getArrayDecoder<TTo>(\n item: Decoder<TTo>,\n config?: ArrayCodecConfig<NumberDecoder>,\n): VariableSizeDecoder<TTo[]>;\nexport function getArrayDecoder<TTo>(item: Decoder<TTo>, config: ArrayCodecConfig<NumberDecoder> = {}): Decoder<TTo[]> {\n const size = config.size ?? getU32Decoder();\n const itemSize = getFixedSize(item);\n const fixedSize = computeArrayLikeCodecSize(size, itemSize);\n const maxSize = computeArrayLikeCodecSize(size, getMaxSize(item)) ?? undefined;\n\n return createDecoder({\n ...(fixedSize !== null ? { fixedSize } : { maxSize }),\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n const array: TTo[] = [];\n if (typeof size === 'object' && bytes.slice(offset).length === 0) {\n return [array, offset];\n }\n\n if (size === 'remainder') {\n while (offset < bytes.length) {\n const [value, newOffset] = item.read(bytes, offset);\n offset = newOffset;\n array.push(value);\n }\n return [array, offset];\n }\n\n const [resolvedSize, newOffset] = typeof size === 'number' ? [size, offset] : size.read(bytes, offset);\n offset = newOffset;\n for (let i = 0; i < resolvedSize; i += 1) {\n const [value, newOffset] = item.read(bytes, offset);\n offset = newOffset;\n array.push(value);\n }\n return [array, offset];\n },\n });\n}\n\n/**\n * Creates a codec for an array of items.\n *\n * @param item - The codec to use for the array's items.\n * @param config - A set of config for the codec.\n */\nexport function getArrayCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: ArrayCodecConfig<NumberCodec> & { size: 0 },\n): FixedSizeCodec<TFrom[], TTo[], 0>;\nexport function getArrayCodec<TFrom, TTo extends TFrom = TFrom>(\n item: FixedSizeCodec<TFrom, TTo>,\n config: ArrayCodecConfig<NumberCodec> & { size: number },\n): FixedSizeCodec<TFrom[], TTo[]>;\nexport function getArrayCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config?: ArrayCodecConfig<NumberCodec>,\n): VariableSizeCodec<TFrom[], TTo[]>;\nexport function getArrayCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: ArrayCodecConfig<NumberCodec> = {},\n): Codec<TFrom[], TTo[]> {\n return combineCodec(getArrayEncoder(item, config as object), getArrayDecoder(item, config as object));\n}\n\nfunction computeArrayLikeCodecSize(size: number | object | 'remainder', itemSize: number | null): number | null {\n if (typeof size !== 'number') return null;\n if (size === 0) return 0;\n return itemSize === null ? null : itemSize * size;\n}\n","import {\n assertByteArrayHasEnoughBytesForCodec,\n combineCodec,\n createDecoder,\n createEncoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n} from '@solana/codecs-core';\n\n/** Defines the config for bitArray codecs. */\nexport type BitArrayCodecConfig = {\n /**\n * Whether to read the bits in reverse order.\n * @defaultValue `false`\n */\n backward?: boolean;\n};\n\n/**\n * Encodes an array of booleans into bits.\n *\n * @param size - The amount of bytes to use for the bit array.\n * @param config - A set of config for the encoder.\n */\nexport function getBitArrayEncoder<TSize extends number>(\n size: TSize,\n config: BitArrayCodecConfig | boolean = {},\n): FixedSizeEncoder<boolean[], TSize> {\n const parsedConfig: BitArrayCodecConfig = typeof config === 'boolean' ? { backward: config } : config;\n const backward = parsedConfig.backward ?? false;\n return createEncoder({\n fixedSize: size,\n write(value: boolean[], bytes, offset) {\n const bytesToAdd: number[] = [];\n\n for (let i = 0; i < size; i += 1) {\n let byte = 0;\n for (let j = 0; j < 8; j += 1) {\n const feature = Number(value[i * 8 + j] ?? 0);\n byte |= feature << (backward ? j : 7 - j);\n }\n if (backward) {\n bytesToAdd.unshift(byte);\n } else {\n bytesToAdd.push(byte);\n }\n }\n\n bytes.set(bytesToAdd, offset);\n return size;\n },\n });\n}\n\n/**\n * Decodes bits into an array of booleans.\n *\n * @param size - The amount of bytes to use for the bit array.\n * @param config - A set of config for the decoder.\n */\nexport function getBitArrayDecoder<TSize extends number>(\n size: TSize,\n config: BitArrayCodecConfig | boolean = {},\n): FixedSizeDecoder<boolean[], TSize> {\n const parsedConfig: BitArrayCodecConfig = typeof config === 'boolean' ? { backward: config } : config;\n const backward = parsedConfig.backward ?? false;\n return createDecoder({\n fixedSize: size,\n read(bytes, offset) {\n assertByteArrayHasEnoughBytesForCodec('bitArray', size, bytes, offset);\n const booleans: boolean[] = [];\n let slice = bytes.slice(offset, offset + size);\n slice = backward ? slice.reverse() : slice;\n\n slice.forEach(byte => {\n for (let i = 0; i < 8; i += 1) {\n if (backward) {\n booleans.push(Boolean(byte & 1));\n byte >>= 1;\n } else {\n booleans.push(Boolean(byte & 0b1000_0000));\n byte <<= 1;\n }\n }\n });\n\n return [booleans, offset + size];\n },\n });\n}\n\n/**\n * An array of boolean codec that converts booleans to bits and vice versa.\n *\n * @param size - The amount of bytes to use for the bit array.\n * @param config - A set of config for the codec.\n */\nexport function getBitArrayCodec<TSize extends number>(\n size: TSize,\n config: BitArrayCodecConfig | boolean = {},\n): FixedSizeCodec<boolean[], boolean[], TSize> {\n return combineCodec(getBitArrayEncoder(size, config), getBitArrayDecoder(size, config));\n}\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\n\n/** Defines the config for boolean codecs. */\nexport type BooleanCodecConfig<TSize extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * The number codec to delegate to.\n * @defaultValue u8 size.\n */\n size?: TSize;\n};\n\n/**\n * Encodes booleans.\n *\n * @param config - A set of config for the encoder.\n */\nexport function getBooleanEncoder(): FixedSizeEncoder<boolean, 1>;\nexport function getBooleanEncoder<TSize extends number>(\n config: BooleanCodecConfig<NumberEncoder> & { size: FixedSizeNumberEncoder<TSize> },\n): FixedSizeEncoder<boolean, TSize>;\nexport function getBooleanEncoder(config: BooleanCodecConfig<NumberEncoder>): VariableSizeEncoder<boolean>;\nexport function getBooleanEncoder(config: BooleanCodecConfig<NumberEncoder> = {}): Encoder<boolean> {\n return transformEncoder(config.size ?? getU8Encoder(), (value: boolean) => (value ? 1 : 0));\n}\n\n/**\n * Decodes booleans.\n *\n * @param config - A set of config for the decoder.\n */\nexport function getBooleanDecoder(): FixedSizeDecoder<boolean, 1>;\nexport function getBooleanDecoder<TSize extends number>(\n config: BooleanCodecConfig<NumberDecoder> & { size: FixedSizeNumberDecoder<TSize> },\n): FixedSizeDecoder<boolean, TSize>;\nexport function getBooleanDecoder(config: BooleanCodecConfig<NumberDecoder>): VariableSizeDecoder<boolean>;\nexport function getBooleanDecoder(config: BooleanCodecConfig<NumberDecoder> = {}): Decoder<boolean> {\n return transformDecoder(config.size ?? getU8Decoder(), (value: bigint | number): boolean => Number(value) === 1);\n}\n\n/**\n * Creates a boolean codec.\n *\n * @param config - A set of config for the codec.\n */\nexport function getBooleanCodec(): FixedSizeCodec<boolean, boolean, 1>;\nexport function getBooleanCodec<TSize extends number>(\n config: BooleanCodecConfig<NumberCodec> & { size: FixedSizeNumberCodec<TSize> },\n): FixedSizeCodec<boolean, boolean, TSize>;\nexport function getBooleanCodec(config: BooleanCodecConfig<NumberCodec>): VariableSizeCodec<boolean>;\nexport function getBooleanCodec(config: BooleanCodecConfig<NumberCodec> = {}): Codec<boolean> {\n return combineCodec(getBooleanEncoder(config), getBooleanDecoder(config));\n}\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\n/**\n * Encodes byte arrays as provided.\n *\n * To control the size of the encoded byte array, you can use\n * the `fixEncoderSize` or `addEncoderSizePrefix` functions.\n */\nexport function getBytesEncoder(): VariableSizeEncoder<ReadonlyUint8Array | Uint8Array> {\n return createEncoder({\n getSizeFromValue: value => value.length,\n write: (value, bytes, offset) => {\n bytes.set(value, offset);\n return offset + value.length;\n },\n });\n}\n\n/**\n * Decodes byte arrays as-is.\n *\n * To control the size of the decoded byte array, you can use\n * the `fixDecoderSize` or `addDecoderSizePrefix` functions.\n */\nexport function getBytesDecoder(): VariableSizeDecoder<ReadonlyUint8Array> {\n return createDecoder({\n read: (bytes, offset) => {\n const slice = bytes.slice(offset);\n return [slice, offset + slice.length];\n },\n });\n}\n\n/**\n * Creates a sized bytes codec.\n *\n * To control the size of the encoded and decoded byte arrays,\n * you can use the `fixCodecSize` or `addCodecSizePrefix` functions.\n */\nexport function getBytesCodec(): VariableSizeCodec<ReadonlyUint8Array | Uint8Array, ReadonlyUint8Array> {\n return combineCodec(getBytesEncoder(), getBytesDecoder());\n}\n","import {\n combineCodec,\n containsBytes,\n createDecoder,\n createEncoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n ReadonlyUint8Array,\n} from '@solana/codecs-core';\nimport { getBase16Decoder } from '@solana/codecs-strings';\nimport { SOLANA_ERROR__CODECS__INVALID_CONSTANT, SolanaError } from '@solana/errors';\n\n/**\n * Creates a void encoder that always sets the provided byte array when encoding.\n */\nexport function getConstantEncoder<TConstant extends ReadonlyUint8Array>(\n constant: TConstant,\n): FixedSizeEncoder<void, TConstant['length']> {\n return createEncoder({\n fixedSize: constant.length,\n write: (_, bytes, offset) => {\n bytes.set(constant, offset);\n return offset + constant.length;\n },\n });\n}\n\n/**\n * Creates a void decoder that reads the next bytes and fails if they do not match the provided constant.\n */\nexport function getConstantDecoder<TConstant extends ReadonlyUint8Array>(\n constant: TConstant,\n): FixedSizeDecoder<void, TConstant['length']> {\n return createDecoder({\n fixedSize: constant.length,\n read: (bytes, offset) => {\n const base16 = getBase16Decoder();\n if (!containsBytes(bytes, constant, offset)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_CONSTANT, {\n constant,\n data: bytes,\n hexConstant: base16.decode(constant),\n hexData: base16.decode(bytes),\n offset,\n });\n }\n return [undefined, offset + constant.length];\n },\n });\n}\n\n/**\n * Creates a void codec that always sets the provided byte array\n * when encoding and, when decoding, asserts that the next\n * bytes match the provided byte array.\n */\nexport function getConstantCodec<TConstant extends ReadonlyUint8Array>(\n constant: TConstant,\n): FixedSizeCodec<void, void, TConstant['length']> {\n return combineCodec(getConstantEncoder(constant), getConstantDecoder(constant));\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Codec,\n combineCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n getEncodedSize,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertValidNumberOfItemsForCodec } from './assertions';\nimport { DrainOuterGeneric, getFixedSize, getMaxSize, sumCodecSizes } from './utils';\n\ntype GetEncoderTypeFromItems<TItems extends readonly Encoder<any>[]> = DrainOuterGeneric<{\n [I in keyof TItems]: TItems[I] extends Encoder<infer TFrom> ? TFrom : never;\n}>;\n\ntype GetDecoderTypeFromItems<TItems extends readonly Decoder<any>[]> = DrainOuterGeneric<{\n [I in keyof TItems]: TItems[I] extends Decoder<infer TTo> ? TTo : never;\n}>;\n\n/**\n * Creates a encoder for a tuple-like array.\n *\n * @param items - The encoders to use for each item in the tuple.\n */\nexport function getTupleEncoder<const TItems extends readonly FixedSizeEncoder<any>[]>(\n items: TItems,\n): FixedSizeEncoder<GetEncoderTypeFromItems<TItems>>;\nexport function getTupleEncoder<const TItems extends readonly Encoder<any>[]>(\n items: TItems,\n): VariableSizeEncoder<GetEncoderTypeFromItems<TItems>>;\nexport function getTupleEncoder<const TItems extends readonly Encoder<any>[]>(\n items: TItems,\n): Encoder<GetEncoderTypeFromItems<TItems>> {\n type TFrom = GetEncoderTypeFromItems<TItems>;\n const fixedSize = sumCodecSizes(items.map(getFixedSize));\n const maxSize = sumCodecSizes(items.map(getMaxSize)) ?? undefined;\n\n return createEncoder({\n ...(fixedSize === null\n ? {\n getSizeFromValue: (value: TFrom) =>\n items.map((item, index) => getEncodedSize(value[index], item)).reduce((all, one) => all + one, 0),\n maxSize,\n }\n : { fixedSize }),\n write: (value: TFrom, bytes, offset) => {\n assertValidNumberOfItemsForCodec('tuple', items.length, value.length);\n items.forEach((item, index) => {\n offset = item.write(value[index], bytes, offset);\n });\n return offset;\n },\n });\n}\n\n/**\n * Creates a decoder for a tuple-like array.\n *\n * @param items - The decoders to use for each item in the tuple.\n */\n\nexport function getTupleDecoder<const TItems extends readonly FixedSizeDecoder<any>[]>(\n items: TItems,\n): FixedSizeDecoder<GetDecoderTypeFromItems<TItems>>;\nexport function getTupleDecoder<const TItems extends readonly Decoder<any>[]>(\n items: TItems,\n): VariableSizeDecoder<GetDecoderTypeFromItems<TItems>>;\nexport function getTupleDecoder<const TItems extends readonly Decoder<any>[]>(\n items: TItems,\n): Decoder<GetDecoderTypeFromItems<TItems>> {\n type TTo = GetDecoderTypeFromItems<TItems>;\n const fixedSize = sumCodecSizes(items.map(getFixedSize));\n const maxSize = sumCodecSizes(items.map(getMaxSize)) ?? undefined;\n\n return createDecoder({\n ...(fixedSize === null ? { maxSize } : { fixedSize }),\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n const values = [] as Array<any> & TTo;\n items.forEach(item => {\n const [newValue, newOffset] = item.read(bytes, offset);\n values.push(newValue);\n offset = newOffset;\n });\n return [values, offset];\n },\n });\n}\n\n/**\n * Creates a codec for a tuple-like array.\n *\n * @param items - The codecs to use for each item in the tuple.\n */\nexport function getTupleCodec<const TItems extends readonly FixedSizeCodec<any>[]>(\n items: TItems,\n): FixedSizeCodec<GetEncoderTypeFromItems<TItems>, GetDecoderTypeFromItems<TItems> & GetEncoderTypeFromItems<TItems>>;\nexport function getTupleCodec<const TItems extends readonly Codec<any>[]>(\n items: TItems,\n): VariableSizeCodec<\n GetEncoderTypeFromItems<TItems>,\n GetDecoderTypeFromItems<TItems> & GetEncoderTypeFromItems<TItems>\n>;\nexport function getTupleCodec<const TItems extends readonly Codec<any>[]>(\n items: TItems,\n): Codec<GetEncoderTypeFromItems<TItems>, GetDecoderTypeFromItems<TItems> & GetEncoderTypeFromItems<TItems>> {\n return combineCodec(\n getTupleEncoder(items),\n getTupleDecoder(items) as Decoder<GetDecoderTypeFromItems<TItems> & GetEncoderTypeFromItems<TItems>>,\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Codec,\n combineCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n getEncodedSize,\n isFixedSize,\n Offset,\n ReadonlyUint8Array,\n} from '@solana/codecs-core';\nimport { SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\nimport { DrainOuterGeneric, getMaxSize, maxCodecSizes } from './utils';\n\ntype GetEncoderTypeFromVariants<TVariants extends readonly Encoder<any>[]> = DrainOuterGeneric<{\n [I in keyof TVariants]: TVariants[I] extends Encoder<infer TFrom> ? TFrom : never;\n}>[number];\n\ntype GetDecoderTypeFromVariants<TVariants extends readonly Decoder<any>[]> = DrainOuterGeneric<{\n [I in keyof TVariants]: TVariants[I] extends Decoder<infer TFrom> ? TFrom : never;\n}>[number];\n\n/**\n * Creates a union encoder from the provided array of encoder.\n *\n * @param variants - The variant encoders of the union.\n * @param getIndexFromValue - A function that returns the index of the variant from the provided value.\n */\nexport function getUnionEncoder<const TVariants extends readonly Encoder<any>[]>(\n variants: TVariants,\n getIndexFromValue: (value: GetEncoderTypeFromVariants<TVariants>) => number,\n): Encoder<GetEncoderTypeFromVariants<TVariants>> {\n type TFrom = GetEncoderTypeFromVariants<TVariants>;\n const fixedSize = getUnionFixedSize(variants);\n const write: Encoder<TFrom>['write'] = (variant, bytes, offset) => {\n const index = getIndexFromValue(variant);\n assertValidVariantIndex(variants, index);\n return variants[index].write(variant, bytes, offset);\n };\n\n if (fixedSize !== null) {\n return createEncoder({ fixedSize, write });\n }\n\n const maxSize = getUnionMaxSize(variants);\n return createEncoder({\n ...(maxSize !== null ? { maxSize } : {}),\n getSizeFromValue: variant => {\n const index = getIndexFromValue(variant);\n assertValidVariantIndex(variants, index);\n return getEncodedSize(variant, variants[index]);\n },\n write,\n });\n}\n\n/**\n * Creates a union decoder from the provided array of decoder.\n *\n * @param variants - The variant decoders of the union.\n * @param getIndexFromBytes - A function that returns the index of the variant from the byte array.\n */\nexport function getUnionDecoder<const TVariants extends readonly Decoder<any>[]>(\n variants: TVariants,\n getIndexFromBytes: (bytes: ReadonlyUint8Array, offset: Offset) => number,\n): Decoder<GetDecoderTypeFromVariants<TVariants>> {\n type TTo = GetDecoderTypeFromVariants<TVariants>;\n const fixedSize = getUnionFixedSize(variants);\n const read: Decoder<TTo>['read'] = (bytes, offset) => {\n const index = getIndexFromBytes(bytes, offset);\n assertValidVariantIndex(variants, index);\n return variants[index].read(bytes, offset);\n };\n\n if (fixedSize !== null) {\n return createDecoder({ fixedSize, read });\n }\n\n const maxSize = getUnionMaxSize(variants);\n return createDecoder({ ...(maxSize !== null ? { maxSize } : {}), read });\n}\n\n/**\n * Creates a union codec from the provided array of codec.\n *\n * @param variants - The variant codecs of the union.\n * @param getIndexFromValue - A function that returns the index of the variant from the provided value.\n * @param getIndexFromBytes - A function that returns the index of the variant from the byte array.\n */\nexport function getUnionCodec<const TVariants extends readonly Codec<any>[]>(\n variants: TVariants,\n getIndexFromValue: (value: GetEncoderTypeFromVariants<TVariants>) => number,\n getIndexFromBytes: (bytes: ReadonlyUint8Array, offset: Offset) => number,\n): Codec<\n GetEncoderTypeFromVariants<TVariants>,\n GetDecoderTypeFromVariants<TVariants> & GetEncoderTypeFromVariants<TVariants>\n> {\n return combineCodec(\n getUnionEncoder(variants, getIndexFromValue),\n getUnionDecoder(variants, getIndexFromBytes) as Decoder<\n GetDecoderTypeFromVariants<TVariants> & GetEncoderTypeFromVariants<TVariants>\n >,\n );\n}\n\nfunction assertValidVariantIndex(variants: readonly unknown[], index: number) {\n if (typeof variants[index] === 'undefined') {\n throw new SolanaError(SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE, {\n maxRange: variants.length - 1,\n minRange: 0,\n variant: index,\n });\n }\n}\n\nfunction getUnionFixedSize<const TVariants extends readonly (Decoder<any> | Encoder<any>)[]>(variants: TVariants) {\n if (variants.length === 0) return 0;\n if (!isFixedSize(variants[0])) return null;\n const variantSize = variants[0].fixedSize;\n const sameSizedVariants = variants.every(variant => isFixedSize(variant) && variant.fixedSize === variantSize);\n return sameSizedVariants ? variantSize : null;\n}\n\nfunction getUnionMaxSize<const TVariants extends readonly (Decoder<any> | Encoder<any>)[]>(variants: TVariants) {\n return maxCodecSizes(variants.map(variant => getMaxSize(variant)));\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Codec, combineCodec, Decoder, Encoder, transformDecoder, transformEncoder } from '@solana/codecs-core';\nimport { getU8Decoder, getU8Encoder, NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\nimport { SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT, SolanaError } from '@solana/errors';\n\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\nimport { getUnionDecoder, getUnionEncoder } from './union';\nimport { DrainOuterGeneric } from './utils';\n\n/**\n * Defines a discriminated union using discriminated union types.\n *\n * @example\n * ```ts\n * type WebPageEvent =\n * | { __kind: 'pageview', url: string }\n * | { __kind: 'click', x: number, y: number };\n * ```\n */\nexport type DiscriminatedUnion<\n TDiscriminatorProperty extends string = '__kind',\n TDiscriminatorValue extends string = string,\n> = {\n [P in TDiscriminatorProperty]: TDiscriminatorValue;\n};\n\n/**\n * Extracts a variant from a discriminated union.\n *\n * @example\n * ```ts\n * type WebPageEvent =\n * | { __kind: 'pageview', url: string }\n * | { __kind: 'click', x: number, y: number };\n * type ClickEvent = GetDiscriminatedUnionVariant<WebPageEvent, '__kind', 'click'>;\n * // -> { __kind: 'click', x: number, y: number }\n * ```\n */\nexport type GetDiscriminatedUnionVariant<\n TUnion extends DiscriminatedUnion<TDiscriminatorProperty>,\n TDiscriminatorProperty extends string,\n TDiscriminatorValue extends TUnion[TDiscriminatorProperty],\n> = Extract<TUnion, DiscriminatedUnion<TDiscriminatorProperty, TDiscriminatorValue>>;\n\n/**\n * Extracts a variant from a discriminated union without its discriminator.\n *\n * @example\n * ```ts\n * type WebPageEvent =\n * | { __kind: 'pageview', url: string }\n * | { __kind: 'click', x: number, y: number };\n * type ClickEvent = GetDiscriminatedUnionVariantContent<WebPageEvent, '__kind', 'click'>;\n * // -> { x: number, y: number }\n * ```\n */\nexport type GetDiscriminatedUnionVariantContent<\n TUnion extends DiscriminatedUnion<TDiscriminatorProperty>,\n TDiscriminatorProperty extends string,\n TDiscriminatorValue extends TUnion[TDiscriminatorProperty],\n> = Omit<GetDiscriminatedUnionVariant<TUnion, TDiscriminatorProperty, TDiscriminatorValue>, TDiscriminatorProperty>;\n\n/** Defines the config for discriminated union codecs. */\nexport type DiscriminatedUnionCodecConfig<\n TDiscriminatorProperty extends string = '__kind',\n TDiscriminatorSize = NumberCodec | NumberDecoder | NumberEncoder,\n> = {\n /**\n * The property name of the discriminator.\n * @defaultValue `__kind`.\n */\n discriminator?: TDiscriminatorProperty;\n /**\n * The codec to use for the enum discriminator prefixing the variant.\n * @defaultValue u8 prefix.\n */\n size?: TDiscriminatorSize;\n};\n\ntype DiscriminatorValue = bigint | boolean | number | string | null | undefined;\ntype Variants<T> = readonly (readonly [DiscriminatorValue, T])[];\ntype ArrayIndices<T extends readonly unknown[]> = Exclude<Partial<T>['length'], T['length']> & number;\n\ntype GetEncoderTypeFromVariants<\n TVariants extends Variants<Encoder<any>>,\n TDiscriminatorProperty extends string,\n> = DrainOuterGeneric<{\n [I in ArrayIndices<TVariants>]: (TVariants[I][1] extends Encoder<infer TFrom>\n ? TFrom extends object\n ? TFrom\n : object\n : never) & { [P in TDiscriminatorProperty]: TVariants[I][0] };\n}>[ArrayIndices<TVariants>];\n\ntype GetDecoderTypeFromVariants<\n TVariants extends Variants<Decoder<any>>,\n TDiscriminatorProperty extends string,\n> = DrainOuterGeneric<{\n [I in ArrayIndices<TVariants>]: (TVariants[I][1] extends Decoder<infer TTo>\n ? TTo extends object\n ? TTo\n : object\n : never) & { [P in TDiscriminatorProperty]: TVariants[I][0] };\n}>[ArrayIndices<TVariants>];\n\n/**\n * Creates a discriminated union encoder.\n *\n * @param variants - The variant encoders of the discriminated union.\n * @param config - A set of config for the encoder.\n */\nexport function getDiscriminatedUnionEncoder<\n const TVariants extends Variants<Encoder<any>>,\n const TDiscriminatorProperty extends string = '__kind',\n>(\n variants: TVariants,\n config: DiscriminatedUnionCodecConfig<TDiscriminatorProperty, NumberEncoder> = {},\n): Encoder<GetEncoderTypeFromVariants<TVariants, TDiscriminatorProperty>> {\n type TFrom = GetEncoderTypeFromVariants<TVariants, TDiscriminatorProperty>;\n const discriminatorProperty = (config.discriminator ?? '__kind') as TDiscriminatorProperty;\n const prefix = config.size ?? getU8Encoder();\n return getUnionEncoder(\n variants.map(([, variant], index) =>\n transformEncoder(getTupleEncoder([prefix, variant]), (value: TFrom): [number, TFrom] => [index, value]),\n ),\n value => getVariantDiscriminator(variants, value[discriminatorProperty]),\n );\n}\n\n/**\n * Creates a discriminated union decoder.\n *\n * @param variants - The variant decoders of the discriminated union.\n * @param config - A set of config for the decoder.\n */\nexport function getDiscriminatedUnionDecoder<\n const TVariants extends Variants<Decoder<any>>,\n const TDiscriminatorProperty extends string = '__kind',\n>(\n variants: TVariants,\n config: DiscriminatedUnionCodecConfig<TDiscriminatorProperty, NumberDecoder> = {},\n): Decoder<GetDecoderTypeFromVariants<TVariants, TDiscriminatorProperty>> {\n const discriminatorProperty = config.discriminator ?? '__kind';\n const prefix = config.size ?? getU8Decoder();\n return getUnionDecoder(\n variants.map(([discriminator, variant]) =>\n transformDecoder(getTupleDecoder([prefix, variant]), ([, value]) => ({\n [discriminatorProperty]: discriminator,\n ...value,\n })),\n ),\n (bytes, offset) => Number(prefix.read(bytes, offset)[0]),\n );\n}\n\n/**\n * Creates a discriminated union codec.\n *\n * @param variants - The variant codecs of the discriminated union.\n * @param config - A set of config for the codec.\n */\nexport function getDiscriminatedUnionCodec<\n const TVariants extends Variants<Codec<any, any>>,\n const TDiscriminatorProperty extends string = '__kind',\n>(\n variants: TVariants,\n config: DiscriminatedUnionCodecConfig<TDiscriminatorProperty, NumberCodec> = {},\n): Codec<\n GetEncoderTypeFromVariants<TVariants, TDiscriminatorProperty>,\n GetDecoderTypeFromVariants<TVariants, TDiscriminatorProperty> &\n GetEncoderTypeFromVariants<TVariants, TDiscriminatorProperty>\n> {\n return combineCodec(\n getDiscriminatedUnionEncoder(variants, config),\n getDiscriminatedUnionDecoder(variants, config) as Decoder<\n GetDecoderTypeFromVariants<TVariants, TDiscriminatorProperty> &\n GetEncoderTypeFromVariants<TVariants, TDiscriminatorProperty>\n >,\n );\n}\n\nfunction getVariantDiscriminator<const TVariants extends Variants<Decoder<any> | Encoder<any>>>(\n variants: TVariants,\n discriminatorValue: DiscriminatorValue,\n) {\n const discriminator = variants.findIndex(([key]) => discriminatorValue === key);\n if (discriminator < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT, {\n value: discriminatorValue,\n variants: variants.map(([key]) => key),\n });\n }\n return discriminator;\n}\n\n/** @deprecated Use `getDiscriminatedUnionEncoder` instead. */\nexport const getDataEnumEncoder = getDiscriminatedUnionEncoder;\n\n/** @deprecated Use `getDiscriminatedUnionDecoder` instead. */\nexport const getDataEnumDecoder = getDiscriminatedUnionDecoder;\n\n/** @deprecated Use `getDiscriminatedUnionCodec` instead. */\nexport const getDataEnumCodec = getDiscriminatedUnionCodec;\n","/**\n * Defines the \"lookup object\" of an enum.\n *\n * @example\n * ```ts\n * enum Direction { Left, Right };\n * ```\n */\nexport type EnumLookupObject = { [key: string]: number | string };\n\n/**\n * Returns the allowed input for an enum.\n *\n * @example\n * ```ts\n * enum Direction { Left, Right };\n * type DirectionInput = GetEnumFrom<Direction>; // \"Left\" | \"Right\" | 0 | 1\n * ```\n */\nexport type GetEnumFrom<TEnum extends EnumLookupObject> = TEnum[keyof TEnum] | keyof TEnum;\n\n/**\n * Returns all the available variants of an enum.\n *\n * @example\n * ```ts\n * enum Direction { Left, Right };\n * type DirectionOutput = GetEnumTo<Direction>; // 0 | 1\n * ```\n */\nexport type GetEnumTo<TEnum extends EnumLookupObject> = TEnum[keyof TEnum];\n\nexport function getEnumStats(constructor: EnumLookupObject) {\n const numericalValues = [...new Set(Object.values(constructor).filter(v => typeof v === 'number'))].sort();\n const enumRecord = Object.fromEntries(Object.entries(constructor).slice(numericalValues.length)) as Record<\n string,\n number | string\n >;\n const enumKeys = Object.keys(enumRecord);\n const enumValues = Object.values(enumRecord);\n const stringValues: string[] = [\n ...new Set([...enumKeys, ...enumValues.filter((v): v is string => typeof v === 'string')]),\n ];\n\n return { enumKeys, enumRecord, enumValues, numericalValues, stringValues };\n}\n\nexport function getEnumIndexFromVariant({\n enumKeys,\n enumValues,\n variant,\n}: {\n enumKeys: string[];\n enumValues: (number | string)[];\n variant: number | string | symbol;\n}): number {\n const valueIndex = findLastIndex(enumValues, value => value === variant);\n if (valueIndex >= 0) return valueIndex;\n return enumKeys.findIndex(key => key === variant);\n}\n\nexport function getEnumIndexFromDiscriminator({\n discriminator,\n enumKeys,\n enumValues,\n useValuesAsDiscriminators,\n}: {\n discriminator: number;\n enumKeys: string[];\n enumValues: (number | string)[];\n useValuesAsDiscriminators: boolean;\n}): number {\n if (!useValuesAsDiscriminators) {\n return discriminator >= 0 && discriminator < enumKeys.length ? discriminator : -1;\n }\n return findLastIndex(enumValues, value => value === discriminator);\n}\n\nfunction findLastIndex<T>(array: Array<T>, predicate: (value: T, index: number, obj: T[]) => boolean): number {\n let l = array.length;\n while (l--) {\n if (predicate(array[l], l, array)) return l;\n }\n return -1;\n}\n\nexport function formatNumericalValues(values: number[]): string {\n if (values.length === 0) return '';\n let range: [number, number] = [values[0], values[0]];\n const ranges: string[] = [];\n for (let index = 1; index < values.length; index++) {\n const value = values[index];\n if (range[1] + 1 === value) {\n range[1] = value;\n } else {\n ranges.push(range[0] === range[1] ? `${range[0]}` : `${range[0]}-${range[1]}`);\n range = [value, value];\n }\n }\n ranges.push(range[0] === range[1] ? `${range[0]}` : `${range[0]}-${range[1]}`);\n return ranges.join(', ');\n}\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\nimport {\n SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS,\n SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT,\n SolanaError,\n} from '@solana/errors';\n\nimport {\n EnumLookupObject,\n formatNumericalValues,\n GetEnumFrom,\n getEnumIndexFromDiscriminator,\n getEnumIndexFromVariant,\n getEnumStats,\n GetEnumTo,\n} from './enum-helpers';\n\n/** Defines the config for enum codecs. */\nexport type EnumCodecConfig<TDiscriminator extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * The codec to use for the enum discriminator.\n * @defaultValue u8 discriminator.\n */\n size?: TDiscriminator;\n\n /**\n * When set to `true`, numeric values will be used as discriminantors and\n * an error will be thrown if a string value is found on the enum.\n * @defaultValue `false`\n */\n useValuesAsDiscriminators?: boolean;\n};\n\n/**\n * Creates an enum encoder.\n *\n * @param constructor - The constructor of the enum.\n * @param config - A set of config for the encoder.\n */\nexport function getEnumEncoder<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config?: Omit<EnumCodecConfig<NumberEncoder>, 'size'>,\n): FixedSizeEncoder<GetEnumFrom<TEnum>, 1>;\nexport function getEnumEncoder<TEnum extends EnumLookupObject, TSize extends number>(\n constructor: TEnum,\n config: EnumCodecConfig<NumberEncoder> & { size: FixedSizeNumberEncoder<TSize> },\n): FixedSizeEncoder<GetEnumFrom<TEnum>, TSize>;\nexport function getEnumEncoder<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config?: EnumCodecConfig<NumberEncoder>,\n): VariableSizeEncoder<GetEnumFrom<TEnum>>;\nexport function getEnumEncoder<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config: EnumCodecConfig<NumberEncoder> = {},\n): Encoder<GetEnumFrom<TEnum>> {\n const prefix = config.size ?? getU8Encoder();\n const useValuesAsDiscriminators = config.useValuesAsDiscriminators ?? false;\n const { enumKeys, enumValues, numericalValues, stringValues } = getEnumStats(constructor);\n if (useValuesAsDiscriminators && enumValues.some(value => typeof value === 'string')) {\n throw new SolanaError(SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS, {\n stringValues: enumValues.filter((v): v is string => typeof v === 'string'),\n });\n }\n return transformEncoder(prefix, (variant: GetEnumFrom<TEnum>): number => {\n const index = getEnumIndexFromVariant({ enumKeys, enumValues, variant });\n if (index < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT, {\n formattedNumericalValues: formatNumericalValues(numericalValues),\n numericalValues,\n stringValues,\n variant,\n });\n }\n return useValuesAsDiscriminators ? (enumValues[index] as number) : index;\n });\n}\n\n/**\n * Creates an enum decoder.\n *\n * @param constructor - The constructor of the enum.\n * @param config - A set of config for the decoder.\n */\nexport function getEnumDecoder<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config?: Omit<EnumCodecConfig<NumberDecoder>, 'size'>,\n): FixedSizeDecoder<GetEnumTo<TEnum>, 1>;\nexport function getEnumDecoder<TEnum extends EnumLookupObject, TSize extends number>(\n constructor: TEnum,\n config: EnumCodecConfig<NumberDecoder> & { size: FixedSizeNumberDecoder<TSize> },\n): FixedSizeDecoder<GetEnumTo<TEnum>, TSize>;\nexport function getEnumDecoder<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config?: EnumCodecConfig<NumberDecoder>,\n): VariableSizeDecoder<GetEnumTo<TEnum>>;\nexport function getEnumDecoder<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config: EnumCodecConfig<NumberDecoder> = {},\n): Decoder<GetEnumTo<TEnum>> {\n const prefix = config.size ?? getU8Decoder();\n const useValuesAsDiscriminators = config.useValuesAsDiscriminators ?? false;\n const { enumKeys, enumValues, numericalValues } = getEnumStats(constructor);\n if (useValuesAsDiscriminators && enumValues.some(value => typeof value === 'string')) {\n throw new SolanaError(SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS, {\n stringValues: enumValues.filter((v): v is string => typeof v === 'string'),\n });\n }\n return transformDecoder(prefix, (value: bigint | number): GetEnumTo<TEnum> => {\n const discriminator = Number(value);\n const index = getEnumIndexFromDiscriminator({\n discriminator,\n enumKeys,\n enumValues,\n useValuesAsDiscriminators,\n });\n if (index < 0) {\n const validDiscriminators = useValuesAsDiscriminators\n ? numericalValues\n : [...Array(enumKeys.length).keys()];\n throw new SolanaError(SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE, {\n discriminator,\n formattedValidDiscriminators: formatNumericalValues(validDiscriminators),\n validDiscriminators,\n });\n }\n return enumValues[index] as GetEnumTo<TEnum>;\n });\n}\n\n/**\n * Creates an enum codec.\n *\n * @param constructor - The constructor of the enum.\n * @param config - A set of config for the codec.\n */\nexport function getEnumCodec<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config?: Omit<EnumCodecConfig<NumberCodec>, 'size'>,\n): FixedSizeCodec<GetEnumFrom<TEnum>, GetEnumTo<TEnum>, 1>;\nexport function getEnumCodec<TEnum extends EnumLookupObject, TSize extends number>(\n constructor: TEnum,\n config: EnumCodecConfig<NumberCodec> & { size: FixedSizeNumberCodec<TSize> },\n): FixedSizeCodec<GetEnumFrom<TEnum>, GetEnumTo<TEnum>, TSize>;\nexport function getEnumCodec<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config?: EnumCodecConfig<NumberCodec>,\n): VariableSizeCodec<GetEnumFrom<TEnum>, GetEnumTo<TEnum>>;\nexport function getEnumCodec<TEnum extends EnumLookupObject>(\n constructor: TEnum,\n config: EnumCodecConfig<NumberCodec> = {},\n): Codec<GetEnumFrom<TEnum>, GetEnumTo<TEnum>> {\n return combineCodec(getEnumEncoder(constructor, config), getEnumDecoder(constructor, config));\n}\n\n/** @deprecated Use `getEnumEncoder` instead. */\nexport const getScalarEnumEncoder = getEnumEncoder;\n\n/** @deprecated Use `getEnumDecoder` instead. */\nexport const getScalarEnumDecoder = getEnumDecoder;\n\n/** @deprecated Use `getEnumCodec` instead. */\nexport const getScalarEnumCodec = getEnumCodec;\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\n\n/**\n * Prefixes a given encoder with a list of void encoders.\n * All void encoders are hidden from the returned encoder.\n */\nexport function getHiddenPrefixEncoder<TFrom>(\n encoder: FixedSizeEncoder<TFrom>,\n prefixedEncoders: readonly FixedSizeEncoder<void>[],\n): FixedSizeEncoder<TFrom>;\nexport function getHiddenPrefixEncoder<TFrom>(\n encoder: Encoder<TFrom>,\n prefixedEncoders: readonly Encoder<void>[],\n): VariableSizeEncoder<TFrom>;\nexport function getHiddenPrefixEncoder<TFrom>(\n encoder: Encoder<TFrom>,\n prefixedEncoders: readonly Encoder<void>[],\n): Encoder<TFrom> {\n return transformEncoder(\n getTupleEncoder([...prefixedEncoders, encoder]) as Encoder<readonly [...void[], TFrom]>,\n (value: TFrom) => [...prefixedEncoders.map(() => undefined), value] as const,\n );\n}\n\n/**\n * Prefixes a given decoder with a list of void decoder.\n * All void decoder are hidden from the returned decoder.\n */\nexport function getHiddenPrefixDecoder<TTo>(\n decoder: FixedSizeDecoder<TTo>,\n prefixedDecoders: readonly FixedSizeDecoder<void>[],\n): FixedSizeDecoder<TTo>;\nexport function getHiddenPrefixDecoder<TTo>(\n decoder: Decoder<TTo>,\n prefixedDecoders: readonly Decoder<void>[],\n): VariableSizeDecoder<TTo>;\nexport function getHiddenPrefixDecoder<TTo>(\n decoder: Decoder<TTo>,\n prefixedDecoders: readonly Decoder<void>[],\n): Decoder<TTo> {\n return transformDecoder(\n getTupleDecoder([...prefixedDecoders, decoder]) as Decoder<readonly [...void[], TTo]>,\n tuple => tuple[tuple.length - 1] as TTo,\n );\n}\n\n/**\n * Prefixes a given codec with a list of void codec.\n * All void codec are hidden from the returned codec.\n */\nexport function getHiddenPrefixCodec<TFrom, TTo extends TFrom>(\n codec: FixedSizeCodec<TFrom, TTo>,\n prefixedCodecs: readonly FixedSizeCodec<void>[],\n): FixedSizeCodec<TFrom, TTo>;\nexport function getHiddenPrefixCodec<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n prefixedCodecs: readonly Codec<void>[],\n): VariableSizeCodec<TFrom, TTo>;\nexport function getHiddenPrefixCodec<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n prefixedCodecs: readonly Codec<void>[],\n): Codec<TFrom, TTo> {\n return combineCodec(getHiddenPrefixEncoder(codec, prefixedCodecs), getHiddenPrefixDecoder(codec, prefixedCodecs));\n}\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\n\n/**\n * Suffixes a given encoder with a list of void encoders.\n * All void encoders are hidden from the returned encoder.\n */\nexport function getHiddenSuffixEncoder<TFrom>(\n encoder: FixedSizeEncoder<TFrom>,\n suffixedEncoders: readonly FixedSizeEncoder<void>[],\n): FixedSizeEncoder<TFrom>;\nexport function getHiddenSuffixEncoder<TFrom>(\n encoder: Encoder<TFrom>,\n suffixedEncoders: readonly Encoder<void>[],\n): VariableSizeEncoder<TFrom>;\nexport function getHiddenSuffixEncoder<TFrom>(\n encoder: Encoder<TFrom>,\n suffixedEncoders: readonly Encoder<void>[],\n): Encoder<TFrom> {\n return transformEncoder(\n getTupleEncoder([encoder, ...suffixedEncoders]) as Encoder<readonly [TFrom, ...void[]]>,\n (value: TFrom) => [value, ...suffixedEncoders.map(() => undefined)] as const,\n );\n}\n\n/**\n * Suffixes a given decoder with a list of void decoder.\n * All void decoder are hidden from the returned decoder.\n */\nexport function getHiddenSuffixDecoder<TTo>(\n decoder: FixedSizeDecoder<TTo>,\n suffixedDecoders: readonly FixedSizeDecoder<void>[],\n): FixedSizeDecoder<TTo>;\nexport function getHiddenSuffixDecoder<TTo>(\n decoder: Decoder<TTo>,\n suffixedDecoders: readonly Decoder<void>[],\n): VariableSizeDecoder<TTo>;\nexport function getHiddenSuffixDecoder<TTo>(\n decoder: Decoder<TTo>,\n suffixedDecoders: readonly Decoder<void>[],\n): Decoder<TTo> {\n return transformDecoder(\n getTupleDecoder([decoder, ...suffixedDecoders]) as Decoder<readonly [TTo, ...void[]]>,\n tuple => tuple[0],\n );\n}\n\n/**\n * Suffixes a given codec with a list of void codec.\n * All void codec are hidden from the returned codec.\n */\nexport function getHiddenSuffixCodec<TFrom, TTo extends TFrom>(\n codec: FixedSizeCodec<TFrom, TTo>,\n suffixedCodecs: readonly FixedSizeCodec<void>[],\n): FixedSizeCodec<TFrom, TTo>;\nexport function getHiddenSuffixCodec<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n suffixedCodecs: readonly Codec<void>[],\n): VariableSizeCodec<TFrom, TTo>;\nexport function getHiddenSuffixCodec<TFrom, TTo extends TFrom>(\n codec: Codec<TFrom, TTo>,\n suffixedCodecs: readonly Codec<void>[],\n): Codec<TFrom, TTo> {\n return combineCodec(getHiddenSuffixEncoder(codec, suffixedCodecs), getHiddenSuffixDecoder(codec, suffixedCodecs));\n}\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\n\nimport { ArrayLikeCodecSize, getArrayDecoder, getArrayEncoder } from './array';\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\n\n/** Defines the config for Map codecs. */\nexport type MapCodecConfig<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * The size of the array.\n * @defaultValue u32 prefix.\n */\n size?: ArrayLikeCodecSize<TPrefix>;\n};\n\n/**\n * Creates a encoder for a map.\n *\n * @param key - The encoder to use for the map's keys.\n * @param value - The encoder to use for the map's values.\n * @param config - A set of config for the encoder.\n */\nexport function getMapEncoder<TFromKey, TFromValue>(\n key: Encoder<TFromKey>,\n value: Encoder<TFromValue>,\n config: MapCodecConfig<NumberEncoder> & { size: 0 },\n): FixedSizeEncoder<Map<TFromKey, TFromValue>, 0>;\nexport function getMapEncoder<TFromKey, TFromValue>(\n key: FixedSizeEncoder<TFromKey>,\n value: FixedSizeEncoder<TFromValue>,\n config: MapCodecConfig<NumberEncoder> & { size: number },\n): FixedSizeEncoder<Map<TFromKey, TFromValue>>;\nexport function getMapEncoder<TFromKey, TFromValue>(\n key: Encoder<TFromKey>,\n value: Encoder<TFromValue>,\n config?: MapCodecConfig<NumberEncoder>,\n): VariableSizeEncoder<Map<TFromKey, TFromValue>>;\nexport function getMapEncoder<TFromKey, TFromValue>(\n key: Encoder<TFromKey>,\n value: Encoder<TFromValue>,\n config: MapCodecConfig<NumberEncoder> = {},\n): Encoder<Map<TFromKey, TFromValue>> {\n return transformEncoder(\n getArrayEncoder(getTupleEncoder([key, value]), config as object),\n (map: Map<TFromKey, TFromValue>): [TFromKey, TFromValue][] => [...map.entries()],\n );\n}\n\n/**\n * Creates a decoder for a map.\n *\n * @param key - The decoder to use for the map's keys.\n * @param value - The decoder to use for the map's values.\n * @param config - A set of config for the decoder.\n */\nexport function getMapDecoder<TToKey, TToValue>(\n key: Decoder<TToKey>,\n value: Decoder<TToValue>,\n config: MapCodecConfig<NumberDecoder> & { size: 0 },\n): FixedSizeDecoder<Map<TToKey, TToValue>, 0>;\nexport function getMapDecoder<TToKey, TToValue>(\n key: FixedSizeDecoder<TToKey>,\n value: FixedSizeDecoder<TToValue>,\n config: MapCodecConfig<NumberDecoder> & { size: number },\n): FixedSizeDecoder<Map<TToKey, TToValue>>;\nexport function getMapDecoder<TToKey, TToValue>(\n key: Decoder<TToKey>,\n value: Decoder<TToValue>,\n config?: MapCodecConfig<NumberDecoder>,\n): VariableSizeDecoder<Map<TToKey, TToValue>>;\nexport function getMapDecoder<TToKey, TToValue>(\n key: Decoder<TToKey>,\n value: Decoder<TToValue>,\n config: MapCodecConfig<NumberDecoder> = {},\n): Decoder<Map<TToKey, TToValue>> {\n return transformDecoder(\n getArrayDecoder(getTupleDecoder([key, value]), config as object) as Decoder<[TToKey, TToValue][]>,\n (entries: [TToKey, TToValue][]): Map<TToKey, TToValue> => new Map(entries),\n );\n}\n\n/**\n * Creates a codec for a map.\n *\n * @param key - The codec to use for the map's keys.\n * @param value - The codec to use for the map's values.\n * @param config - A set of config for the codec.\n */\nexport function getMapCodec<\n TFromKey,\n TFromValue,\n TToKey extends TFromKey = TFromKey,\n TToValue extends TFromValue = TFromValue,\n>(\n key: Codec<TFromKey, TToKey>,\n value: Codec<TFromValue, TToValue>,\n config: MapCodecConfig<NumberCodec> & { size: 0 },\n): FixedSizeCodec<Map<TFromKey, TFromValue>, Map<TToKey, TToValue>, 0>;\nexport function getMapCodec<\n TFromKey,\n TFromValue,\n TToKey extends TFromKey = TFromKey,\n TToValue extends TFromValue = TFromValue,\n>(\n key: FixedSizeCodec<TFromKey, TToKey>,\n value: FixedSizeCodec<TFromValue, TToValue>,\n config: MapCodecConfig<NumberCodec> & { size: number },\n): FixedSizeCodec<Map<TFromKey, TFromValue>, Map<TToKey, TToValue>>;\nexport function getMapCodec<\n TFromKey,\n TFromValue,\n TToKey extends TFromKey = TFromKey,\n TToValue extends TFromValue = TFromValue,\n>(\n key: Codec<TFromKey, TToKey>,\n value: Codec<TFromValue, TToValue>,\n config?: MapCodecConfig<NumberCodec>,\n): VariableSizeCodec<Map<TFromKey, TFromValue>, Map<TToKey, TToValue>>;\nexport function getMapCodec<\n TFromKey,\n TFromValue,\n TToKey extends TFromKey = TFromKey,\n TToValue extends TFromValue = TFromValue,\n>(\n key: Codec<TFromKey, TToKey>,\n value: Codec<TFromValue, TToValue>,\n config: MapCodecConfig<NumberCodec> = {},\n): Codec<Map<TFromKey, TFromValue>, Map<TToKey, TToValue>> {\n return combineCodec(getMapEncoder(key, value, config as object), getMapDecoder(key, value, config as object));\n}\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n ReadonlyUint8Array,\n} from '@solana/codecs-core';\n\n/**\n * Creates a void encoder.\n */\nexport function getUnitEncoder(): FixedSizeEncoder<void, 0> {\n return createEncoder({\n fixedSize: 0,\n write: (_value, _bytes, offset) => offset,\n });\n}\n\n/**\n * Creates a void decoder.\n */\nexport function getUnitDecoder(): FixedSizeDecoder<void, 0> {\n return createDecoder({\n fixedSize: 0,\n read: (_bytes: ReadonlyUint8Array | Uint8Array, offset) => [undefined, offset],\n });\n}\n\n/**\n * Creates a void codec.\n */\nexport function getUnitCodec(): FixedSizeCodec<void, void, 0> {\n return combineCodec(getUnitEncoder(), getUnitDecoder());\n}\n","import {\n assertIsFixedSize,\n Codec,\n combineCodec,\n containsBytes,\n Decoder,\n Encoder,\n fixDecoderSize,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n fixEncoderSize,\n ReadonlyUint8Array,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\n\nimport { getBooleanDecoder, getBooleanEncoder } from './boolean';\nimport { getConstantDecoder, getConstantEncoder } from './constant';\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\nimport { getUnionDecoder, getUnionEncoder } from './union';\nimport { getUnitDecoder, getUnitEncoder } from './unit';\n\n/** Defines the config for nullable codecs. */\nexport type NullableCodecConfig<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * Defines how the `None` (or `null`) value should be represented.\n *\n * By default, no none value is used. This means a `null` value will be\n * represented by the absence of the item.\n *\n * When `'zeroes'` is provided, a `null` value will skip the bytes that would\n * have been used for the item. Note that this returns a fixed-size codec\n * and thus will only work if the item codec is of fixed size.\n *\n * When a custom byte array is provided, a `null` value will be represented\n * by the provided byte array. Note that this returns a variable-size codec\n * since the byte array representing `null` does not need to match the size\n * of the item codec.\n *\n * @defaultValue No none value is used.\n */\n noneValue?: ReadonlyUint8Array | 'zeroes';\n\n /**\n * The codec to use for the boolean prefix, if any.\n *\n * By default a `u8` number is used as a prefix to determine if the value is `null`.\n * The value `0` is encoded for `null` and `1` if the value is present.\n * This can be set to any number codec to customize the prefix.\n *\n * When `null` is provided, no prefix is used and the `noneValue` is used to\n * determine if the value is `null`. If no `noneValue` is provided, then the\n * absence of any bytes is used to determine if the value is `null`.\n *\n * @defaultValue `u8` prefix.\n */\n prefix?: TPrefix | null;\n};\n\n/**\n * Creates a encoder for an optional value using `null` as the `None` value.\n *\n * @param item - The encoder to use for the value that may be present.\n * @param config - A set of config for the encoder.\n */\nexport function getNullableEncoder<TFrom, TSize extends number>(\n item: FixedSizeEncoder<TFrom, TSize>,\n config: NullableCodecConfig<NumberEncoder> & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeEncoder<TFrom | null, TSize>;\nexport function getNullableEncoder<TFrom>(\n item: FixedSizeEncoder<TFrom>,\n config: NullableCodecConfig<FixedSizeNumberEncoder> & { noneValue: 'zeroes' },\n): FixedSizeEncoder<TFrom | null>;\nexport function getNullableEncoder<TFrom>(\n item: FixedSizeEncoder<TFrom>,\n config: NullableCodecConfig<NumberEncoder> & { noneValue: 'zeroes' },\n): VariableSizeEncoder<TFrom | null>;\nexport function getNullableEncoder<TFrom>(\n item: Encoder<TFrom>,\n config?: NullableCodecConfig<NumberEncoder> & { noneValue?: ReadonlyUint8Array },\n): VariableSizeEncoder<TFrom | null>;\nexport function getNullableEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: NullableCodecConfig<NumberEncoder> = {},\n): Encoder<TFrom | null> {\n const prefix = (() => {\n if (config.prefix === null) {\n return transformEncoder(getUnitEncoder(), (_boolean: boolean) => undefined);\n }\n return getBooleanEncoder({ size: config.prefix ?? getU8Encoder() });\n })();\n const noneValue = (() => {\n if (config.noneValue === 'zeroes') {\n assertIsFixedSize(item);\n return fixEncoderSize(getUnitEncoder(), item.fixedSize);\n }\n if (!config.noneValue) {\n return getUnitEncoder();\n }\n return getConstantEncoder(config.noneValue);\n })();\n\n return getUnionEncoder(\n [\n transformEncoder(getTupleEncoder([prefix, noneValue]), (_value: null): [boolean, void] => [\n false,\n undefined,\n ]),\n transformEncoder(getTupleEncoder([prefix, item]), (value: TFrom): [boolean, TFrom] => [true, value]),\n ],\n variant => Number(variant !== null),\n );\n}\n\n/**\n * Creates a decoder for an optional value using `null` as the `None` value.\n *\n * @param item - The decoder to use for the value that may be present.\n * @param config - A set of config for the decoder.\n */\nexport function getNullableDecoder<TTo, TSize extends number>(\n item: FixedSizeDecoder<TTo, TSize>,\n config: NullableCodecConfig<NumberDecoder> & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeDecoder<TTo | null, TSize>;\nexport function getNullableDecoder<TTo>(\n item: FixedSizeDecoder<TTo>,\n config: NullableCodecConfig<FixedSizeNumberDecoder> & { noneValue: 'zeroes' },\n): FixedSizeDecoder<TTo | null>;\nexport function getNullableDecoder<TTo>(\n item: FixedSizeDecoder<TTo>,\n config: NullableCodecConfig<NumberDecoder> & { noneValue: 'zeroes' },\n): VariableSizeDecoder<TTo | null>;\nexport function getNullableDecoder<TTo>(\n item: Decoder<TTo>,\n config?: NullableCodecConfig<NumberDecoder> & { noneValue?: ReadonlyUint8Array },\n): VariableSizeDecoder<TTo | null>;\nexport function getNullableDecoder<TTo>(\n item: Decoder<TTo>,\n config: NullableCodecConfig<NumberDecoder> = {},\n): Decoder<TTo | null> {\n const prefix = (() => {\n if (config.prefix === null) {\n return transformDecoder(getUnitDecoder(), () => false);\n }\n return getBooleanDecoder({ size: config.prefix ?? getU8Decoder() });\n })();\n const noneValue = (() => {\n if (config.noneValue === 'zeroes') {\n assertIsFixedSize(item);\n return fixDecoderSize(getUnitDecoder(), item.fixedSize);\n }\n if (!config.noneValue) {\n return getUnitDecoder();\n }\n return getConstantDecoder(config.noneValue);\n })();\n\n return getUnionDecoder(\n [\n transformDecoder(getTupleDecoder([prefix, noneValue]), () => null),\n transformDecoder(getTupleDecoder([prefix, item]), ([, value]): TTo => value),\n ],\n (bytes, offset) => {\n if (config.prefix === null && !config.noneValue) {\n return Number(offset < bytes.length);\n }\n if (config.prefix === null && config.noneValue != null) {\n const zeroValue =\n config.noneValue === 'zeroes' ? new Uint8Array(noneValue.fixedSize).fill(0) : config.noneValue;\n return containsBytes(bytes, zeroValue, offset) ? 0 : 1;\n }\n return Number(prefix.read(bytes, offset)[0]);\n },\n );\n}\n\n/**\n * Creates a codec for an optional value using `null` as the `None` value.\n *\n * @param item - The codec to use for the value that may be present.\n * @param config - A set of config for the codec.\n */\nexport function getNullableCodec<TFrom, TTo extends TFrom, TSize extends number>(\n item: FixedSizeCodec<TFrom, TTo, TSize>,\n config: NullableCodecConfig<NumberCodec> & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeCodec<TFrom | null, TTo | null, TSize>;\nexport function getNullableCodec<TFrom, TTo extends TFrom = TFrom>(\n item: FixedSizeCodec<TFrom, TTo>,\n config: NullableCodecConfig<FixedSizeNumberCodec> & { noneValue: 'zeroes' },\n): FixedSizeCodec<TFrom | null, TTo | null>;\nexport function getNullableCodec<TFrom, TTo extends TFrom = TFrom>(\n item: FixedSizeCodec<TFrom, TTo>,\n config: NullableCodecConfig<NumberCodec> & { noneValue: 'zeroes' },\n): VariableSizeCodec<TFrom | null, TTo | null>;\nexport function getNullableCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config?: NullableCodecConfig<NumberCodec> & { noneValue?: ReadonlyUint8Array },\n): VariableSizeCodec<TFrom | null, TTo | null>;\nexport function getNullableCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: NullableCodecConfig<NumberCodec> = {},\n): Codec<TFrom | null, TTo | null> {\n type ConfigCast = NullableCodecConfig<NumberCodec> & { noneValue?: ReadonlyUint8Array };\n return combineCodec(\n getNullableEncoder<TFrom>(item, config as ConfigCast),\n getNullableDecoder<TTo>(item, config as ConfigCast),\n );\n}\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\n\nimport { ArrayLikeCodecSize, getArrayDecoder, getArrayEncoder } from './array';\n\n/** Defines the config for set codecs. */\nexport type SetCodecConfig<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * The size of the set.\n * @defaultValue u32 prefix.\n */\n size?: ArrayLikeCodecSize<TPrefix>;\n};\n\n/**\n * Encodes an set of items.\n *\n * @param item - The encoder to use for the set's items.\n * @param config - A set of config for the encoder.\n */\nexport function getSetEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: SetCodecConfig<NumberEncoder> & { size: 0 },\n): FixedSizeEncoder<Set<TFrom>, 0>;\nexport function getSetEncoder<TFrom>(\n item: FixedSizeEncoder<TFrom>,\n config: SetCodecConfig<NumberEncoder> & { size: number },\n): FixedSizeEncoder<Set<TFrom>>;\nexport function getSetEncoder<TFrom>(\n item: Encoder<TFrom>,\n config?: SetCodecConfig<NumberEncoder>,\n): VariableSizeEncoder<Set<TFrom>>;\nexport function getSetEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: SetCodecConfig<NumberEncoder> = {},\n): Encoder<Set<TFrom>> {\n return transformEncoder(getArrayEncoder(item, config as object), (set: Set<TFrom>): TFrom[] => [...set]);\n}\n\n/**\n * Decodes an set of items.\n *\n * @param item - The encoder to use for the set's items.\n * @param config - A set of config for the encoder.\n */\nexport function getSetDecoder<TTo>(\n item: Decoder<TTo>,\n config: SetCodecConfig<NumberDecoder> & { size: 0 },\n): FixedSizeDecoder<Set<TTo>, 0>;\nexport function getSetDecoder<TTo>(\n item: FixedSizeDecoder<TTo>,\n config: SetCodecConfig<NumberDecoder> & { size: number },\n): FixedSizeDecoder<Set<TTo>>;\nexport function getSetDecoder<TTo>(\n item: Decoder<TTo>,\n config?: SetCodecConfig<NumberDecoder>,\n): VariableSizeDecoder<Set<TTo>>;\nexport function getSetDecoder<TTo>(item: Decoder<TTo>, config: SetCodecConfig<NumberDecoder> = {}): Decoder<Set<TTo>> {\n return transformDecoder(getArrayDecoder(item, config as object), (entries: TTo[]): Set<TTo> => new Set(entries));\n}\n\n/**\n * Creates a codec for an set of items.\n *\n * @param item - The codec to use for the set's items.\n * @param config - A set of config for the codec.\n */\nexport function getSetCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: SetCodecConfig<NumberCodec> & { size: 0 },\n): FixedSizeCodec<Set<TFrom>, Set<TTo>, 0>;\nexport function getSetCodec<TFrom, TTo extends TFrom = TFrom>(\n item: FixedSizeCodec<TFrom, TTo>,\n config: SetCodecConfig<NumberCodec> & { size: number },\n): FixedSizeCodec<Set<TFrom>, Set<TTo>>;\nexport function getSetCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config?: SetCodecConfig<NumberCodec>,\n): VariableSizeCodec<Set<TFrom>, Set<TTo>>;\nexport function getSetCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: SetCodecConfig<NumberCodec> = {},\n): Codec<Set<TFrom>, Set<TTo>> {\n return combineCodec(getSetEncoder(item, config as object), getSetDecoder(item, config as object));\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Codec,\n combineCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n getEncodedSize,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { DrainOuterGeneric, getFixedSize, getMaxSize, sumCodecSizes } from './utils';\n\ntype Fields<T> = readonly (readonly [string, T])[];\ntype ArrayIndices<T extends readonly unknown[]> = Exclude<Partial<T>['length'], T['length']> & number;\n\ntype GetEncoderTypeFromFields<TFields extends Fields<Encoder<any>>> = DrainOuterGeneric<{\n [I in ArrayIndices<TFields> as TFields[I][0]]: TFields[I][1] extends Encoder<infer TFrom> ? TFrom : never;\n}>;\n\ntype GetDecoderTypeFromFields<TFields extends Fields<Decoder<any>>> = DrainOuterGeneric<{\n [I in ArrayIndices<TFields> as TFields[I][0]]: TFields[I][1] extends Decoder<infer TTo> ? TTo : never;\n}>;\n\n/**\n * Creates a encoder for a custom object.\n *\n * @param fields - The name and encoder of each field.\n */\nexport function getStructEncoder<const TFields extends Fields<FixedSizeEncoder<any>>>(\n fields: TFields,\n): FixedSizeEncoder<GetEncoderTypeFromFields<TFields>>;\nexport function getStructEncoder<const TFields extends Fields<Encoder<any>>>(\n fields: TFields,\n): VariableSizeEncoder<GetEncoderTypeFromFields<TFields>>;\nexport function getStructEncoder<const TFields extends Fields<Encoder<any>>>(\n fields: TFields,\n): Encoder<GetEncoderTypeFromFields<TFields>> {\n type TFrom = GetEncoderTypeFromFields<TFields>;\n const fieldCodecs = fields.map(([, codec]) => codec);\n const fixedSize = sumCodecSizes(fieldCodecs.map(getFixedSize));\n const maxSize = sumCodecSizes(fieldCodecs.map(getMaxSize)) ?? undefined;\n\n return createEncoder({\n ...(fixedSize === null\n ? {\n getSizeFromValue: (value: TFrom) =>\n fields\n .map(([key, codec]) => getEncodedSize(value[key as keyof TFrom], codec))\n .reduce((all, one) => all + one, 0),\n maxSize,\n }\n : { fixedSize }),\n write: (struct: TFrom, bytes, offset) => {\n fields.forEach(([key, codec]) => {\n offset = codec.write(struct[key as keyof TFrom], bytes, offset);\n });\n return offset;\n },\n });\n}\n\n/**\n * Creates a decoder for a custom object.\n *\n * @param fields - The name and decoder of each field.\n */\nexport function getStructDecoder<const TFields extends Fields<FixedSizeDecoder<any>>>(\n fields: TFields,\n): FixedSizeDecoder<GetDecoderTypeFromFields<TFields>>;\nexport function getStructDecoder<const TFields extends Fields<Decoder<any>>>(\n fields: TFields,\n): VariableSizeDecoder<GetDecoderTypeFromFields<TFields>>;\nexport function getStructDecoder<const TFields extends Fields<Decoder<any>>>(\n fields: TFields,\n): Decoder<GetDecoderTypeFromFields<TFields>> {\n type TTo = GetDecoderTypeFromFields<TFields>;\n const fieldCodecs = fields.map(([, codec]) => codec);\n const fixedSize = sumCodecSizes(fieldCodecs.map(getFixedSize));\n const maxSize = sumCodecSizes(fieldCodecs.map(getMaxSize)) ?? undefined;\n\n return createDecoder({\n ...(fixedSize === null ? { maxSize } : { fixedSize }),\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n const struct = {} as TTo;\n fields.forEach(([key, codec]) => {\n const [value, newOffset] = codec.read(bytes, offset);\n offset = newOffset;\n struct[key as keyof TTo] = value;\n });\n return [struct, offset];\n },\n });\n}\n\n/**\n * Creates a codec for a custom object.\n *\n * @param fields - The name and codec of each field.\n */\nexport function getStructCodec<const TFields extends Fields<FixedSizeCodec<any>>>(\n fields: TFields,\n): FixedSizeCodec<\n GetEncoderTypeFromFields<TFields>,\n GetDecoderTypeFromFields<TFields> & GetEncoderTypeFromFields<TFields>\n>;\nexport function getStructCodec<const TFields extends Fields<Codec<any>>>(\n fields: TFields,\n): VariableSizeCodec<\n GetEncoderTypeFromFields<TFields>,\n GetDecoderTypeFromFields<TFields> & GetEncoderTypeFromFields<TFields>\n>;\nexport function getStructCodec<const TFields extends Fields<Codec<any>>>(\n fields: TFields,\n): Codec<GetEncoderTypeFromFields<TFields>, GetDecoderTypeFromFields<TFields> & GetEncoderTypeFromFields<TFields>> {\n return combineCodec(\n getStructEncoder(fields),\n getStructDecoder(fields) as Decoder<GetDecoderTypeFromFields<TFields> & GetEncoderTypeFromFields<TFields>>,\n );\n}\n","/**\n * An implementation of the Rust Option type in JavaScript.\n * It can be one of the following:\n * - <code>{@link Some}<T></code>: Meaning there is a value of type T.\n * - <code>{@link None}</code>: Meaning there is no value.\n */\nexport type Option<T> = None | Some<T>;\n\n/**\n * Defines a looser type that can be used when serializing an {@link Option}.\n * This allows us to pass null or the Option value directly whilst still\n * supporting the Option type for use-cases that need more type safety.\n */\nexport type OptionOrNullable<T> = Option<T> | T | null;\n\n/**\n * Represents an option of type `T` that has a value.\n *\n * @see {@link Option}\n */\nexport type Some<T> = Readonly<{ __option: 'Some'; value: T }>;\n\n/**\n * Represents an option of type `T` that has no value.\n *\n * @see {@link Option}\n */\nexport type None = Readonly<{ __option: 'None' }>;\n\n/**\n * Creates a new {@link Option} of type `T` that has a value.\n *\n * @see {@link Option}\n */\nexport const some = <T>(value: T): Option<T> => ({ __option: 'Some', value });\n\n/**\n * Creates a new {@link Option} of type `T` that has no value.\n *\n * @see {@link Option}\n */\nexport const none = <T>(): Option<T> => ({ __option: 'None' });\n\n/**\n * Whether the given data is an {@link Option}.\n */\nexport const isOption = <T = unknown>(input: unknown): input is Option<T> =>\n !!(\n input &&\n typeof input === 'object' &&\n '__option' in input &&\n ((input.__option === 'Some' && 'value' in input) || input.__option === 'None')\n );\n\n/**\n * Whether the given {@link Option} is a {@link Some}.\n */\nexport const isSome = <T>(option: Option<T>): option is Some<T> => option.__option === 'Some';\n\n/**\n * Whether the given {@link Option} is a {@link None}.\n */\nexport const isNone = <T>(option: Option<T>): option is None => option.__option === 'None';\n","import { isSome, none, Option, some } from './option';\n\n/**\n * Unwraps the value of an {@link Option} of type `T`\n * or returns a fallback value that defaults to `null`.\n */\nexport function unwrapOption<T>(option: Option<T>): T | null;\nexport function unwrapOption<T, U>(option: Option<T>, fallback: () => U): T | U;\nexport function unwrapOption<T, U = null>(option: Option<T>, fallback?: () => U): T | U {\n if (isSome(option)) return option.value;\n return fallback ? fallback() : (null as U);\n}\n\n/**\n * Wraps a nullable value into an {@link Option}.\n */\nexport const wrapNullable = <T>(nullable: T | null): Option<T> => (nullable !== null ? some(nullable) : none<T>());\n","import {\n assertIsFixedSize,\n Codec,\n combineCodec,\n containsBytes,\n Decoder,\n Encoder,\n fixDecoderSize,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n fixEncoderSize,\n ReadonlyUint8Array,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n getBooleanDecoder,\n getBooleanEncoder,\n getConstantDecoder,\n getConstantEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getUnionDecoder,\n getUnionEncoder,\n getUnitDecoder,\n getUnitEncoder,\n} from '@solana/codecs-data-structures';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\n\nimport { isOption, isSome, None, none, Option, OptionOrNullable, Some, some } from './option';\nimport { wrapNullable } from './unwrap-option';\n\n/** Defines the config for Option codecs. */\nexport type OptionCodecConfig<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * Defines how the `None` value should be represented.\n *\n * By default, no none value is used. This means a `None` value will be\n * represented by the absence of the item.\n *\n * When `'zeroes'` is provided, a `None` value will skip the bytes that would\n * have been used for the item. Note that this returns a fixed-size codec\n * and thus will only work if the item codec is of fixed size.\n *\n * When a custom byte array is provided, a `None` value will be represented\n * by the provided byte array. Note that this returns a variable-size codec\n * since the byte array representing `None` does not need to match the size\n * of the item codec.\n *\n * @defaultValue No none value is used.\n */\n noneValue?: ReadonlyUint8Array | 'zeroes';\n\n /**\n * The codec to use for the boolean prefix, if any.\n *\n * By default a `u8` number is used as a prefix to determine if the value is `None`.\n * The value `0` is encoded for `None` and `1` if the value is present.\n * This can be set to any number codec to customize the prefix.\n *\n * When `null` is provided, no prefix is used and the `noneValue` is used to\n * determine if the value is `None`. If no `noneValue` is provided, then the\n * absence of any bytes is used to determine if the value is `None`.\n *\n * @defaultValue `u8` prefix.\n */\n prefix?: TPrefix | null;\n};\n\n/**\n * Creates a encoder for an optional value using the `Option<T>` type.\n *\n * @param item - The encoder to use for the value that may be present.\n * @param config - A set of config for the encoder.\n */\nexport function getOptionEncoder<TFrom, TSize extends number>(\n item: FixedSizeEncoder<TFrom, TSize>,\n config: OptionCodecConfig<NumberEncoder> & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeEncoder<OptionOrNullable<TFrom>, TSize>;\nexport function getOptionEncoder<TFrom>(\n item: FixedSizeEncoder<TFrom>,\n config: OptionCodecConfig<FixedSizeNumberEncoder> & { noneValue: 'zeroes' },\n): FixedSizeEncoder<OptionOrNullable<TFrom>>;\nexport function getOptionEncoder<TFrom>(\n item: FixedSizeEncoder<TFrom>,\n config: OptionCodecConfig<NumberEncoder> & { noneValue: 'zeroes' },\n): VariableSizeEncoder<OptionOrNullable<TFrom>>;\nexport function getOptionEncoder<TFrom>(\n item: Encoder<TFrom>,\n config?: OptionCodecConfig<NumberEncoder> & { noneValue?: ReadonlyUint8Array },\n): VariableSizeEncoder<OptionOrNullable<TFrom>>;\nexport function getOptionEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: OptionCodecConfig<NumberEncoder> = {},\n): Encoder<OptionOrNullable<TFrom>> {\n const prefix = (() => {\n if (config.prefix === null) {\n return transformEncoder(getUnitEncoder(), (_boolean: boolean) => undefined);\n }\n return getBooleanEncoder({ size: config.prefix ?? getU8Encoder() });\n })();\n const noneValue = (() => {\n if (config.noneValue === 'zeroes') {\n assertIsFixedSize(item);\n return fixEncoderSize(getUnitEncoder(), item.fixedSize);\n }\n if (!config.noneValue) {\n return getUnitEncoder();\n }\n return getConstantEncoder(config.noneValue);\n })();\n\n return getUnionEncoder(\n [\n transformEncoder(getTupleEncoder([prefix, noneValue]), (_value: None | null): [boolean, void] => [\n false,\n undefined,\n ]),\n transformEncoder(getTupleEncoder([prefix, item]), (value: Some<TFrom> | TFrom): [boolean, TFrom] => [\n true,\n isOption(value) && isSome(value) ? value.value : value,\n ]),\n ],\n variant => {\n const option = isOption<TFrom>(variant) ? variant : wrapNullable(variant);\n return Number(isSome(option));\n },\n );\n}\n\n/**\n * Creates a decoder for an optional value using the `Option<T>` type.\n *\n * @param item - The decoder to use for the value that may be present.\n * @param config - A set of config for the decoder.\n */\nexport function getOptionDecoder<TTo, TSize extends number>(\n item: FixedSizeDecoder<TTo, TSize>,\n config: OptionCodecConfig<NumberDecoder> & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeDecoder<Option<TTo>, TSize>;\nexport function getOptionDecoder<TTo>(\n item: FixedSizeDecoder<TTo>,\n config: OptionCodecConfig<FixedSizeNumberDecoder> & { noneValue: 'zeroes' },\n): FixedSizeDecoder<Option<TTo>>;\nexport function getOptionDecoder<TTo>(\n item: FixedSizeDecoder<TTo>,\n config: OptionCodecConfig<NumberDecoder> & { noneValue: 'zeroes' },\n): VariableSizeDecoder<Option<TTo>>;\nexport function getOptionDecoder<TTo>(\n item: Decoder<TTo>,\n config?: OptionCodecConfig<NumberDecoder> & { noneValue?: ReadonlyUint8Array },\n): VariableSizeDecoder<Option<TTo>>;\nexport function getOptionDecoder<TTo>(\n item: Decoder<TTo>,\n config: OptionCodecConfig<NumberDecoder> = {},\n): Decoder<Option<TTo>> {\n const prefix = (() => {\n if (config.prefix === null) {\n return transformDecoder(getUnitDecoder(), () => false);\n }\n return getBooleanDecoder({ size: config.prefix ?? getU8Decoder() });\n })();\n const noneValue = (() => {\n if (config.noneValue === 'zeroes') {\n assertIsFixedSize(item);\n return fixDecoderSize(getUnitDecoder(), item.fixedSize);\n }\n if (!config.noneValue) {\n return getUnitDecoder();\n }\n return getConstantDecoder(config.noneValue);\n })();\n\n return getUnionDecoder(\n [\n transformDecoder(getTupleDecoder([prefix, noneValue]), () => none<TTo>()),\n transformDecoder(getTupleDecoder([prefix, item]), ([, value]) => some(value)),\n ],\n (bytes, offset) => {\n if (config.prefix === null && !config.noneValue) {\n return Number(offset < bytes.length);\n }\n if (config.prefix === null && config.noneValue != null) {\n const zeroValue =\n config.noneValue === 'zeroes' ? new Uint8Array(noneValue.fixedSize).fill(0) : config.noneValue;\n return containsBytes(bytes, zeroValue, offset) ? 0 : 1;\n }\n return Number(prefix.read(bytes, offset)[0]);\n },\n );\n}\n\n/**\n * Creates a codec for an optional value using the `Option<T>` type.\n *\n * @param item - The codec to use for the value that may be present.\n * @param config - A set of config for the codec.\n */\nexport function getOptionCodec<TFrom, TTo extends TFrom, TSize extends number>(\n item: FixedSizeCodec<TFrom, TTo, TSize>,\n config: OptionCodecConfig<NumberCodec> & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeCodec<OptionOrNullable<TFrom>, Option<TTo>, TSize>;\nexport function getOptionCodec<TFrom, TTo extends TFrom = TFrom>(\n item: FixedSizeCodec<TFrom, TTo>,\n config: OptionCodecConfig<FixedSizeNumberCodec> & { noneValue: 'zeroes' },\n): FixedSizeCodec<OptionOrNullable<TFrom>, Option<TTo>>;\nexport function getOptionCodec<TFrom, TTo extends TFrom = TFrom>(\n item: FixedSizeCodec<TFrom, TTo>,\n config: OptionCodecConfig<NumberCodec> & { noneValue: 'zeroes' },\n): VariableSizeCodec<OptionOrNullable<TFrom>, Option<TTo>>;\nexport function getOptionCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config?: OptionCodecConfig<NumberCodec> & { noneValue?: ReadonlyUint8Array },\n): VariableSizeCodec<OptionOrNullable<TFrom>, Option<TTo>>;\nexport function getOptionCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: OptionCodecConfig<NumberCodec> = {},\n): Codec<OptionOrNullable<TFrom>, Option<TTo>> {\n type ConfigCast = OptionCodecConfig<NumberCodec> & { noneValue?: ReadonlyUint8Array };\n return combineCodec(\n getOptionEncoder<TFrom>(item, config as ConfigCast),\n getOptionDecoder<TTo>(item, config as ConfigCast),\n );\n}\n","import { isOption, isSome, None, Some } from './option';\n\n/**\n * Lists all types that should not be recursively unwrapped.\n *\n * @see {@link UnwrappedOption}\n */\ntype UnUnwrappables =\n | Date\n | Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | bigint\n | boolean\n | number\n | string\n | symbol\n | null\n | undefined;\n\n/**\n * A type that defines the recursive unwrapping of a type `T`\n * such that all nested {@link Option} types are unwrapped.\n *\n * For each nested {@link Option} type, if the option is a {@link Some},\n * it returns the type of its value, otherwise, it returns the provided\n * fallback type `U` which defaults to `null`.\n */\nexport type UnwrappedOption<T, U = null> =\n T extends Some<infer TValue>\n ? UnwrappedOption<TValue, U>\n : T extends None\n ? U\n : T extends UnUnwrappables\n ? T\n : T extends object\n ? { [key in keyof T]: UnwrappedOption<T[key], U> }\n : T extends Array<infer TItem>\n ? Array<UnwrappedOption<TItem, U>>\n : T;\n\n/**\n * Recursively go through a type `T` such that all\n * nested {@link Option} types are unwrapped.\n *\n * For each nested {@link Option} type, if the option is a {@link Some},\n * it returns its value, otherwise, it returns the provided fallback value\n * which defaults to `null`.\n */\nexport function unwrapOptionRecursively<T>(input: T): UnwrappedOption<T>;\nexport function unwrapOptionRecursively<T, U>(input: T, fallback: () => U): UnwrappedOption<T, U>;\nexport function unwrapOptionRecursively<T, U = null>(input: T, fallback?: () => U): UnwrappedOption<T, U> {\n // Types to bypass.\n if (!input || ArrayBuffer.isView(input)) {\n return input as UnwrappedOption<T, U>;\n }\n\n const next = <X>(x: X) =>\n (fallback ? unwrapOptionRecursively(x, fallback) : unwrapOptionRecursively(x)) as UnwrappedOption<X, U>;\n\n // Handle Option.\n if (isOption(input)) {\n if (isSome(input)) return next(input.value) as UnwrappedOption<T, U>;\n return (fallback ? fallback() : null) as UnwrappedOption<T, U>;\n }\n\n // Walk.\n if (Array.isArray(input)) {\n return input.map(next) as UnwrappedOption<T, U>;\n }\n if (typeof input === 'object') {\n return Object.fromEntries(Object.entries(input).map(([k, v]) => [k, next(v)])) as UnwrappedOption<T, U>;\n }\n return input as UnwrappedOption<T, U>;\n}\n","/**\n * General pipe function.\n * Provide an initial value and a list of functions to pipe it through.\n *\n * Following common implementations of pipe functions that use TypeScript,\n * this function supports a maximum arity of 10 for type safety.\n * @see https://github.com/ramda/ramda/blob/master/source/pipe.js\n * @see https://github.com/darky/rocket-pipes/blob/master/index.ts\n *\n * Note you can use nested pipes to extend this limitation, like so:\n * ```typescript\n * const myValue = pipe(\n * pipe(\n * 1,\n * (x) => x + 1,\n * (x) => x * 2,\n * (x) => x - 1,\n * ),\n * (y) => y / 3,\n * (y) => y + 1,\n * );\n * ```\n * @param init The initial value\n * @param fns Any number of functions to pipe the value through\n * @returns The final value with all functions applied\n */\nexport function pipe<TInitial>(init: TInitial): TInitial;\nexport function pipe<TInitial, R1>(init: TInitial, init_r1: (init: TInitial) => R1): R1;\nexport function pipe<TInitial, R1, R2>(init: TInitial, init_r1: (init: TInitial) => R1, r1_r2: (r1: R1) => R2): R2;\nexport function pipe<TInitial, R1, R2, R3>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n): R3;\nexport function pipe<TInitial, R1, R2, R3, R4>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n): R4;\nexport function pipe<TInitial, R1, R2, R3, R4, R5>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n r4_r5: (r4: R4) => R5,\n): R5;\nexport function pipe<TInitial, R1, R2, R3, R4, R5, R6>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n r4_r5: (r4: R4) => R5,\n r5_r6: (r5: R5) => R6,\n): R6;\nexport function pipe<TInitial, R1, R2, R3, R4, R5, R6, R7>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n r4_r5: (r4: R4) => R5,\n r5_r6: (r5: R5) => R6,\n r6_r7: (r6: R6) => R7,\n): R7;\nexport function pipe<TInitial, R1, R2, R3, R4, R5, R6, R7, R8>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n r4_r5: (r4: R4) => R5,\n r5_r6: (r5: R5) => R6,\n r6_r7: (r6: R6) => R7,\n r7_r8: (r7: R7) => R8,\n): R8;\nexport function pipe<TInitial, R1, R2, R3, R4, R5, R6, R7, R8, R9>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n r4_r5: (r4: R4) => R5,\n r5_r6: (r5: R5) => R6,\n r6_r7: (r6: R6) => R7,\n r7_r8: (r7: R7) => R8,\n r8_r9: (r8: R8) => R9,\n): R9;\nexport function pipe<TInitial, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>(\n init: TInitial,\n init_r1: (init: TInitial) => R1,\n r1_r2: (r1: R1) => R2,\n r2_r3: (r2: R2) => R3,\n r3_r4: (r3: R3) => R4,\n r4_r5: (r4: R4) => R5,\n r5_r6: (r5: R5) => R6,\n r6_r7: (r6: R6) => R7,\n r7_r8: (r7: R7) => R8,\n r8_r9: (r8: R8) => R9,\n r9_r10: (r9: R9) => R10,\n): R10;\nexport function pipe<TInitial>(init: TInitial, ...fns: CallableFunction[]) {\n return fns.reduce((acc, fn) => fn(acc), init);\n}\n","import { Address } from '@solana/addresses';\nimport {\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS,\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA,\n SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH,\n SolanaError,\n} from '@solana/errors';\n\nimport { IAccountLookupMeta, IAccountMeta } from './accounts';\n\nexport interface IInstruction<\n TProgramAddress extends string = string,\n TAccounts extends readonly (IAccountLookupMeta | IAccountMeta)[] = readonly (IAccountLookupMeta | IAccountMeta)[],\n> {\n readonly accounts?: TAccounts;\n readonly data?: Uint8Array;\n readonly programAddress: Address<TProgramAddress>;\n}\n\nexport interface IInstructionWithAccounts<TAccounts extends readonly (IAccountLookupMeta | IAccountMeta)[]>\n extends IInstruction {\n readonly accounts: TAccounts;\n}\n\nexport function isInstructionForProgram<TProgramAddress extends string, TInstruction extends IInstruction>(\n instruction: TInstruction,\n programAddress: Address<TProgramAddress>,\n): instruction is TInstruction & { programAddress: Address<TProgramAddress> } {\n return instruction.programAddress === programAddress;\n}\n\nexport function assertIsInstructionForProgram<TProgramAddress extends string, TInstruction extends IInstruction>(\n instruction: TInstruction,\n programAddress: Address<TProgramAddress>,\n): asserts instruction is TInstruction & { programAddress: Address<TProgramAddress> } {\n if (instruction.programAddress !== programAddress) {\n throw new SolanaError(SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH, {\n actualProgramAddress: instruction.programAddress,\n expectedProgramAddress: programAddress,\n });\n }\n}\n\nexport function isInstructionWithAccounts<\n TAccounts extends readonly (IAccountLookupMeta | IAccountMeta)[] = readonly (IAccountLookupMeta | IAccountMeta)[],\n TInstruction extends IInstruction = IInstruction,\n>(instruction: TInstruction): instruction is IInstructionWithAccounts<TAccounts> & TInstruction {\n return instruction.accounts !== undefined;\n}\n\nexport function assertIsInstructionWithAccounts<\n TAccounts extends readonly (IAccountLookupMeta | IAccountMeta)[] = readonly (IAccountLookupMeta | IAccountMeta)[],\n TInstruction extends IInstruction = IInstruction,\n>(instruction: TInstruction): asserts instruction is IInstructionWithAccounts<TAccounts> & TInstruction {\n if (instruction.accounts === undefined) {\n throw new SolanaError(SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS, {\n data: instruction.data,\n programAddress: instruction.programAddress,\n });\n }\n}\n\nexport interface IInstructionWithData<TData extends Uint8Array> extends IInstruction {\n readonly data: TData;\n}\n\nexport function isInstructionWithData<\n TData extends Uint8Array = Uint8Array,\n TInstruction extends IInstruction = IInstruction,\n>(instruction: TInstruction): instruction is IInstructionWithData<TData> & TInstruction {\n return instruction.data !== undefined;\n}\n\nexport function assertIsInstructionWithData<\n TData extends Uint8Array = Uint8Array,\n TInstruction extends IInstruction = IInstruction,\n>(instruction: TInstruction): asserts instruction is IInstructionWithData<TData> & TInstruction {\n if (instruction.data === undefined) {\n throw new SolanaError(SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA, {\n accountAddresses: instruction.accounts?.map(a => a.address),\n programAddress: instruction.programAddress,\n });\n }\n}\n","/**\n * Quick primer on bitwise operations: https://stackoverflow.com/a/1436448/802047\n */\n\nexport enum AccountRole {\n // Bitflag guide: is signer ⌄⌄ is writable\n WRITABLE_SIGNER = /* 3 */ 0b11, // prettier-ignore\n READONLY_SIGNER = /* 2 */ 0b10, // prettier-ignore\n WRITABLE = /* 1 */ 0b01, // prettier-ignore\n READONLY = /* 0 */ 0b00, // prettier-ignore\n}\n\nconst IS_SIGNER_BITMASK = 0b10;\nconst IS_WRITABLE_BITMASK = 0b01;\n\nexport function downgradeRoleToNonSigner(role: AccountRole.READONLY_SIGNER): AccountRole.READONLY;\nexport function downgradeRoleToNonSigner(role: AccountRole.WRITABLE_SIGNER): AccountRole.WRITABLE;\nexport function downgradeRoleToNonSigner(role: AccountRole): AccountRole;\nexport function downgradeRoleToNonSigner(role: AccountRole): AccountRole {\n return role & ~IS_SIGNER_BITMASK;\n}\n\nexport function downgradeRoleToReadonly(role: AccountRole.WRITABLE): AccountRole.READONLY;\nexport function downgradeRoleToReadonly(role: AccountRole.WRITABLE_SIGNER): AccountRole.READONLY_SIGNER;\nexport function downgradeRoleToReadonly(role: AccountRole): AccountRole;\nexport function downgradeRoleToReadonly(role: AccountRole): AccountRole {\n return role & ~IS_WRITABLE_BITMASK;\n}\n\nexport function isSignerRole(role: AccountRole): role is AccountRole.READONLY_SIGNER | AccountRole.WRITABLE_SIGNER {\n return role >= AccountRole.READONLY_SIGNER;\n}\n\nexport function isWritableRole(role: AccountRole): role is AccountRole.WRITABLE | AccountRole.WRITABLE_SIGNER {\n return (role & IS_WRITABLE_BITMASK) !== 0;\n}\n\nexport function mergeRoles(roleA: AccountRole.WRITABLE, roleB: AccountRole.READONLY_SIGNER): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY_SIGNER, roleB: AccountRole.WRITABLE): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.WRITABLE_SIGNER): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.WRITABLE_SIGNER, roleB: AccountRole): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.READONLY_SIGNER): AccountRole.READONLY_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY_SIGNER, roleB: AccountRole): AccountRole.READONLY_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.WRITABLE): AccountRole.WRITABLE; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.WRITABLE, roleB: AccountRole): AccountRole.WRITABLE; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY, roleB: AccountRole.READONLY): AccountRole.READONLY; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole): AccountRole; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole): AccountRole {\n return roleA | roleB;\n}\n\nexport function upgradeRoleToSigner(role: AccountRole.READONLY): AccountRole.READONLY_SIGNER;\nexport function upgradeRoleToSigner(role: AccountRole.WRITABLE): AccountRole.WRITABLE_SIGNER;\nexport function upgradeRoleToSigner(role: AccountRole): AccountRole;\nexport function upgradeRoleToSigner(role: AccountRole): AccountRole {\n return role | IS_SIGNER_BITMASK;\n}\n\nexport function upgradeRoleToWritable(role: AccountRole.READONLY): AccountRole.WRITABLE;\nexport function upgradeRoleToWritable(role: AccountRole.READONLY_SIGNER): AccountRole.WRITABLE_SIGNER;\nexport function upgradeRoleToWritable(role: AccountRole): AccountRole;\nexport function upgradeRoleToWritable(role: AccountRole): AccountRole {\n return role | IS_WRITABLE_BITMASK;\n}\n","import { ReadonlyUint8Array } from '@solana/codecs-core';\nimport { SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH, SolanaError } from '@solana/errors';\n\nfunction addPkcs8Header(bytes: ReadonlyUint8Array): ReadonlyUint8Array {\n // prettier-ignore\n return new Uint8Array([\n /**\n * PKCS#8 header\n */\n 0x30, // ASN.1 sequence tag\n 0x2e, // Length of sequence (46 more bytes)\n\n 0x02, // ASN.1 integer tag\n 0x01, // Length of integer\n 0x00, // Version number\n\n 0x30, // ASN.1 sequence tag\n 0x05, // Length of sequence\n 0x06, // ASN.1 object identifier tag\n 0x03, // Length of object identifier\n // Edwards curve algorithms identifier https://oid-rep.orange-labs.fr/get/1.3.101.112\n 0x2b, // iso(1) / identified-organization(3) (The first node is multiplied by the decimal 40 and the result is added to the value of the second node)\n 0x65, // thawte(101)\n // Ed25519 identifier\n 0x70, // id-Ed25519(112)\n\n /**\n * Private key payload\n */\n 0x04, // ASN.1 octet string tag\n 0x22, // String length (34 more bytes)\n\n // Private key bytes as octet string\n 0x04, // ASN.1 octet string tag\n 0x20, // String length (32 bytes)\n\n ...bytes\n ]);\n}\n\nexport async function createPrivateKeyFromBytes(bytes: ReadonlyUint8Array, extractable?: boolean): Promise<CryptoKey> {\n const actualLength = bytes.byteLength;\n if (actualLength !== 32) {\n throw new SolanaError(SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH, {\n actualLength,\n });\n }\n const privateKeyBytesPkcs8 = addPkcs8Header(bytes);\n return await crypto.subtle.importKey('pkcs8', privateKeyBytesPkcs8, 'Ed25519', extractable ?? false, ['sign']);\n}\n","import { assertKeyExporterIsAvailable } from '@solana/assertions';\nimport { SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY, SolanaError } from '@solana/errors';\n\nexport async function getPublicKeyFromPrivateKey(\n privateKey: CryptoKey,\n extractable: boolean = false,\n): Promise<CryptoKey> {\n assertKeyExporterIsAvailable();\n\n if (privateKey.extractable === false) {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY, { key: privateKey });\n }\n\n // Export private key.\n const jwk = await crypto.subtle.exportKey('jwk', privateKey);\n\n // Import public key.\n return await crypto.subtle.importKey(\n 'jwk',\n {\n crv /* curve */: 'Ed25519',\n ext /* extractable */: extractable,\n key_ops /* key operations */: ['verify'],\n kty /* key type */: 'OKP' /* octet key pair */,\n x /* public key x-coordinate */: jwk.x,\n },\n 'Ed25519',\n extractable,\n ['verify'],\n );\n}\n","import { assertSigningCapabilityIsAvailable, assertVerificationCapabilityIsAvailable } from '@solana/assertions';\nimport { Encoder, ReadonlyUint8Array } from '@solana/codecs-core';\nimport { getBase58Encoder } from '@solana/codecs-strings';\nimport {\n SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE,\n SolanaError,\n} from '@solana/errors';\n\nexport type Signature = string & { readonly __brand: unique symbol };\nexport type SignatureBytes = Uint8Array & { readonly __brand: unique symbol };\n\nlet base58Encoder: Encoder<string> | undefined;\n\nexport function assertIsSignature(putativeSignature: string): asserts putativeSignature is Signature {\n if (!base58Encoder) base58Encoder = getBase58Encoder();\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest value (64 bytes of zeroes)\n putativeSignature.length < 64 ||\n // Highest value (64 bytes of 255)\n putativeSignature.length > 88\n ) {\n throw new SolanaError(SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE, {\n actualLength: putativeSignature.length,\n });\n }\n // Slow-path; actually attempt to decode the input string.\n const bytes = base58Encoder.encode(putativeSignature);\n const numBytes = bytes.byteLength;\n if (numBytes !== 64) {\n throw new SolanaError(SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH, {\n actualLength: numBytes,\n });\n }\n}\n\nexport function isSignature(putativeSignature: string): putativeSignature is Signature {\n if (!base58Encoder) base58Encoder = getBase58Encoder();\n\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest value (64 bytes of zeroes)\n putativeSignature.length < 64 ||\n // Highest value (64 bytes of 255)\n putativeSignature.length > 88\n ) {\n return false;\n }\n // Slow-path; actually attempt to decode the input string.\n const bytes = base58Encoder.encode(putativeSignature);\n const numBytes = bytes.byteLength;\n if (numBytes !== 64) {\n return false;\n }\n return true;\n}\n\nexport async function signBytes(key: CryptoKey, data: ReadonlyUint8Array): Promise<SignatureBytes> {\n assertSigningCapabilityIsAvailable();\n const signedData = await crypto.subtle.sign('Ed25519', key, data);\n return new Uint8Array(signedData) as SignatureBytes;\n}\n\nexport function signature(putativeSignature: string): Signature {\n assertIsSignature(putativeSignature);\n return putativeSignature;\n}\n\nexport async function verifySignature(\n key: CryptoKey,\n signature: SignatureBytes,\n data: ReadonlyUint8Array,\n): Promise<boolean> {\n assertVerificationCapabilityIsAvailable();\n return await crypto.subtle.verify('Ed25519', key, signature, data);\n}\n","import { assertKeyGenerationIsAvailable, assertPRNGIsAvailable } from '@solana/assertions';\nimport { ReadonlyUint8Array } from '@solana/codecs-core';\nimport {\n SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY,\n SolanaError,\n} from '@solana/errors';\n\nimport { createPrivateKeyFromBytes } from './private-key';\nimport { getPublicKeyFromPrivateKey } from './public-key';\nimport { signBytes, verifySignature } from './signatures';\n\nexport async function generateKeyPair(): Promise<CryptoKeyPair> {\n await assertKeyGenerationIsAvailable();\n const keyPair = await crypto.subtle.generateKey(\n /* algorithm */ 'Ed25519', // Native implementation status: https://github.com/WICG/webcrypto-secure-curves/issues/20\n /* extractable */ false, // Prevents the bytes of the private key from being visible to JS.\n /* allowed uses */ ['sign', 'verify'],\n );\n return keyPair;\n}\n\nexport async function createKeyPairFromBytes(bytes: ReadonlyUint8Array, extractable?: boolean): Promise<CryptoKeyPair> {\n assertPRNGIsAvailable();\n\n if (bytes.byteLength !== 64) {\n throw new SolanaError(SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH, { byteLength: bytes.byteLength });\n }\n const [publicKey, privateKey] = await Promise.all([\n crypto.subtle.importKey('raw', bytes.slice(32), 'Ed25519', /* extractable */ true, ['verify']),\n createPrivateKeyFromBytes(bytes.slice(0, 32), extractable),\n ]);\n\n // Verify the key pair\n const randomBytes = new Uint8Array(32);\n crypto.getRandomValues(randomBytes);\n const signedData = await signBytes(privateKey, randomBytes);\n const isValid = await verifySignature(publicKey, signedData, randomBytes);\n if (!isValid) {\n throw new SolanaError(SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY);\n }\n\n return { privateKey, publicKey } as CryptoKeyPair;\n}\n\nexport async function createKeyPairFromPrivateKeyBytes(\n bytes: ReadonlyUint8Array,\n extractable: boolean = false,\n): Promise<CryptoKeyPair> {\n const privateKeyPromise = createPrivateKeyFromBytes(bytes, extractable);\n\n // Here we need the private key to be extractable in order to export\n // it as a public key. Therefore, if the `extractable` parameter\n // is `false`, we need to create two private keys such that:\n // - The extractable one is used to create the public key and\n // - The non-extractable one is the one we will return.\n const [publicKey, privateKey] = await Promise.all([\n // This nested promise makes things efficient by\n // creating the public key in parallel with the\n // second private key creation, if it is needed.\n (extractable ? privateKeyPromise : createPrivateKeyFromBytes(bytes, true /* extractable */)).then(\n async privateKey => await getPublicKeyFromPrivateKey(privateKey, true /* extractable */),\n ),\n privateKeyPromise,\n ]);\n\n return { privateKey, publicKey };\n}\n","import type { Address } from '@solana/addresses';\nimport { isSolanaError, SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM, SolanaError } from '@solana/errors';\n\nexport function isProgramError<TProgramErrorCode extends number>(\n error: unknown,\n transactionMessage: { instructions: Record<number, { programAddress: Address }> },\n programAddress: Address,\n code?: TProgramErrorCode,\n): error is Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> &\n SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> {\n if (!isSolanaError(error, SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM)) {\n return false;\n }\n const instructionProgramAddress = transactionMessage.instructions[error.context.index]?.programAddress;\n if (!instructionProgramAddress || instructionProgramAddress !== programAddress) {\n return false;\n }\n return typeof code === 'undefined' || error.context.code === code;\n}\n","/**\n * This function is a replacement for `JSON.parse` that can handle large\n * unsafe integers by parsing them as BigInts. It transforms every\n * numerical value into a BigInt without loss of precision.\n */\nexport function parseJsonWithBigInts(json: string): unknown {\n return JSON.parse(wrapIntegersInBigIntValueObject(json), (_, value) => {\n return isBigIntValueObject(value) ? unwrapBigIntValueObject(value) : value;\n });\n}\n\nfunction wrapIntegersInBigIntValueObject(json: string): string {\n const out = [];\n let inQuote = false;\n for (let ii = 0; ii < json.length; ii++) {\n let isEscaped = false;\n if (json[ii] === '\\\\') {\n out.push(json[ii++]);\n isEscaped = !isEscaped;\n }\n if (json[ii] === '\"') {\n out.push(json[ii]);\n if (!isEscaped) {\n inQuote = !inQuote;\n }\n continue;\n }\n if (!inQuote) {\n const consumedNumber = consumeNumber(json, ii);\n if (consumedNumber?.length) {\n ii += consumedNumber.length - 1;\n // Don't wrap numbers that contain a decimal point or a negative exponent.\n if (consumedNumber.match(/\\.|[eE]-/)) {\n out.push(consumedNumber);\n } else {\n out.push(wrapBigIntValueObject(consumedNumber));\n }\n continue;\n }\n }\n out.push(json[ii]);\n }\n\n return out.join('');\n}\n\nfunction consumeNumber(json: string, ii: number): string | null {\n /** @see https://stackoverflow.com/a/13340826/11440277 */\n const JSON_NUMBER_REGEX = /^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/;\n\n // Stop early if the first character isn't a digit or a minus sign.\n if (!json[ii]?.match(/[-\\d]/)) {\n return null;\n }\n\n // Otherwise, check if the next characters form a valid JSON number.\n const numberMatch = json.slice(ii).match(JSON_NUMBER_REGEX);\n return numberMatch ? numberMatch[0] : null;\n}\n\ntype BigIntValueObject = {\n // `$` implies 'this is a value object'.\n // `n` implies 'interpret the value as a bigint'.\n $n: string;\n};\n\nfunction wrapBigIntValueObject(value: string): string {\n return `{\"$n\":\"${value}\"}`;\n}\n\nfunction unwrapBigIntValueObject({ $n }: BigIntValueObject): bigint {\n if ($n.match(/[eE]/)) {\n const [units, exponent] = $n.split(/[eE]/);\n return BigInt(units) * BigInt(10) ** BigInt(exponent);\n }\n return BigInt($n);\n}\n\nfunction isBigIntValueObject(value: unknown): value is BigIntValueObject {\n return !!value && typeof value === 'object' && '$n' in value && typeof value.$n === 'string';\n}\n","import { RpcRequest } from './rpc-request';\n\nlet _nextMessageId = 0n;\nfunction getNextMessageId(): string {\n const id = _nextMessageId;\n _nextMessageId++;\n return id.toString();\n}\n\nexport function createRpcMessage<TParams>(request: RpcRequest<TParams>) {\n return {\n id: getNextMessageId(),\n jsonrpc: '2.0',\n method: request.methodName,\n params: request.params,\n };\n}\n","/**\n * Transforms a value into a JSON string, whilst rendering bigints as large unsafe integers.\n */\nexport function stringifyJsonWithBigints(value: unknown, space?: number | string): string {\n return unwrapBigIntValueObject(\n JSON.stringify(value, (_, v) => (typeof v === 'bigint' ? wrapBigIntValueObject(v) : v), space),\n );\n}\n\ntype BigIntValueObject = {\n // `$` implies 'this is a value object'.\n // `n` implies 'interpret the value as a bigint'.\n $n: string;\n};\n\nfunction wrapBigIntValueObject(value: bigint): BigIntValueObject {\n return { $n: `${value}` };\n}\n\nfunction unwrapBigIntValueObject(value: string): string {\n return value.replace(/\\{\\s*\"\\$n\"\\s*:\\s*\"(-?\\d+)\"\\s*\\}/g, '$1');\n}\n","import { SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD, SolanaError } from '@solana/errors';\nimport { Callable, Flatten, OverloadImplementations, UnionToIntersection } from '@solana/rpc-spec-types';\n\nimport { RpcApi, RpcPlan } from './rpc-api';\nimport { RpcTransport } from './rpc-transport';\n\nexport type RpcConfig<TRpcMethods, TRpcTransport extends RpcTransport> = Readonly<{\n api: RpcApi<TRpcMethods>;\n transport: TRpcTransport;\n}>;\n\nexport type Rpc<TRpcMethods> = {\n [TMethodName in keyof TRpcMethods]: PendingRpcRequestBuilder<OverloadImplementations<TRpcMethods, TMethodName>>;\n};\n\nexport type PendingRpcRequest<TResponse> = {\n send(options?: RpcSendOptions): Promise<TResponse>;\n};\n\nexport type RpcSendOptions = Readonly<{\n abortSignal?: AbortSignal;\n}>;\n\ntype PendingRpcRequestBuilder<TMethodImplementations> = UnionToIntersection<\n Flatten<{\n [P in keyof TMethodImplementations]: PendingRpcRequestReturnTypeMapper<TMethodImplementations[P]>;\n }>\n>;\n\ntype PendingRpcRequestReturnTypeMapper<TMethodImplementation> =\n // Check that this property of the TRpcMethods interface is, in fact, a function.\n TMethodImplementation extends Callable\n ? (...args: Parameters<TMethodImplementation>) => PendingRpcRequest<ReturnType<TMethodImplementation>>\n : never;\n\nexport function createRpc<TRpcMethods, TRpcTransport extends RpcTransport>(\n rpcConfig: RpcConfig<TRpcMethods, TRpcTransport>,\n): Rpc<TRpcMethods> {\n return makeProxy(rpcConfig);\n}\n\nfunction makeProxy<TRpcMethods, TRpcTransport extends RpcTransport>(\n rpcConfig: RpcConfig<TRpcMethods, TRpcTransport>,\n): Rpc<TRpcMethods> {\n return new Proxy(rpcConfig.api, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get(target, p, receiver) {\n return function (...rawParams: unknown[]) {\n const methodName = p.toString();\n const getApiPlan = Reflect.get(target, methodName, receiver);\n if (!getApiPlan) {\n throw new SolanaError(SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD, {\n method: methodName,\n params: rawParams,\n });\n }\n const apiPlan = getApiPlan(...rawParams);\n return createPendingRpcRequest(rpcConfig, apiPlan);\n };\n },\n }) as Rpc<TRpcMethods>;\n}\n\nfunction createPendingRpcRequest<TRpcMethods, TRpcTransport extends RpcTransport, TResponse>(\n { transport }: RpcConfig<TRpcMethods, TRpcTransport>,\n plan: RpcPlan<TResponse>,\n): PendingRpcRequest<TResponse> {\n return {\n async send(options?: RpcSendOptions): Promise<TResponse> {\n return await plan.execute({ signal: options?.abortSignal, transport });\n },\n };\n}\n","import {\n Callable,\n createRpcMessage,\n RpcRequestTransformer,\n RpcResponse,\n RpcResponseTransformer,\n} from '@solana/rpc-spec-types';\n\nimport type { RpcTransport } from './rpc-transport';\n\nexport type RpcApiConfig = Readonly<{\n requestTransformer?: RpcRequestTransformer;\n responseTransformer?: RpcResponseTransformer;\n}>;\n\nexport type RpcPlan<TResponse> = {\n execute: (\n config: Readonly<{\n signal?: AbortSignal;\n transport: RpcTransport;\n }>,\n ) => Promise<RpcResponse<TResponse>>;\n};\n\nexport type RpcApi<TRpcMethods> = {\n [MethodName in keyof TRpcMethods]: RpcReturnTypeMapper<TRpcMethods[MethodName]>;\n};\n\ntype RpcReturnTypeMapper<TRpcMethod> = TRpcMethod extends Callable\n ? (...rawParams: unknown[]) => RpcPlan<ReturnType<TRpcMethod>>\n : never;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RpcApiMethod = (...args: any) => any;\ninterface RpcApiMethods {\n [methodName: string]: RpcApiMethod;\n}\n\nexport function createJsonRpcApi<TRpcMethods extends RpcApiMethods>(config?: RpcApiConfig): RpcApi<TRpcMethods> {\n return new Proxy({} as RpcApi<TRpcMethods>, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get<TMethodName extends keyof RpcApi<TRpcMethods>>(\n ...args: Parameters<NonNullable<ProxyHandler<RpcApi<TRpcMethods>>['get']>>\n ) {\n const [_, p] = args;\n const methodName = p.toString() as keyof TRpcMethods as string;\n return function (\n ...rawParams: Parameters<\n TRpcMethods[TMethodName] extends CallableFunction ? TRpcMethods[TMethodName] : never\n >\n ): RpcPlan<ReturnType<TRpcMethods[TMethodName]>> {\n const rawRequest = Object.freeze({ methodName, params: rawParams });\n const request = config?.requestTransformer ? config?.requestTransformer(rawRequest) : rawRequest;\n return Object.freeze(<RpcPlan<ReturnType<TRpcMethods[TMethodName]>>>{\n execute: async ({ signal, transport }) => {\n const payload = createRpcMessage(request);\n const response = await transport({ payload, signal });\n if (!config?.responseTransformer) {\n return response;\n }\n return config.responseTransformer(response, request);\n },\n });\n };\n },\n });\n}\n","import { RpcResponse } from '@solana/rpc-spec-types';\n\ntype Config = Readonly<{\n payload: unknown;\n signal?: AbortSignal;\n}>;\n\nexport type RpcTransport = {\n <TResponse>(config: Config): Promise<RpcResponse<TResponse>>;\n};\n\nexport function isJsonRpcPayload(payload: unknown): payload is Readonly<{\n jsonrpc: '2.0';\n method: string;\n params: unknown;\n}> {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return false;\n }\n return (\n 'jsonrpc' in payload &&\n payload.jsonrpc === '2.0' &&\n 'method' in payload &&\n typeof payload.method === 'string' &&\n 'params' in payload\n );\n}\n","import { RpcRequest, RpcRequestTransformer, RpcResponseTransformer } from '@solana/rpc-spec-types';\n\nexport type KeyPathWildcard = { readonly __brand: unique symbol };\nexport type KeyPath = ReadonlyArray<KeyPath | KeyPathWildcard | number | string>;\n\nexport const KEYPATH_WILDCARD = {} as KeyPathWildcard;\n\ntype NodeVisitor = <TState extends TraversalState>(value: unknown, state: TState) => unknown;\nexport type TraversalState = Readonly<{\n keyPath: KeyPath;\n}>;\n\nexport function getTreeWalker(visitors: NodeVisitor[]) {\n return function traverse<TState extends TraversalState>(node: unknown, state: TState): unknown {\n if (Array.isArray(node)) {\n return node.map((element, ii) => {\n const nextState = {\n ...state,\n keyPath: [...state.keyPath, ii],\n };\n return traverse(element, nextState);\n });\n } else if (typeof node === 'object' && node !== null) {\n const out: Record<number | string | symbol, unknown> = {};\n for (const propName in node) {\n if (!Object.prototype.hasOwnProperty.call(node, propName)) {\n continue;\n }\n const nextState = {\n ...state,\n keyPath: [...state.keyPath, propName],\n };\n out[propName] = traverse(node[propName as keyof typeof node], nextState);\n }\n return out;\n } else {\n return visitors.reduce((acc, visitNode) => visitNode(acc, state), node);\n }\n };\n}\n\nexport function getTreeWalkerRequestTransformer<TState extends TraversalState>(\n visitors: NodeVisitor[],\n initialState: TState,\n): RpcRequestTransformer {\n return <TParams>(request: RpcRequest<TParams>): RpcRequest => {\n const traverse = getTreeWalker(visitors);\n return Object.freeze({\n ...request,\n params: traverse(request.params, initialState),\n });\n };\n}\n\nexport function getTreeWalkerResponseTransformer<TState extends TraversalState>(\n visitors: NodeVisitor[],\n initialState: TState,\n): RpcResponseTransformer {\n return json => getTreeWalker(visitors)(json, initialState);\n}\n","import { getTreeWalkerRequestTransformer } from './tree-traversal';\n\nexport function getBigIntDowncastRequestTransformer() {\n return getTreeWalkerRequestTransformer([downcastNodeToNumberIfBigint], { keyPath: [] });\n}\n\nexport function downcastNodeToNumberIfBigint(value: bigint): number;\nexport function downcastNodeToNumberIfBigint<T>(value: T): T;\nexport function downcastNodeToNumberIfBigint(value: unknown): unknown {\n return typeof value === 'bigint'\n ? // FIXME(solana-labs/solana/issues/30341) Create a data type to represent u64 in the Solana\n // JSON RPC implementation so that we can throw away this entire patcher instead of unsafely\n // downcasting `bigints` to `numbers`.\n Number(value)\n : value;\n}\n","import type { RpcRequest, RpcRequestTransformer } from '@solana/rpc-spec-types';\nimport type { Commitment } from '@solana/rpc-types';\n\nexport function getDefaultCommitmentRequestTransformer({\n defaultCommitment,\n optionsObjectPositionByMethod,\n}: Readonly<{\n defaultCommitment?: Commitment;\n optionsObjectPositionByMethod: Record<string, number>;\n}>): RpcRequestTransformer {\n return <TParams>(request: RpcRequest<TParams>): RpcRequest => {\n const { params, methodName } = request;\n\n // We only apply default commitment to array parameters.\n if (!Array.isArray(params)) {\n return request;\n }\n\n // Find the position of the options object in the parameters and abort if not found.\n const optionsObjectPositionInParams = optionsObjectPositionByMethod[methodName];\n if (optionsObjectPositionInParams == null) {\n return request;\n }\n\n return Object.freeze({\n methodName,\n params: applyDefaultCommitment({\n commitmentPropertyName: methodName === 'sendTransaction' ? 'preflightCommitment' : 'commitment',\n optionsObjectPositionInParams,\n overrideCommitment: defaultCommitment,\n params,\n }),\n });\n };\n}\n\nexport function applyDefaultCommitment({\n commitmentPropertyName,\n params,\n optionsObjectPositionInParams,\n overrideCommitment,\n}: Readonly<{\n commitmentPropertyName: string;\n optionsObjectPositionInParams: number;\n overrideCommitment?: Commitment;\n params: unknown[];\n}>) {\n const paramInTargetPosition = params[optionsObjectPositionInParams];\n if (\n // There's no config.\n paramInTargetPosition === undefined ||\n // There is a config object.\n (paramInTargetPosition && typeof paramInTargetPosition === 'object' && !Array.isArray(paramInTargetPosition))\n ) {\n if (\n // The config object already has a commitment set.\n paramInTargetPosition &&\n commitmentPropertyName in paramInTargetPosition\n ) {\n if (\n !paramInTargetPosition[commitmentPropertyName as keyof typeof paramInTargetPosition] ||\n paramInTargetPosition[commitmentPropertyName as keyof typeof paramInTargetPosition] === 'finalized'\n ) {\n // Delete the commitment property; `finalized` is already the server default.\n const nextParams = [...params];\n const {\n [commitmentPropertyName as keyof typeof paramInTargetPosition]: _, // eslint-disable-line @typescript-eslint/no-unused-vars\n ...rest\n } = paramInTargetPosition;\n if (Object.keys(rest).length > 0) {\n nextParams[optionsObjectPositionInParams] = rest;\n } else {\n if (optionsObjectPositionInParams === nextParams.length - 1) {\n nextParams.length--;\n } else {\n nextParams[optionsObjectPositionInParams] = undefined;\n }\n }\n return nextParams;\n }\n } else if (overrideCommitment !== 'finalized') {\n // Apply the default commitment.\n const nextParams = [...params];\n nextParams[optionsObjectPositionInParams] = {\n ...paramInTargetPosition,\n [commitmentPropertyName]: overrideCommitment,\n };\n return nextParams;\n }\n }\n return params;\n}\n","import { RpcRequest } from '@solana/rpc-spec-types';\n\nimport { getTreeWalkerRequestTransformer, KeyPath, TraversalState } from './tree-traversal';\n\nexport type IntegerOverflowHandler = (request: RpcRequest, keyPath: KeyPath, value: bigint) => void;\n\nexport function getIntegerOverflowRequestTransformer(onIntegerOverflow: IntegerOverflowHandler) {\n return <TParams>(request: RpcRequest<TParams>): RpcRequest => {\n const transformer = getTreeWalkerRequestTransformer(\n [getIntegerOverflowNodeVisitor((...args) => onIntegerOverflow(request, ...args))],\n { keyPath: [] },\n );\n return transformer(request);\n };\n}\n\nexport function getIntegerOverflowNodeVisitor(onIntegerOverflow: (keyPath: KeyPath, value: bigint) => void) {\n return <T>(value: T, { keyPath }: TraversalState): T => {\n if (typeof value === 'bigint') {\n if (onIntegerOverflow && (value > Number.MAX_SAFE_INTEGER || value < -Number.MAX_SAFE_INTEGER)) {\n onIntegerOverflow(keyPath as (number | string)[], value);\n }\n }\n return value;\n };\n}\n","export const OPTIONS_OBJECT_POSITION_BY_METHOD: Record<string, number> = {\n accountNotifications: 1,\n blockNotifications: 1,\n getAccountInfo: 1,\n getBalance: 1,\n getBlock: 1,\n getBlockHeight: 0,\n getBlockProduction: 0,\n getBlocks: 2,\n getBlocksWithLimit: 2,\n getEpochInfo: 0,\n getFeeForMessage: 1,\n getInflationGovernor: 0,\n getInflationReward: 1,\n getLargestAccounts: 0,\n getLatestBlockhash: 0,\n getLeaderSchedule: 1,\n getMinimumBalanceForRentExemption: 1,\n getMultipleAccounts: 1,\n getProgramAccounts: 1,\n getSignaturesForAddress: 1,\n getSlot: 0,\n getSlotLeader: 0,\n getStakeMinimumDelegation: 0,\n getSupply: 0,\n getTokenAccountBalance: 1,\n getTokenAccountsByDelegate: 2,\n getTokenAccountsByOwner: 2,\n getTokenLargestAccounts: 1,\n getTokenSupply: 1,\n getTransaction: 1,\n getTransactionCount: 0,\n getVoteAccounts: 0,\n isBlockhashValid: 1,\n logsNotifications: 1,\n programNotifications: 1,\n requestAirdrop: 2,\n sendTransaction: 1,\n signatureNotifications: 1,\n simulateTransaction: 1,\n};\n","import { pipe } from '@solana/functional';\nimport { RpcRequest, RpcRequestTransformer } from '@solana/rpc-spec-types';\nimport { Commitment } from '@solana/rpc-types';\n\nimport { getBigIntDowncastRequestTransformer } from './request-transformer-bigint-downcast';\nimport { getDefaultCommitmentRequestTransformer } from './request-transformer-default-commitment';\nimport { getIntegerOverflowRequestTransformer, IntegerOverflowHandler } from './request-transformer-integer-overflow';\nimport { OPTIONS_OBJECT_POSITION_BY_METHOD } from './request-transformer-options-object-position-config';\n\nexport type RequestTransformerConfig = Readonly<{\n defaultCommitment?: Commitment;\n onIntegerOverflow?: IntegerOverflowHandler;\n}>;\n\nexport function getDefaultRequestTransformerForSolanaRpc(config?: RequestTransformerConfig): RpcRequestTransformer {\n const handleIntegerOverflow = config?.onIntegerOverflow;\n return (request: RpcRequest): RpcRequest => {\n return pipe(\n request,\n handleIntegerOverflow ? getIntegerOverflowRequestTransformer(handleIntegerOverflow) : r => r,\n getBigIntDowncastRequestTransformer(),\n getDefaultCommitmentRequestTransformer({\n defaultCommitment: config?.defaultCommitment,\n optionsObjectPositionByMethod: OPTIONS_OBJECT_POSITION_BY_METHOD,\n }),\n );\n };\n}\n","import { getTreeWalkerResponseTransformer, KeyPath, KEYPATH_WILDCARD, TraversalState } from './tree-traversal';\n\nexport function getBigIntUpcastResponseTransformer(allowedNumericKeyPaths: readonly KeyPath[]) {\n return getTreeWalkerResponseTransformer([getBigIntUpcastVisitor(allowedNumericKeyPaths)], { keyPath: [] });\n}\n\nexport function getBigIntUpcastVisitor(allowedNumericKeyPaths: readonly KeyPath[]) {\n return function upcastNodeToBigIntIfNumber(value: unknown, { keyPath }: TraversalState) {\n const isInteger = (typeof value === 'number' && Number.isInteger(value)) || typeof value === 'bigint';\n if (!isInteger) return value;\n if (keyPathIsAllowedToBeNumeric(keyPath, allowedNumericKeyPaths)) {\n return Number(value);\n } else {\n return BigInt(value);\n }\n };\n}\n\nfunction keyPathIsAllowedToBeNumeric(keyPath: KeyPath, allowedNumericKeyPaths: readonly KeyPath[]) {\n return allowedNumericKeyPaths.some(prohibitedKeyPath => {\n if (prohibitedKeyPath.length !== keyPath.length) {\n return false;\n }\n for (let ii = keyPath.length - 1; ii >= 0; ii--) {\n const keyPathPart = keyPath[ii];\n const prohibitedKeyPathPart = prohibitedKeyPath[ii];\n if (\n prohibitedKeyPathPart !== keyPathPart &&\n (prohibitedKeyPathPart !== KEYPATH_WILDCARD || typeof keyPathPart !== 'number')\n ) {\n return false;\n }\n }\n return true;\n });\n}\n","import { RpcResponseTransformer } from '@solana/rpc-spec-types';\n\ntype JsonRpcResponse = { result: unknown };\n\nexport function getResultResponseTransformer(): RpcResponseTransformer {\n return json => (json as JsonRpcResponse).result;\n}\n","import { getSolanaErrorFromJsonRpcError } from '@solana/errors';\nimport { RpcResponseTransformer } from '@solana/rpc-spec-types';\n\ntype JsonRpcResponse = { error: Parameters<typeof getSolanaErrorFromJsonRpcError>[0] } | { result: unknown };\n\nexport function getThrowSolanaErrorResponseTransformer(): RpcResponseTransformer {\n return json => {\n const jsonRpcResponse = json as JsonRpcResponse;\n if ('error' in jsonRpcResponse) {\n throw getSolanaErrorFromJsonRpcError(jsonRpcResponse.error);\n }\n return jsonRpcResponse;\n };\n}\n","import { pipe } from '@solana/functional';\nimport { RpcRequest, RpcResponse, RpcResponseTransformer } from '@solana/rpc-spec-types';\n\nimport { AllowedNumericKeypaths } from './response-transformer-allowed-numeric-values';\nimport { getBigIntUpcastResponseTransformer } from './response-transformer-bigint-upcast';\nimport { getResultResponseTransformer } from './response-transformer-result';\nimport { getThrowSolanaErrorResponseTransformer } from './response-transformer-throw-solana-error';\n\nexport type ResponseTransformerConfig<TApi> = Readonly<{\n allowedNumericKeyPaths?: AllowedNumericKeypaths<TApi>;\n}>;\n\nexport function getDefaultResponseTransformerForSolanaRpc<TApi>(\n config?: ResponseTransformerConfig<TApi>,\n): RpcResponseTransformer {\n return (response: RpcResponse, request: RpcRequest): RpcResponse => {\n const methodName = request.methodName as keyof TApi;\n const keyPaths =\n config?.allowedNumericKeyPaths && methodName ? config.allowedNumericKeyPaths[methodName] : undefined;\n return pipe(\n response,\n r => getThrowSolanaErrorResponseTransformer()(r, request),\n r => getResultResponseTransformer()(r, request),\n r => getBigIntUpcastResponseTransformer(keyPaths ?? [])(r, request),\n );\n };\n}\n\nexport function getDefaultResponseTransformerForSolanaRpcSubscriptions<TApi>(\n config?: ResponseTransformerConfig<TApi>,\n): RpcResponseTransformer {\n return (response: RpcResponse, request: RpcRequest): RpcResponse => {\n const methodName = request.methodName as keyof TApi;\n const keyPaths =\n config?.allowedNumericKeyPaths && methodName ? config.allowedNumericKeyPaths[methodName] : undefined;\n return pipe(response, r => getBigIntUpcastResponseTransformer(keyPaths ?? [])(r, request));\n };\n}\n","import { KeyPath, KEYPATH_WILDCARD } from './tree-traversal';\n\nexport type AllowedNumericKeypaths<TApi> = Partial<Record<keyof TApi, readonly KeyPath[]>>;\n\n// Numeric values nested in `jsonParsed` accounts\nexport const jsonParsedTokenAccountsConfigs = [\n // parsed Token/Token22 token account\n ['data', 'parsed', 'info', 'tokenAmount', 'decimals'],\n ['data', 'parsed', 'info', 'tokenAmount', 'uiAmount'],\n ['data', 'parsed', 'info', 'rentExemptReserve', 'decimals'],\n ['data', 'parsed', 'info', 'rentExemptReserve', 'uiAmount'],\n ['data', 'parsed', 'info', 'delegatedAmount', 'decimals'],\n ['data', 'parsed', 'info', 'delegatedAmount', 'uiAmount'],\n ['data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'olderTransferFee', 'transferFeeBasisPoints'],\n ['data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'newerTransferFee', 'transferFeeBasisPoints'],\n ['data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'preUpdateAverageRate'],\n ['data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'currentRate'],\n];\nexport const jsonParsedAccountsConfigs = [\n ...jsonParsedTokenAccountsConfigs,\n // parsed AddressTableLookup account\n ['data', 'parsed', 'info', 'lastExtendedSlotStartIndex'],\n // parsed Config account\n ['data', 'parsed', 'info', 'slashPenalty'],\n ['data', 'parsed', 'info', 'warmupCooldownRate'],\n // parsed Token/Token22 mint account\n ['data', 'parsed', 'info', 'decimals'],\n // parsed Token/Token22 multisig account\n ['data', 'parsed', 'info', 'numRequiredSigners'],\n ['data', 'parsed', 'info', 'numValidSigners'],\n // parsed Stake account\n ['data', 'parsed', 'info', 'stake', 'delegation', 'warmupCooldownRate'],\n // parsed Sysvar rent account\n ['data', 'parsed', 'info', 'exemptionThreshold'],\n ['data', 'parsed', 'info', 'burnPercent'],\n // parsed Vote account\n ['data', 'parsed', 'info', 'commission'],\n ['data', 'parsed', 'info', 'votes', KEYPATH_WILDCARD, 'confirmationCount'],\n];\nexport const innerInstructionsConfigs = [\n ['index'],\n ['instructions', KEYPATH_WILDCARD, 'accounts', KEYPATH_WILDCARD],\n ['instructions', KEYPATH_WILDCARD, 'programIdIndex'],\n ['instructions', KEYPATH_WILDCARD, 'stackHeight'],\n];\nexport const messageConfig = [\n ['addressTableLookups', KEYPATH_WILDCARD, 'writableIndexes', KEYPATH_WILDCARD],\n ['addressTableLookups', KEYPATH_WILDCARD, 'readonlyIndexes', KEYPATH_WILDCARD],\n ['header', 'numReadonlySignedAccounts'],\n ['header', 'numReadonlyUnsignedAccounts'],\n ['header', 'numRequiredSignatures'],\n ['instructions', KEYPATH_WILDCARD, 'accounts', KEYPATH_WILDCARD],\n ['instructions', KEYPATH_WILDCARD, 'programIdIndex'],\n ['instructions', KEYPATH_WILDCARD, 'stackHeight'],\n] as const;\n","import { createJsonRpcApi, RpcApi } from '@solana/rpc-spec';\nimport {\n AllowedNumericKeypaths,\n getDefaultRequestTransformerForSolanaRpc,\n getDefaultResponseTransformerForSolanaRpc,\n innerInstructionsConfigs,\n jsonParsedAccountsConfigs,\n jsonParsedTokenAccountsConfigs,\n KEYPATH_WILDCARD,\n messageConfig,\n RequestTransformerConfig,\n} from '@solana/rpc-transformers';\n\nimport { GetAccountInfoApi } from './getAccountInfo';\nimport { GetBalanceApi } from './getBalance';\nimport { GetBlockApi } from './getBlock';\nimport { GetBlockCommitmentApi } from './getBlockCommitment';\nimport { GetBlockHeightApi } from './getBlockHeight';\nimport { GetBlockProductionApi } from './getBlockProduction';\nimport { GetBlocksApi } from './getBlocks';\nimport { GetBlocksWithLimitApi } from './getBlocksWithLimit';\nimport { GetBlockTimeApi } from './getBlockTime';\nimport { GetClusterNodesApi } from './getClusterNodes';\nimport { GetEpochInfoApi } from './getEpochInfo';\nimport { GetEpochScheduleApi } from './getEpochSchedule';\nimport { GetFeeForMessageApi } from './getFeeForMessage';\nimport { GetFirstAvailableBlockApi } from './getFirstAvailableBlock';\nimport { GetGenesisHashApi } from './getGenesisHash';\nimport { GetHealthApi } from './getHealth';\nimport { GetHighestSnapshotSlotApi } from './getHighestSnapshotSlot';\nimport { GetIdentityApi } from './getIdentity';\nimport { GetInflationGovernorApi } from './getInflationGovernor';\nimport { GetInflationRateApi } from './getInflationRate';\nimport { GetInflationRewardApi } from './getInflationReward';\nimport { GetLargestAccountsApi } from './getLargestAccounts';\nimport { GetLatestBlockhashApi } from './getLatestBlockhash';\nimport { GetLeaderScheduleApi } from './getLeaderSchedule';\nimport { GetMaxRetransmitSlotApi } from './getMaxRetransmitSlot';\nimport { GetMaxShredInsertSlotApi } from './getMaxShredInsertSlot';\nimport { GetMinimumBalanceForRentExemptionApi } from './getMinimumBalanceForRentExemption';\nimport { GetMultipleAccountsApi } from './getMultipleAccounts';\nimport { GetProgramAccountsApi } from './getProgramAccounts';\nimport { GetRecentPerformanceSamplesApi } from './getRecentPerformanceSamples';\nimport { GetRecentPrioritizationFeesApi } from './getRecentPrioritizationFees';\nimport { GetSignaturesForAddressApi } from './getSignaturesForAddress';\nimport { GetSignatureStatusesApi } from './getSignatureStatuses';\nimport { GetSlotApi } from './getSlot';\nimport { GetSlotLeaderApi } from './getSlotLeader';\nimport { GetSlotLeadersApi } from './getSlotLeaders';\nimport { GetStakeMinimumDelegationApi } from './getStakeMinimumDelegation';\nimport { GetSupplyApi } from './getSupply';\nimport { GetTokenAccountBalanceApi } from './getTokenAccountBalance';\nimport { GetTokenAccountsByDelegateApi } from './getTokenAccountsByDelegate';\nimport { GetTokenAccountsByOwnerApi } from './getTokenAccountsByOwner';\nimport { GetTokenLargestAccountsApi } from './getTokenLargestAccounts';\nimport { GetTokenSupplyApi } from './getTokenSupply';\nimport { GetTransactionApi } from './getTransaction';\nimport { GetTransactionCountApi } from './getTransactionCount';\nimport { GetVersionApi } from './getVersion';\nimport { GetVoteAccountsApi } from './getVoteAccounts';\nimport { IsBlockhashValidApi } from './isBlockhashValid';\nimport { MinimumLedgerSlotApi } from './minimumLedgerSlot';\nimport { RequestAirdropApi } from './requestAirdrop';\nimport { SendTransactionApi } from './sendTransaction';\nimport { SimulateTransactionApi } from './simulateTransaction';\n\ntype SolanaRpcApiForAllClusters = GetAccountInfoApi &\n GetBalanceApi &\n GetBlockApi &\n GetBlockCommitmentApi &\n GetBlockHeightApi &\n GetBlockProductionApi &\n GetBlocksApi &\n GetBlocksWithLimitApi &\n GetBlockTimeApi &\n GetClusterNodesApi &\n GetEpochInfoApi &\n GetEpochScheduleApi &\n GetFeeForMessageApi &\n GetFirstAvailableBlockApi &\n GetGenesisHashApi &\n GetHealthApi &\n GetHighestSnapshotSlotApi &\n GetIdentityApi &\n GetInflationGovernorApi &\n GetInflationRateApi &\n GetInflationRewardApi &\n GetLargestAccountsApi &\n GetLatestBlockhashApi &\n GetLeaderScheduleApi &\n GetMaxRetransmitSlotApi &\n GetMaxShredInsertSlotApi &\n GetMinimumBalanceForRentExemptionApi &\n GetMultipleAccountsApi &\n GetProgramAccountsApi &\n GetRecentPerformanceSamplesApi &\n GetRecentPrioritizationFeesApi &\n GetSignaturesForAddressApi &\n GetSignatureStatusesApi &\n GetSlotApi &\n GetSlotLeaderApi &\n GetSlotLeadersApi &\n GetStakeMinimumDelegationApi &\n GetSupplyApi &\n GetTokenAccountBalanceApi &\n GetTokenAccountsByDelegateApi &\n GetTokenAccountsByOwnerApi &\n GetTokenLargestAccountsApi &\n GetTokenSupplyApi &\n GetTransactionApi &\n GetTransactionCountApi &\n GetVersionApi &\n GetVoteAccountsApi &\n IsBlockhashValidApi &\n MinimumLedgerSlotApi &\n SendTransactionApi &\n SimulateTransactionApi;\ntype SolanaRpcApiForTestClusters = RequestAirdropApi & SolanaRpcApiForAllClusters;\nexport type SolanaRpcApi = SolanaRpcApiForTestClusters;\nexport type SolanaRpcApiDevnet = SolanaRpcApiForTestClusters;\nexport type SolanaRpcApiTestnet = SolanaRpcApiForTestClusters;\nexport type SolanaRpcApiMainnet = SolanaRpcApiForAllClusters;\n\nexport type {\n GetAccountInfoApi,\n GetBalanceApi,\n GetBlockApi,\n GetBlockCommitmentApi,\n GetBlockHeightApi,\n GetBlockProductionApi,\n GetBlocksApi,\n GetBlocksWithLimitApi,\n GetBlockTimeApi,\n GetClusterNodesApi,\n GetEpochInfoApi,\n GetEpochScheduleApi,\n GetFeeForMessageApi,\n GetFirstAvailableBlockApi,\n GetGenesisHashApi,\n GetHealthApi,\n GetHighestSnapshotSlotApi,\n GetIdentityApi,\n GetInflationGovernorApi,\n GetInflationRateApi,\n GetInflationRewardApi,\n GetLargestAccountsApi,\n GetLatestBlockhashApi,\n GetLeaderScheduleApi,\n GetMaxRetransmitSlotApi,\n GetMaxShredInsertSlotApi,\n GetMinimumBalanceForRentExemptionApi,\n GetMultipleAccountsApi,\n GetProgramAccountsApi,\n GetRecentPerformanceSamplesApi,\n GetRecentPrioritizationFeesApi,\n GetSignaturesForAddressApi,\n GetSignatureStatusesApi,\n GetSlotApi,\n GetSlotLeaderApi,\n GetSlotLeadersApi,\n GetStakeMinimumDelegationApi,\n GetSupplyApi,\n GetTokenAccountBalanceApi,\n GetTokenAccountsByDelegateApi,\n GetTokenAccountsByOwnerApi,\n GetTokenLargestAccountsApi,\n GetTokenSupplyApi,\n GetTransactionApi,\n GetTransactionCountApi,\n GetVersionApi,\n GetVoteAccountsApi,\n IsBlockhashValidApi,\n MinimumLedgerSlotApi,\n RequestAirdropApi,\n SendTransactionApi,\n SimulateTransactionApi,\n};\n\ntype Config = RequestTransformerConfig;\n\nexport function createSolanaRpcApi<\n // eslint-disable-next-line @typescript-eslint/no-duplicate-type-constituents\n TRpcMethods extends SolanaRpcApi | SolanaRpcApiDevnet | SolanaRpcApiMainnet | SolanaRpcApiTestnet = SolanaRpcApi,\n>(config?: Config): RpcApi<TRpcMethods> {\n return createJsonRpcApi<TRpcMethods>({\n requestTransformer: getDefaultRequestTransformerForSolanaRpc(config),\n responseTransformer: getDefaultResponseTransformerForSolanaRpc({\n allowedNumericKeyPaths: getAllowedNumericKeypaths(),\n }),\n });\n}\n\nlet memoizedKeypaths: AllowedNumericKeypaths<RpcApi<SolanaRpcApi>>;\n\n/**\n * These are keypaths at the end of which you will find a numeric value that should *not* be upcast\n * to a `bigint`. These are values that are legitimately defined as `u8` or `usize` on the backend.\n */\nfunction getAllowedNumericKeypaths(): AllowedNumericKeypaths<RpcApi<SolanaRpcApi>> {\n if (!memoizedKeypaths) {\n memoizedKeypaths = {\n getAccountInfo: jsonParsedAccountsConfigs.map(c => ['value', ...c]),\n getBlock: [\n ['transactions', KEYPATH_WILDCARD, 'meta', 'preTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n [\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'preTokenBalances',\n KEYPATH_WILDCARD,\n 'uiTokenAmount',\n 'decimals',\n ],\n ['transactions', KEYPATH_WILDCARD, 'meta', 'postTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n [\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'postTokenBalances',\n KEYPATH_WILDCARD,\n 'uiTokenAmount',\n 'decimals',\n ],\n ['transactions', KEYPATH_WILDCARD, 'meta', 'rewards', KEYPATH_WILDCARD, 'commission'],\n ...innerInstructionsConfigs.map(c => [\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'innerInstructions',\n KEYPATH_WILDCARD,\n ...c,\n ]),\n ...messageConfig.map(c => ['transactions', KEYPATH_WILDCARD, 'transaction', 'message', ...c] as const),\n ['rewards', KEYPATH_WILDCARD, 'commission'],\n ],\n getClusterNodes: [\n [KEYPATH_WILDCARD, 'featureSet'],\n [KEYPATH_WILDCARD, 'shredVersion'],\n ],\n getInflationGovernor: [['initial'], ['foundation'], ['foundationTerm'], ['taper'], ['terminal']],\n getInflationRate: [['foundation'], ['total'], ['validator']],\n getInflationReward: [[KEYPATH_WILDCARD, 'commission']],\n getMultipleAccounts: jsonParsedAccountsConfigs.map(c => ['value', KEYPATH_WILDCARD, ...c]),\n getProgramAccounts: jsonParsedAccountsConfigs.flatMap(c => [\n ['value', KEYPATH_WILDCARD, 'account', ...c],\n [KEYPATH_WILDCARD, 'account', ...c],\n ]),\n getRecentPerformanceSamples: [[KEYPATH_WILDCARD, 'samplePeriodSecs']],\n getTokenAccountBalance: [\n ['value', 'decimals'],\n ['value', 'uiAmount'],\n ],\n getTokenAccountsByDelegate: jsonParsedTokenAccountsConfigs.map(c => [\n 'value',\n KEYPATH_WILDCARD,\n 'account',\n ...c,\n ]),\n getTokenAccountsByOwner: jsonParsedTokenAccountsConfigs.map(c => [\n 'value',\n KEYPATH_WILDCARD,\n 'account',\n ...c,\n ]),\n getTokenLargestAccounts: [\n ['value', KEYPATH_WILDCARD, 'decimals'],\n ['value', KEYPATH_WILDCARD, 'uiAmount'],\n ],\n getTokenSupply: [\n ['value', 'decimals'],\n ['value', 'uiAmount'],\n ],\n getTransaction: [\n ['meta', 'preTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n ['meta', 'preTokenBalances', KEYPATH_WILDCARD, 'uiTokenAmount', 'decimals'],\n ['meta', 'postTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n ['meta', 'postTokenBalances', KEYPATH_WILDCARD, 'uiTokenAmount', 'decimals'],\n ['meta', 'rewards', KEYPATH_WILDCARD, 'commission'],\n ...innerInstructionsConfigs.map(c => ['meta', 'innerInstructions', KEYPATH_WILDCARD, ...c]),\n ...messageConfig.map(c => ['transaction', 'message', ...c] as const),\n ],\n getVersion: [['feature-set']],\n getVoteAccounts: [\n ['current', KEYPATH_WILDCARD, 'commission'],\n ['delinquent', KEYPATH_WILDCARD, 'commission'],\n ],\n simulateTransaction: [\n ...jsonParsedAccountsConfigs.map(c => ['value', 'accounts', KEYPATH_WILDCARD, ...c]),\n ...innerInstructionsConfigs.map(c => ['value', 'innerInstructions', KEYPATH_WILDCARD, ...c]),\n ],\n };\n }\n return memoizedKeypaths;\n}\n","import { SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN, SolanaError } from '@solana/errors';\n\nexport type AllowedHttpRequestHeaders = Readonly<\n {\n // Someone can still sneak a forbidden header past Typescript if they do something like\n // fOo-BaR, but at that point they deserve the runtime failure.\n [K in DisallowedHeaders | ForbiddenHeaders as\n | Capitalize<Lowercase<K>> // `Foo-bar`\n | K // `Foo-Bar`\n | Lowercase<K> // `foo-bar`\n | Uncapitalize<K> // `foo-Bar`\n // `FOO-BAR`\n | Uppercase<K>]?: never;\n } & { [headerName: string]: string }\n>;\n// These are headers that we simply don't allow the developer to override because they're\n// fundamental to the operation of the JSON-RPC transport.\ntype DisallowedHeaders = 'Accept' | 'Content-Length' | 'Content-Type' | 'Solana-Client';\ntype ForbiddenHeaders =\n | 'Accept-Charset'\n /**\n * Though technically forbidden in non-Node environments, we don't have a way to target\n * TypeScript types depending on which platform you are authoring for. `Accept-Encoding` is\n * therefore omitted from the forbidden headers type, but is still a runtime error in dev mode\n * when supplied in a non-Node context.\n */\n // | 'Accept-Encoding'\n | 'Access-Control-Request-Headers'\n | 'Access-Control-Request-Method'\n | 'Connection'\n | 'Content-Length'\n | 'Cookie'\n | 'Date'\n | 'DNT'\n | 'Expect'\n | 'Host'\n | 'Keep-Alive'\n | 'Origin'\n | 'Permissions-Policy'\n | 'Referer'\n | 'TE'\n | 'Trailer'\n | 'Transfer-Encoding'\n | 'Upgrade'\n | 'Via'\n | `Proxy-${string}`\n | `Sec-${string}`;\n\n// These are headers which are fundamental to the JSON-RPC transport, and must not be modified.\nconst DISALLOWED_HEADERS: Record<string, boolean> = {\n accept: true,\n 'content-length': true,\n 'content-type': true,\n};\n// https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name\nconst FORBIDDEN_HEADERS: Record<string, boolean> = /* @__PURE__ */ Object.assign(\n {\n 'accept-charset': true,\n 'access-control-request-headers': true,\n 'access-control-request-method': true,\n connection: true,\n 'content-length': true,\n cookie: true,\n date: true,\n dnt: true,\n expect: true,\n host: true,\n 'keep-alive': true,\n origin: true,\n 'permissions-policy': true,\n // Prefix matching is implemented in code, below.\n // 'proxy-': true,\n // 'sec-': true,\n referer: true,\n te: true,\n trailer: true,\n 'transfer-encoding': true,\n upgrade: true,\n via: true,\n },\n __NODEJS__ ? undefined : { 'accept-encoding': true },\n);\n\nexport function assertIsAllowedHttpRequestHeaders(\n headers: Record<string, string>,\n): asserts headers is AllowedHttpRequestHeaders {\n const badHeaders = Object.keys(headers).filter(headerName => {\n const lowercaseHeaderName = headerName.toLowerCase();\n return (\n DISALLOWED_HEADERS[headerName.toLowerCase()] === true ||\n FORBIDDEN_HEADERS[headerName.toLowerCase()] === true ||\n lowercaseHeaderName.startsWith('proxy-') ||\n lowercaseHeaderName.startsWith('sec-')\n );\n });\n if (badHeaders.length > 0) {\n throw new SolanaError(SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN, {\n headers: badHeaders,\n });\n }\n}\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers, such as those defined\n * in the `DisallowedHeaders` type.\n */\nexport function normalizeHeaders<T extends Record<string, string>>(\n headers: T,\n): { [K in string & keyof T as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in string & keyof T as Lowercase<K>]: T[K] };\n}\n","import { SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR, SolanaError } from '@solana/errors';\nimport type { RpcTransport } from '@solana/rpc-spec';\nimport type { RpcResponse } from '@solana/rpc-spec-types';\nimport type Dispatcher from 'undici-types/dispatcher';\n\nimport {\n AllowedHttpRequestHeaders,\n assertIsAllowedHttpRequestHeaders,\n normalizeHeaders,\n} from './http-transport-headers';\n\ntype Config = Readonly<{\n dispatcher_NODE_ONLY?: Dispatcher;\n fromJson?: (rawResponse: string, payload: unknown) => RpcResponse;\n headers?: AllowedHttpRequestHeaders;\n toJson?: (payload: unknown) => string;\n url: string;\n}>;\n\nlet didWarnDispatcherWasSuppliedInNonNodeEnvironment = false;\nfunction warnDispatcherWasSuppliedInNonNodeEnvironment() {\n if (didWarnDispatcherWasSuppliedInNonNodeEnvironment) {\n return;\n }\n didWarnDispatcherWasSuppliedInNonNodeEnvironment = true;\n console.warn(\n 'You have supplied a `Dispatcher` to `createHttpTransport()`. It has been ignored ' +\n 'because Undici dispatchers only work in Node environments. To eliminate this ' +\n 'warning, omit the `dispatcher_NODE_ONLY` property from your config when running in ' +\n 'a non-Node environment.',\n );\n}\n\nexport function createHttpTransport(config: Config): RpcTransport {\n if (process.env.NODE_ENV !== \"production\" && !__NODEJS__ && 'dispatcher_NODE_ONLY' in config) {\n warnDispatcherWasSuppliedInNonNodeEnvironment();\n }\n const { fromJson, headers, toJson, url } = config;\n if (process.env.NODE_ENV !== \"production\" && headers) {\n assertIsAllowedHttpRequestHeaders(headers);\n }\n let dispatcherConfig: { dispatcher: Dispatcher | undefined } | undefined;\n if (__NODEJS__ && 'dispatcher_NODE_ONLY' in config) {\n dispatcherConfig = { dispatcher: config.dispatcher_NODE_ONLY };\n }\n const customHeaders = headers && normalizeHeaders(headers);\n return async function makeHttpRequest<TResponse>({\n payload,\n signal,\n }: Parameters<RpcTransport>[0]): Promise<RpcResponse<TResponse>> {\n const body = toJson ? toJson(payload) : JSON.stringify(payload);\n const requestInfo = {\n ...dispatcherConfig,\n body,\n headers: {\n ...customHeaders,\n // Keep these headers lowercase so they will override any user-supplied headers above.\n accept: 'application/json',\n 'content-length': body.length.toString(),\n 'content-type': 'application/json; charset=utf-8',\n },\n method: 'POST',\n signal,\n };\n const response = await fetch(url, requestInfo);\n if (!response.ok) {\n throw new SolanaError(SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR, {\n message: response.statusText,\n statusCode: response.status,\n });\n }\n if (fromJson) {\n return fromJson(await response.text(), payload) as TResponse;\n }\n return await response.json();\n };\n}\n","import { isJsonRpcPayload } from '@solana/rpc-spec';\n\nconst SOLANA_RPC_METHODS = [\n 'getAccountInfo',\n 'getBalance',\n 'getBlock',\n 'getBlockCommitment',\n 'getBlockHeight',\n 'getBlockProduction',\n 'getBlocks',\n 'getBlocksWithLimit',\n 'getBlockTime',\n 'getClusterNodes',\n 'getEpochInfo',\n 'getEpochSchedule',\n 'getFeeForMessage',\n 'getFirstAvailableBlock',\n 'getGenesisHash',\n 'getHealth',\n 'getHighestSnapshotSlot',\n 'getIdentity',\n 'getInflationGovernor',\n 'getInflationRate',\n 'getInflationReward',\n 'getLargestAccounts',\n 'getLatestBlockhash',\n 'getLeaderSchedule',\n 'getMaxRetransmitSlot',\n 'getMaxShredInsertSlot',\n 'getMinimumBalanceForRentExemption',\n 'getMultipleAccounts',\n 'getProgramAccounts',\n 'getRecentPerformanceSamples',\n 'getRecentPrioritizationFees',\n 'getSignaturesForAddress',\n 'getSignatureStatuses',\n 'getSlot',\n 'getSlotLeader',\n 'getSlotLeaders',\n 'getStakeMinimumDelegation',\n 'getSupply',\n 'getTokenAccountBalance',\n 'getTokenAccountsByDelegate',\n 'getTokenAccountsByOwner',\n 'getTokenLargestAccounts',\n 'getTokenSupply',\n 'getTransaction',\n 'getTransactionCount',\n 'getVersion',\n 'getVoteAccounts',\n 'index',\n 'isBlockhashValid',\n 'minimumLedgerSlot',\n 'requestAirdrop',\n 'sendTransaction',\n 'simulateTransaction',\n] as const;\n\n/**\n * Helper function that checks if a given `RpcRequest` comes from the Solana RPC API.\n */\nexport function isSolanaRequest(payload: unknown): payload is Readonly<{\n jsonrpc: '2.0';\n method: (typeof SOLANA_RPC_METHODS)[number];\n params: unknown;\n}> {\n return isJsonRpcPayload(payload) && (SOLANA_RPC_METHODS as readonly string[]).includes(payload.method);\n}\n","import { RpcTransport } from '@solana/rpc-spec';\nimport { parseJsonWithBigInts, stringifyJsonWithBigints } from '@solana/rpc-spec-types';\nimport type Dispatcher from 'undici-types/dispatcher';\n\nimport { createHttpTransport } from './http-transport';\nimport { AllowedHttpRequestHeaders } from './http-transport-headers';\nimport { isSolanaRequest } from './is-solana-request';\n\ntype Config = Readonly<{\n dispatcher_NODE_ONLY?: Dispatcher;\n headers?: AllowedHttpRequestHeaders;\n url: string;\n}>;\n\nexport function createHttpTransportForSolanaRpc(config: Config): RpcTransport {\n return createHttpTransport({\n ...config,\n fromJson: (rawResponse: string, payload: unknown) =>\n isSolanaRequest(payload) ? parseJsonWithBigInts(rawResponse) : JSON.parse(rawResponse),\n toJson: (payload: unknown) =>\n isSolanaRequest(payload) ? stringifyJsonWithBigints(payload) : JSON.stringify(payload),\n });\n}\n","const objToString = Object.prototype.toString;\nconst objKeys =\n Object.keys ||\n function (obj) {\n const keys = [];\n for (const name in obj) {\n keys.push(name);\n }\n return keys;\n };\n\nfunction stringify(val: unknown, isArrayProp: boolean) {\n let i, max, str, keys, key, propVal, toStr;\n if (val === true) {\n return 'true';\n }\n if (val === false) {\n return 'false';\n }\n switch (typeof val) {\n case 'object':\n if (val === null) {\n return null;\n } else if ('toJSON' in val && typeof val.toJSON === 'function') {\n return stringify(val.toJSON(), isArrayProp);\n } else {\n toStr = objToString.call(val);\n if (toStr === '[object Array]') {\n str = '[';\n max = (val as unknown[]).length - 1;\n for (i = 0; i < max; i++) {\n str += stringify((val as unknown[])[i], true) + ',';\n }\n if (max > -1) {\n str += stringify((val as unknown[])[i], true);\n }\n return str + ']';\n } else if (toStr === '[object Object]') {\n // only object is left\n keys = objKeys(val).sort();\n max = keys.length;\n str = '';\n i = 0;\n while (i < max) {\n key = keys[i];\n propVal = stringify((val as Record<typeof key, unknown>)[key], false);\n if (propVal !== undefined) {\n if (str) {\n str += ',';\n }\n str += JSON.stringify(key) + ':' + propVal;\n }\n i++;\n }\n return '{' + str + '}';\n } else {\n return JSON.stringify(val);\n }\n }\n case 'function':\n case 'undefined':\n return isArrayProp ? null : undefined;\n case 'bigint':\n return `${val.toString()}n`;\n case 'string':\n return JSON.stringify(val);\n default:\n return isFinite(val as number) ? val : null;\n }\n}\n\nexport default function (\n val:\n | Function // eslint-disable-line @typescript-eslint/no-unsafe-function-type\n | undefined,\n): undefined;\nexport default function (val: unknown): string;\nexport default function (val: unknown): string | undefined {\n const returnVal = stringify(val, false);\n if (returnVal !== undefined) {\n return '' + returnVal;\n }\n}\n","import { safeCaptureStackTrace, SOLANA_ERROR__RPC__INTEGER_OVERFLOW, SolanaError } from '@solana/errors';\nimport type { KeyPath } from '@solana/rpc-transformers';\n\nexport function createSolanaJsonRpcIntegerOverflowError(\n methodName: string,\n keyPath: KeyPath,\n value: bigint,\n): SolanaError<typeof SOLANA_ERROR__RPC__INTEGER_OVERFLOW> {\n let argumentLabel = '';\n if (typeof keyPath[0] === 'number') {\n const argPosition = keyPath[0] + 1;\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n argumentLabel = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n argumentLabel = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n argumentLabel = argPosition + 'rd';\n } else {\n argumentLabel = argPosition + 'th';\n }\n } else {\n argumentLabel = `\\`${keyPath[0].toString()}\\``;\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : undefined;\n const error = new SolanaError(SOLANA_ERROR__RPC__INTEGER_OVERFLOW, {\n argumentLabel,\n keyPath: keyPath as readonly (number | string | symbol)[],\n methodName,\n optionalPathLabel: path ? ` at path \\`${path}\\`` : '',\n value,\n ...(path !== undefined ? { path } : undefined),\n });\n safeCaptureStackTrace(error, createSolanaJsonRpcIntegerOverflowError);\n return error;\n}\n","import type { createSolanaRpcApi } from '@solana/rpc-api';\n\nimport { createSolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<NonNullable<Parameters<typeof createSolanaRpcApi>[0]>> = {\n defaultCommitment: 'confirmed',\n onIntegerOverflow(request, keyPath, value) {\n throw createSolanaJsonRpcIntegerOverflowError(request.methodName, keyPath, value);\n },\n};\n","import type { RpcTransport } from '@solana/rpc-spec';\nimport type { RpcResponse } from '@solana/rpc-spec-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<RpcResponse>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\n// This used to be a `Symbol()`, but there's a bug in Node <21 where the `undici` library passes\n// the `reason` property of the `AbortSignal` straight to `Error.captureStackTrace()` without first\n// typechecking it. `Error.captureStackTrace()` fatals when given a `Symbol`.\n// See https://github.com/nodejs/undici/pull/2597\nlet EXPLICIT_ABORT_TOKEN: ReturnType<typeof createExplicitAbortToken>;\nfunction createExplicitAbortToken() {\n // This function is an annoying workaround to prevent `process.env.NODE_ENV` from appearing at\n // the top level of this module and thwarting an optimizing compiler's attempt to tree-shake.\n return process.env.NODE_ENV !== \"production\"\n ? {\n EXPLICIT_ABORT_TOKEN:\n 'This object is thrown from the request that underlies a series of coalesced ' +\n 'requests when the last request in that series aborts',\n }\n : {};\n}\n\nexport function getRpcTransportWithRequestCoalescing<TTransport extends RpcTransport>(\n transport: TTransport,\n getDeduplicationKey: GetDeduplicationKeyFn,\n): TTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n request: Parameters<RpcTransport>[0],\n ): Promise<RpcResponse<TResponse>> {\n const { payload, signal } = request;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(request);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n queueMicrotask(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n const responsePromise = (async () => {\n try {\n return await transport<TResponse>({\n ...request,\n signal: abortController.signal,\n });\n } catch (e) {\n if (e === (EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken())) {\n // We triggered this error when the last subscriber aborted. Letting this\n // error bubble up from here would cause runtime fatals where there should\n // be none.\n return;\n }\n throw e;\n }\n })();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise,\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<RpcResponse<TResponse>>;\n return await new Promise<RpcResponse<TResponse>>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n queueMicrotask(() => {\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort((EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken()));\n }\n });\n reject((e.target as AbortSignal).reason);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise\n .then(resolve)\n .catch(reject)\n .finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as RpcResponse<TResponse>;\n }\n } as TTransport;\n}\n","import fastStableStringify from '@solana/fast-stable-stringify';\nimport { isJsonRpcPayload } from '@solana/rpc-spec';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n return isJsonRpcPayload(payload) ? fastStableStringify([payload.method, payload.params]) : undefined;\n}\n","import { pipe } from '@solana/functional';\nimport { createHttpTransport, createHttpTransportForSolanaRpc } from '@solana/rpc-transport-http';\nimport type { ClusterUrl } from '@solana/rpc-types';\n\nimport { RpcTransportFromClusterUrl } from './rpc-clusters';\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\ntype RpcTransportConfig = Parameters<typeof createHttpTransport>[0];\ninterface DefaultRpcTransportConfig<TClusterUrl extends ClusterUrl> extends RpcTransportConfig {\n url: TClusterUrl;\n}\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T,\n): { [K in string & keyof T as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in string & keyof T as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport<TClusterUrl extends ClusterUrl>(\n config: DefaultRpcTransportConfig<TClusterUrl>,\n): RpcTransportFromClusterUrl<TClusterUrl> {\n return pipe(\n createHttpTransportForSolanaRpc({\n ...config,\n headers: {\n ...(__NODEJS__ &&\n ({\n // Keep these headers lowercase so they will be overriden by any user-supplied headers below.\n 'accept-encoding':\n // Natively supported by Node LTS v20.18.0 and above.\n 'br,gzip,deflate', // Brotli, gzip, and Deflate, in that order.\n } as { [overrideHeader: string]: string })),\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': __VERSION__ ? `js/${__VERSION__}` : 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }) as RpcTransportFromClusterUrl<TClusterUrl>,\n transport => getRpcTransportWithRequestCoalescing(transport, getSolanaRpcPayloadDeduplicationKey),\n );\n}\n","import { createSolanaRpcApi } from '@solana/rpc-api';\nimport { createRpc, RpcTransport } from '@solana/rpc-spec';\nimport { ClusterUrl } from '@solana/rpc-types';\n\nimport type { RpcFromTransport, SolanaRpcApiFromTransport } from './rpc-clusters';\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\nimport { createDefaultRpcTransport } from './rpc-transport';\n\ntype DefaultRpcTransportConfig<TClusterUrl extends ClusterUrl> = Parameters<\n typeof createDefaultRpcTransport<TClusterUrl>\n>[0];\n\n/** Creates a new Solana RPC using the default decorated HTTP transport. */\nexport function createSolanaRpc<TClusterUrl extends ClusterUrl>(\n clusterUrl: TClusterUrl,\n config?: Omit<DefaultRpcTransportConfig<TClusterUrl>, 'url'>,\n) {\n return createSolanaRpcFromTransport(createDefaultRpcTransport({ url: clusterUrl, ...config }));\n}\n\n/** Creates a new Solana RPC using a custom transport. */\nexport function createSolanaRpcFromTransport<TTransport extends RpcTransport>(transport: TTransport) {\n return createRpc({\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n transport,\n }) as RpcFromTransport<SolanaRpcApiFromTransport<TTransport>, TTransport>;\n}\n","import {\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE,\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING,\n SolanaError,\n} from '@solana/errors';\n\nimport { DataPublisher } from './data-publisher';\n\ntype Config = Readonly<{\n abortSignal: AbortSignal;\n dataChannelName: string;\n // FIXME: It would be nice to be able to constrain the type of `dataPublisher` to one that\n // definitely supports the `dataChannelName` and `errorChannelName` channels, and\n // furthermore publishes `TData` on the `dataChannelName` channel. This is more difficult\n // than it should be: https://tsplay.dev/NlZelW\n dataPublisher: DataPublisher;\n errorChannelName: string;\n}>;\n\nconst enum PublishType {\n DATA,\n ERROR,\n}\n\ntype IteratorKey = symbol;\ntype IteratorState<TData> =\n | {\n __hasPolled: false;\n publishQueue: (\n | {\n __type: PublishType.DATA;\n data: TData;\n }\n | {\n __type: PublishType.ERROR;\n err: unknown;\n }\n )[];\n }\n | {\n __hasPolled: true;\n onData: (data: TData) => void;\n onError: Parameters<ConstructorParameters<typeof Promise>[0]>[1];\n };\n\nlet EXPLICIT_ABORT_TOKEN: symbol;\nfunction createExplicitAbortToken() {\n // This function is an annoying workaround to prevent `process.env.NODE_ENV` from appearing at\n // the top level of this module and thwarting an optimizing compiler's attempt to tree-shake.\n return Symbol(\n process.env.NODE_ENV !== \"production\"\n ? \"This symbol is thrown from a socket's iterator when the connection is explicitly \" +\n 'aborted by the user'\n : undefined,\n );\n}\n\nconst UNINITIALIZED = Symbol();\n\nexport function createAsyncIterableFromDataPublisher<TData>({\n abortSignal,\n dataChannelName,\n dataPublisher,\n errorChannelName,\n}: Config): AsyncIterable<TData> {\n const iteratorState: Map<IteratorKey, IteratorState<TData>> = new Map();\n function publishErrorToAllIterators(reason: unknown) {\n for (const [iteratorKey, state] of iteratorState.entries()) {\n if (state.__hasPolled) {\n iteratorState.delete(iteratorKey);\n state.onError(reason);\n } else {\n state.publishQueue.push({\n __type: PublishType.ERROR,\n err: reason,\n });\n }\n }\n }\n const abortController = new AbortController();\n abortSignal.addEventListener('abort', () => {\n abortController.abort();\n publishErrorToAllIterators((EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken()));\n });\n const options = { signal: abortController.signal } as const;\n let firstError: unknown = UNINITIALIZED;\n dataPublisher.on(\n errorChannelName,\n err => {\n if (firstError === UNINITIALIZED) {\n firstError = err;\n abortController.abort();\n publishErrorToAllIterators(err);\n }\n },\n options,\n );\n dataPublisher.on(\n dataChannelName,\n data => {\n iteratorState.forEach((state, iteratorKey) => {\n if (state.__hasPolled) {\n const { onData } = state;\n iteratorState.set(iteratorKey, { __hasPolled: false, publishQueue: [] });\n onData(data as TData);\n } else {\n state.publishQueue.push({\n __type: PublishType.DATA,\n data: data as TData,\n });\n }\n });\n },\n options,\n );\n return {\n async *[Symbol.asyncIterator]() {\n if (abortSignal.aborted) {\n return;\n }\n if (firstError !== UNINITIALIZED) {\n throw firstError;\n }\n const iteratorKey = Symbol();\n iteratorState.set(iteratorKey, { __hasPolled: false, publishQueue: [] });\n try {\n while (true) {\n const state = iteratorState.get(iteratorKey);\n if (!state) {\n // There should always be state by now.\n throw new SolanaError(SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING);\n }\n if (state.__hasPolled) {\n // You should never be able to poll twice in a row.\n throw new SolanaError(\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE,\n );\n }\n const publishQueue = state.publishQueue;\n try {\n if (publishQueue.length) {\n state.publishQueue = [];\n for (const item of publishQueue) {\n if (item.__type === PublishType.DATA) {\n yield item.data;\n } else {\n throw item.err;\n }\n }\n } else {\n yield await new Promise<TData>((resolve, reject) => {\n iteratorState.set(iteratorKey, {\n __hasPolled: true,\n onData: resolve,\n onError: reject,\n });\n });\n }\n } catch (e) {\n if (e === (EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken())) {\n return;\n } else {\n throw e;\n }\n }\n }\n } finally {\n iteratorState.delete(iteratorKey);\n }\n },\n };\n}\n","import { TypedEventEmitter, TypedEventTarget } from './event-emitter';\n\ntype UnsubscribeFn = () => void;\n\nexport interface DataPublisher<TDataByChannelName extends Record<string, unknown> = Record<string, unknown>> {\n on<const TChannelName extends keyof TDataByChannelName>(\n channelName: TChannelName,\n subscriber: (data: TDataByChannelName[TChannelName]) => void,\n options?: { signal: AbortSignal },\n ): UnsubscribeFn;\n}\n\nexport function getDataPublisherFromEventEmitter<TEventMap extends Record<string, Event>>(\n eventEmitter: TypedEventEmitter<TEventMap> | TypedEventTarget<TEventMap>,\n): DataPublisher<{\n [TEventType in keyof TEventMap]: TEventMap[TEventType] extends CustomEvent ? TEventMap[TEventType]['detail'] : null;\n}> {\n return {\n on(channelName, subscriber, options) {\n function innerListener(ev: Event) {\n if (ev instanceof CustomEvent) {\n const data = (ev as CustomEvent<TEventMap[typeof channelName]>).detail;\n (subscriber as unknown as (data: TEventMap[typeof channelName]) => void)(data);\n } else {\n (subscriber as () => void)();\n }\n }\n eventEmitter.addEventListener(channelName, innerListener, options);\n return () => {\n eventEmitter.removeEventListener(channelName, innerListener);\n };\n },\n };\n}\n","import { DataPublisher, getDataPublisherFromEventEmitter } from './data-publisher';\n\nexport function demultiplexDataPublisher<\n TDataPublisher extends DataPublisher,\n const TChannelName extends Parameters<TDataPublisher['on']>[0],\n>(\n publisher: TDataPublisher,\n sourceChannelName: TChannelName,\n messageTransformer: (\n // FIXME: Deriving the type of the message from `TDataPublisher` and `TChannelName` would\n // help callers to constrain their transform functions.\n message: unknown,\n ) => [destinationChannelName: string, message: unknown] | void,\n): DataPublisher {\n let innerPublisherState:\n | {\n readonly dispose: () => void;\n numSubscribers: number;\n }\n | undefined;\n const eventTarget = new EventTarget();\n const demultiplexedDataPublisher = getDataPublisherFromEventEmitter(eventTarget);\n return {\n ...demultiplexedDataPublisher,\n on(channelName, subscriber, options) {\n if (!innerPublisherState) {\n const innerPublisherUnsubscribe = publisher.on(sourceChannelName, sourceMessage => {\n const transformResult = messageTransformer(sourceMessage);\n if (!transformResult) {\n return;\n }\n const [destinationChannelName, message] = transformResult;\n eventTarget.dispatchEvent(\n new CustomEvent(destinationChannelName, {\n detail: message,\n }),\n );\n });\n innerPublisherState = {\n dispose: innerPublisherUnsubscribe,\n numSubscribers: 0,\n };\n }\n innerPublisherState.numSubscribers++;\n const unsubscribe = demultiplexedDataPublisher.on(channelName, subscriber, options);\n let isActive = true;\n function handleUnsubscribe() {\n if (!isActive) {\n return;\n }\n isActive = false;\n options?.signal.removeEventListener('abort', handleUnsubscribe);\n innerPublisherState!.numSubscribers--;\n if (innerPublisherState!.numSubscribers === 0) {\n innerPublisherState!.dispose();\n innerPublisherState = undefined;\n }\n unsubscribe();\n }\n options?.signal.addEventListener('abort', handleUnsubscribe);\n return handleUnsubscribe;\n },\n };\n}\n","/**\n * Forked from https://github.com/digitalloggers/race-as-promised/tree/master\n *\n * Authored by Brian Kim:\n * https://github.com/nodejs/node/issues/17469#issuecomment-685216777\n *\n * Adapted to module structure.\n *\n * This is free and unencumbered software released into the public domain.\n *\n * Anyone is free to copy, modify, publish, use, compile, sell, or\n * distribute this software, either in source code form or as a compiled\n * binary, for any purpose, commercial or non-commercial, and by any\n * means.\n *\n * In jurisdictions that recognize copyright laws, the author or authors\n * of this software dedicate any and all copyright interest in the\n * software to the public domain. We make this dedication for the benefit\n * of the public at large and to the detriment of our heirs and\n * successors. We intend this dedication to be an overt act of\n * relinquishment in perpetuity of all present and future rights to this\n * software under copyright law.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\n * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\n * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n *\n * For more information, please refer to <http://unlicense.org/>\n */\n\ntype Deferred = Readonly<{\n reject: (reason?: unknown) => void;\n resolve: (value: unknown) => void;\n}>;\n\nfunction isObject(value: unknown): value is object {\n return value !== null && (typeof value === 'object' || typeof value === 'function');\n}\n\nfunction addRaceContender(contender: object) {\n const deferreds = new Set<Deferred>();\n const record = { deferreds, settled: false };\n\n // This call to `then` happens once for the lifetime of the value.\n Promise.resolve(contender).then(\n value => {\n for (const { resolve } of deferreds) {\n resolve(value);\n }\n\n deferreds.clear();\n record.settled = true;\n },\n err => {\n for (const { reject } of deferreds) {\n reject(err);\n }\n\n deferreds.clear();\n record.settled = true;\n },\n );\n return record;\n}\n\n// Keys are the values passed to race, values are a record of data containing a\n// set of deferreds and whether the value has settled.\nconst wm = new WeakMap<object, { deferreds: Set<Deferred>; settled: boolean }>();\nexport async function safeRace<T extends readonly unknown[] | []>(contenders: T): Promise<Awaited<T[number]>> {\n let deferred: Deferred;\n const result = new Promise((resolve, reject) => {\n deferred = { reject, resolve };\n for (const contender of contenders) {\n if (!isObject(contender)) {\n // If the contender is a primitive, attempting to use it as a key in the\n // weakmap would throw an error. Luckily, it is safe to call\n // `Promise.resolve(contender).then` on a primitive value multiple times\n // because the promise fulfills immediately.\n Promise.resolve(contender).then(resolve, reject);\n continue;\n }\n\n let record = wm.get(contender);\n if (record === undefined) {\n record = addRaceContender(contender);\n record.deferreds.add(deferred);\n wm.set(contender, record);\n } else if (record.settled) {\n // If the value has settled, it is safe to call\n // `Promise.resolve(contender).then` on it.\n Promise.resolve(contender).then(resolve, reject);\n } else {\n record.deferreds.add(deferred);\n }\n }\n });\n\n // The finally callback executes when any value settles, preventing any of\n // the unresolved values from retaining a reference to the resolved value.\n return await (result.finally(() => {\n for (const contender of contenders) {\n if (isObject(contender)) {\n const record = wm.get(contender)!;\n record.deferreds.delete(deferred);\n }\n }\n }) as Promise<Awaited<T[number]>>);\n}\n","import { SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN, SolanaError } from '@solana/errors';\nimport { Callable, Flatten, OverloadImplementations, UnionToIntersection } from '@solana/rpc-spec-types';\nimport { createAsyncIterableFromDataPublisher } from '@solana/subscribable';\n\nimport { RpcSubscriptionsApi, RpcSubscriptionsPlan } from './rpc-subscriptions-api';\nimport { PendingRpcSubscriptionsRequest, RpcSubscribeOptions } from './rpc-subscriptions-request';\nimport { RpcSubscriptionsTransport } from './rpc-subscriptions-transport';\n\nexport type RpcSubscriptionsConfig<TRpcMethods> = Readonly<{\n api: RpcSubscriptionsApi<TRpcMethods>;\n transport: RpcSubscriptionsTransport;\n}>;\n\nexport type RpcSubscriptions<TRpcSubscriptionsMethods> = {\n [TMethodName in keyof TRpcSubscriptionsMethods]: PendingRpcSubscriptionsRequestBuilder<\n OverloadImplementations<TRpcSubscriptionsMethods, TMethodName>\n >;\n};\n\ntype PendingRpcSubscriptionsRequestBuilder<TSubscriptionMethodImplementations> = UnionToIntersection<\n Flatten<{\n [P in keyof TSubscriptionMethodImplementations]: PendingRpcSubscriptionsRequestReturnTypeMapper<\n TSubscriptionMethodImplementations[P]\n >;\n }>\n>;\n\ntype PendingRpcSubscriptionsRequestReturnTypeMapper<TSubscriptionMethodImplementation> =\n // Check that this property of the TRpcSubscriptionMethods interface is, in fact, a function.\n TSubscriptionMethodImplementation extends Callable\n ? (\n ...args: Parameters<TSubscriptionMethodImplementation>\n ) => PendingRpcSubscriptionsRequest<ReturnType<TSubscriptionMethodImplementation>>\n : never;\n\nexport function createSubscriptionRpc<TRpcSubscriptionsApiMethods>(\n rpcConfig: RpcSubscriptionsConfig<TRpcSubscriptionsApiMethods>,\n): RpcSubscriptions<TRpcSubscriptionsApiMethods> {\n return new Proxy(rpcConfig.api, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get(target, p, receiver) {\n return function (...rawParams: unknown[]) {\n const notificationName = p.toString();\n const createRpcSubscriptionPlan = Reflect.get(target, notificationName, receiver);\n if (!createRpcSubscriptionPlan) {\n throw new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN, {\n notificationName,\n });\n }\n const subscriptionPlan = createRpcSubscriptionPlan(...rawParams);\n return createPendingRpcSubscription(rpcConfig.transport, subscriptionPlan);\n };\n },\n }) as RpcSubscriptions<TRpcSubscriptionsApiMethods>;\n}\n\nfunction createPendingRpcSubscription<TNotification>(\n transport: RpcSubscriptionsTransport,\n subscriptionsPlan: RpcSubscriptionsPlan<TNotification>,\n): PendingRpcSubscriptionsRequest<TNotification> {\n return {\n async subscribe({ abortSignal }: RpcSubscribeOptions): Promise<AsyncIterable<TNotification>> {\n const notificationsDataPublisher = await transport({\n signal: abortSignal,\n ...subscriptionsPlan,\n });\n return createAsyncIterableFromDataPublisher<TNotification>({\n abortSignal,\n dataChannelName: 'notification',\n dataPublisher: notificationsDataPublisher,\n errorChannelName: 'error',\n });\n },\n };\n}\n","import { Callable, RpcRequest, RpcRequestTransformer } from '@solana/rpc-spec-types';\nimport { DataPublisher } from '@solana/subscribable';\n\nimport { RpcSubscriptionsChannel } from './rpc-subscriptions-channel';\nimport { RpcSubscriptionsTransportDataEvents } from './rpc-subscriptions-transport';\n\nexport type RpcSubscriptionsApiConfig<TApiMethods extends RpcSubscriptionsApiMethods> = Readonly<{\n planExecutor: RpcSubscriptionsPlanExecutor<ReturnType<TApiMethods[keyof TApiMethods]>>;\n requestTransformer?: RpcRequestTransformer;\n}>;\n\ntype RpcSubscriptionsPlanExecutor<TNotification> = (\n config: Readonly<{\n channel: RpcSubscriptionsChannel<unknown, unknown>;\n request: RpcRequest;\n signal: AbortSignal;\n }>,\n) => Promise<DataPublisher<RpcSubscriptionsTransportDataEvents<TNotification>>>;\n\nexport type RpcSubscriptionsPlan<TNotification> = Readonly<{\n /**\n * This method may be called with a newly-opened channel or a pre-established channel.\n */\n execute: (\n config: Readonly<{\n channel: RpcSubscriptionsChannel<unknown, unknown>;\n signal: AbortSignal;\n }>,\n ) => Promise<DataPublisher<RpcSubscriptionsTransportDataEvents<TNotification>>>;\n /**\n * This request is used to uniquely identify the subscription.\n * It typically comes from the method name and parameters of the subscription call,\n * after potentially being transformed by the RPC Subscriptions API.\n */\n request: RpcRequest;\n}>;\n\nexport type RpcSubscriptionsApi<TRpcSubscriptionMethods> = {\n [MethodName in keyof TRpcSubscriptionMethods]: RpcSubscriptionsReturnTypeMapper<\n TRpcSubscriptionMethods[MethodName]\n >;\n};\n\ntype RpcSubscriptionsReturnTypeMapper<TRpcMethod> = TRpcMethod extends Callable\n ? (...rawParams: unknown[]) => RpcSubscriptionsPlan<ReturnType<TRpcMethod>>\n : never;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RpcSubscriptionsApiMethod = (...args: any) => any;\nexport interface RpcSubscriptionsApiMethods {\n [methodName: string]: RpcSubscriptionsApiMethod;\n}\n\nexport function createRpcSubscriptionsApi<TRpcSubscriptionsApiMethods extends RpcSubscriptionsApiMethods>(\n config: RpcSubscriptionsApiConfig<TRpcSubscriptionsApiMethods>,\n): RpcSubscriptionsApi<TRpcSubscriptionsApiMethods> {\n return new Proxy({} as RpcSubscriptionsApi<TRpcSubscriptionsApiMethods>, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get<TNotificationName extends keyof RpcSubscriptionsApi<TRpcSubscriptionsApiMethods>>(\n ...args: Parameters<NonNullable<ProxyHandler<RpcSubscriptionsApi<TRpcSubscriptionsApiMethods>>['get']>>\n ) {\n const [_, p] = args;\n const methodName = p.toString() as keyof TRpcSubscriptionsApiMethods as string;\n return function (\n ...params: Parameters<\n TRpcSubscriptionsApiMethods[TNotificationName] extends CallableFunction\n ? TRpcSubscriptionsApiMethods[TNotificationName]\n : never\n >\n ): RpcSubscriptionsPlan<ReturnType<TRpcSubscriptionsApiMethods[TNotificationName]>> {\n const rawRequest = { methodName, params };\n const request = config.requestTransformer ? config.requestTransformer(rawRequest) : rawRequest;\n return {\n execute(planConfig) {\n return config.planExecutor({ ...planConfig, request });\n },\n request,\n };\n };\n },\n });\n}\n","import {\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT,\n SolanaError,\n} from '@solana/errors';\nimport { DataPublisher } from '@solana/subscribable';\n\ntype RpcSubscriptionsChannelSolanaErrorCode =\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT;\n\nexport type RpcSubscriptionChannelEvents<TInboundMessage> = {\n error: SolanaError<RpcSubscriptionsChannelSolanaErrorCode>;\n message: TInboundMessage;\n};\n\nexport interface RpcSubscriptionsChannel<TOutboundMessage, TInboundMessage>\n extends DataPublisher<RpcSubscriptionChannelEvents<TInboundMessage>> {\n send(message: TOutboundMessage): Promise<void>;\n}\n\nexport type RpcSubscriptionsChannelCreator<TOutboundMessage, TInboundMessage> = (\n config: Readonly<{\n abortSignal: AbortSignal;\n }>,\n) => Promise<RpcSubscriptionsChannel<TOutboundMessage, TInboundMessage>>;\n\nexport function transformChannelInboundMessages<TOutboundMessage, TNewInboundMessage, TInboundMessage>(\n channel: RpcSubscriptionsChannel<TOutboundMessage, TInboundMessage>,\n transform: (message: TInboundMessage) => TNewInboundMessage,\n): RpcSubscriptionsChannel<TOutboundMessage, TNewInboundMessage> {\n return Object.freeze<RpcSubscriptionsChannel<TOutboundMessage, TNewInboundMessage>>({\n ...channel,\n on(type, subscriber, options) {\n if (type !== 'message') {\n return channel.on(\n type,\n subscriber as (data: RpcSubscriptionChannelEvents<TInboundMessage>[typeof type]) => void,\n options,\n );\n }\n return channel.on(\n 'message',\n message => (subscriber as (data: TNewInboundMessage) => void)(transform(message)),\n options,\n );\n },\n });\n}\n\nexport function transformChannelOutboundMessages<TNewOutboundMessage, TOutboundMessage, TInboundMessage>(\n channel: RpcSubscriptionsChannel<TOutboundMessage, TInboundMessage>,\n transform: (message: TNewOutboundMessage) => TOutboundMessage,\n): RpcSubscriptionsChannel<TNewOutboundMessage, TInboundMessage> {\n return Object.freeze<RpcSubscriptionsChannel<TNewOutboundMessage, TInboundMessage>>({\n ...channel,\n send: message => channel.send(transform(message)),\n });\n}\n","import {\n getSolanaErrorFromJsonRpcError,\n SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID,\n SolanaError,\n} from '@solana/errors';\nimport { safeRace } from '@solana/promises';\nimport { createRpcMessage, RpcRequest, RpcResponseData, RpcResponseTransformer } from '@solana/rpc-spec-types';\nimport { DataPublisher } from '@solana/subscribable';\nimport { demultiplexDataPublisher } from '@solana/subscribable';\n\nimport { RpcSubscriptionChannelEvents } from './rpc-subscriptions-channel';\nimport { RpcSubscriptionsChannel } from './rpc-subscriptions-channel';\n\ntype Config<TNotification> = Readonly<{\n channel: RpcSubscriptionsChannel<unknown, RpcNotification<TNotification> | RpcResponseData<RpcSubscriptionId>>;\n responseTransformer?: RpcResponseTransformer;\n signal: AbortSignal;\n subscribeRequest: RpcRequest;\n unsubscribeMethodName: string;\n}>;\n\ntype RpcNotification<TNotification> = Readonly<{\n method: string;\n params: Readonly<{\n result: TNotification;\n subscription: number;\n }>;\n}>;\n\ntype RpcSubscriptionId = number;\n\ntype RpcSubscriptionNotificationEvents<TNotification> = Omit<RpcSubscriptionChannelEvents<TNotification>, 'message'> & {\n notification: TNotification;\n};\n\nconst subscriberCountBySubscriptionIdByChannel = new WeakMap<WeakKey, Record<number, number>>();\nfunction decrementSubscriberCountAndReturnNewCount(channel: WeakKey, subscriptionId?: number): number | undefined {\n return augmentSubscriberCountAndReturnNewCount(-1, channel, subscriptionId);\n}\nfunction incrementSubscriberCount(channel: WeakKey, subscriptionId?: number): void {\n augmentSubscriberCountAndReturnNewCount(1, channel, subscriptionId);\n}\nfunction augmentSubscriberCountAndReturnNewCount(\n amount: -1 | 1,\n channel: WeakKey,\n subscriptionId?: number,\n): number | undefined {\n if (subscriptionId === undefined) {\n return;\n }\n let subscriberCountBySubscriptionId = subscriberCountBySubscriptionIdByChannel.get(channel);\n if (!subscriberCountBySubscriptionId && amount > 0) {\n subscriberCountBySubscriptionIdByChannel.set(\n channel,\n (subscriberCountBySubscriptionId = { [subscriptionId]: 0 }),\n );\n }\n if (subscriberCountBySubscriptionId?.[subscriptionId] !== undefined) {\n return (subscriberCountBySubscriptionId[subscriptionId] =\n amount + subscriberCountBySubscriptionId[subscriptionId]);\n }\n}\n\nconst cache = new WeakMap();\nfunction getMemoizedDemultiplexedNotificationPublisherFromChannelAndResponseTransformer<TNotification>(\n channel: RpcSubscriptionsChannel<unknown, RpcNotification<TNotification>>,\n subscribeRequest: RpcRequest,\n responseTransformer?: RpcResponseTransformer,\n): DataPublisher<{\n [channelName: `notification:${number}`]: TNotification;\n}> {\n let publisherByResponseTransformer = cache.get(channel);\n if (!publisherByResponseTransformer) {\n cache.set(channel, (publisherByResponseTransformer = new WeakMap()));\n }\n const responseTransformerKey = responseTransformer ?? channel;\n let publisher = publisherByResponseTransformer.get(responseTransformerKey);\n if (!publisher) {\n publisherByResponseTransformer.set(\n responseTransformerKey,\n (publisher = demultiplexDataPublisher(channel, 'message', rawMessage => {\n const message = rawMessage as RpcNotification<unknown> | RpcResponseData<unknown>;\n if (!('method' in message)) {\n return;\n }\n const transformedNotification = responseTransformer\n ? responseTransformer(message.params.result, subscribeRequest)\n : message.params.result;\n return [`notification:${message.params.subscription}`, transformedNotification];\n })),\n );\n }\n return publisher;\n}\n\nexport async function executeRpcPubSubSubscriptionPlan<TNotification>({\n channel,\n responseTransformer,\n signal,\n subscribeRequest,\n unsubscribeMethodName,\n}: Config<TNotification>): Promise<DataPublisher<RpcSubscriptionNotificationEvents<TNotification>>> {\n let subscriptionId: number | undefined;\n channel.on(\n 'error',\n () => {\n // An error on the channel indicates that the subscriptions are dead.\n // There is no longer any sense hanging on to subscription ids.\n // Erasing it here will prevent the unsubscribe code from running.\n subscriptionId = undefined;\n subscriberCountBySubscriptionIdByChannel.delete(channel);\n },\n { signal },\n );\n /**\n * STEP 1\n * Create a promise that rejects if this subscription is aborted and sends\n * the unsubscribe message if the subscription is active at that time.\n */\n const abortPromise = new Promise<never>((_, reject) => {\n function handleAbort(this: AbortSignal) {\n /**\n * Because of https://github.com/solana-labs/solana/pull/18943, two subscriptions for\n * materially the same notification will be coalesced on the server. This means they\n * will be assigned the same subscription id, and will occupy one subscription slot. We\n * must be careful not to send the unsubscribe message until the last subscriber aborts.\n */\n if (decrementSubscriberCountAndReturnNewCount(channel, subscriptionId) === 0) {\n const unsubscribePayload = createRpcMessage({\n methodName: unsubscribeMethodName,\n params: [subscriptionId],\n });\n subscriptionId = undefined;\n channel.send(unsubscribePayload).catch(() => {});\n }\n reject(this.reason);\n }\n if (signal.aborted) {\n handleAbort.call(signal);\n } else {\n signal.addEventListener('abort', handleAbort);\n }\n });\n /**\n * STEP 2\n * Send the subscription request.\n */\n const subscribePayload = createRpcMessage(subscribeRequest);\n await channel.send(subscribePayload);\n /**\n * STEP 3\n * Wait for the acknowledgement from the server with the subscription id.\n */\n const subscriptionIdPromise = new Promise<RpcSubscriptionId>((resolve, reject) => {\n const abortController = new AbortController();\n signal.addEventListener('abort', abortController.abort.bind(abortController));\n const options = { signal: abortController.signal } as const;\n channel.on(\n 'error',\n err => {\n abortController.abort();\n reject(err);\n },\n options,\n );\n channel.on(\n 'message',\n message => {\n if (message && typeof message === 'object' && 'id' in message && message.id === subscribePayload.id) {\n abortController.abort();\n if ('error' in message) {\n reject(getSolanaErrorFromJsonRpcError(message.error));\n } else {\n resolve(message.result);\n }\n }\n },\n options,\n );\n });\n subscriptionId = await safeRace([abortPromise, subscriptionIdPromise]);\n if (subscriptionId == null) {\n throw new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID);\n }\n incrementSubscriberCount(channel, subscriptionId);\n /**\n * STEP 4\n * Filter out notifications unrelated to this subscription.\n */\n const notificationPublisher = getMemoizedDemultiplexedNotificationPublisherFromChannelAndResponseTransformer(\n channel,\n subscribeRequest,\n responseTransformer,\n );\n const notificationKey = `notification:${subscriptionId}` as const;\n return {\n on(type, listener, options) {\n switch (type) {\n case 'notification':\n return notificationPublisher.on(\n notificationKey,\n listener as (data: RpcSubscriptionNotificationEvents<TNotification>['notification']) => void,\n options,\n );\n case 'error':\n return channel.on(\n 'error',\n listener as (data: RpcSubscriptionNotificationEvents<TNotification>['error']) => void,\n options,\n );\n default:\n throw new SolanaError(SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED, {\n channelName: type,\n supportedChannelNames: ['notification', 'error'],\n });\n }\n },\n };\n}\n","import {\n createRpcSubscriptionsApi,\n executeRpcPubSubSubscriptionPlan,\n RpcSubscriptionsApi,\n RpcSubscriptionsApiMethods,\n} from '@solana/rpc-subscriptions-spec';\nimport {\n AllowedNumericKeypaths,\n getDefaultRequestTransformerForSolanaRpc,\n getDefaultResponseTransformerForSolanaRpcSubscriptions,\n jsonParsedAccountsConfigs,\n KEYPATH_WILDCARD,\n RequestTransformerConfig,\n} from '@solana/rpc-transformers';\n\nimport { AccountNotificationsApi } from './account-notifications';\nimport { BlockNotificationsApi } from './block-notifications';\nimport { LogsNotificationsApi } from './logs-notifications';\nimport { ProgramNotificationsApi } from './program-notifications';\nimport { RootNotificationsApi } from './root-notifications';\nimport { SignatureNotificationsApi } from './signature-notifications';\nimport { SlotNotificationsApi } from './slot-notifications';\nimport { SlotsUpdatesNotificationsApi } from './slots-updates-notifications';\nimport { VoteNotificationsApi } from './vote-notifications';\n\nexport type SolanaRpcSubscriptionsApi = AccountNotificationsApi &\n LogsNotificationsApi &\n ProgramNotificationsApi &\n RootNotificationsApi &\n SignatureNotificationsApi &\n SlotNotificationsApi;\nexport type SolanaRpcSubscriptionsApiUnstable = BlockNotificationsApi &\n SlotsUpdatesNotificationsApi &\n VoteNotificationsApi;\n\nexport type {\n AccountNotificationsApi,\n BlockNotificationsApi,\n LogsNotificationsApi,\n ProgramNotificationsApi,\n RootNotificationsApi,\n SignatureNotificationsApi,\n SlotNotificationsApi,\n SlotsUpdatesNotificationsApi,\n VoteNotificationsApi,\n};\n\ntype Config = RequestTransformerConfig;\n\nfunction createSolanaRpcSubscriptionsApi_INTERNAL<TApi extends RpcSubscriptionsApiMethods>(\n config?: Config,\n): RpcSubscriptionsApi<TApi> {\n const requestTransformer = getDefaultRequestTransformerForSolanaRpc(config);\n const responseTransformer = getDefaultResponseTransformerForSolanaRpcSubscriptions({\n allowedNumericKeyPaths: getAllowedNumericKeypaths(),\n });\n return createRpcSubscriptionsApi<TApi>({\n planExecutor({ request, ...rest }) {\n return executeRpcPubSubSubscriptionPlan({\n ...rest,\n responseTransformer,\n subscribeRequest: { ...request, methodName: request.methodName.replace(/Notifications$/, 'Subscribe') },\n unsubscribeMethodName: request.methodName.replace(/Notifications$/, 'Unsubscribe'),\n });\n },\n requestTransformer,\n });\n}\n\nexport function createSolanaRpcSubscriptionsApi<TApi extends RpcSubscriptionsApiMethods = SolanaRpcSubscriptionsApi>(\n config?: Config,\n): RpcSubscriptionsApi<TApi> {\n return createSolanaRpcSubscriptionsApi_INTERNAL<TApi>(config);\n}\n\nexport function createSolanaRpcSubscriptionsApi_UNSTABLE(config?: Config) {\n return createSolanaRpcSubscriptionsApi_INTERNAL<SolanaRpcSubscriptionsApi & SolanaRpcSubscriptionsApiUnstable>(\n config,\n );\n}\n\nlet memoizedKeypaths: AllowedNumericKeypaths<\n RpcSubscriptionsApi<SolanaRpcSubscriptionsApi & SolanaRpcSubscriptionsApiUnstable>\n>;\n\n/**\n * These are keypaths at the end of which you will find a numeric value that should *not* be upcast\n * to a `bigint`. These are values that are legitimately defined as `u8` or `usize` on the backend.\n */\nfunction getAllowedNumericKeypaths(): AllowedNumericKeypaths<\n RpcSubscriptionsApi<SolanaRpcSubscriptionsApi & SolanaRpcSubscriptionsApiUnstable>\n> {\n if (!memoizedKeypaths) {\n memoizedKeypaths = {\n accountNotifications: jsonParsedAccountsConfigs.map(c => ['value', ...c]),\n blockNotifications: [\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'preTokenBalances',\n KEYPATH_WILDCARD,\n 'accountIndex',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'preTokenBalances',\n KEYPATH_WILDCARD,\n 'uiTokenAmount',\n 'decimals',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'postTokenBalances',\n KEYPATH_WILDCARD,\n 'accountIndex',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'postTokenBalances',\n KEYPATH_WILDCARD,\n 'uiTokenAmount',\n 'decimals',\n ],\n ['value', 'block', 'transactions', KEYPATH_WILDCARD, 'meta', 'rewards', KEYPATH_WILDCARD, 'commission'],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'innerInstructions',\n KEYPATH_WILDCARD,\n 'index',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'innerInstructions',\n KEYPATH_WILDCARD,\n 'instructions',\n KEYPATH_WILDCARD,\n 'programIdIndex',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'innerInstructions',\n KEYPATH_WILDCARD,\n 'instructions',\n KEYPATH_WILDCARD,\n 'accounts',\n KEYPATH_WILDCARD,\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'addressTableLookups',\n KEYPATH_WILDCARD,\n 'writableIndexes',\n KEYPATH_WILDCARD,\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'addressTableLookups',\n KEYPATH_WILDCARD,\n 'readonlyIndexes',\n KEYPATH_WILDCARD,\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'instructions',\n KEYPATH_WILDCARD,\n 'programIdIndex',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'instructions',\n KEYPATH_WILDCARD,\n 'accounts',\n KEYPATH_WILDCARD,\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'header',\n 'numReadonlySignedAccounts',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'header',\n 'numReadonlyUnsignedAccounts',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'header',\n 'numRequiredSignatures',\n ],\n ['value', 'block', 'rewards', KEYPATH_WILDCARD, 'commission'],\n ],\n programNotifications: jsonParsedAccountsConfigs.flatMap(c => [\n ['value', KEYPATH_WILDCARD, 'account', ...c],\n [KEYPATH_WILDCARD, 'account', ...c],\n ]),\n };\n }\n return memoizedKeypaths;\n}\n","export default globalThis.WebSocket;\n","import {\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT,\n SolanaError,\n} from '@solana/errors';\nimport { RpcSubscriptionsChannel } from '@solana/rpc-subscriptions-spec';\nimport { getDataPublisherFromEventEmitter } from '@solana/subscribable';\nimport WebSocket from '@solana/ws-impl';\n\nexport type Config = Readonly<{\n sendBufferHighWatermark: number;\n signal: AbortSignal;\n url: string;\n}>;\n\ntype WebSocketMessage = ArrayBufferLike | ArrayBufferView | Blob | string;\n\nconst NORMAL_CLOSURE_CODE = 1000; // https://www.rfc-editor.org/rfc/rfc6455.html#section-7.4.1\n\nexport function createWebSocketChannel({\n sendBufferHighWatermark,\n signal,\n url,\n}: Config): Promise<RpcSubscriptionsChannel<WebSocketMessage, string>> {\n if (signal.aborted) {\n return Promise.reject(signal.reason);\n }\n let bufferDrainWatcher: Readonly<{ onCancel(): void; promise: Promise<void> }> | undefined;\n let hasConnected = false;\n const listenerRemovers = new Set<() => void>();\n function cleanupListeners() {\n listenerRemovers.forEach(r => {\n r();\n });\n listenerRemovers.clear();\n }\n function handleAbort() {\n cleanupListeners();\n if (!hasConnected) {\n rejectOpen(signal.reason);\n }\n if (webSocket.readyState !== WebSocket.CLOSED && webSocket.readyState !== WebSocket.CLOSING) {\n webSocket.close(NORMAL_CLOSURE_CODE);\n }\n }\n function handleClose(ev: CloseEvent) {\n cleanupListeners();\n bufferDrainWatcher?.onCancel();\n signal.removeEventListener('abort', handleAbort);\n webSocket.removeEventListener('close', handleClose);\n webSocket.removeEventListener('error', handleError);\n webSocket.removeEventListener('message', handleMessage);\n webSocket.removeEventListener('open', handleOpen);\n if (!signal.aborted && !(ev.wasClean && ev.code === NORMAL_CLOSURE_CODE)) {\n eventTarget.dispatchEvent(\n new CustomEvent('error', {\n detail: new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED, {\n cause: ev,\n }),\n }),\n );\n }\n }\n function handleError(ev: Event) {\n if (signal.aborted) {\n return;\n }\n if (!hasConnected) {\n const failedToConnectError = new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT, {\n errorEvent: ev,\n });\n rejectOpen(failedToConnectError);\n eventTarget.dispatchEvent(\n new CustomEvent('error', {\n detail: failedToConnectError,\n }),\n );\n }\n }\n function handleMessage(ev: MessageEvent) {\n if (signal.aborted) {\n return;\n }\n eventTarget.dispatchEvent(new CustomEvent('message', { detail: ev.data }));\n }\n const eventTarget = new EventTarget();\n const dataPublisher = getDataPublisherFromEventEmitter(eventTarget);\n function handleOpen() {\n hasConnected = true;\n resolveOpen({\n ...dataPublisher,\n async send(message) {\n if (webSocket.readyState !== WebSocket.OPEN) {\n throw new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED);\n }\n if (!bufferDrainWatcher && webSocket.bufferedAmount > sendBufferHighWatermark) {\n let onCancel!: () => void;\n const promise = new Promise<void>((resolve, reject) => {\n const intervalId = setInterval(() => {\n if (\n webSocket.readyState !== WebSocket.OPEN ||\n !(webSocket.bufferedAmount > sendBufferHighWatermark)\n ) {\n clearInterval(intervalId);\n bufferDrainWatcher = undefined;\n resolve();\n }\n }, 16);\n onCancel = () => {\n bufferDrainWatcher = undefined;\n clearInterval(intervalId);\n reject(\n new SolanaError(\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED,\n ),\n );\n };\n });\n bufferDrainWatcher = {\n onCancel,\n promise,\n };\n }\n if (bufferDrainWatcher) {\n if (ArrayBuffer.isView(message) && !(message instanceof DataView)) {\n const TypedArrayConstructor = message.constructor as {\n new (...args: [typeof message]): typeof message;\n };\n // Clone the message to prevent mutation while queued.\n message = new TypedArrayConstructor(message);\n }\n await bufferDrainWatcher.promise;\n }\n webSocket.send(message);\n },\n });\n }\n const webSocket = new WebSocket(url);\n signal.addEventListener('abort', handleAbort);\n webSocket.addEventListener('close', handleClose);\n webSocket.addEventListener('error', handleError);\n webSocket.addEventListener('message', handleMessage);\n webSocket.addEventListener('open', handleOpen);\n let rejectOpen!: (e: SolanaError) => void;\n let resolveOpen!: (value: RpcSubscriptionsChannel<WebSocketMessage, string>) => void;\n return new Promise<RpcSubscriptionsChannel<WebSocketMessage, string>>((resolve, reject) => {\n rejectOpen = reject;\n resolveOpen = resolve;\n });\n}\n","import { safeCaptureStackTrace, SOLANA_ERROR__RPC__INTEGER_OVERFLOW, SolanaError } from '@solana/errors';\nimport type { KeyPath } from '@solana/rpc-transformers';\n\nexport function createSolanaJsonRpcIntegerOverflowError(\n methodName: string,\n keyPath: KeyPath,\n value: bigint,\n): SolanaError<typeof SOLANA_ERROR__RPC__INTEGER_OVERFLOW> {\n let argumentLabel = '';\n if (typeof keyPath[0] === 'number') {\n const argPosition = keyPath[0] + 1;\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n argumentLabel = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n argumentLabel = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n argumentLabel = argPosition + 'rd';\n } else {\n argumentLabel = argPosition + 'th';\n }\n } else {\n argumentLabel = `\\`${keyPath[0].toString()}\\``;\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : undefined;\n const error = new SolanaError(SOLANA_ERROR__RPC__INTEGER_OVERFLOW, {\n argumentLabel,\n keyPath: keyPath as readonly (number | string | symbol)[],\n methodName,\n optionalPathLabel: path ? ` at path \\`${path}\\`` : '',\n value,\n ...(path !== undefined ? { path } : undefined),\n });\n safeCaptureStackTrace(error, createSolanaJsonRpcIntegerOverflowError);\n return error;\n}\n","import type { createSolanaRpcSubscriptionsApi } from '@solana/rpc-subscriptions-api';\n\nimport { createSolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_SUBSCRIPTIONS_CONFIG: Partial<\n NonNullable<Parameters<typeof createSolanaRpcSubscriptionsApi>[0]>\n> = {\n defaultCommitment: 'confirmed',\n onIntegerOverflow(request, keyPath, value) {\n throw createSolanaJsonRpcIntegerOverflowError(request.methodName, keyPath, value);\n },\n};\n","import { isSolanaError, SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED } from '@solana/errors';\nimport type { RpcSubscriptionsChannel } from '@solana/rpc-subscriptions-spec';\n\ntype Config<TChannel extends RpcSubscriptionsChannel<unknown, unknown>> = Readonly<{\n abortSignal: AbortSignal;\n channel: TChannel;\n intervalMs: number;\n}>;\n\nconst PING_PAYLOAD = {\n jsonrpc: '2.0',\n method: 'ping',\n} as const;\n\nexport function getRpcSubscriptionsChannelWithAutoping<TChannel extends RpcSubscriptionsChannel<object, unknown>>({\n abortSignal: callerAbortSignal,\n channel,\n intervalMs,\n}: Config<TChannel>): TChannel {\n let intervalId: ReturnType<typeof setInterval> | undefined;\n function sendPing() {\n channel.send(PING_PAYLOAD).catch((e: unknown) => {\n if (isSolanaError(e, SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED)) {\n pingerAbortController.abort();\n }\n });\n }\n function restartPingTimer() {\n clearInterval(intervalId);\n intervalId = setInterval(sendPing, intervalMs);\n }\n const pingerAbortController = new AbortController();\n pingerAbortController.signal.addEventListener('abort', () => {\n clearInterval(intervalId);\n });\n callerAbortSignal.addEventListener('abort', () => {\n pingerAbortController.abort();\n });\n channel.on(\n 'error',\n () => {\n pingerAbortController.abort();\n },\n { signal: pingerAbortController.signal },\n );\n channel.on('message', restartPingTimer, { signal: pingerAbortController.signal });\n if (!__BROWSER__ || globalThis.navigator.onLine) {\n restartPingTimer();\n }\n if (__BROWSER__) {\n globalThis.window.addEventListener(\n 'offline',\n function handleOffline() {\n clearInterval(intervalId);\n },\n { signal: pingerAbortController.signal },\n );\n globalThis.window.addEventListener(\n 'online',\n function handleOnline() {\n sendPing();\n restartPingTimer();\n },\n { signal: pingerAbortController.signal },\n );\n }\n return {\n ...channel,\n send(...args) {\n if (!pingerAbortController.signal.aborted) {\n restartPingTimer();\n }\n return channel.send(...args);\n },\n };\n}\n","import { RpcSubscriptionsChannel } from '@solana/rpc-subscriptions-spec';\n\nexport type ChannelPoolEntry = {\n channel: PromiseLike<RpcSubscriptionsChannel<unknown, unknown>> | RpcSubscriptionsChannel<unknown, unknown>;\n readonly dispose: () => void;\n subscriptionCount: number;\n};\n\ntype ChannelPool = { readonly entries: ChannelPoolEntry[]; freeChannelIndex: number };\n\nexport function createChannelPool(): ChannelPool {\n return {\n entries: [],\n freeChannelIndex: -1,\n };\n}\n","import { RpcSubscriptionsChannelCreator } from '@solana/rpc-subscriptions-spec';\n\nimport { ChannelPoolEntry, createChannelPool } from './rpc-subscriptions-channel-pool-internal';\n\ntype Config = Readonly<{\n maxSubscriptionsPerChannel: number;\n minChannels: number;\n}>;\n\nexport function getChannelPoolingChannelCreator<\n TChannelCreator extends RpcSubscriptionsChannelCreator<unknown, unknown>,\n>(createChannel: TChannelCreator, { maxSubscriptionsPerChannel, minChannels }: Config): TChannelCreator {\n const pool = createChannelPool();\n /**\n * This function advances the free channel index to the pool entry with the most capacity. It\n * sets the index to `-1` if all channels are full.\n */\n function recomputeFreeChannelIndex() {\n if (pool.entries.length < minChannels) {\n // Don't set the free channel index until the pool fills up; we want to keep creating\n // channels before we start rotating among them.\n pool.freeChannelIndex = -1;\n return;\n }\n let mostFreeChannel: Readonly<{ poolIndex: number; subscriptionCount: number }> | undefined;\n for (let ii = 0; ii < pool.entries.length; ii++) {\n const nextPoolIndex = (pool.freeChannelIndex + ii + 2) % pool.entries.length;\n const nextPoolEntry =\n // Start from the item two positions after the current item. This way, the\n // search will finish on the item after the current one. This ensures that, if\n // any channels tie for having the most capacity, the one that will be chosen is\n // the one immediately to the current one's right (wrapping around).\n pool.entries[nextPoolIndex];\n if (\n nextPoolEntry.subscriptionCount < maxSubscriptionsPerChannel &&\n (!mostFreeChannel || mostFreeChannel.subscriptionCount >= nextPoolEntry.subscriptionCount)\n ) {\n mostFreeChannel = {\n poolIndex: nextPoolIndex,\n subscriptionCount: nextPoolEntry.subscriptionCount,\n };\n }\n }\n pool.freeChannelIndex = mostFreeChannel?.poolIndex ?? -1;\n }\n return function getExistingChannelWithMostCapacityOrCreateChannel({ abortSignal }) {\n let poolEntry: ChannelPoolEntry;\n function destroyPoolEntry() {\n const index = pool.entries.findIndex(entry => entry === poolEntry);\n pool.entries.splice(index, 1);\n poolEntry.dispose();\n recomputeFreeChannelIndex();\n }\n if (pool.freeChannelIndex === -1) {\n const abortController = new AbortController();\n const newChannelPromise = createChannel({ abortSignal: abortController.signal });\n newChannelPromise\n .then(newChannel => {\n newChannel.on('error', destroyPoolEntry, { signal: abortController.signal });\n })\n .catch(destroyPoolEntry);\n poolEntry = {\n channel: newChannelPromise,\n dispose() {\n abortController.abort();\n },\n subscriptionCount: 0,\n };\n pool.entries.push(poolEntry);\n } else {\n poolEntry = pool.entries[pool.freeChannelIndex];\n }\n /**\n * A note about subscription counts.\n * Because of https://github.com/solana-labs/solana/pull/18943, two subscriptions for\n * materially the same notification will be coalesced on the server. This means they will be\n * assigned the same subscription id, and will occupy one subscription slot. We can't tell,\n * from here, whether a subscription will be treated in this way or not, so we\n * unconditionally increment the subscription count every time a subscription request is\n * made. This may result in subscription channels being treated as out-of-capacity when in\n * fact they are not.\n */\n poolEntry.subscriptionCount++;\n abortSignal.addEventListener('abort', function destroyConsumer() {\n poolEntry.subscriptionCount--;\n if (poolEntry.subscriptionCount === 0) {\n destroyPoolEntry();\n } else if (pool.freeChannelIndex !== -1) {\n // Back the free channel index up one position, and recompute it.\n pool.freeChannelIndex--;\n recomputeFreeChannelIndex();\n }\n });\n recomputeFreeChannelIndex();\n return poolEntry.channel;\n } as TChannelCreator;\n}\n","import { pipe } from '@solana/functional';\nimport {\n RpcSubscriptionsChannel,\n transformChannelInboundMessages,\n transformChannelOutboundMessages,\n} from '@solana/rpc-subscriptions-spec';\n\nexport function getRpcSubscriptionsChannelWithJSONSerialization(\n channel: RpcSubscriptionsChannel<string, string>,\n): RpcSubscriptionsChannel<unknown, unknown> {\n return pipe(\n channel,\n c => transformChannelInboundMessages(c, JSON.parse),\n c => transformChannelOutboundMessages(c, JSON.stringify),\n );\n}\n","import { pipe } from '@solana/functional';\nimport { parseJsonWithBigInts, stringifyJsonWithBigints } from '@solana/rpc-spec-types';\nimport {\n RpcSubscriptionsChannel,\n transformChannelInboundMessages,\n transformChannelOutboundMessages,\n} from '@solana/rpc-subscriptions-spec';\n\nexport function getRpcSubscriptionsChannelWithBigIntJSONSerialization(\n channel: RpcSubscriptionsChannel<string, string>,\n): RpcSubscriptionsChannel<unknown, unknown> {\n return pipe(\n channel,\n c => transformChannelInboundMessages(c, parseJsonWithBigInts),\n c => transformChannelOutboundMessages(c, stringifyJsonWithBigints),\n );\n}\n","import { createWebSocketChannel } from '@solana/rpc-subscriptions-channel-websocket';\nimport type { RpcSubscriptionsChannel } from '@solana/rpc-subscriptions-spec';\nimport type { ClusterUrl } from '@solana/rpc-types';\n\nimport { getRpcSubscriptionsChannelWithAutoping } from './rpc-subscriptions-autopinger';\nimport { getChannelPoolingChannelCreator } from './rpc-subscriptions-channel-pool';\nimport { RpcSubscriptionsChannelCreatorFromClusterUrl } from './rpc-subscriptions-clusters';\nimport { getRpcSubscriptionsChannelWithJSONSerialization } from './rpc-subscriptions-json';\nimport { getRpcSubscriptionsChannelWithBigIntJSONSerialization } from './rpc-subscriptions-json-bigint';\n\nexport type DefaultRpcSubscriptionsChannelConfig<TClusterUrl extends ClusterUrl> = Readonly<{\n intervalMs?: number;\n maxSubscriptionsPerChannel?: number;\n minChannels?: number;\n sendBufferHighWatermark?: number;\n url: TClusterUrl;\n}>;\n\nexport function createDefaultSolanaRpcSubscriptionsChannelCreator<TClusterUrl extends ClusterUrl>(\n config: DefaultRpcSubscriptionsChannelConfig<TClusterUrl>,\n): RpcSubscriptionsChannelCreatorFromClusterUrl<TClusterUrl, unknown, unknown> {\n return createDefaultRpcSubscriptionsChannelCreatorImpl({\n ...config,\n jsonSerializer: getRpcSubscriptionsChannelWithBigIntJSONSerialization,\n });\n}\n\nexport function createDefaultRpcSubscriptionsChannelCreator<TClusterUrl extends ClusterUrl>(\n config: DefaultRpcSubscriptionsChannelConfig<TClusterUrl>,\n): RpcSubscriptionsChannelCreatorFromClusterUrl<TClusterUrl, unknown, unknown> {\n return createDefaultRpcSubscriptionsChannelCreatorImpl({\n ...config,\n jsonSerializer: getRpcSubscriptionsChannelWithJSONSerialization,\n });\n}\n\nfunction createDefaultRpcSubscriptionsChannelCreatorImpl<TClusterUrl extends ClusterUrl>(\n config: DefaultRpcSubscriptionsChannelConfig<TClusterUrl> & {\n jsonSerializer: (channel: RpcSubscriptionsChannel<string, string>) => RpcSubscriptionsChannel<unknown, unknown>;\n },\n): RpcSubscriptionsChannelCreatorFromClusterUrl<TClusterUrl, unknown, unknown> {\n if (/^wss?:/i.test(config.url) === false) {\n const protocolMatch = config.url.match(/^([^:]+):/);\n throw new DOMException(\n protocolMatch\n ? \"Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or \" +\n `'wss'. '${protocolMatch[1]}:' is not allowed.`\n : `Failed to construct 'WebSocket': The URL '${config.url}' is invalid.`,\n );\n }\n const { intervalMs, ...rest } = config;\n const createDefaultRpcSubscriptionsChannel = (({ abortSignal }) => {\n return createWebSocketChannel({\n ...rest,\n sendBufferHighWatermark:\n config.sendBufferHighWatermark ??\n // Let 128KB of data into the WebSocket buffer before buffering it in the app.\n 131_072,\n signal: abortSignal,\n })\n .then(config.jsonSerializer)\n .then(channel =>\n getRpcSubscriptionsChannelWithAutoping({\n abortSignal,\n channel,\n intervalMs: intervalMs ?? 5_000,\n }),\n );\n }) as RpcSubscriptionsChannelCreatorFromClusterUrl<TClusterUrl, unknown, unknown>;\n return getChannelPoolingChannelCreator(createDefaultRpcSubscriptionsChannel, {\n maxSubscriptionsPerChannel:\n config.maxSubscriptionsPerChannel ??\n /**\n * A note about this default. The idea here is that, because some RPC providers impose\n * an upper limit on the number of subscriptions you can make per channel, we must\n * choose a number low enough to avoid hitting that limit. Without knowing what provider\n * a given person is using, or what their limit is, we have to choose the lowest of all\n * known limits. As of this writing (October 2024) that is the public mainnet RPC node\n * (api.mainnet-beta.solana.com) at 100 subscriptions.\n */\n 100,\n minChannels: config.minChannels ?? 1,\n });\n}\n","import fastStableStringify from '@solana/fast-stable-stringify';\nimport { RpcSubscriptionsTransport } from '@solana/rpc-subscriptions-spec';\nimport { DataPublisher } from '@solana/subscribable';\n\ntype CacheEntry = {\n readonly abortController: AbortController;\n readonly dataPublisherPromise: Promise<DataPublisher>;\n numSubscribers: number;\n};\n\nexport function getRpcSubscriptionsTransportWithSubscriptionCoalescing<TTransport extends RpcSubscriptionsTransport>(\n transport: TTransport,\n): TTransport {\n const cache = new Map<string, CacheEntry>();\n return function rpcSubscriptionsTransportWithSubscriptionCoalescing(config) {\n const { request, signal } = config;\n const subscriptionConfigurationHash = fastStableStringify([request.methodName, request.params]);\n\n let cachedDataPublisherPromise = cache.get(subscriptionConfigurationHash);\n if (!cachedDataPublisherPromise) {\n const abortController = new AbortController();\n const dataPublisherPromise = transport({\n ...config,\n signal: abortController.signal,\n });\n dataPublisherPromise\n .then(dataPublisher => {\n dataPublisher.on(\n 'error',\n () => {\n cache.delete(subscriptionConfigurationHash);\n abortController.abort();\n },\n { signal: abortController.signal },\n );\n })\n .catch(() => {});\n cache.set(\n subscriptionConfigurationHash,\n (cachedDataPublisherPromise = {\n abortController,\n dataPublisherPromise,\n numSubscribers: 0,\n }),\n );\n }\n cachedDataPublisherPromise.numSubscribers++;\n signal.addEventListener(\n 'abort',\n () => {\n cachedDataPublisherPromise.numSubscribers--;\n if (cachedDataPublisherPromise.numSubscribers === 0) {\n queueMicrotask(() => {\n if (cachedDataPublisherPromise.numSubscribers === 0) {\n cache.delete(subscriptionConfigurationHash);\n cachedDataPublisherPromise.abortController.abort();\n }\n });\n }\n },\n { signal: cachedDataPublisherPromise.abortController.signal },\n );\n return cachedDataPublisherPromise.dataPublisherPromise;\n } as TTransport;\n}\n","import { pipe } from '@solana/functional';\nimport { RpcSubscriptionsChannelCreator, RpcSubscriptionsTransport } from '@solana/rpc-subscriptions-spec';\nimport { ClusterUrl } from '@solana/rpc-types';\n\nimport {\n RpcSubscriptionsChannelCreatorDevnet,\n RpcSubscriptionsChannelCreatorFromClusterUrl,\n RpcSubscriptionsChannelCreatorMainnet,\n RpcSubscriptionsChannelCreatorTestnet,\n RpcSubscriptionsTransportDevnet,\n RpcSubscriptionsTransportFromClusterUrl,\n RpcSubscriptionsTransportMainnet,\n RpcSubscriptionsTransportTestnet,\n} from './rpc-subscriptions-clusters';\nimport { getRpcSubscriptionsTransportWithSubscriptionCoalescing } from './rpc-subscriptions-coalescer';\n\nexport type DefaultRpcSubscriptionsTransportConfig<TClusterUrl extends ClusterUrl> = Readonly<{\n createChannel: RpcSubscriptionsChannelCreatorFromClusterUrl<TClusterUrl, unknown, unknown>;\n}>;\n\nexport function createDefaultRpcSubscriptionsTransport<TClusterUrl extends ClusterUrl>({\n createChannel,\n}: DefaultRpcSubscriptionsTransportConfig<TClusterUrl>) {\n return pipe(\n createRpcSubscriptionsTransportFromChannelCreator(\n createChannel,\n ) as RpcSubscriptionsTransport as RpcSubscriptionsTransportFromClusterUrl<TClusterUrl>,\n transport => getRpcSubscriptionsTransportWithSubscriptionCoalescing(transport),\n );\n}\n\nexport function createRpcSubscriptionsTransportFromChannelCreator<\n TChannelCreator extends RpcSubscriptionsChannelCreator<TOutboundMessage, TInboundMessage>,\n TInboundMessage,\n TOutboundMessage,\n>(createChannel: TChannelCreator) {\n return (async ({ execute, signal }) => {\n const channel = await createChannel({ abortSignal: signal });\n return await execute({ channel, signal });\n }) as TChannelCreator extends RpcSubscriptionsChannelCreatorDevnet<TOutboundMessage, TInboundMessage>\n ? RpcSubscriptionsTransportDevnet\n : TChannelCreator extends RpcSubscriptionsChannelCreatorTestnet<TOutboundMessage, TInboundMessage>\n ? RpcSubscriptionsTransportTestnet\n : TChannelCreator extends RpcSubscriptionsChannelCreatorMainnet<TOutboundMessage, TInboundMessage>\n ? RpcSubscriptionsTransportMainnet\n : RpcSubscriptionsTransport;\n}\n","import type { SolanaRpcSubscriptionsApi, SolanaRpcSubscriptionsApiUnstable } from '@solana/rpc-subscriptions-api';\nimport { createSolanaRpcSubscriptionsApi } from '@solana/rpc-subscriptions-api';\nimport {\n createSubscriptionRpc,\n RpcSubscriptionsApiMethods,\n type RpcSubscriptionsTransport,\n} from '@solana/rpc-subscriptions-spec';\nimport { ClusterUrl } from '@solana/rpc-types';\n\nimport { DEFAULT_RPC_SUBSCRIPTIONS_CONFIG } from './rpc-default-config';\nimport {\n createDefaultSolanaRpcSubscriptionsChannelCreator,\n DefaultRpcSubscriptionsChannelConfig,\n} from './rpc-subscriptions-channel';\nimport type { RpcSubscriptionsFromTransport } from './rpc-subscriptions-clusters';\nimport { createDefaultRpcSubscriptionsTransport } from './rpc-subscriptions-transport';\n\ntype Config<TClusterUrl extends ClusterUrl> = DefaultRpcSubscriptionsChannelConfig<TClusterUrl>;\n\nfunction createSolanaRpcSubscriptionsImpl<TClusterUrl extends ClusterUrl, TApi extends RpcSubscriptionsApiMethods>(\n clusterUrl: TClusterUrl,\n config?: Omit<Config<TClusterUrl>, 'url'>,\n) {\n const transport = createDefaultRpcSubscriptionsTransport({\n createChannel: createDefaultSolanaRpcSubscriptionsChannelCreator({ ...config, url: clusterUrl }),\n });\n return createSolanaRpcSubscriptionsFromTransport<typeof transport, TApi>(transport);\n}\n\nexport function createSolanaRpcSubscriptions<TClusterUrl extends ClusterUrl>(\n clusterUrl: TClusterUrl,\n config?: Omit<Config<TClusterUrl>, 'url'>,\n) {\n return createSolanaRpcSubscriptionsImpl<TClusterUrl, SolanaRpcSubscriptionsApi>(clusterUrl, config);\n}\n\nexport function createSolanaRpcSubscriptions_UNSTABLE<TClusterUrl extends ClusterUrl>(\n clusterUrl: TClusterUrl,\n config?: Omit<Config<TClusterUrl>, 'url'>,\n) {\n return createSolanaRpcSubscriptionsImpl<TClusterUrl, SolanaRpcSubscriptionsApi & SolanaRpcSubscriptionsApiUnstable>(\n clusterUrl,\n config,\n );\n}\n\nexport function createSolanaRpcSubscriptionsFromTransport<\n TTransport extends RpcSubscriptionsTransport,\n TApi extends RpcSubscriptionsApiMethods = SolanaRpcSubscriptionsApi,\n>(transport: TTransport) {\n return createSubscriptionRpc({\n api: createSolanaRpcSubscriptionsApi<TApi>(DEFAULT_RPC_SUBSCRIPTIONS_CONFIG),\n transport,\n }) as RpcSubscriptionsFromTransport<TApi, TTransport>;\n}\n","import {\n combineCodec,\n Decoder,\n Encoder,\n fixDecoderSize,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n fixEncoderSize,\n transformEncoder,\n} from '@solana/codecs-core';\nimport { getBase58Decoder, getBase58Encoder } from '@solana/codecs-strings';\nimport {\n SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH,\n SolanaError,\n} from '@solana/errors';\n\nexport type Blockhash = string & { readonly __brand: unique symbol };\n\nlet memoizedBase58Encoder: Encoder<string> | undefined;\nlet memoizedBase58Decoder: Decoder<string> | undefined;\n\nfunction getMemoizedBase58Encoder(): Encoder<string> {\n if (!memoizedBase58Encoder) memoizedBase58Encoder = getBase58Encoder();\n return memoizedBase58Encoder;\n}\n\nfunction getMemoizedBase58Decoder(): Decoder<string> {\n if (!memoizedBase58Decoder) memoizedBase58Decoder = getBase58Decoder();\n return memoizedBase58Decoder;\n}\n\nexport function isBlockhash(putativeBlockhash: string): putativeBlockhash is Blockhash {\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest value (32 bytes of zeroes)\n putativeBlockhash.length < 32 ||\n // Highest value (32 bytes of 255)\n putativeBlockhash.length > 44\n ) {\n return false;\n }\n // Slow-path; actually attempt to decode the input string.\n const base58Encoder = getMemoizedBase58Encoder();\n const bytes = base58Encoder.encode(putativeBlockhash);\n const numBytes = bytes.byteLength;\n if (numBytes !== 32) {\n return false;\n }\n return true;\n}\n\nexport function assertIsBlockhash(putativeBlockhash: string): asserts putativeBlockhash is Blockhash {\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest value (32 bytes of zeroes)\n putativeBlockhash.length < 32 ||\n // Highest value (32 bytes of 255)\n putativeBlockhash.length > 44\n ) {\n throw new SolanaError(SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE, {\n actualLength: putativeBlockhash.length,\n });\n }\n // Slow-path; actually attempt to decode the input string.\n const base58Encoder = getMemoizedBase58Encoder();\n const bytes = base58Encoder.encode(putativeBlockhash);\n const numBytes = bytes.byteLength;\n if (numBytes !== 32) {\n throw new SolanaError(SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH, {\n actualLength: numBytes,\n });\n }\n}\n\nexport function blockhash(putativeBlockhash: string): Blockhash {\n assertIsBlockhash(putativeBlockhash);\n return putativeBlockhash;\n}\n\nexport function getBlockhashEncoder(): FixedSizeEncoder<Blockhash, 32> {\n return transformEncoder(fixEncoderSize(getMemoizedBase58Encoder(), 32), putativeBlockhash =>\n blockhash(putativeBlockhash),\n );\n}\n\nexport function getBlockhashDecoder(): FixedSizeDecoder<Blockhash, 32> {\n return fixDecoderSize(getMemoizedBase58Decoder(), 32) as FixedSizeDecoder<Blockhash, 32>;\n}\n\nexport function getBlockhashCodec(): FixedSizeCodec<Blockhash, Blockhash, 32> {\n return combineCodec(getBlockhashEncoder(), getBlockhashDecoder());\n}\n\nexport function getBlockhashComparator(): (x: string, y: string) => number {\n return new Intl.Collator('en', {\n caseFirst: 'lower',\n ignorePunctuation: false,\n localeMatcher: 'best fit',\n numeric: false,\n sensitivity: 'variant',\n usage: 'sort',\n }).compare;\n}\n","export type MainnetUrl = string & { '~cluster': 'mainnet' };\nexport type DevnetUrl = string & { '~cluster': 'devnet' };\nexport type TestnetUrl = string & { '~cluster': 'testnet' };\nexport type ClusterUrl = DevnetUrl | MainnetUrl | TestnetUrl | string;\n\nexport function mainnet(putativeString: string): MainnetUrl {\n return putativeString as MainnetUrl;\n}\nexport function devnet(putativeString: string): DevnetUrl {\n return putativeString as DevnetUrl;\n}\nexport function testnet(putativeString: string): TestnetUrl {\n return putativeString as TestnetUrl;\n}\n","import { SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE, SolanaError } from '@solana/errors';\n\nexport type Commitment = 'confirmed' | 'finalized' | 'processed';\n\nfunction getCommitmentScore(commitment: Commitment): number {\n switch (commitment) {\n case 'finalized':\n return 2;\n case 'confirmed':\n return 1;\n case 'processed':\n return 0;\n default:\n throw new SolanaError(SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE, {\n unexpectedValue: commitment satisfies never,\n });\n }\n}\n\nexport function commitmentComparator(a: Commitment, b: Commitment): -1 | 0 | 1 {\n if (a === b) {\n return 0;\n }\n return getCommitmentScore(a) < getCommitmentScore(b) ? -1 : 1;\n}\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n} from '@solana/codecs-core';\nimport { getU64Decoder, getU64Encoder, NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\nimport { SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\nexport type Lamports = bigint & { readonly __brand: unique symbol };\n\n// Largest possible value to be represented by a u64\nconst maxU64Value = 18446744073709551615n; // 2n ** 64n - 1n\n\nlet memoizedU64Encoder: FixedSizeEncoder<bigint | number, 8> | undefined;\nlet memoizedU64Decoder: FixedSizeDecoder<bigint, 8> | undefined;\n\nfunction getMemoizedU64Encoder(): FixedSizeEncoder<bigint | number, 8> {\n if (!memoizedU64Encoder) memoizedU64Encoder = getU64Encoder();\n return memoizedU64Encoder;\n}\n\nfunction getMemoizedU64Decoder(): FixedSizeDecoder<bigint, 8> {\n if (!memoizedU64Decoder) memoizedU64Decoder = getU64Decoder();\n return memoizedU64Decoder;\n}\n\nexport function isLamports(putativeLamports: bigint): putativeLamports is Lamports {\n return putativeLamports >= 0 && putativeLamports <= maxU64Value;\n}\n\nexport function assertIsLamports(putativeLamports: bigint): asserts putativeLamports is Lamports {\n if (putativeLamports < 0 || putativeLamports > maxU64Value) {\n throw new SolanaError(SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE);\n }\n}\n\nexport function lamports(putativeLamports: bigint): Lamports {\n assertIsLamports(putativeLamports);\n return putativeLamports;\n}\n\ntype ExtractAdditionalProps<T, U> = Omit<T, keyof U>;\n\nexport function getDefaultLamportsEncoder(): FixedSizeEncoder<Lamports, 8> {\n return getLamportsEncoder(getMemoizedU64Encoder());\n}\n\nexport function getLamportsEncoder<TEncoder extends NumberEncoder>(\n innerEncoder: TEncoder,\n): Encoder<Lamports> & ExtractAdditionalProps<TEncoder, NumberEncoder> {\n return innerEncoder;\n}\n\nexport function getDefaultLamportsDecoder(): FixedSizeDecoder<Lamports, 8> {\n return getLamportsDecoder(getMemoizedU64Decoder());\n}\n\nexport function getLamportsDecoder<TDecoder extends NumberDecoder>(\n innerDecoder: TDecoder,\n): Decoder<Lamports> & ExtractAdditionalProps<TDecoder, NumberDecoder> {\n return transformDecoder<bigint | number, Lamports>(innerDecoder, value =>\n lamports(typeof value === 'bigint' ? value : BigInt(value)),\n ) as Decoder<Lamports> & ExtractAdditionalProps<TDecoder, NumberDecoder>;\n}\n\nexport function getDefaultLamportsCodec(): FixedSizeCodec<Lamports, Lamports, 8> {\n return combineCodec(getDefaultLamportsEncoder(), getDefaultLamportsDecoder());\n}\n\nexport function getLamportsCodec<TCodec extends NumberCodec>(\n innerCodec: TCodec,\n): Codec<Lamports, Lamports> & ExtractAdditionalProps<TCodec, NumberCodec> {\n return combineCodec(getLamportsEncoder(innerCodec), getLamportsDecoder(innerCodec)) as Codec<Lamports, Lamports> &\n ExtractAdditionalProps<TCodec, NumberCodec>;\n}\n","import { SOLANA_ERROR__MALFORMED_BIGINT_STRING, SolanaError } from '@solana/errors';\n\nexport type StringifiedBigInt = string & { readonly __brand: unique symbol };\n\nexport function isStringifiedBigInt(putativeBigInt: string): putativeBigInt is StringifiedBigInt {\n try {\n BigInt(putativeBigInt);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function assertIsStringifiedBigInt(putativeBigInt: string): asserts putativeBigInt is StringifiedBigInt {\n try {\n BigInt(putativeBigInt);\n } catch {\n throw new SolanaError(SOLANA_ERROR__MALFORMED_BIGINT_STRING, {\n value: putativeBigInt,\n });\n }\n}\n\nexport function stringifiedBigInt(putativeBigInt: string): StringifiedBigInt {\n assertIsStringifiedBigInt(putativeBigInt);\n return putativeBigInt;\n}\n","import { SOLANA_ERROR__MALFORMED_NUMBER_STRING, SolanaError } from '@solana/errors';\n\nexport type StringifiedNumber = string & { readonly __brand: unique symbol };\n\nexport function isStringifiedNumber(putativeNumber: string): putativeNumber is StringifiedNumber {\n return !Number.isNaN(Number(putativeNumber));\n}\n\nexport function assertIsStringifiedNumber(putativeNumber: string): asserts putativeNumber is StringifiedNumber {\n if (Number.isNaN(Number(putativeNumber))) {\n throw new SolanaError(SOLANA_ERROR__MALFORMED_NUMBER_STRING, {\n value: putativeNumber,\n });\n }\n}\n\nexport function stringifiedNumber(putativeNumber: string): StringifiedNumber {\n assertIsStringifiedNumber(putativeNumber);\n return putativeNumber;\n}\n","import { SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\nexport type UnixTimestamp = bigint & { readonly __brand: unique symbol };\n\n// Largest possible value to be represented by an i64\nconst maxI64Value = 9223372036854775807n; // 2n ** 63n - 1n\nconst minI64Value = -9223372036854775808n; // -(2n ** 63n)\n\nexport function isUnixTimestamp(putativeTimestamp: bigint): putativeTimestamp is UnixTimestamp {\n return putativeTimestamp >= minI64Value && putativeTimestamp <= maxI64Value;\n}\n\nexport function assertIsUnixTimestamp(putativeTimestamp: bigint): asserts putativeTimestamp is UnixTimestamp {\n if (putativeTimestamp < minI64Value || putativeTimestamp > maxI64Value) {\n throw new SolanaError(SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE, {\n value: putativeTimestamp,\n });\n }\n}\n\nexport function unixTimestamp(putativeTimestamp: bigint): UnixTimestamp {\n assertIsUnixTimestamp(putativeTimestamp);\n return putativeTimestamp;\n}\n","import { SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME, SolanaError } from '@solana/errors';\nimport { assertIsBlockhash, type Blockhash } from '@solana/rpc-types';\n\nimport { TransactionMessageWithDurableNonceLifetime } from './durable-nonce';\nimport { BaseTransactionMessage } from './transaction-message';\n\ntype BlockhashLifetimeConstraint = Readonly<{\n blockhash: Blockhash;\n lastValidBlockHeight: bigint;\n}>;\n\nexport interface TransactionMessageWithBlockhashLifetime {\n readonly lifetimeConstraint: BlockhashLifetimeConstraint;\n}\n\nexport function isTransactionMessageWithBlockhashLifetime(\n transaction: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithBlockhashLifetime),\n): transaction is BaseTransactionMessage & TransactionMessageWithBlockhashLifetime {\n const lifetimeConstraintShapeMatches =\n 'lifetimeConstraint' in transaction &&\n typeof transaction.lifetimeConstraint.blockhash === 'string' &&\n typeof transaction.lifetimeConstraint.lastValidBlockHeight === 'bigint';\n if (!lifetimeConstraintShapeMatches) return false;\n try {\n assertIsBlockhash(transaction.lifetimeConstraint.blockhash);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function assertIsTransactionMessageWithBlockhashLifetime(\n transaction: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithBlockhashLifetime),\n): asserts transaction is BaseTransactionMessage & TransactionMessageWithBlockhashLifetime {\n if (!isTransactionMessageWithBlockhashLifetime(transaction)) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME);\n }\n}\n\nexport function setTransactionMessageLifetimeUsingBlockhash<\n TTransaction extends BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime,\n>(\n blockhashLifetimeConstraint: BlockhashLifetimeConstraint,\n transaction: TTransaction,\n): Omit<TTransaction, 'lifetimeConstraint'> & TransactionMessageWithBlockhashLifetime;\n\nexport function setTransactionMessageLifetimeUsingBlockhash<\n TTransaction extends BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithBlockhashLifetime),\n>(\n blockhashLifetimeConstraint: BlockhashLifetimeConstraint,\n transaction: TTransaction,\n): TransactionMessageWithBlockhashLifetime & TTransaction;\n\nexport function setTransactionMessageLifetimeUsingBlockhash(\n blockhashLifetimeConstraint: BlockhashLifetimeConstraint,\n transaction: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithBlockhashLifetime),\n) {\n if (\n 'lifetimeConstraint' in transaction &&\n transaction.lifetimeConstraint.blockhash === blockhashLifetimeConstraint.blockhash &&\n transaction.lifetimeConstraint.lastValidBlockHeight === blockhashLifetimeConstraint.lastValidBlockHeight\n ) {\n return transaction;\n }\n const out = {\n ...transaction,\n lifetimeConstraint: Object.freeze(blockhashLifetimeConstraint),\n };\n Object.freeze(out);\n return out;\n}\n","import { getAddressDecoder, getAddressEncoder } from '@solana/addresses';\nimport {\n combineCodec,\n type Encoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { getArrayDecoder, getArrayEncoder, getStructDecoder, getStructEncoder } from '@solana/codecs-data-structures';\nimport { getShortU16Decoder, getShortU16Encoder, getU8Decoder, getU8Encoder } from '@solana/codecs-numbers';\n\nimport type { getCompiledAddressTableLookups } from '../compile/address-table-lookups';\n\ntype AddressTableLookup = ReturnType<typeof getCompiledAddressTableLookups>[number];\n\nlet memoizedAddressTableLookupEncoder: VariableSizeEncoder<AddressTableLookup> | undefined;\nexport function getAddressTableLookupEncoder(): VariableSizeEncoder<AddressTableLookup> {\n if (!memoizedAddressTableLookupEncoder) {\n memoizedAddressTableLookupEncoder = getStructEncoder([\n ['lookupTableAddress', getAddressEncoder()],\n [\n 'writableIndices',\n getArrayEncoder(getU8Encoder(), { size: getShortU16Encoder() }) as Encoder<readonly number[]>,\n ],\n [\n 'readableIndices',\n getArrayEncoder(getU8Encoder(), { size: getShortU16Encoder() }) as Encoder<readonly number[]>,\n ],\n ]);\n }\n\n return memoizedAddressTableLookupEncoder;\n}\n\nlet memoizedAddressTableLookupDecoder: VariableSizeDecoder<AddressTableLookup> | undefined;\nexport function getAddressTableLookupDecoder(): VariableSizeDecoder<AddressTableLookup> {\n if (!memoizedAddressTableLookupDecoder) {\n memoizedAddressTableLookupDecoder = getStructDecoder([\n ['lookupTableAddress', getAddressDecoder()],\n ['writableIndices', getArrayDecoder(getU8Decoder(), { size: getShortU16Decoder() })],\n ['readableIndices', getArrayDecoder(getU8Decoder(), { size: getShortU16Decoder() })],\n ]);\n }\n\n return memoizedAddressTableLookupDecoder;\n}\n\nexport function getAddressTableLookupCodec(): VariableSizeCodec<AddressTableLookup> {\n return combineCodec(getAddressTableLookupEncoder(), getAddressTableLookupDecoder());\n}\n","import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\nimport { getStructCodec, getStructDecoder, getStructEncoder } from '@solana/codecs-data-structures';\nimport { getU8Codec, getU8Decoder, getU8Encoder } from '@solana/codecs-numbers';\n\nimport { getCompiledMessageHeader } from '../compile/header';\n\ntype MessageHeader = ReturnType<typeof getCompiledMessageHeader>;\n\nlet memoizedU8Encoder: FixedSizeEncoder<number, 1> | undefined;\nfunction getMemoizedU8Encoder(): FixedSizeEncoder<number, 1> {\n if (!memoizedU8Encoder) memoizedU8Encoder = getU8Encoder();\n return memoizedU8Encoder;\n}\n\nlet memoizedU8Decoder: FixedSizeDecoder<number, 1> | undefined;\nfunction getMemoizedU8Decoder(): FixedSizeDecoder<number, 1> {\n if (!memoizedU8Decoder) memoizedU8Decoder = getU8Decoder();\n return memoizedU8Decoder;\n}\n\nlet memoizedU8Codec: FixedSizeCodec<number, number, 1> | undefined;\nfunction getMemoizedU8Codec(): FixedSizeCodec<number, number, 1> {\n if (!memoizedU8Codec) memoizedU8Codec = getU8Codec();\n return memoizedU8Codec;\n}\n\nexport function getMessageHeaderEncoder(): FixedSizeEncoder<MessageHeader, 3> {\n return getStructEncoder([\n ['numSignerAccounts', getMemoizedU8Encoder()],\n ['numReadonlySignerAccounts', getMemoizedU8Encoder()],\n ['numReadonlyNonSignerAccounts', getMemoizedU8Encoder()],\n ]) as FixedSizeEncoder<MessageHeader, 3>;\n}\n\nexport function getMessageHeaderDecoder(): FixedSizeDecoder<MessageHeader, 3> {\n return getStructDecoder([\n ['numSignerAccounts', getMemoizedU8Decoder()],\n ['numReadonlySignerAccounts', getMemoizedU8Decoder()],\n ['numReadonlyNonSignerAccounts', getMemoizedU8Decoder()],\n ]) as FixedSizeDecoder<MessageHeader, 3>;\n}\n\nexport function getMessageHeaderCodec(): FixedSizeCodec<MessageHeader, MessageHeader, 3> {\n return getStructCodec([\n ['numSignerAccounts', getMemoizedU8Codec()],\n ['numReadonlySignerAccounts', getMemoizedU8Codec()],\n ['numReadonlyNonSignerAccounts', getMemoizedU8Codec()],\n ]) as FixedSizeCodec<MessageHeader, MessageHeader, 3>;\n}\n","import {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n} from '@solana/codecs-data-structures';\nimport { getShortU16Decoder, getShortU16Encoder, getU8Decoder, getU8Encoder } from '@solana/codecs-numbers';\n\nimport { getCompiledInstructions } from '../compile/instructions';\n\ntype Instruction = ReturnType<typeof getCompiledInstructions>[number];\n\nlet memoizedGetInstructionEncoder: VariableSizeEncoder<Instruction> | undefined;\nexport function getInstructionEncoder(): VariableSizeEncoder<Instruction> {\n if (!memoizedGetInstructionEncoder) {\n memoizedGetInstructionEncoder = transformEncoder<Required<Instruction>, Instruction>(\n getStructEncoder([\n ['programAddressIndex', getU8Encoder()],\n ['accountIndices', getArrayEncoder(getU8Encoder(), { size: getShortU16Encoder() })],\n ['data', addEncoderSizePrefix(getBytesEncoder(), getShortU16Encoder())],\n ]),\n // Convert an instruction to have all fields defined\n (instruction: Instruction): Required<Instruction> => {\n if (instruction.accountIndices !== undefined && instruction.data !== undefined) {\n return instruction as Required<Instruction>;\n }\n return {\n ...instruction,\n accountIndices: instruction.accountIndices ?? [],\n data: instruction.data ?? new Uint8Array(0),\n } as Required<Instruction>;\n },\n );\n }\n\n return memoizedGetInstructionEncoder;\n}\n\nlet memoizedGetInstructionDecoder: VariableSizeDecoder<Instruction> | undefined;\nexport function getInstructionDecoder(): VariableSizeDecoder<Instruction> {\n if (!memoizedGetInstructionDecoder) {\n memoizedGetInstructionDecoder = transformDecoder<Required<Instruction>, Instruction>(\n getStructDecoder([\n ['programAddressIndex', getU8Decoder()],\n ['accountIndices', getArrayDecoder(getU8Decoder(), { size: getShortU16Decoder() })],\n [\n 'data',\n addDecoderSizePrefix(getBytesDecoder(), getShortU16Decoder()) as VariableSizeDecoder<Uint8Array>,\n ],\n ]),\n // Convert an instruction to exclude optional fields if they are empty\n (instruction: Required<Instruction>): Instruction => {\n if (instruction.accountIndices.length && instruction.data.byteLength) {\n return instruction;\n }\n const { accountIndices, data, ...rest } = instruction;\n return {\n ...rest,\n ...(accountIndices.length ? { accountIndices } : null),\n ...(data.byteLength ? { data } : null),\n };\n },\n );\n }\n return memoizedGetInstructionDecoder;\n}\n\nexport function getInstructionCodec(): VariableSizeCodec<Instruction> {\n return combineCodec(getInstructionEncoder(), getInstructionDecoder());\n}\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\nimport { TransactionVersion } from '../transaction-message';\n\nconst VERSION_FLAG_MASK = 0x80;\n\nexport function getTransactionVersionEncoder(): VariableSizeEncoder<TransactionVersion> {\n return createEncoder({\n getSizeFromValue: value => (value === 'legacy' ? 0 : 1),\n maxSize: 1,\n write: (value, bytes, offset) => {\n if (value === 'legacy') {\n return offset;\n }\n if (value < 0 || value > 127) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE, {\n actualVersion: value,\n });\n }\n bytes.set([value | VERSION_FLAG_MASK], offset);\n return offset + 1;\n },\n });\n}\n\nexport function getTransactionVersionDecoder(): VariableSizeDecoder<TransactionVersion> {\n return createDecoder({\n maxSize: 1,\n read: (bytes, offset) => {\n const firstByte = bytes[offset];\n if ((firstByte & VERSION_FLAG_MASK) === 0) {\n // No version flag set; it's a legacy (unversioned) transaction.\n return ['legacy', offset];\n } else {\n const version = (firstByte ^ VERSION_FLAG_MASK) as TransactionVersion;\n return [version, offset + 1];\n }\n },\n });\n}\n\nexport function getTransactionVersionCodec(): VariableSizeCodec<TransactionVersion> {\n return combineCodec(getTransactionVersionEncoder(), getTransactionVersionDecoder());\n}\n","import { getAddressDecoder, getAddressEncoder } from '@solana/addresses';\nimport {\n combineCodec,\n createEncoder,\n Decoder,\n fixDecoderSize,\n fixEncoderSize,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { getArrayDecoder, getArrayEncoder, getStructDecoder, getStructEncoder } from '@solana/codecs-data-structures';\nimport { getShortU16Decoder, getShortU16Encoder } from '@solana/codecs-numbers';\nimport { getBase58Decoder, getBase58Encoder } from '@solana/codecs-strings';\n\nimport { getCompiledAddressTableLookups } from '../compile/address-table-lookups';\nimport { CompiledTransactionMessage } from '../compile/message';\nimport { getAddressTableLookupDecoder, getAddressTableLookupEncoder } from './address-table-lookup';\nimport { getMessageHeaderDecoder, getMessageHeaderEncoder } from './header';\nimport { getInstructionDecoder, getInstructionEncoder } from './instruction';\nimport { getTransactionVersionDecoder, getTransactionVersionEncoder } from './transaction-version';\n\nfunction getCompiledMessageLegacyEncoder(): VariableSizeEncoder<CompiledTransactionMessage> {\n return getStructEncoder(getPreludeStructEncoderTuple()) as VariableSizeEncoder<CompiledTransactionMessage>;\n}\n\nfunction getCompiledMessageVersionedEncoder(): VariableSizeEncoder<CompiledTransactionMessage> {\n return transformEncoder(\n getStructEncoder([\n ...getPreludeStructEncoderTuple(),\n ['addressTableLookups', getAddressTableLookupArrayEncoder()],\n ]) as VariableSizeEncoder<CompiledTransactionMessage>,\n (value: CompiledTransactionMessage) => {\n if (value.version === 'legacy') {\n return value;\n }\n return {\n ...value,\n addressTableLookups: value.addressTableLookups ?? [],\n } as Exclude<CompiledTransactionMessage, { readonly version: 'legacy' }>;\n },\n );\n}\n\nfunction getPreludeStructEncoderTuple() {\n return [\n ['version', getTransactionVersionEncoder()],\n ['header', getMessageHeaderEncoder()],\n ['staticAccounts', getArrayEncoder(getAddressEncoder(), { size: getShortU16Encoder() })],\n ['lifetimeToken', fixEncoderSize(getBase58Encoder(), 32)],\n ['instructions', getArrayEncoder(getInstructionEncoder(), { size: getShortU16Encoder() })],\n ] as const;\n}\n\nfunction getPreludeStructDecoderTuple() {\n return [\n ['version', getTransactionVersionDecoder() as Decoder<number>],\n ['header', getMessageHeaderDecoder()],\n ['staticAccounts', getArrayDecoder(getAddressDecoder(), { size: getShortU16Decoder() })],\n ['lifetimeToken', fixDecoderSize(getBase58Decoder(), 32)],\n ['instructions', getArrayDecoder(getInstructionDecoder(), { size: getShortU16Decoder() })],\n ['addressTableLookups', getAddressTableLookupArrayDecoder()],\n ] as const;\n}\n\nfunction getAddressTableLookupArrayEncoder() {\n return getArrayEncoder(getAddressTableLookupEncoder(), { size: getShortU16Encoder() });\n}\n\nfunction getAddressTableLookupArrayDecoder() {\n return getArrayDecoder(getAddressTableLookupDecoder(), { size: getShortU16Decoder() });\n}\n\nexport function getCompiledTransactionMessageEncoder(): VariableSizeEncoder<CompiledTransactionMessage> {\n return createEncoder({\n getSizeFromValue: (compiledMessage: CompiledTransactionMessage) => {\n if (compiledMessage.version === 'legacy') {\n return getCompiledMessageLegacyEncoder().getSizeFromValue(compiledMessage);\n } else {\n return getCompiledMessageVersionedEncoder().getSizeFromValue(compiledMessage);\n }\n },\n write: (compiledMessage, bytes, offset) => {\n if (compiledMessage.version === 'legacy') {\n return getCompiledMessageLegacyEncoder().write(compiledMessage, bytes, offset);\n } else {\n return getCompiledMessageVersionedEncoder().write(compiledMessage, bytes, offset);\n }\n },\n });\n}\n\nexport function getCompiledTransactionMessageDecoder(): VariableSizeDecoder<CompiledTransactionMessage> {\n return transformDecoder(\n getStructDecoder(getPreludeStructDecoderTuple()) as VariableSizeDecoder<\n CompiledTransactionMessage & { addressTableLookups?: ReturnType<typeof getCompiledAddressTableLookups> }\n >,\n ({ addressTableLookups, ...restOfMessage }) => {\n if (restOfMessage.version === 'legacy' || !addressTableLookups?.length) {\n return restOfMessage;\n }\n return { ...restOfMessage, addressTableLookups } as Exclude<\n CompiledTransactionMessage,\n { readonly version: 'legacy' }\n >;\n },\n );\n}\n\nexport function getCompiledTransactionMessageCodec(): VariableSizeCodec<CompiledTransactionMessage> {\n return combineCodec(getCompiledTransactionMessageEncoder(), getCompiledTransactionMessageDecoder());\n}\n","import { Address, getAddressComparator } from '@solana/addresses';\nimport {\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES,\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE,\n SolanaError,\n} from '@solana/errors';\nimport {\n AccountRole,\n IAccountLookupMeta,\n IAccountMeta,\n IInstruction,\n isSignerRole,\n isWritableRole,\n mergeRoles,\n ReadonlyAccount,\n ReadonlyAccountLookup,\n ReadonlySignerAccount,\n WritableAccount,\n WritableAccountLookup,\n WritableSignerAccount,\n} from '@solana/instructions';\n\nexport const enum AddressMapEntryType {\n FEE_PAYER,\n LOOKUP_TABLE,\n STATIC,\n}\n\ntype AddressMap = {\n [address: string]: FeePayerAccountEntry | LookupTableAccountEntry | StaticAccountEntry;\n};\ntype FeePayerAccountEntry = Omit<WritableSignerAccount, 'address'> & {\n [TYPE]: AddressMapEntryType.FEE_PAYER;\n};\ntype LookupTableAccountEntry = Omit<ReadonlyAccountLookup | WritableAccountLookup, 'address'> & {\n [TYPE]: AddressMapEntryType.LOOKUP_TABLE;\n};\nexport type OrderedAccounts = (IAccountLookupMeta | IAccountMeta)[] & { readonly __brand: unique symbol };\ntype StaticAccountEntry = Omit<\n ReadonlyAccount | ReadonlySignerAccount | WritableAccount | WritableSignerAccount,\n 'address'\n> & { [TYPE]: AddressMapEntryType.STATIC };\n\nfunction upsert(\n addressMap: AddressMap,\n address: Address,\n update: (\n entry: FeePayerAccountEntry | LookupTableAccountEntry | Record<never, never> | StaticAccountEntry,\n ) => AddressMap[Address],\n) {\n addressMap[address] = update(addressMap[address] ?? { role: AccountRole.READONLY });\n}\n\nconst TYPE = Symbol('AddressMapTypeProperty');\nexport const ADDRESS_MAP_TYPE_PROPERTY: typeof TYPE = TYPE;\n\nexport function getAddressMapFromInstructions(feePayer: Address, instructions: readonly IInstruction[]): AddressMap {\n const addressMap: AddressMap = {\n [feePayer]: { [TYPE]: AddressMapEntryType.FEE_PAYER, role: AccountRole.WRITABLE_SIGNER },\n };\n const addressesOfInvokedPrograms = new Set<Address>();\n for (const instruction of instructions) {\n upsert(addressMap, instruction.programAddress, entry => {\n addressesOfInvokedPrograms.add(instruction.programAddress);\n if (TYPE in entry) {\n if (isWritableRole(entry.role)) {\n switch (entry[TYPE]) {\n case AddressMapEntryType.FEE_PAYER:\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES, {\n programAddress: instruction.programAddress,\n });\n default:\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE, {\n programAddress: instruction.programAddress,\n });\n }\n }\n if (entry[TYPE] === AddressMapEntryType.STATIC) {\n return entry;\n }\n }\n return { [TYPE]: AddressMapEntryType.STATIC, role: AccountRole.READONLY };\n });\n let addressComparator: ReturnType<typeof getAddressComparator>;\n if (!instruction.accounts) {\n continue;\n }\n for (const account of instruction.accounts) {\n upsert(addressMap, account.address, entry => {\n const {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n address: _,\n ...accountMeta\n } = account;\n if (TYPE in entry) {\n switch (entry[TYPE]) {\n case AddressMapEntryType.FEE_PAYER:\n // The fee payer already has the highest rank -- it is by definition\n // writable-signer. Return it, no matter how `account` is configured\n return entry;\n case AddressMapEntryType.LOOKUP_TABLE: {\n const nextRole = mergeRoles(entry.role, accountMeta.role);\n if ('lookupTableAddress' in accountMeta) {\n const shouldReplaceEntry =\n // Consider using the new LOOKUP_TABLE if its address is different...\n entry.lookupTableAddress !== accountMeta.lookupTableAddress &&\n // ...and sorts before the existing one.\n (addressComparator ||= getAddressComparator())(\n accountMeta.lookupTableAddress,\n entry.lookupTableAddress,\n ) < 0;\n if (shouldReplaceEntry) {\n return {\n [TYPE]: AddressMapEntryType.LOOKUP_TABLE,\n ...accountMeta,\n role: nextRole,\n } as LookupTableAccountEntry;\n }\n } else if (isSignerRole(accountMeta.role)) {\n // Upgrade this LOOKUP_TABLE entry to a static entry if it must sign.\n return {\n [TYPE]: AddressMapEntryType.STATIC,\n role: nextRole,\n } as StaticAccountEntry;\n }\n if (entry.role !== nextRole) {\n return {\n ...entry,\n role: nextRole,\n } as LookupTableAccountEntry;\n } else {\n return entry;\n }\n }\n case AddressMapEntryType.STATIC: {\n const nextRole = mergeRoles(entry.role, accountMeta.role);\n if (\n // Check to see if this address represents a program that is invoked\n // in this transaction.\n addressesOfInvokedPrograms.has(account.address)\n ) {\n if (isWritableRole(accountMeta.role)) {\n throw new SolanaError(\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE,\n {\n programAddress: account.address,\n },\n );\n }\n if (entry.role !== nextRole) {\n return {\n ...entry,\n role: nextRole,\n } as StaticAccountEntry;\n } else {\n return entry;\n }\n } else if (\n 'lookupTableAddress' in accountMeta &&\n // Static accounts can be 'upgraded' to lookup table accounts as\n // long as they are not require to sign the transaction.\n !isSignerRole(entry.role)\n ) {\n return {\n ...accountMeta,\n [TYPE]: AddressMapEntryType.LOOKUP_TABLE,\n role: nextRole,\n } as LookupTableAccountEntry;\n } else {\n if (entry.role !== nextRole) {\n // The account's role ranks higher than the current entry's.\n return {\n ...entry,\n role: nextRole,\n } as StaticAccountEntry;\n } else {\n return entry;\n }\n }\n }\n }\n }\n if ('lookupTableAddress' in accountMeta) {\n return {\n ...accountMeta,\n [TYPE]: AddressMapEntryType.LOOKUP_TABLE,\n };\n } else {\n return {\n ...accountMeta,\n [TYPE]: AddressMapEntryType.STATIC,\n };\n }\n });\n }\n }\n return addressMap;\n}\n\nexport function getOrderedAccountsFromAddressMap(addressMap: AddressMap): OrderedAccounts {\n let addressComparator: ReturnType<typeof getAddressComparator>;\n const orderedAccounts: (IAccountLookupMeta | IAccountMeta)[] = Object.entries(addressMap)\n .sort(([leftAddress, leftEntry], [rightAddress, rightEntry]) => {\n // STEP 1: Rapid precedence check. Fee payer, then static addresses, then lookups.\n if (leftEntry[TYPE] !== rightEntry[TYPE]) {\n if (leftEntry[TYPE] === AddressMapEntryType.FEE_PAYER) {\n return -1;\n } else if (rightEntry[TYPE] === AddressMapEntryType.FEE_PAYER) {\n return 1;\n } else if (leftEntry[TYPE] === AddressMapEntryType.STATIC) {\n return -1;\n } else if (rightEntry[TYPE] === AddressMapEntryType.STATIC) {\n return 1;\n }\n }\n // STEP 2: Sort by signer-writability.\n const leftIsSigner = isSignerRole(leftEntry.role);\n if (leftIsSigner !== isSignerRole(rightEntry.role)) {\n return leftIsSigner ? -1 : 1;\n }\n const leftIsWritable = isWritableRole(leftEntry.role);\n if (leftIsWritable !== isWritableRole(rightEntry.role)) {\n return leftIsWritable ? -1 : 1;\n }\n // STEP 3: Sort by address.\n addressComparator ||= getAddressComparator();\n if (\n leftEntry[TYPE] === AddressMapEntryType.LOOKUP_TABLE &&\n rightEntry[TYPE] === AddressMapEntryType.LOOKUP_TABLE &&\n leftEntry.lookupTableAddress !== rightEntry.lookupTableAddress\n ) {\n return addressComparator(leftEntry.lookupTableAddress, rightEntry.lookupTableAddress);\n } else {\n return addressComparator(leftAddress, rightAddress);\n }\n })\n .map(([address, addressMeta]) => ({\n address: address as Address<typeof address>,\n ...addressMeta,\n }));\n return orderedAccounts as unknown as OrderedAccounts;\n}\n","import { Address, getAddressComparator } from '@solana/addresses';\nimport { AccountRole } from '@solana/instructions';\n\nimport { OrderedAccounts } from '../compile/accounts';\n\ntype AddressTableLookup = Readonly<{\n lookupTableAddress: Address;\n readableIndices: readonly number[];\n writableIndices: readonly number[];\n}>;\n\nexport function getCompiledAddressTableLookups(orderedAccounts: OrderedAccounts): AddressTableLookup[] {\n const index: Record<Address, { readonly readableIndices: number[]; readonly writableIndices: number[] }> = {};\n for (const account of orderedAccounts) {\n if (!('lookupTableAddress' in account)) {\n continue;\n }\n const entry = (index[account.lookupTableAddress] ||= {\n readableIndices: [],\n writableIndices: [],\n });\n if (account.role === AccountRole.WRITABLE) {\n entry.writableIndices.push(account.addressIndex);\n } else {\n entry.readableIndices.push(account.addressIndex);\n }\n }\n return Object.keys(index)\n .sort(getAddressComparator())\n .map(lookupTableAddress => ({\n lookupTableAddress: lookupTableAddress as Address,\n ...index[lookupTableAddress as unknown as Address],\n }));\n}\n","import { isSignerRole, isWritableRole } from '@solana/instructions';\n\nimport { OrderedAccounts } from '../compile/accounts';\n\ntype MessageHeader = Readonly<{\n numReadonlyNonSignerAccounts: number;\n numReadonlySignerAccounts: number;\n numSignerAccounts: number;\n}>;\n\nexport function getCompiledMessageHeader(orderedAccounts: OrderedAccounts): MessageHeader {\n let numReadonlyNonSignerAccounts = 0;\n let numReadonlySignerAccounts = 0;\n let numSignerAccounts = 0;\n for (const account of orderedAccounts) {\n if ('lookupTableAddress' in account) {\n break;\n }\n const accountIsWritable = isWritableRole(account.role);\n if (isSignerRole(account.role)) {\n numSignerAccounts++;\n if (!accountIsWritable) {\n numReadonlySignerAccounts++;\n }\n } else if (!accountIsWritable) {\n numReadonlyNonSignerAccounts++;\n }\n }\n return {\n numReadonlyNonSignerAccounts,\n numReadonlySignerAccounts,\n numSignerAccounts,\n };\n}\n","import { Address } from '@solana/addresses';\nimport { IInstruction } from '@solana/instructions';\n\nimport { OrderedAccounts } from './accounts';\n\ntype CompiledInstruction = Readonly<{\n accountIndices?: number[];\n data?: Uint8Array;\n programAddressIndex: number;\n}>;\n\nfunction getAccountIndex(orderedAccounts: OrderedAccounts) {\n const out: Record<Address, number> = {};\n for (const [index, account] of orderedAccounts.entries()) {\n out[account.address] = index;\n }\n return out;\n}\n\nexport function getCompiledInstructions(\n instructions: readonly IInstruction[],\n orderedAccounts: OrderedAccounts,\n): CompiledInstruction[] {\n const accountIndex = getAccountIndex(orderedAccounts);\n return instructions.map(({ accounts, data, programAddress }) => {\n return {\n programAddressIndex: accountIndex[programAddress],\n ...(accounts ? { accountIndices: accounts.map(({ address }) => accountIndex[address]) } : null),\n ...(data ? { data } : null),\n };\n });\n}\n","import { TransactionMessageWithBlockhashLifetime, TransactionMessageWithDurableNonceLifetime } from '../index';\n\nexport function getCompiledLifetimeToken(\n lifetimeConstraint: (\n | TransactionMessageWithBlockhashLifetime\n | TransactionMessageWithDurableNonceLifetime\n )['lifetimeConstraint'],\n): string {\n if ('nonce' in lifetimeConstraint) {\n return lifetimeConstraint.nonce;\n }\n return lifetimeConstraint.blockhash;\n}\n","import { Address } from '@solana/addresses';\n\nimport { OrderedAccounts } from './accounts';\n\nexport function getCompiledStaticAccounts(orderedAccounts: OrderedAccounts): Address[] {\n const firstLookupTableAccountIndex = orderedAccounts.findIndex(account => 'lookupTableAddress' in account);\n const orderedStaticAccounts =\n firstLookupTableAccountIndex === -1 ? orderedAccounts : orderedAccounts.slice(0, firstLookupTableAccountIndex);\n return orderedStaticAccounts.map(({ address }) => address);\n}\n","import { CompilableTransactionMessage } from '../compilable-transaction-message';\nimport { getAddressMapFromInstructions, getOrderedAccountsFromAddressMap } from './accounts';\nimport { getCompiledAddressTableLookups } from './address-table-lookups';\nimport { getCompiledMessageHeader } from './header';\nimport { getCompiledInstructions } from './instructions';\nimport { getCompiledLifetimeToken } from './lifetime-token';\nimport { getCompiledStaticAccounts } from './static-accounts';\n\ntype BaseCompiledTransactionMessage = Readonly<{\n header: ReturnType<typeof getCompiledMessageHeader>;\n instructions: ReturnType<typeof getCompiledInstructions>;\n lifetimeToken: ReturnType<typeof getCompiledLifetimeToken>;\n staticAccounts: ReturnType<typeof getCompiledStaticAccounts>;\n}>;\n\nexport type CompiledTransactionMessage = LegacyCompiledTransactionMessage | VersionedCompiledTransactionMessage;\n\ntype LegacyCompiledTransactionMessage = BaseCompiledTransactionMessage &\n Readonly<{\n version: 'legacy';\n }>;\n\ntype VersionedCompiledTransactionMessage = BaseCompiledTransactionMessage &\n Readonly<{\n addressTableLookups?: ReturnType<typeof getCompiledAddressTableLookups>;\n version: number;\n }>;\n\nexport function compileTransactionMessage(\n transaction: CompilableTransactionMessage & Readonly<{ version: 'legacy' }>,\n): LegacyCompiledTransactionMessage;\nexport function compileTransactionMessage(\n transaction: CompilableTransactionMessage,\n): VersionedCompiledTransactionMessage;\nexport function compileTransactionMessage(transaction: CompilableTransactionMessage): CompiledTransactionMessage {\n const addressMap = getAddressMapFromInstructions(transaction.feePayer.address, transaction.instructions);\n const orderedAccounts = getOrderedAccountsFromAddressMap(addressMap);\n return {\n ...(transaction.version !== 'legacy'\n ? { addressTableLookups: getCompiledAddressTableLookups(orderedAccounts) }\n : null),\n header: getCompiledMessageHeader(orderedAccounts),\n instructions: getCompiledInstructions(transaction.instructions, orderedAccounts),\n lifetimeToken: getCompiledLifetimeToken(transaction.lifetimeConstraint),\n staticAccounts: getCompiledStaticAccounts(orderedAccounts),\n version: transaction.version,\n };\n}\n","import { Address } from '@solana/addresses';\nimport { AccountRole, IAccountLookupMeta, IAccountMeta, IInstruction, isSignerRole } from '@solana/instructions';\n\nimport { AddressesByLookupTableAddress } from './addresses-by-lookup-table-address';\nimport { BaseTransactionMessage, TransactionMessage } from './transaction-message';\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\n// Look up the address in lookup tables, return a lookup meta if it is found in any of them\nfunction findAddressInLookupTables(\n address: Address,\n role: AccountRole.READONLY | AccountRole.WRITABLE,\n addressesByLookupTableAddress: AddressesByLookupTableAddress,\n): IAccountLookupMeta | undefined {\n for (const [lookupTableAddress, addresses] of Object.entries(addressesByLookupTableAddress)) {\n for (let i = 0; i < addresses.length; i++) {\n if (address === addresses[i]) {\n return {\n address,\n addressIndex: i,\n lookupTableAddress: lookupTableAddress as Address,\n role,\n };\n }\n }\n }\n}\n\ntype TransactionMessageNotLegacy = Exclude<TransactionMessage, { version: 'legacy' }>;\n\n// Each account can be IAccountLookupMeta | IAccountMeta\ntype WidenInstructionAccounts<TInstruction extends IInstruction> =\n TInstruction extends IInstruction<infer TProgramAddress, infer TAccounts>\n ? IInstruction<\n TProgramAddress,\n {\n [K in keyof TAccounts]: TAccounts[K] extends IAccountMeta<infer TAddress>\n ? IAccountLookupMeta<TAddress> | IAccountMeta<TAddress>\n : TAccounts[K];\n }\n >\n : TInstruction;\n\ntype ExtractAdditionalProps<T, U> = Omit<T, keyof U>;\n\ntype WidenTransactionMessageInstructions<TTransactionMessage extends TransactionMessage> =\n TTransactionMessage extends BaseTransactionMessage<infer TVersion, infer TInstruction>\n ? BaseTransactionMessage<TVersion, WidenInstructionAccounts<TInstruction>> &\n ExtractAdditionalProps<\n TTransactionMessage,\n BaseTransactionMessage<TVersion, WidenInstructionAccounts<TInstruction>>\n >\n : TTransactionMessage;\n\nexport function compressTransactionMessageUsingAddressLookupTables<\n TTransactionMessage extends TransactionMessageNotLegacy = TransactionMessageNotLegacy,\n>(\n transactionMessage: TTransactionMessage,\n addressesByLookupTableAddress: AddressesByLookupTableAddress,\n): TTransactionMessage | WidenTransactionMessageInstructions<TTransactionMessage> {\n const lookupTableAddresses = new Set(Object.values(addressesByLookupTableAddress).flatMap(a => a));\n\n const newInstructions: IInstruction[] = [];\n let updatedAnyInstructions = false;\n for (const instruction of transactionMessage.instructions) {\n if (!instruction.accounts) {\n newInstructions.push(instruction);\n continue;\n }\n\n const newAccounts: Mutable<NonNullable<IInstruction['accounts']>> = [];\n let updatedAnyAccounts = false;\n for (const account of instruction.accounts) {\n // If the address is already a lookup, is not in any lookup tables, or is a signer role, return as-is\n if (\n 'lookupTableAddress' in account ||\n !lookupTableAddresses.has(account.address) ||\n isSignerRole(account.role)\n ) {\n newAccounts.push(account);\n continue;\n }\n\n // We already checked it's in one of the lookup tables\n const lookupMetaAccount = findAddressInLookupTables(\n account.address,\n account.role,\n addressesByLookupTableAddress,\n )!;\n newAccounts.push(Object.freeze(lookupMetaAccount));\n updatedAnyAccounts = true;\n updatedAnyInstructions = true;\n }\n\n newInstructions.push(\n Object.freeze(updatedAnyAccounts ? { ...instruction, accounts: newAccounts } : instruction),\n );\n }\n\n return Object.freeze(\n updatedAnyInstructions ? { ...transactionMessage, instructions: newInstructions } : transactionMessage,\n );\n}\n","import { TransactionMessage, TransactionVersion } from './transaction-message';\n\ntype TransactionConfig<TVersion extends TransactionVersion> = Readonly<{\n version: TVersion;\n}>;\n\nexport function createTransactionMessage<TVersion extends TransactionVersion>(\n config: TransactionConfig<TVersion>,\n): Extract<TransactionMessage, { version: TVersion }>;\nexport function createTransactionMessage<TVersion extends TransactionVersion>({\n version,\n}: TransactionConfig<TVersion>): TransactionMessage {\n return Object.freeze({\n instructions: Object.freeze([]),\n version,\n }) as TransactionMessage;\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME, SolanaError } from '@solana/errors';\nimport {\n AccountRole,\n IInstruction,\n IInstructionWithAccounts,\n IInstructionWithData,\n isSignerRole,\n ReadonlyAccount,\n ReadonlySignerAccount,\n WritableAccount,\n WritableSignerAccount,\n} from '@solana/instructions';\n\nimport { BaseTransactionMessage } from './transaction-message';\n\ntype AdvanceNonceAccountInstruction<\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n> = IInstruction<'11111111111111111111111111111111'> &\n IInstructionWithAccounts<\n readonly [\n WritableAccount<TNonceAccountAddress>,\n ReadonlyAccount<'SysvarRecentB1ockHashes11111111111111111111'>,\n ReadonlySignerAccount<TNonceAuthorityAddress> | WritableSignerAccount<TNonceAuthorityAddress>,\n ]\n > &\n IInstructionWithData<AdvanceNonceAccountInstructionData>;\ntype AdvanceNonceAccountInstructionData = Uint8Array & {\n readonly __brand: unique symbol;\n};\ntype DurableNonceConfig<\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n TNonceValue extends string = string,\n> = Readonly<{\n readonly nonce: Nonce<TNonceValue>;\n readonly nonceAccountAddress: Address<TNonceAccountAddress>;\n readonly nonceAuthorityAddress: Address<TNonceAuthorityAddress>;\n}>;\nexport type Nonce<TNonceValue extends string = string> = TNonceValue & { readonly __brand: unique symbol };\ntype NonceLifetimeConstraint<TNonceValue extends string = string> = Readonly<{\n nonce: Nonce<TNonceValue>;\n}>;\n\nconst RECENT_BLOCKHASHES_SYSVAR_ADDRESS =\n 'SysvarRecentB1ockHashes11111111111111111111' as Address<'SysvarRecentB1ockHashes11111111111111111111'>;\nconst SYSTEM_PROGRAM_ADDRESS = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n\nexport interface TransactionMessageWithDurableNonceLifetime<\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n TNonceValue extends string = string,\n> {\n readonly instructions: readonly [\n // The first instruction *must* be the system program's `AdvanceNonceAccount` instruction.\n AdvanceNonceAccountInstruction<TNonceAccountAddress, TNonceAuthorityAddress>,\n ...IInstruction[],\n ];\n readonly lifetimeConstraint: NonceLifetimeConstraint<TNonceValue>;\n}\n\nexport function assertIsDurableNonceTransactionMessage(\n transaction: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime),\n): asserts transaction is BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime {\n if (!isDurableNonceTransaction(transaction)) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME);\n }\n}\n\nfunction createAdvanceNonceAccountInstruction<\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n>(\n nonceAccountAddress: Address<TNonceAccountAddress>,\n nonceAuthorityAddress: Address<TNonceAuthorityAddress>,\n): AdvanceNonceAccountInstruction<TNonceAccountAddress, TNonceAuthorityAddress> {\n return {\n accounts: [\n { address: nonceAccountAddress, role: AccountRole.WRITABLE },\n {\n address: RECENT_BLOCKHASHES_SYSVAR_ADDRESS,\n role: AccountRole.READONLY,\n },\n { address: nonceAuthorityAddress, role: AccountRole.READONLY_SIGNER },\n ],\n data: new Uint8Array([4, 0, 0, 0]) as AdvanceNonceAccountInstructionData,\n programAddress: SYSTEM_PROGRAM_ADDRESS,\n };\n}\n\nexport function isAdvanceNonceAccountInstruction(\n instruction: IInstruction,\n): instruction is AdvanceNonceAccountInstruction {\n return (\n instruction.programAddress === SYSTEM_PROGRAM_ADDRESS &&\n // Test for `AdvanceNonceAccount` instruction data\n instruction.data != null &&\n isAdvanceNonceAccountInstructionData(instruction.data) &&\n // Test for exactly 3 accounts\n instruction.accounts?.length === 3 &&\n // First account is nonce account address\n instruction.accounts[0].address != null &&\n instruction.accounts[0].role === AccountRole.WRITABLE &&\n // Second account is recent blockhashes sysvar\n instruction.accounts[1].address === RECENT_BLOCKHASHES_SYSVAR_ADDRESS &&\n instruction.accounts[1].role === AccountRole.READONLY &&\n // Third account is nonce authority account\n instruction.accounts[2].address != null &&\n isSignerRole(instruction.accounts[2].role)\n );\n}\n\nfunction isAdvanceNonceAccountInstructionData(data: Uint8Array): data is AdvanceNonceAccountInstructionData {\n // AdvanceNonceAccount is the fifth instruction in the System Program (index 4)\n return data.byteLength === 4 && data[0] === 4 && data[1] === 0 && data[2] === 0 && data[3] === 0;\n}\n\nexport function isDurableNonceTransaction(\n transaction: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime),\n): transaction is BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime {\n return (\n 'lifetimeConstraint' in transaction &&\n typeof transaction.lifetimeConstraint.nonce === 'string' &&\n transaction.instructions[0] != null &&\n isAdvanceNonceAccountInstruction(transaction.instructions[0])\n );\n}\n\nfunction isAdvanceNonceAccountInstructionForNonce<\n TNonceAccountAddress extends Address = Address,\n TNonceAuthorityAddress extends Address = Address,\n>(\n instruction: AdvanceNonceAccountInstruction,\n nonceAccountAddress: TNonceAccountAddress,\n nonceAuthorityAddress: TNonceAuthorityAddress,\n): instruction is AdvanceNonceAccountInstruction<TNonceAccountAddress, TNonceAuthorityAddress> {\n return (\n instruction.accounts[0].address === nonceAccountAddress &&\n instruction.accounts[2].address === nonceAuthorityAddress\n );\n}\n\nexport function setTransactionMessageLifetimeUsingDurableNonce<\n TTransaction extends BaseTransactionMessage,\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n TNonceValue extends string = string,\n>(\n {\n nonce,\n nonceAccountAddress,\n nonceAuthorityAddress,\n }: DurableNonceConfig<TNonceAccountAddress, TNonceAuthorityAddress, TNonceValue>,\n transaction: TTransaction | (TransactionMessageWithDurableNonceLifetime & TTransaction),\n): TransactionMessageWithDurableNonceLifetime<TNonceAccountAddress, TNonceAuthorityAddress, TNonceValue> &\n TTransaction {\n let newInstructions: [\n AdvanceNonceAccountInstruction<TNonceAccountAddress, TNonceAuthorityAddress>,\n ...IInstruction[],\n ];\n\n const firstInstruction = transaction.instructions[0];\n if (firstInstruction && isAdvanceNonceAccountInstruction(firstInstruction)) {\n if (isAdvanceNonceAccountInstructionForNonce(firstInstruction, nonceAccountAddress, nonceAuthorityAddress)) {\n if (isDurableNonceTransaction(transaction) && transaction.lifetimeConstraint.nonce === nonce) {\n return transaction as TransactionMessageWithDurableNonceLifetime<\n TNonceAccountAddress,\n TNonceAuthorityAddress,\n TNonceValue\n > &\n TTransaction;\n } else {\n // we already have the right first instruction, leave it as-is\n newInstructions = [firstInstruction, ...transaction.instructions.slice(1)];\n }\n } else {\n // we have a different advance nonce instruction as the first instruction, replace it\n newInstructions = [\n Object.freeze(createAdvanceNonceAccountInstruction(nonceAccountAddress, nonceAuthorityAddress)),\n ...transaction.instructions.slice(1),\n ];\n }\n } else {\n // we don't have an existing advance nonce instruction as the first instruction, prepend one\n newInstructions = [\n Object.freeze(createAdvanceNonceAccountInstruction(nonceAccountAddress, nonceAuthorityAddress)),\n ...transaction.instructions,\n ];\n }\n\n return Object.freeze({\n ...transaction,\n instructions: Object.freeze(newInstructions),\n lifetimeConstraint: Object.freeze({\n nonce,\n }),\n }) as TransactionMessageWithDurableNonceLifetime<TNonceAccountAddress, TNonceAuthorityAddress, TNonceValue> &\n TTransaction;\n}\n","import { Address } from '@solana/addresses';\n\nimport { BaseTransactionMessage } from './transaction-message';\n\nexport interface ITransactionMessageWithFeePayer<TAddress extends string = string> {\n readonly feePayer: Readonly<{ address: Address<TAddress> }>;\n}\n\nexport function setTransactionMessageFeePayer<\n TFeePayerAddress extends string,\n TTransactionMessage extends BaseTransactionMessage & Partial<ITransactionMessageWithFeePayer>,\n>(\n feePayer: Address<TFeePayerAddress>,\n transactionMessage: TTransactionMessage,\n): ITransactionMessageWithFeePayer<TFeePayerAddress> & Omit<TTransactionMessage, 'feePayer'> {\n if (\n 'feePayer' in transactionMessage &&\n feePayer === transactionMessage.feePayer?.address &&\n isAddressOnlyFeePayer(transactionMessage.feePayer)\n ) {\n return transactionMessage as unknown as ITransactionMessageWithFeePayer<TFeePayerAddress> &\n Omit<TTransactionMessage, 'feePayer'>;\n }\n const out = {\n ...transactionMessage,\n feePayer: Object.freeze({ address: feePayer }),\n };\n Object.freeze(out);\n return out;\n}\n\nfunction isAddressOnlyFeePayer(\n feePayer: Partial<ITransactionMessageWithFeePayer>['feePayer'],\n): feePayer is { address: Address } {\n return (\n !!feePayer &&\n 'address' in feePayer &&\n typeof feePayer.address === 'string' &&\n Object.keys(feePayer).length === 1\n );\n}\n","import { BaseTransactionMessage } from './transaction-message';\n\nexport function appendTransactionMessageInstruction<TTransaction extends BaseTransactionMessage>(\n instruction: TTransaction['instructions'][number],\n transaction: TTransaction,\n): TTransaction {\n return appendTransactionMessageInstructions([instruction], transaction);\n}\n\nexport function appendTransactionMessageInstructions<TTransaction extends BaseTransactionMessage>(\n instructions: ReadonlyArray<TTransaction['instructions'][number]>,\n transaction: TTransaction,\n): TTransaction {\n return Object.freeze({\n ...transaction,\n instructions: Object.freeze([...transaction.instructions, ...instructions]),\n });\n}\n\nexport function prependTransactionMessageInstruction<TTransaction extends BaseTransactionMessage>(\n instruction: TTransaction['instructions'][number],\n transaction: TTransaction,\n): TTransaction {\n return prependTransactionMessageInstructions([instruction], transaction);\n}\n\nexport function prependTransactionMessageInstructions<TTransaction extends BaseTransactionMessage>(\n instructions: ReadonlyArray<TTransaction['instructions'][number]>,\n transaction: TTransaction,\n): TTransaction {\n return Object.freeze({\n ...transaction,\n instructions: Object.freeze([...instructions, ...transaction.instructions]),\n });\n}\n","import { Address, assertIsAddress } from '@solana/addresses';\nimport {\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND,\n SolanaError,\n} from '@solana/errors';\nimport { pipe } from '@solana/functional';\nimport { AccountRole, IAccountLookupMeta, IAccountMeta, IInstruction } from '@solana/instructions';\nimport type { Blockhash } from '@solana/rpc-types';\n\nimport { AddressesByLookupTableAddress } from './addresses-by-lookup-table-address';\nimport { setTransactionMessageLifetimeUsingBlockhash } from './blockhash';\nimport { CompilableTransactionMessage } from './compilable-transaction-message';\nimport { CompiledTransactionMessage } from './compile';\nimport type { getCompiledAddressTableLookups } from './compile/address-table-lookups';\nimport { createTransactionMessage } from './create-transaction-message';\nimport {\n isAdvanceNonceAccountInstruction,\n Nonce,\n setTransactionMessageLifetimeUsingDurableNonce,\n} from './durable-nonce';\nimport { setTransactionMessageFeePayer } from './fee-payer';\nimport { appendTransactionMessageInstruction } from './instructions';\nimport { TransactionVersion } from './transaction-message';\n\nfunction getAccountMetas(message: CompiledTransactionMessage): IAccountMeta[] {\n const { header } = message;\n const numWritableSignerAccounts = header.numSignerAccounts - header.numReadonlySignerAccounts;\n const numWritableNonSignerAccounts =\n message.staticAccounts.length - header.numSignerAccounts - header.numReadonlyNonSignerAccounts;\n\n const accountMetas: IAccountMeta[] = [];\n\n let accountIndex = 0;\n for (let i = 0; i < numWritableSignerAccounts; i++) {\n accountMetas.push({\n address: message.staticAccounts[accountIndex],\n role: AccountRole.WRITABLE_SIGNER,\n });\n accountIndex++;\n }\n\n for (let i = 0; i < header.numReadonlySignerAccounts; i++) {\n accountMetas.push({\n address: message.staticAccounts[accountIndex],\n role: AccountRole.READONLY_SIGNER,\n });\n accountIndex++;\n }\n\n for (let i = 0; i < numWritableNonSignerAccounts; i++) {\n accountMetas.push({\n address: message.staticAccounts[accountIndex],\n role: AccountRole.WRITABLE,\n });\n accountIndex++;\n }\n\n for (let i = 0; i < header.numReadonlyNonSignerAccounts; i++) {\n accountMetas.push({\n address: message.staticAccounts[accountIndex],\n role: AccountRole.READONLY,\n });\n accountIndex++;\n }\n\n return accountMetas;\n}\n\nfunction getAddressLookupMetas(\n compiledAddressTableLookups: ReturnType<typeof getCompiledAddressTableLookups>,\n addressesByLookupTableAddress: AddressesByLookupTableAddress,\n): IAccountLookupMeta[] {\n // check that all message lookups are known\n const compiledAddressTableLookupAddresses = compiledAddressTableLookups.map(l => l.lookupTableAddress);\n const missing = compiledAddressTableLookupAddresses.filter(a => addressesByLookupTableAddress[a] === undefined);\n if (missing.length > 0) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING, {\n lookupTableAddresses: missing,\n });\n }\n\n const readOnlyMetas: IAccountLookupMeta[] = [];\n const writableMetas: IAccountLookupMeta[] = [];\n\n // we know that for each lookup, knownLookups[lookup.lookupTableAddress] is defined\n for (const lookup of compiledAddressTableLookups) {\n const addresses = addressesByLookupTableAddress[lookup.lookupTableAddress];\n\n const highestIndex = Math.max(...lookup.readableIndices, ...lookup.writableIndices);\n if (highestIndex >= addresses.length) {\n throw new SolanaError(\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE,\n {\n highestKnownIndex: addresses.length - 1,\n highestRequestedIndex: highestIndex,\n lookupTableAddress: lookup.lookupTableAddress,\n },\n );\n }\n\n const readOnlyForLookup: IAccountLookupMeta[] = lookup.readableIndices.map(r => ({\n address: addresses[r],\n addressIndex: r,\n lookupTableAddress: lookup.lookupTableAddress,\n role: AccountRole.READONLY,\n }));\n readOnlyMetas.push(...readOnlyForLookup);\n\n const writableForLookup: IAccountLookupMeta[] = lookup.writableIndices.map(w => ({\n address: addresses[w],\n addressIndex: w,\n lookupTableAddress: lookup.lookupTableAddress,\n role: AccountRole.WRITABLE,\n }));\n writableMetas.push(...writableForLookup);\n }\n\n return [...writableMetas, ...readOnlyMetas];\n}\n\nfunction convertInstruction(\n instruction: CompiledTransactionMessage['instructions'][0],\n accountMetas: IAccountMeta[],\n): IInstruction {\n const programAddress = accountMetas[instruction.programAddressIndex]?.address;\n if (!programAddress) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND, {\n index: instruction.programAddressIndex,\n });\n }\n\n const accounts = instruction.accountIndices?.map(accountIndex => accountMetas[accountIndex]);\n const { data } = instruction;\n\n return Object.freeze({\n programAddress,\n ...(accounts && accounts.length ? { accounts: Object.freeze(accounts) } : {}),\n ...(data && data.length ? { data } : {}),\n });\n}\n\ntype LifetimeConstraint =\n | {\n blockhash: Blockhash;\n lastValidBlockHeight: bigint;\n }\n | {\n nonce: Nonce;\n nonceAccountAddress: Address;\n nonceAuthorityAddress: Address;\n };\n\nfunction getLifetimeConstraint(\n messageLifetimeToken: string,\n firstInstruction?: IInstruction,\n lastValidBlockHeight?: bigint,\n): LifetimeConstraint {\n if (!firstInstruction || !isAdvanceNonceAccountInstruction(firstInstruction)) {\n // first instruction is not advance durable nonce, so use blockhash lifetime constraint\n return {\n blockhash: messageLifetimeToken as Blockhash,\n lastValidBlockHeight: lastValidBlockHeight ?? 2n ** 64n - 1n, // U64 MAX\n };\n } else {\n // We know these accounts are defined because we checked `isAdvanceNonceAccountInstruction`\n const nonceAccountAddress = firstInstruction.accounts[0].address;\n assertIsAddress(nonceAccountAddress);\n\n const nonceAuthorityAddress = firstInstruction.accounts[2].address;\n assertIsAddress(nonceAuthorityAddress);\n\n return {\n nonce: messageLifetimeToken as Nonce,\n nonceAccountAddress,\n nonceAuthorityAddress,\n };\n }\n}\n\nexport type DecompileTransactionMessageConfig = {\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n lastValidBlockHeight?: bigint;\n};\n\nexport function decompileTransactionMessage(\n compiledTransactionMessage: CompiledTransactionMessage,\n config?: DecompileTransactionMessageConfig,\n): CompilableTransactionMessage {\n const feePayer = compiledTransactionMessage.staticAccounts[0];\n if (!feePayer) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING);\n }\n\n const accountMetas = getAccountMetas(compiledTransactionMessage);\n const accountLookupMetas =\n 'addressTableLookups' in compiledTransactionMessage &&\n compiledTransactionMessage.addressTableLookups !== undefined &&\n compiledTransactionMessage.addressTableLookups.length > 0\n ? getAddressLookupMetas(\n compiledTransactionMessage.addressTableLookups,\n config?.addressesByLookupTableAddress ?? {},\n )\n : [];\n const transactionMetas = [...accountMetas, ...accountLookupMetas];\n\n const instructions: IInstruction[] = compiledTransactionMessage.instructions.map(compiledInstruction =>\n convertInstruction(compiledInstruction, transactionMetas),\n );\n\n const firstInstruction = instructions[0];\n const lifetimeConstraint = getLifetimeConstraint(\n compiledTransactionMessage.lifetimeToken,\n firstInstruction,\n config?.lastValidBlockHeight,\n );\n\n return pipe(\n createTransactionMessage({ version: compiledTransactionMessage.version as TransactionVersion }),\n tx => setTransactionMessageFeePayer(feePayer, tx),\n tx =>\n instructions.reduce((acc, instruction) => {\n return appendTransactionMessageInstruction(instruction, acc);\n }, tx),\n tx =>\n 'blockhash' in lifetimeConstraint\n ? setTransactionMessageLifetimeUsingBlockhash(lifetimeConstraint, tx)\n : setTransactionMessageLifetimeUsingDurableNonce(lifetimeConstraint, tx),\n );\n}\n","import { fixEncoderSize, transformEncoder, VariableSizeEncoder } from '@solana/codecs-core';\nimport { getArrayEncoder, getBytesEncoder } from '@solana/codecs-data-structures';\nimport { getShortU16Encoder } from '@solana/codecs-numbers';\nimport { SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\n\nimport { SignaturesMap } from '../transaction';\n\nfunction getSignaturesToEncode(signaturesMap: SignaturesMap): SignatureBytes[] {\n const signatures = Object.values(signaturesMap);\n if (signatures.length === 0) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES);\n }\n\n return signatures.map(signature => {\n if (!signature) {\n return new Uint8Array(64).fill(0) as SignatureBytes;\n }\n return signature;\n });\n}\n\nexport function getSignaturesEncoder(): VariableSizeEncoder<SignaturesMap> {\n return transformEncoder(\n getArrayEncoder(fixEncoderSize(getBytesEncoder(), 64), { size: getShortU16Encoder() }),\n getSignaturesToEncode,\n );\n}\n","import { getAddressDecoder } from '@solana/addresses';\nimport {\n combineCodec,\n fixDecoderSize,\n padRightDecoder,\n ReadonlyUint8Array,\n transformDecoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n getArrayDecoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n} from '@solana/codecs-data-structures';\nimport { getShortU16Decoder, getU8Decoder } from '@solana/codecs-numbers';\nimport { SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getTransactionVersionDecoder } from '@solana/transaction-messages';\n\nimport { SignaturesMap, Transaction, TransactionMessageBytes } from '../transaction';\nimport { getSignaturesEncoder } from './signatures-encoder';\n\nexport function getTransactionEncoder(): VariableSizeEncoder<Transaction> {\n return getStructEncoder([\n ['signatures', getSignaturesEncoder()],\n ['messageBytes', getBytesEncoder()],\n ]);\n}\n\nexport function getTransactionDecoder(): VariableSizeDecoder<Transaction> {\n return transformDecoder(\n getStructDecoder([\n ['signatures', getArrayDecoder(fixDecoderSize(getBytesDecoder(), 64), { size: getShortU16Decoder() })],\n ['messageBytes', getBytesDecoder()],\n ]),\n decodePartiallyDecodedTransaction,\n );\n}\n\nexport function getTransactionCodec(): VariableSizeCodec<Transaction> {\n return combineCodec(getTransactionEncoder(), getTransactionDecoder());\n}\n\ntype PartiallyDecodedTransaction = {\n messageBytes: ReadonlyUint8Array;\n signatures: ReadonlyUint8Array[];\n};\n\nfunction decodePartiallyDecodedTransaction(transaction: PartiallyDecodedTransaction): Transaction {\n const { messageBytes, signatures } = transaction;\n\n /*\n Relevant message structure is at the start:\n - transaction version (0 bytes for legacy transactions, 1 byte for versioned transactions)\n - `numRequiredSignatures` (1 byte, we verify this matches the length of signatures)\n - `numReadOnlySignedAccounts` (1 byte, not used here)\n - `numReadOnlyUnsignedAccounts` (1 byte, not used here)\n - static addresses, with signers first. This is an array of addresses, prefixed with a short-u16 length\n */\n\n const signerAddressesDecoder = getTupleDecoder([\n // read transaction version\n getTransactionVersionDecoder(),\n // read first byte of header, `numSignerAccounts`\n // padRight to skip the next 2 bytes, `numReadOnlySignedAccounts` and `numReadOnlyUnsignedAccounts` which we don't need\n padRightDecoder(getU8Decoder(), 2),\n // read static addresses\n getArrayDecoder(getAddressDecoder(), { size: getShortU16Decoder() }),\n ]);\n const [_txVersion, numRequiredSignatures, staticAddresses] = signerAddressesDecoder.decode(messageBytes);\n\n const signerAddresses = staticAddresses.slice(0, numRequiredSignatures);\n\n // signer addresses and signatures must be the same length\n // we encode an all-zero signature when the signature is missing\n if (signerAddresses.length !== signatures.length) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH, {\n numRequiredSignatures,\n signaturesLength: signatures.length,\n signerAddresses,\n });\n }\n\n // combine the signer addresses + signatures into the signatures map\n const signaturesMap: SignaturesMap = {};\n signerAddresses.forEach((address, index) => {\n const signatureForAddress = signatures[index];\n if (signatureForAddress.every(b => b === 0)) {\n signaturesMap[address] = null;\n } else {\n signaturesMap[address] = signatureForAddress as SignatureBytes;\n }\n });\n\n return {\n messageBytes: messageBytes as TransactionMessageBytes,\n signatures: Object.freeze(signaturesMap),\n };\n}\n","import {\n CompilableTransactionMessage,\n compileTransactionMessage,\n getCompiledTransactionMessageEncoder,\n isTransactionMessageWithBlockhashLifetime,\n TransactionMessageWithBlockhashLifetime,\n TransactionMessageWithDurableNonceLifetime,\n} from '@solana/transaction-messages';\n\nimport {\n TransactionWithBlockhashLifetime,\n TransactionWithDurableNonceLifetime,\n TransactionWithLifetime,\n} from './lifetime';\nimport { SignaturesMap, Transaction, TransactionMessageBytes } from './transaction';\n\nexport function compileTransaction(\n transactionMessage: CompilableTransactionMessage & TransactionMessageWithBlockhashLifetime,\n): Readonly<Transaction & TransactionWithBlockhashLifetime>;\n\nexport function compileTransaction(\n transactionMessage: CompilableTransactionMessage & TransactionMessageWithDurableNonceLifetime,\n): Readonly<Transaction & TransactionWithDurableNonceLifetime>;\n\nexport function compileTransaction(\n transactionMessage: CompilableTransactionMessage,\n): Readonly<Transaction & TransactionWithLifetime>;\n\nexport function compileTransaction(\n transactionMessage: CompilableTransactionMessage,\n): Readonly<Transaction & TransactionWithLifetime> {\n const compiledMessage = compileTransactionMessage(transactionMessage);\n const messageBytes = getCompiledTransactionMessageEncoder().encode(compiledMessage) as TransactionMessageBytes;\n\n const transactionSigners = compiledMessage.staticAccounts.slice(0, compiledMessage.header.numSignerAccounts);\n const signatures: SignaturesMap = {};\n for (const signerAddress of transactionSigners) {\n signatures[signerAddress] = null;\n }\n\n let lifetimeConstraint: TransactionWithLifetime['lifetimeConstraint'];\n if (isTransactionMessageWithBlockhashLifetime(transactionMessage)) {\n lifetimeConstraint = {\n blockhash: transactionMessage.lifetimeConstraint.blockhash,\n lastValidBlockHeight: transactionMessage.lifetimeConstraint.lastValidBlockHeight,\n };\n } else {\n lifetimeConstraint = {\n nonce: transactionMessage.lifetimeConstraint.nonce,\n nonceAccountAddress: transactionMessage.instructions[0].accounts[0].address,\n };\n }\n\n const transaction: Transaction & TransactionWithLifetime = {\n lifetimeConstraint,\n messageBytes: messageBytes,\n signatures: Object.freeze(signatures),\n };\n\n return Object.freeze(transaction);\n}\n","import { Address, getAddressFromPublicKey } from '@solana/addresses';\nimport { Decoder } from '@solana/codecs-core';\nimport { getBase58Decoder } from '@solana/codecs-strings';\nimport {\n SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION,\n SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING,\n SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING,\n SolanaError,\n} from '@solana/errors';\nimport { Signature, SignatureBytes, signBytes } from '@solana/keys';\n\nimport { Transaction } from './transaction';\n\nexport interface FullySignedTransaction extends Transaction {\n readonly __brand: unique symbol;\n}\n\nlet base58Decoder: Decoder<string> | undefined;\n\nexport function getSignatureFromTransaction(transaction: Transaction): Signature {\n if (!base58Decoder) base58Decoder = getBase58Decoder();\n\n // We have ordered signatures from the compiled message accounts\n // first signature is the fee payer\n const signatureBytes = Object.values(transaction.signatures)[0];\n if (!signatureBytes) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING);\n }\n const transactionSignature = base58Decoder.decode(signatureBytes);\n return transactionSignature as Signature;\n}\n\nfunction uint8ArraysEqual(arr1: Uint8Array, arr2: Uint8Array) {\n return arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]);\n}\n\nexport async function partiallySignTransaction<T extends Transaction>(\n keyPairs: CryptoKeyPair[],\n transaction: T,\n): Promise<T> {\n let newSignatures: Record<Address, SignatureBytes> | undefined;\n let unexpectedSigners: Set<Address> | undefined;\n\n await Promise.all(\n keyPairs.map(async keyPair => {\n const address = await getAddressFromPublicKey(keyPair.publicKey);\n const existingSignature = transaction.signatures[address];\n\n // Check if the address is expected to sign the transaction\n if (existingSignature === undefined) {\n // address is not an expected signer for this transaction\n unexpectedSigners ||= new Set();\n unexpectedSigners.add(address);\n return;\n }\n\n // Return if there are any unexpected signers already since we won't be using signatures\n if (unexpectedSigners) {\n return;\n }\n\n const newSignature = await signBytes(keyPair.privateKey, transaction.messageBytes);\n\n if (existingSignature !== null && uint8ArraysEqual(newSignature, existingSignature)) {\n // already have the same signature set\n return;\n }\n\n newSignatures ||= {};\n newSignatures[address] = newSignature;\n }),\n );\n\n if (unexpectedSigners && unexpectedSigners.size > 0) {\n const expectedSigners = Object.keys(transaction.signatures);\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION, {\n expectedAddresses: expectedSigners,\n unexpectedAddresses: [...unexpectedSigners],\n });\n }\n\n if (!newSignatures) {\n return transaction;\n }\n\n return Object.freeze({\n ...transaction,\n signatures: Object.freeze({\n ...transaction.signatures,\n ...newSignatures,\n }),\n });\n}\n\nexport async function signTransaction<T extends Transaction>(\n keyPairs: CryptoKeyPair[],\n transaction: T,\n): Promise<FullySignedTransaction & T> {\n const out = await partiallySignTransaction(keyPairs, transaction);\n assertTransactionIsFullySigned(out);\n Object.freeze(out);\n return out;\n}\n\nexport function assertTransactionIsFullySigned(\n transaction: Transaction,\n): asserts transaction is FullySignedTransaction {\n const missingSigs: Address[] = [];\n Object.entries(transaction.signatures).forEach(([address, signatureBytes]) => {\n if (!signatureBytes) {\n missingSigs.push(address as Address);\n }\n });\n\n if (missingSigs.length > 0) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING, {\n addresses: missingSigs,\n });\n }\n}\n","import { getBase64Decoder } from '@solana/codecs-strings';\n\nimport { getTransactionEncoder } from './codecs';\nimport { Transaction } from './transaction';\n\nexport type Base64EncodedWireTransaction = string & {\n readonly __brand: unique symbol;\n};\n\nexport function getBase64EncodedWireTransaction(transaction: Transaction): Base64EncodedWireTransaction {\n const wireTransactionBytes = getTransactionEncoder().encode(transaction);\n return getBase64Decoder().decode(wireTransactionBytes) as Base64EncodedWireTransaction;\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS, SolanaError } from '@solana/errors';\n\nimport { MessageSigner } from './message-signer';\nimport { TransactionSigner } from './transaction-signer';\n\n/** Removes all duplicated signers from a provided array by comparing their addresses. */\nexport function deduplicateSigners<TSigner extends MessageSigner | TransactionSigner>(\n signers: readonly TSigner[],\n): readonly TSigner[] {\n const deduplicated: Record<Address, TSigner> = {};\n signers.forEach(signer => {\n if (!deduplicated[signer.address]) {\n deduplicated[signer.address] = signer;\n } else if (deduplicated[signer.address] !== signer) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS, {\n address: signer.address,\n });\n }\n });\n return Object.values(deduplicated);\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER, SolanaError } from '@solana/errors';\nimport { Transaction } from '@solana/transactions';\n\nimport { BaseTransactionSignerConfig } from './types';\n\nexport type TransactionModifyingSignerConfig = BaseTransactionSignerConfig;\n\n/** Defines a signer capable of signing transactions. */\nexport type TransactionModifyingSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n modifyAndSignTransactions<T extends Transaction>(\n transactions: readonly T[],\n config?: TransactionModifyingSignerConfig,\n ): Promise<readonly T[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link TransactionModifyingSigner} interface. */\nexport function isTransactionModifyingSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is TransactionModifyingSigner<TAddress> {\n return 'modifyAndSignTransactions' in value && typeof value.modifyAndSignTransactions === 'function';\n}\n\n/** Asserts that the provided value implements the {@link TransactionModifyingSigner} interface. */\nexport function assertIsTransactionModifyingSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is TransactionModifyingSigner<TAddress> {\n if (!isTransactionModifyingSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER, SolanaError } from '@solana/errors';\nimport { Transaction } from '@solana/transactions';\n\nimport { BaseTransactionSignerConfig, SignatureDictionary } from './types';\n\nexport type TransactionPartialSignerConfig = BaseTransactionSignerConfig;\n\n/** Defines a signer capable of signing transactions. */\nexport type TransactionPartialSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n signTransactions(\n transactions: readonly Transaction[],\n config?: TransactionPartialSignerConfig,\n ): Promise<readonly SignatureDictionary[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link TransactionPartialSigner} interface. */\nexport function isTransactionPartialSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is TransactionPartialSigner<TAddress> {\n return 'signTransactions' in value && typeof value.signTransactions === 'function';\n}\n\n/** Asserts that the provided value implements the {@link TransactionPartialSigner} interface. */\nexport function assertIsTransactionPartialSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is TransactionPartialSigner<TAddress> {\n if (!isTransactionPartialSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { Transaction } from '@solana/transactions';\n\nimport { BaseTransactionSignerConfig } from './types';\n\nexport type TransactionSendingSignerConfig = BaseTransactionSignerConfig;\n\n/** Defines a signer capable of signing and sending transactions simultaneously. */\nexport type TransactionSendingSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n signAndSendTransactions(\n transactions: readonly Transaction[],\n config?: TransactionSendingSignerConfig,\n ): Promise<readonly SignatureBytes[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link TransactionSendingSigner} interface. */\nexport function isTransactionSendingSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is TransactionSendingSigner<TAddress> {\n return 'signAndSendTransactions' in value && typeof value.signAndSendTransactions === 'function';\n}\n\n/** Asserts that the provided value implements the {@link TransactionSendingSigner} interface. */\nexport function assertIsTransactionSendingSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is TransactionSendingSigner<TAddress> {\n if (!isTransactionSendingSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER, SolanaError } from '@solana/errors';\n\nimport { isTransactionModifyingSigner, TransactionModifyingSigner } from './transaction-modifying-signer';\nimport { isTransactionPartialSigner, TransactionPartialSigner } from './transaction-partial-signer';\nimport { isTransactionSendingSigner, TransactionSendingSigner } from './transaction-sending-signer';\n\n/** Defines a signer capable of signing transactions. */\nexport type TransactionSigner<TAddress extends string = string> =\n | TransactionModifyingSigner<TAddress>\n | TransactionPartialSigner<TAddress>\n | TransactionSendingSigner<TAddress>;\n\n/** Checks whether the provided value implements the {@link TransactionSigner} interface. */\nexport function isTransactionSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is TransactionSigner<TAddress> {\n return (\n isTransactionPartialSigner(value) || isTransactionModifyingSigner(value) || isTransactionSendingSigner(value)\n );\n}\n\n/** Asserts that the provided value implements the {@link TransactionSigner} interface. */\nexport function assertIsTransactionSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is TransactionSigner<TAddress> {\n if (!isTransactionSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { AccountRole, IAccountLookupMeta, IAccountMeta, IInstruction } from '@solana/instructions';\nimport {\n BaseTransactionMessage,\n ITransactionMessageWithFeePayer,\n TransactionVersion,\n} from '@solana/transaction-messages';\n\nimport { deduplicateSigners } from './deduplicate-signers';\nimport { ITransactionMessageWithFeePayerSigner } from './fee-payer-signer';\nimport { isTransactionSigner, TransactionSigner } from './transaction-signer';\n\n/** An extension of the IAccountMeta type that keeps track of its transaction signer. */\nexport interface IAccountSignerMeta<\n TAddress extends string = string,\n TSigner extends TransactionSigner<TAddress> = TransactionSigner<TAddress>,\n> extends IAccountMeta<TAddress> {\n readonly role: AccountRole.READONLY_SIGNER | AccountRole.WRITABLE_SIGNER;\n readonly signer: TSigner;\n}\n\ntype IAccountMetaWithSigner<TSigner extends TransactionSigner = TransactionSigner> =\n | IAccountLookupMeta\n | IAccountMeta\n | IAccountSignerMeta<string, TSigner>;\n\n/** A variation of the instruction type that allows IAccountSignerMeta in its account metas. */\nexport type IInstructionWithSigners<\n TSigner extends TransactionSigner = TransactionSigner,\n TAccounts extends readonly IAccountMetaWithSigner<TSigner>[] = readonly IAccountMetaWithSigner<TSigner>[],\n> = Pick<IInstruction<string, TAccounts>, 'accounts'>;\n\n/** A variation of the transaction message type that allows IAccountSignerMeta in its account metas. */\nexport type ITransactionMessageWithSigners<\n TAddress extends string = string,\n TSigner extends TransactionSigner<TAddress> = TransactionSigner<TAddress>,\n TAccounts extends readonly IAccountMetaWithSigner<TSigner>[] = readonly IAccountMetaWithSigner<TSigner>[],\n> = Partial<ITransactionMessageWithFeePayer<TAddress> | ITransactionMessageWithFeePayerSigner<TAddress, TSigner>> &\n Pick<\n BaseTransactionMessage<TransactionVersion, IInstruction & IInstructionWithSigners<TSigner, TAccounts>>,\n 'instructions'\n >;\n\n/** Extract all signers from an instruction that may contain IAccountSignerMeta accounts. */\nexport function getSignersFromInstruction<TSigner extends TransactionSigner = TransactionSigner>(\n instruction: IInstructionWithSigners<TSigner>,\n): readonly TSigner[] {\n return deduplicateSigners(\n (instruction.accounts ?? []).flatMap(account => ('signer' in account ? account.signer : [])),\n );\n}\n\n/** Extract all signers from a transaction message that may contain IAccountSignerMeta accounts. */\nexport function getSignersFromTransactionMessage<\n TAddress extends string = string,\n TSigner extends TransactionSigner<TAddress> = TransactionSigner<TAddress>,\n TTransactionMessage extends ITransactionMessageWithSigners<TAddress, TSigner> = ITransactionMessageWithSigners<\n TAddress,\n TSigner\n >,\n>(transaction: TTransactionMessage): readonly TSigner[] {\n return deduplicateSigners([\n ...(transaction.feePayer && isTransactionSigner(transaction.feePayer) ? [transaction.feePayer as TSigner] : []),\n ...transaction.instructions.flatMap(getSignersFromInstruction),\n ]);\n}\n","import { IInstruction, isSignerRole } from '@solana/instructions';\nimport { BaseTransactionMessage } from '@solana/transaction-messages';\n\nimport { IAccountSignerMeta, IInstructionWithSigners, ITransactionMessageWithSigners } from './account-signer-meta';\nimport { deduplicateSigners } from './deduplicate-signers';\nimport { TransactionSigner } from './transaction-signer';\n\n/** Attaches the provided signers to the account metas of an instruction when applicable. */\nexport function addSignersToInstruction<TInstruction extends IInstruction>(\n signers: TransactionSigner[],\n instruction: TInstruction | (IInstructionWithSigners & TInstruction),\n): IInstructionWithSigners & TInstruction {\n if (!instruction.accounts || instruction.accounts.length === 0) {\n return instruction as IInstructionWithSigners & TInstruction;\n }\n\n const signerByAddress = new Map(deduplicateSigners(signers).map(signer => [signer.address, signer]));\n return Object.freeze({\n ...instruction,\n accounts: instruction.accounts.map(account => {\n const signer = signerByAddress.get(account.address);\n if (!isSignerRole(account.role) || 'signer' in account || !signer) {\n return account;\n }\n return Object.freeze({ ...account, signer } as IAccountSignerMeta);\n }),\n });\n}\n\n/** Attaches the provided signers to the account metas of a transaction message when applicable. */\nexport function addSignersToTransactionMessage<TTransactionMessage extends BaseTransactionMessage>(\n signers: TransactionSigner[],\n transactionMessage: TTransactionMessage | (ITransactionMessageWithSigners & TTransactionMessage),\n): ITransactionMessageWithSigners & TTransactionMessage {\n if (transactionMessage.instructions.length === 0) {\n return transactionMessage as ITransactionMessageWithSigners & TTransactionMessage;\n }\n\n return Object.freeze({\n ...transactionMessage,\n instructions: transactionMessage.instructions.map(instruction => addSignersToInstruction(signers, instruction)),\n });\n}\n","import { BaseTransactionMessage, ITransactionMessageWithFeePayer } from '@solana/transaction-messages';\n\nimport { TransactionSigner } from './transaction-signer';\n\nexport interface ITransactionMessageWithFeePayerSigner<\n TAddress extends string = string,\n TSigner extends TransactionSigner<TAddress> = TransactionSigner<TAddress>,\n> {\n readonly feePayer: TSigner;\n}\n\nexport function setTransactionMessageFeePayerSigner<\n TFeePayerAddress extends string,\n TTransactionMessage extends BaseTransactionMessage &\n Partial<ITransactionMessageWithFeePayer | ITransactionMessageWithFeePayerSigner>,\n>(\n feePayer: TransactionSigner<TFeePayerAddress>,\n transactionMessage: TTransactionMessage,\n): ITransactionMessageWithFeePayerSigner<TFeePayerAddress> & Omit<TTransactionMessage, 'feePayer'> {\n Object.freeze(feePayer);\n const out = { ...transactionMessage, feePayer };\n Object.freeze(out);\n return out;\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER, SolanaError } from '@solana/errors';\n\nimport { SignableMessage } from './signable-message';\nimport { BaseSignerConfig, SignatureDictionary } from './types';\n\nexport type MessagePartialSignerConfig = BaseSignerConfig;\n\n/** Defines a signer capable of signing messages. */\nexport type MessagePartialSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n signMessages(\n messages: readonly SignableMessage[],\n config?: MessagePartialSignerConfig,\n ): Promise<readonly SignatureDictionary[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link MessagePartialSigner} interface. */\nexport function isMessagePartialSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is MessagePartialSigner<TAddress> {\n return 'signMessages' in value && typeof value.signMessages === 'function';\n}\n\n/** Asserts that the provided value implements the {@link MessagePartialSigner} interface. */\nexport function assertIsMessagePartialSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is MessagePartialSigner<TAddress> {\n if (!isMessagePartialSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { Address, getAddressFromPublicKey } from '@solana/addresses';\nimport { ReadonlyUint8Array } from '@solana/codecs-core';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER, SolanaError } from '@solana/errors';\nimport { createKeyPairFromBytes, createKeyPairFromPrivateKeyBytes, generateKeyPair, signBytes } from '@solana/keys';\nimport { partiallySignTransaction } from '@solana/transactions';\n\nimport { isMessagePartialSigner, MessagePartialSigner } from './message-partial-signer';\nimport { isTransactionPartialSigner, TransactionPartialSigner } from './transaction-partial-signer';\n\n/** Defines a signer capable of signing messages and transactions using a CryptoKeyPair. */\nexport type KeyPairSigner<TAddress extends string = string> = MessagePartialSigner<TAddress> &\n TransactionPartialSigner<TAddress> & { keyPair: CryptoKeyPair };\n\n/** Checks whether the provided value implements the {@link KeyPairSigner} interface. */\nexport function isKeyPairSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is KeyPairSigner<TAddress> {\n return (\n 'keyPair' in value &&\n typeof value.keyPair === 'object' &&\n isMessagePartialSigner(value) &&\n isTransactionPartialSigner(value)\n );\n}\n\n/** Asserts that the provided value implements the {@link KeyPairSigner} interface. */\nexport function assertIsKeyPairSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is KeyPairSigner<TAddress> {\n if (!isKeyPairSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER, {\n address: value.address,\n });\n }\n}\n\n/** Creates a KeyPairSigner from the provided Crypto KeyPair. */\nexport async function createSignerFromKeyPair(keyPair: CryptoKeyPair): Promise<KeyPairSigner> {\n const address = await getAddressFromPublicKey(keyPair.publicKey);\n const out: KeyPairSigner = {\n address,\n keyPair,\n signMessages: messages =>\n Promise.all(\n messages.map(async message =>\n Object.freeze({ [address]: await signBytes(keyPair.privateKey, message.content) }),\n ),\n ),\n signTransactions: transactions =>\n Promise.all(\n transactions.map(async transaction => {\n const signedTransaction = await partiallySignTransaction([keyPair], transaction);\n // we know that the address has signed `signedTransaction` because it comes from the keypair\n return Object.freeze({ [address]: signedTransaction.signatures[address]! });\n }),\n ),\n };\n\n return Object.freeze(out);\n}\n\n/** Securely generates a signer capable of signing messages and transactions using a Crypto KeyPair. */\nexport async function generateKeyPairSigner(): Promise<KeyPairSigner> {\n return await createSignerFromKeyPair(await generateKeyPair());\n}\n\n/** Creates a signer capable of signing messages and transactions using the 64 bytes of a KeyPair. */\nexport async function createKeyPairSignerFromBytes(\n bytes: ReadonlyUint8Array,\n extractable?: boolean,\n): Promise<KeyPairSigner> {\n return await createSignerFromKeyPair(await createKeyPairFromBytes(bytes, extractable));\n}\n\n/** Creates a signer capable of signing messages and transactions using the 32 bytes of a private key. */\nexport async function createKeyPairSignerFromPrivateKeyBytes(\n bytes: ReadonlyUint8Array,\n extractable?: boolean,\n): Promise<KeyPairSigner> {\n return await createSignerFromKeyPair(await createKeyPairFromPrivateKeyBytes(bytes, extractable));\n}\n","import { Address, isAddress } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER, SolanaError } from '@solana/errors';\n\nimport { SignableMessage } from './signable-message';\nimport { BaseSignerConfig } from './types';\n\nexport type MessageModifyingSignerConfig = BaseSignerConfig;\n\n/** Defines a signer capable of signing messages. */\nexport type MessageModifyingSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n modifyAndSignMessages(\n messages: readonly SignableMessage[],\n config?: MessageModifyingSignerConfig,\n ): Promise<readonly SignableMessage[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link MessageModifyingSigner} interface. */\nexport function isMessageModifyingSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is MessageModifyingSigner<TAddress> {\n return (\n isAddress(value.address) &&\n 'modifyAndSignMessages' in value &&\n typeof value.modifyAndSignMessages === 'function'\n );\n}\n\n/** Asserts that the provided value implements the {@link MessageModifyingSigner} interface. */\nexport function assertIsMessageModifyingSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is MessageModifyingSigner<TAddress> {\n if (!isMessageModifyingSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER, SolanaError } from '@solana/errors';\n\nimport { isMessageModifyingSigner, MessageModifyingSigner } from './message-modifying-signer';\nimport { isMessagePartialSigner, MessagePartialSigner } from './message-partial-signer';\n\n/** Defines a signer capable of signing messages. */\nexport type MessageSigner<TAddress extends string = string> =\n | MessageModifyingSigner<TAddress>\n | MessagePartialSigner<TAddress>;\n\n/** Checks whether the provided value implements the {@link MessageSigner} interface. */\nexport function isMessageSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): value is MessageSigner<TAddress> {\n return isMessagePartialSigner(value) || isMessageModifyingSigner(value);\n}\n\n/** Asserts that the provided value implements the {@link MessageSigner} interface. */\nexport function assertIsMessageSigner<TAddress extends string>(value: {\n [key: string]: unknown;\n address: Address<TAddress>;\n}): asserts value is MessageSigner<TAddress> {\n if (!isMessageSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER, {\n address: value.address,\n });\n }\n}\n","import { Address } from '@solana/addresses';\n\nimport { MessagePartialSigner } from './message-partial-signer';\nimport { TransactionPartialSigner } from './transaction-partial-signer';\n\n/** Defines a no-operation signer that pretends to partially sign messages and transactions. */\nexport type NoopSigner<TAddress extends string = string> = MessagePartialSigner<TAddress> &\n TransactionPartialSigner<TAddress>;\n\n/** Creates a NoopSigner from the provided Address. */\nexport function createNoopSigner(address: Address): NoopSigner {\n const out: NoopSigner = {\n address,\n signMessages: messages => Promise.resolve(messages.map(() => Object.freeze({}))),\n signTransactions: transactions => Promise.resolve(transactions.map(() => Object.freeze({}))),\n };\n\n return Object.freeze(out);\n}\n","import {\n SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS,\n SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING,\n SolanaError,\n} from '@solana/errors';\nimport { CompilableTransactionMessage } from '@solana/transaction-messages';\n\nimport { getSignersFromTransactionMessage, ITransactionMessageWithSigners } from './account-signer-meta';\nimport { isTransactionModifyingSigner } from './transaction-modifying-signer';\nimport { isTransactionPartialSigner } from './transaction-partial-signer';\nimport { isTransactionSendingSigner } from './transaction-sending-signer';\n\n/** Defines a transaction message with exactly one {@link TransactionSendingSigner}. */\nexport type ITransactionMessageWithSingleSendingSigner = ITransactionMessageWithSigners & {\n readonly __transactionWithSingleSendingSigner: unique symbol;\n};\n\n/** Checks whether the provided transaction has exactly one {@link TransactionSendingSigner}. */\nexport function isTransactionMessageWithSingleSendingSigner<TTransactionMessage extends CompilableTransactionMessage>(\n transaction: TTransactionMessage,\n): transaction is ITransactionMessageWithSingleSendingSigner & TTransactionMessage {\n try {\n assertIsTransactionMessageWithSingleSendingSigner(transaction);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Asserts that the provided transaction has exactly one {@link TransactionSendingSigner}. */\nexport function assertIsTransactionMessageWithSingleSendingSigner<\n TTransactionMessage extends CompilableTransactionMessage,\n>(\n transaction: TTransactionMessage,\n): asserts transaction is ITransactionMessageWithSingleSendingSigner & TTransactionMessage {\n const signers = getSignersFromTransactionMessage(transaction);\n const sendingSigners = signers.filter(isTransactionSendingSigner);\n\n if (sendingSigners.length === 0) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING);\n }\n\n // When identifying if there are multiple sending signers, we only need to check for\n // sending signers that do not implement other transaction signer interfaces as\n // they will be used as these other signer interfaces in case of a conflict.\n const sendingOnlySigners = sendingSigners.filter(\n signer => !isTransactionPartialSigner(signer) && !isTransactionModifyingSigner(signer),\n );\n\n if (sendingOnlySigners.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS);\n }\n}\n","import { SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport {\n CompilableTransactionMessage,\n TransactionMessageWithBlockhashLifetime,\n TransactionMessageWithDurableNonceLifetime,\n} from '@solana/transaction-messages';\nimport {\n assertTransactionIsFullySigned,\n compileTransaction,\n FullySignedTransaction,\n Transaction,\n TransactionWithBlockhashLifetime,\n TransactionWithDurableNonceLifetime,\n TransactionWithLifetime,\n} from '@solana/transactions';\n\nimport { getSignersFromTransactionMessage, ITransactionMessageWithSigners } from './account-signer-meta';\nimport { deduplicateSigners } from './deduplicate-signers';\nimport {\n isTransactionModifyingSigner,\n TransactionModifyingSigner,\n TransactionModifyingSignerConfig,\n} from './transaction-modifying-signer';\nimport {\n isTransactionPartialSigner,\n TransactionPartialSigner,\n TransactionPartialSignerConfig,\n} from './transaction-partial-signer';\nimport {\n isTransactionSendingSigner,\n TransactionSendingSigner,\n TransactionSendingSignerConfig,\n} from './transaction-sending-signer';\nimport { isTransactionSigner, TransactionSigner } from './transaction-signer';\nimport { assertIsTransactionMessageWithSingleSendingSigner } from './transaction-with-single-sending-signer';\n\ntype CompilableTransactionMessageWithSigners = CompilableTransactionMessage & ITransactionMessageWithSigners;\n\n/**\n * Signs a transaction using any signers that may be stored in IAccountSignerMeta instruction accounts\n * as well as any signers provided explicitly to this function.\n * It will ignore TransactionSendingSigners since this function does not send the transaction.\n */\nexport async function partiallySignTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners &\n TransactionMessageWithBlockhashLifetime = CompilableTransactionMessageWithSigners &\n TransactionMessageWithBlockhashLifetime,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Transaction & TransactionWithBlockhashLifetime>;\n\nexport async function partiallySignTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners &\n TransactionMessageWithDurableNonceLifetime = CompilableTransactionMessageWithSigners &\n TransactionMessageWithDurableNonceLifetime,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<Transaction & TransactionWithDurableNonceLifetime>>;\n\nexport async function partiallySignTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners = CompilableTransactionMessageWithSigners,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<Transaction & TransactionWithLifetime>>;\n\nexport async function partiallySignTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners = CompilableTransactionMessageWithSigners,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<Transaction & TransactionWithLifetime>> {\n const { partialSigners, modifyingSigners } = categorizeTransactionSigners(\n deduplicateSigners(getSignersFromTransactionMessage(transactionMessage).filter(isTransactionSigner)),\n { identifySendingSigner: false },\n );\n\n return await signModifyingAndPartialTransactionSigners(\n transactionMessage,\n modifyingSigners,\n partialSigners,\n config,\n );\n}\n\n/**\n * Signs a transaction using any signers that may be stored in IAccountSignerMeta instruction accounts\n * as well as any signers provided explicitly to this function.\n * It will assert that the transaction is fully signed before returning.\n * It will ignore TransactionSendingSigners since this function does not send the transaction.\n */\nexport async function signTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners &\n TransactionMessageWithBlockhashLifetime = CompilableTransactionMessageWithSigners &\n TransactionMessageWithBlockhashLifetime,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<FullySignedTransaction & TransactionWithBlockhashLifetime>>;\n\nexport async function signTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners &\n TransactionMessageWithDurableNonceLifetime = CompilableTransactionMessageWithSigners &\n TransactionMessageWithDurableNonceLifetime,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<FullySignedTransaction & TransactionWithDurableNonceLifetime>>;\n\nexport async function signTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners = CompilableTransactionMessageWithSigners,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<FullySignedTransaction & TransactionWithLifetime>>;\n\nexport async function signTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners = CompilableTransactionMessageWithSigners,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise<Readonly<FullySignedTransaction & TransactionWithLifetime>> {\n const signedTransaction = await partiallySignTransactionMessageWithSigners(transactionMessage, config);\n assertTransactionIsFullySigned(signedTransaction);\n return signedTransaction;\n}\n\n/**\n * Signs and sends a transaction using any signers that may be stored in IAccountSignerMeta\n * instruction accounts as well as any signers provided explicitly to this function.\n * It will identify a single TransactionSendingSigners to use for sending the transaction, if any.\n * Otherwise, it will send the transaction using the provided fallbackSender.\n */\nexport async function signAndSendTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners = CompilableTransactionMessageWithSigners,\n>(transaction: TTransactionMessage, config?: TransactionSendingSignerConfig): Promise<SignatureBytes> {\n assertIsTransactionMessageWithSingleSendingSigner(transaction);\n\n const abortSignal = config?.abortSignal;\n const { partialSigners, modifyingSigners, sendingSigner } = categorizeTransactionSigners(\n deduplicateSigners(getSignersFromTransactionMessage(transaction).filter(isTransactionSigner)),\n );\n\n abortSignal?.throwIfAborted();\n const signedTransaction = await signModifyingAndPartialTransactionSigners(\n transaction,\n modifyingSigners,\n partialSigners,\n config,\n );\n\n if (!sendingSigner) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING);\n }\n\n abortSignal?.throwIfAborted();\n const [signature] = await sendingSigner.signAndSendTransactions([signedTransaction], config);\n abortSignal?.throwIfAborted();\n\n return signature;\n}\n\n/**\n * Identifies each provided TransactionSigner and categorizes them into their respective types.\n * When a signer implements multiple interface, it will try to used to most powerful interface\n * but fallback to the least powerful interface when necessary.\n * For instance, if a signer implements TransactionSendingSigner and TransactionModifyingSigner,\n * it will be categorized as a TransactionSendingSigner if and only if no other signers implement\n * the TransactionSendingSigner interface.\n */\nfunction categorizeTransactionSigners(\n signers: readonly TransactionSigner[],\n config: { identifySendingSigner?: boolean } = {},\n): Readonly<{\n modifyingSigners: readonly TransactionModifyingSigner[];\n partialSigners: readonly TransactionPartialSigner[];\n sendingSigner: TransactionSendingSigner | null;\n}> {\n // Identify the unique sending signer that should be used.\n const identifySendingSigner = config.identifySendingSigner ?? true;\n const sendingSigner = identifySendingSigner ? identifyTransactionSendingSigner(signers) : null;\n\n // Now, focus on the other signers.\n // I.e. the modifying or partial signers that are not the identified sending signer.\n // Note that any other sending only signers will be discarded.\n const otherSigners = signers.filter(\n (signer): signer is TransactionModifyingSigner | TransactionPartialSigner =>\n signer !== sendingSigner && (isTransactionModifyingSigner(signer) || isTransactionPartialSigner(signer)),\n );\n\n // Identify the modifying signers from the other signers.\n const modifyingSigners = identifyTransactionModifyingSigners(otherSigners);\n\n // Use any remaining signers as partial signers.\n const partialSigners = otherSigners\n .filter(isTransactionPartialSigner)\n .filter(signer => !(modifyingSigners as typeof otherSigners).includes(signer));\n\n return Object.freeze({ modifyingSigners, partialSigners, sendingSigner });\n}\n\n/** Identifies the best signer to use as a TransactionSendingSigner, if any */\nfunction identifyTransactionSendingSigner(signers: readonly TransactionSigner[]): TransactionSendingSigner | null {\n // Ensure there are any TransactionSendingSigners in the first place.\n const sendingSigners = signers.filter(isTransactionSendingSigner);\n if (sendingSigners.length === 0) return null;\n\n // Prefer sending signers that do not offer other interfaces.\n const sendingOnlySigners = sendingSigners.filter(\n signer => !isTransactionModifyingSigner(signer) && !isTransactionPartialSigner(signer),\n );\n if (sendingOnlySigners.length > 0) {\n return sendingOnlySigners[0];\n }\n\n // Otherwise, choose any sending signer.\n return sendingSigners[0];\n}\n\n/** Identifies the best signers to use as TransactionModifyingSigners, if any */\nfunction identifyTransactionModifyingSigners(\n signers: readonly (TransactionModifyingSigner | TransactionPartialSigner)[],\n): readonly TransactionModifyingSigner[] {\n // Ensure there are any TransactionModifyingSigner in the first place.\n const modifyingSigners = signers.filter(isTransactionModifyingSigner);\n if (modifyingSigners.length === 0) return [];\n\n // Prefer modifying signers that do not offer partial signing.\n const nonPartialSigners = modifyingSigners.filter(signer => !isTransactionPartialSigner(signer));\n if (nonPartialSigners.length > 0) return nonPartialSigners;\n\n // Otherwise, choose only one modifying signer (whichever).\n return [modifyingSigners[0]];\n}\n\n/**\n * Signs a transaction using the provided TransactionModifyingSigners\n * sequentially followed by the TransactionPartialSigners in parallel.\n */\nasync function signModifyingAndPartialTransactionSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners = CompilableTransactionMessageWithSigners,\n>(\n transactionMessage: TTransactionMessage,\n modifyingSigners: readonly TransactionModifyingSigner[] = [],\n partialSigners: readonly TransactionPartialSigner[] = [],\n config?: TransactionModifyingSignerConfig,\n): Promise<Readonly<Transaction & TransactionWithLifetime>> {\n // serialize the transaction\n const transaction = compileTransaction(transactionMessage);\n\n // Handle modifying signers sequentially.\n const modifiedTransaction = await modifyingSigners.reduce(\n async (transaction, modifyingSigner) => {\n config?.abortSignal?.throwIfAborted();\n const [tx] = await modifyingSigner.modifyAndSignTransactions([await transaction], config);\n return Object.freeze(tx);\n },\n Promise.resolve(transaction) as Promise<Readonly<Transaction & TransactionWithLifetime>>,\n );\n\n // Handle partial signers in parallel.\n config?.abortSignal?.throwIfAborted();\n const signatureDictionaries = await Promise.all(\n partialSigners.map(async partialSigner => {\n const [signatures] = await partialSigner.signTransactions([modifiedTransaction], config);\n return signatures;\n }),\n );\n const signedTransaction: Readonly<Transaction & TransactionWithLifetime> = {\n ...modifiedTransaction,\n signatures: Object.freeze(\n signatureDictionaries.reduce((signatures, signatureDictionary) => {\n return { ...signatures, ...signatureDictionary };\n }, modifiedTransaction.signatures ?? {}),\n ),\n };\n\n return Object.freeze(signedTransaction);\n}\n","import { TextEncoder } from '@solana/text-encoding-impl';\n\nimport { SignatureDictionary } from './types';\n\n/** Defines a message that needs signing and its current set of signatures if any. */\nexport type SignableMessage = Readonly<{\n content: Uint8Array;\n signatures: SignatureDictionary;\n}>;\n\n/**\n * Creates a signable message from a provided content.\n * If a string is provided, it will be UTF-8 encoded.\n */\nexport function createSignableMessage(\n content: Uint8Array | string,\n signatures: SignatureDictionary = {},\n): SignableMessage {\n return Object.freeze({\n content: typeof content === 'string' ? new TextEncoder().encode(content) : content,\n signatures: Object.freeze({ ...signatures }),\n });\n}\n","import { SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED, SolanaError } from '@solana/errors';\nimport type { GetEpochInfoApi, Rpc } from '@solana/rpc';\nimport type { RpcSubscriptions, SlotNotificationsApi } from '@solana/rpc-subscriptions';\nimport type { Commitment } from '@solana/rpc-types';\n\ntype GetBlockHeightExceedencePromiseFn = (config: {\n abortSignal: AbortSignal;\n commitment?: Commitment;\n lastValidBlockHeight: bigint;\n}) => Promise<void>;\n\ntype CreateBlockHeightExceedencePromiseFactoryyConfig<TCluster> = {\n rpc: Rpc<GetEpochInfoApi> & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions<SlotNotificationsApi> & { '~cluster'?: TCluster };\n};\n\nexport function createBlockHeightExceedencePromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateBlockHeightExceedencePromiseFactoryyConfig<'devnet'>): GetBlockHeightExceedencePromiseFn;\nexport function createBlockHeightExceedencePromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateBlockHeightExceedencePromiseFactoryyConfig<'testnet'>): GetBlockHeightExceedencePromiseFn;\nexport function createBlockHeightExceedencePromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateBlockHeightExceedencePromiseFactoryyConfig<'mainnet'>): GetBlockHeightExceedencePromiseFn;\nexport function createBlockHeightExceedencePromiseFactory<\n TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void,\n>({\n rpc,\n rpcSubscriptions,\n}: CreateBlockHeightExceedencePromiseFactoryyConfig<TCluster>): GetBlockHeightExceedencePromiseFn {\n return async function getBlockHeightExceedencePromise({\n abortSignal: callerAbortSignal,\n commitment,\n lastValidBlockHeight,\n }): Promise<never> {\n callerAbortSignal.throwIfAborted();\n const abortController = new AbortController();\n const handleAbort = () => {\n abortController.abort();\n };\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n async function getBlockHeightAndDifferenceBetweenSlotHeightAndBlockHeight() {\n const { absoluteSlot, blockHeight } = await rpc\n .getEpochInfo({ commitment })\n .send({ abortSignal: abortController.signal });\n return {\n blockHeight,\n differenceBetweenSlotHeightAndBlockHeight: absoluteSlot - blockHeight,\n };\n }\n try {\n const [slotNotifications, { blockHeight: initialBlockHeight, differenceBetweenSlotHeightAndBlockHeight }] =\n await Promise.all([\n rpcSubscriptions.slotNotifications().subscribe({ abortSignal: abortController.signal }),\n getBlockHeightAndDifferenceBetweenSlotHeightAndBlockHeight(),\n ]);\n callerAbortSignal.throwIfAborted();\n let currentBlockHeight = initialBlockHeight;\n if (currentBlockHeight <= lastValidBlockHeight) {\n let lastKnownDifferenceBetweenSlotHeightAndBlockHeight = differenceBetweenSlotHeightAndBlockHeight;\n for await (const slotNotification of slotNotifications) {\n const { slot } = slotNotification;\n if (slot - lastKnownDifferenceBetweenSlotHeightAndBlockHeight > lastValidBlockHeight) {\n // Before making a final decision, recheck the actual block height.\n const {\n blockHeight: recheckedBlockHeight,\n differenceBetweenSlotHeightAndBlockHeight: currentDifferenceBetweenSlotHeightAndBlockHeight,\n } = await getBlockHeightAndDifferenceBetweenSlotHeightAndBlockHeight();\n currentBlockHeight = recheckedBlockHeight;\n if (currentBlockHeight > lastValidBlockHeight) {\n // Verified; the block height has been exceeded.\n break;\n } else {\n // The block height has not been exceeded, which implies that the\n // difference between the slot height and the block height has grown\n // (ie. some blocks have been skipped since we started). Recalibrate the\n // difference and keep waiting.\n lastKnownDifferenceBetweenSlotHeightAndBlockHeight =\n currentDifferenceBetweenSlotHeightAndBlockHeight;\n }\n }\n }\n }\n callerAbortSignal.throwIfAborted();\n throw new SolanaError(SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED, {\n currentBlockHeight,\n lastValidBlockHeight,\n });\n } finally {\n abortController.abort();\n }\n };\n}\n","import type { Address } from '@solana/addresses';\nimport { getBase58Decoder, getBase64Encoder } from '@solana/codecs-strings';\nimport { SOLANA_ERROR__INVALID_NONCE, SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND, SolanaError } from '@solana/errors';\nimport { safeRace } from '@solana/promises';\nimport type { GetAccountInfoApi, Rpc } from '@solana/rpc';\nimport type { AccountNotificationsApi, RpcSubscriptions } from '@solana/rpc-subscriptions';\nimport type { Base64EncodedDataResponse, Commitment } from '@solana/rpc-types';\nimport { Nonce } from '@solana/transaction-messages';\n\ntype GetNonceInvalidationPromiseFn = (config: {\n abortSignal: AbortSignal;\n commitment: Commitment;\n currentNonceValue: Nonce;\n nonceAccountAddress: Address;\n}) => Promise<void>;\n\ntype CreateNonceInvalidationPromiseFactoryConfig<TCluster> = {\n rpc: Rpc<GetAccountInfoApi> & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions<AccountNotificationsApi> & { '~cluster'?: TCluster };\n};\n\nconst NONCE_VALUE_OFFSET =\n 4 + // version(u32)\n 4 + // state(u32)\n 32; // nonce authority(pubkey)\n// Then comes the nonce value.\n\nexport function createNonceInvalidationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateNonceInvalidationPromiseFactoryConfig<'devnet'>): GetNonceInvalidationPromiseFn;\nexport function createNonceInvalidationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateNonceInvalidationPromiseFactoryConfig<'testnet'>): GetNonceInvalidationPromiseFn;\nexport function createNonceInvalidationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateNonceInvalidationPromiseFactoryConfig<'mainnet'>): GetNonceInvalidationPromiseFn;\nexport function createNonceInvalidationPromiseFactory<TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void>({\n rpc,\n rpcSubscriptions,\n}: CreateNonceInvalidationPromiseFactoryConfig<TCluster>): GetNonceInvalidationPromiseFn {\n return async function getNonceInvalidationPromise({\n abortSignal: callerAbortSignal,\n commitment,\n currentNonceValue: expectedNonceValue,\n nonceAccountAddress,\n }) {\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n /**\n * STEP 1: Set up a subscription for nonce account changes.\n */\n const accountNotifications = await rpcSubscriptions\n .accountNotifications(nonceAccountAddress, { commitment, encoding: 'base64' })\n .subscribe({ abortSignal: abortController.signal });\n const base58Decoder = getBase58Decoder();\n const base64Encoder = getBase64Encoder();\n function getNonceFromAccountData([base64EncodedBytes]: Base64EncodedDataResponse): Nonce {\n const data = base64Encoder.encode(base64EncodedBytes);\n const nonceValueBytes = data.slice(NONCE_VALUE_OFFSET, NONCE_VALUE_OFFSET + 32);\n return base58Decoder.decode(nonceValueBytes) as Nonce;\n }\n const nonceAccountDidAdvancePromise = (async () => {\n for await (const accountNotification of accountNotifications) {\n const nonceValue = getNonceFromAccountData(accountNotification.value.data);\n if (nonceValue !== expectedNonceValue) {\n throw new SolanaError(SOLANA_ERROR__INVALID_NONCE, {\n actualNonceValue: nonceValue,\n expectedNonceValue,\n });\n }\n }\n })();\n /**\n * STEP 2: Having subscribed for updates, make a one-shot request for the current nonce\n * value to check if it has already been advanced.\n */\n const nonceIsAlreadyInvalidPromise = (async () => {\n const { value: nonceAccount } = await rpc\n .getAccountInfo(nonceAccountAddress, {\n commitment,\n dataSlice: { length: 32, offset: NONCE_VALUE_OFFSET },\n encoding: 'base58',\n })\n .send({ abortSignal: abortController.signal });\n if (!nonceAccount) {\n throw new SolanaError(SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND, {\n nonceAccountAddress,\n });\n }\n const nonceValue =\n // This works because we asked for the exact slice of data representing the nonce\n // value, and furthermore asked for it in `base58` encoding.\n nonceAccount.data[0] as unknown as Nonce;\n if (nonceValue !== expectedNonceValue) {\n throw new SolanaError(SOLANA_ERROR__INVALID_NONCE, {\n actualNonceValue: nonceValue,\n expectedNonceValue,\n });\n } else {\n await new Promise(() => {\n /* never resolve */\n });\n }\n })();\n try {\n return await safeRace([nonceAccountDidAdvancePromise, nonceIsAlreadyInvalidPromise]);\n } finally {\n abortController.abort();\n }\n };\n}\n","import { getSolanaErrorFromTransactionError } from '@solana/errors';\nimport type { Signature } from '@solana/keys';\nimport { safeRace } from '@solana/promises';\nimport type { GetSignatureStatusesApi, Rpc } from '@solana/rpc';\nimport type { RpcSubscriptions, SignatureNotificationsApi } from '@solana/rpc-subscriptions';\nimport { type Commitment, commitmentComparator } from '@solana/rpc-types';\n\ntype GetRecentSignatureConfirmationPromiseFn = (config: {\n abortSignal: AbortSignal;\n commitment: Commitment;\n signature: Signature;\n}) => Promise<void>;\n\ntype CreateRecentSignatureConfirmationPromiseFactoryConfig<TCluster> = {\n rpc: Rpc<GetSignatureStatusesApi> & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi> & { '~cluster'?: TCluster };\n};\n\nexport function createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateRecentSignatureConfirmationPromiseFactoryConfig<'devnet'>): GetRecentSignatureConfirmationPromiseFn;\nexport function createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateRecentSignatureConfirmationPromiseFactoryConfig<'testnet'>): GetRecentSignatureConfirmationPromiseFn;\nexport function createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateRecentSignatureConfirmationPromiseFactoryConfig<'mainnet'>): GetRecentSignatureConfirmationPromiseFn;\nexport function createRecentSignatureConfirmationPromiseFactory<\n TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void,\n>({\n rpc,\n rpcSubscriptions,\n}: CreateRecentSignatureConfirmationPromiseFactoryConfig<TCluster>): GetRecentSignatureConfirmationPromiseFn {\n return async function getRecentSignatureConfirmationPromise({\n abortSignal: callerAbortSignal,\n commitment,\n signature,\n }) {\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n /**\n * STEP 1: Set up a subscription for status changes to a signature.\n */\n const signatureStatusNotifications = await rpcSubscriptions\n .signatureNotifications(signature, { commitment })\n .subscribe({ abortSignal: abortController.signal });\n const signatureDidCommitPromise = (async () => {\n for await (const signatureStatusNotification of signatureStatusNotifications) {\n if (signatureStatusNotification.value.err) {\n throw getSolanaErrorFromTransactionError(signatureStatusNotification.value.err);\n } else {\n return;\n }\n }\n })();\n /**\n * STEP 2: Having subscribed for updates, make a one-shot request for the current status.\n * This will only yield a result if the signature is still in the status cache.\n */\n const signatureStatusLookupPromise = (async () => {\n const { value: signatureStatusResults } = await rpc\n .getSignatureStatuses([signature])\n .send({ abortSignal: abortController.signal });\n const signatureStatus = signatureStatusResults[0];\n if (\n signatureStatus &&\n signatureStatus.confirmationStatus &&\n commitmentComparator(signatureStatus.confirmationStatus, commitment) >= 0\n ) {\n return;\n } else {\n await new Promise(() => {\n /* never resolve */\n });\n }\n })();\n try {\n return await safeRace([signatureDidCommitPromise, signatureStatusLookupPromise]);\n } finally {\n abortController.abort();\n }\n };\n}\n","import type { Commitment } from '@solana/rpc-types';\n\ntype Config = Readonly<{\n abortSignal: AbortSignal;\n commitment: Commitment;\n}>;\n\nexport async function getTimeoutPromise({ abortSignal: callerAbortSignal, commitment }: Config) {\n return await new Promise((_, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n clearTimeout(timeoutId);\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n callerAbortSignal.addEventListener('abort', handleAbort);\n const timeoutMs = commitment === 'processed' ? 30_000 : 60_000;\n const startMs = performance.now();\n const timeoutId =\n // We use `setTimeout` instead of `AbortSignal.timeout()` because we want to measure\n // elapsed time instead of active time.\n // See https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/timeout_static\n setTimeout(() => {\n const elapsedMs = performance.now() - startMs;\n reject(new DOMException(`Timeout elapsed after ${elapsedMs} ms`, 'TimeoutError'));\n }, timeoutMs);\n });\n}\n","import type { Signature } from '@solana/keys';\nimport { safeRace } from '@solana/promises';\nimport type { Commitment } from '@solana/rpc-types';\n\nimport { createRecentSignatureConfirmationPromiseFactory } from './confirmation-strategy-recent-signature';\n\nexport interface BaseTransactionConfirmationStrategyConfig {\n abortSignal?: AbortSignal;\n commitment: Commitment;\n getRecentSignatureConfirmationPromise: ReturnType<typeof createRecentSignatureConfirmationPromiseFactory>;\n}\n\ntype WithNonNullableAbortSignal<T> = Omit<T, 'abortSignal'> & Readonly<{ abortSignal: AbortSignal }>;\n\nexport async function raceStrategies<TConfig extends BaseTransactionConfirmationStrategyConfig>(\n signature: Signature,\n config: TConfig,\n getSpecificStrategiesForRace: (config: WithNonNullableAbortSignal<TConfig>) => readonly Promise<unknown>[],\n) {\n const { abortSignal: callerAbortSignal, commitment, getRecentSignatureConfirmationPromise } = config;\n callerAbortSignal?.throwIfAborted();\n const abortController = new AbortController();\n if (callerAbortSignal) {\n const handleAbort = () => {\n abortController.abort();\n };\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n }\n try {\n const specificStrategies = getSpecificStrategiesForRace({\n ...config,\n abortSignal: abortController.signal,\n });\n return await safeRace([\n getRecentSignatureConfirmationPromise({\n abortSignal: abortController.signal,\n commitment,\n signature,\n }),\n ...specificStrategies,\n ]);\n } finally {\n abortController.abort();\n }\n}\n","import { Signature } from '@solana/keys';\nimport { getSignatureFromTransaction, Transaction } from '@solana/transactions';\nimport {\n TransactionWithBlockhashLifetime,\n TransactionWithDurableNonceLifetime,\n} from '@solana/transactions/dist/types/lifetime';\n\nimport { createBlockHeightExceedencePromiseFactory } from './confirmation-strategy-blockheight';\nimport { createNonceInvalidationPromiseFactory } from './confirmation-strategy-nonce';\nimport { BaseTransactionConfirmationStrategyConfig, raceStrategies } from './confirmation-strategy-racer';\nimport { getTimeoutPromise } from './confirmation-strategy-timeout';\n\ninterface WaitForDurableNonceTransactionConfirmationConfig extends BaseTransactionConfirmationStrategyConfig {\n getNonceInvalidationPromise: ReturnType<typeof createNonceInvalidationPromiseFactory>;\n transaction: Readonly<Transaction & TransactionWithDurableNonceLifetime>;\n}\n\ninterface WaitForRecentTransactionWithBlockhashLifetimeConfirmationConfig\n extends BaseTransactionConfirmationStrategyConfig {\n getBlockHeightExceedencePromise: ReturnType<typeof createBlockHeightExceedencePromiseFactory>;\n transaction: Readonly<Transaction & TransactionWithBlockhashLifetime>;\n}\n\ninterface WaitForRecentTransactionWithTimeBasedLifetimeConfirmationConfig\n extends BaseTransactionConfirmationStrategyConfig {\n getTimeoutPromise: typeof getTimeoutPromise;\n signature: Signature;\n}\n\nexport async function waitForDurableNonceTransactionConfirmation(\n config: WaitForDurableNonceTransactionConfirmationConfig,\n): Promise<void> {\n await raceStrategies(\n getSignatureFromTransaction(config.transaction),\n config,\n function getSpecificStrategiesForRace({ abortSignal, commitment, getNonceInvalidationPromise, transaction }) {\n return [\n getNonceInvalidationPromise({\n abortSignal,\n commitment,\n currentNonceValue: transaction.lifetimeConstraint.nonce,\n nonceAccountAddress: transaction.lifetimeConstraint.nonceAccountAddress,\n }),\n ];\n },\n );\n}\n\nexport async function waitForRecentTransactionConfirmation(\n config: WaitForRecentTransactionWithBlockhashLifetimeConfirmationConfig,\n): Promise<void> {\n await raceStrategies(\n getSignatureFromTransaction(config.transaction),\n config,\n function getSpecificStrategiesForRace({\n abortSignal,\n commitment,\n getBlockHeightExceedencePromise,\n transaction,\n }) {\n return [\n getBlockHeightExceedencePromise({\n abortSignal,\n commitment,\n lastValidBlockHeight: transaction.lifetimeConstraint.lastValidBlockHeight,\n }),\n ];\n },\n );\n}\n\n/** @deprecated */\nexport async function waitForRecentTransactionConfirmationUntilTimeout(\n config: WaitForRecentTransactionWithTimeBasedLifetimeConfirmationConfig,\n): Promise<void> {\n await raceStrategies(\n config.signature,\n config,\n function getSpecificStrategiesForRace({ abortSignal, commitment, getTimeoutPromise }) {\n return [\n getTimeoutPromise({\n abortSignal,\n commitment,\n }),\n ];\n },\n );\n}\n","import type { Address } from '@solana/addresses';\nimport type { Signature } from '@solana/keys';\nimport type { RequestAirdropApi, Rpc } from '@solana/rpc';\nimport type { Commitment, Lamports } from '@solana/rpc-types';\nimport { waitForRecentTransactionConfirmationUntilTimeout } from '@solana/transaction-confirmation';\n\ntype RequestAndConfirmAirdropConfig = Readonly<{\n abortSignal?: AbortSignal;\n commitment: Commitment;\n confirmSignatureOnlyTransaction: (\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmationUntilTimeout>[0],\n 'getRecentSignatureConfirmationPromise' | 'getTimeoutPromise'\n >,\n ) => Promise<void>;\n lamports: Lamports;\n recipientAddress: Address;\n rpc: Rpc<RequestAirdropApi>;\n}>;\n\nexport async function requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n confirmSignatureOnlyTransaction,\n lamports,\n recipientAddress,\n rpc,\n}: RequestAndConfirmAirdropConfig): Promise<Signature> {\n const airdropTransactionSignature = await rpc\n .requestAirdrop(recipientAddress, lamports, { commitment })\n .send({ abortSignal });\n await confirmSignatureOnlyTransaction({\n abortSignal,\n commitment,\n signature: airdropTransactionSignature,\n });\n return airdropTransactionSignature;\n}\n","import type { Signature } from '@solana/keys';\nimport type { GetSignatureStatusesApi, RequestAirdropApi, Rpc } from '@solana/rpc';\nimport type { RpcSubscriptions, SignatureNotificationsApi } from '@solana/rpc-subscriptions';\nimport {\n createRecentSignatureConfirmationPromiseFactory,\n getTimeoutPromise,\n waitForRecentTransactionConfirmationUntilTimeout,\n} from '@solana/transaction-confirmation';\n\nimport { requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT } from './airdrop-internal';\n\ntype AirdropFunction = (\n config: Omit<\n Parameters<typeof requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT>[0],\n 'confirmSignatureOnlyTransaction' | 'rpc'\n >,\n) => Promise<Signature>;\n\ntype AirdropFactoryConfig<TCluster> = {\n rpc: Rpc<GetSignatureStatusesApi & RequestAirdropApi> & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi> & { '~cluster'?: TCluster };\n};\n\nexport function airdropFactory({ rpc, rpcSubscriptions }: AirdropFactoryConfig<'devnet'>): AirdropFunction;\nexport function airdropFactory({ rpc, rpcSubscriptions }: AirdropFactoryConfig<'mainnet'>): AirdropFunction;\nexport function airdropFactory({ rpc, rpcSubscriptions }: AirdropFactoryConfig<'testnet'>): AirdropFunction;\nexport function airdropFactory<TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void>({\n rpc,\n rpcSubscriptions,\n}: AirdropFactoryConfig<TCluster>): AirdropFunction {\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n } as Parameters<typeof createRecentSignatureConfirmationPromiseFactory>[0]);\n async function confirmSignatureOnlyTransaction(\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmationUntilTimeout>[0],\n 'getRecentSignatureConfirmationPromise' | 'getTimeoutPromise'\n >,\n ) {\n await waitForRecentTransactionConfirmationUntilTimeout({\n ...config,\n getRecentSignatureConfirmationPromise,\n getTimeoutPromise,\n });\n }\n return async function airdrop(config) {\n return await requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n confirmSignatureOnlyTransaction,\n rpc,\n });\n };\n}\n","import { Address } from '@solana/addresses';\nimport { getU32Encoder } from '@solana/codecs';\nimport {\n isSolanaError,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT,\n SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT,\n SolanaError,\n} from '@solana/errors';\nimport {\n IInstruction,\n IInstructionWithData,\n isInstructionForProgram,\n isInstructionWithData,\n} from '@solana/instructions';\nimport { Rpc, SimulateTransactionApi } from '@solana/rpc';\nimport { Blockhash, Commitment, Slot } from '@solana/rpc-types';\nimport {\n appendTransactionMessageInstruction,\n CompilableTransactionMessage,\n isDurableNonceTransaction,\n isTransactionMessageWithBlockhashLifetime,\n ITransactionMessageWithFeePayer,\n setTransactionMessageLifetimeUsingBlockhash,\n TransactionMessage,\n} from '@solana/transaction-messages';\nimport { compileTransaction, getBase64EncodedWireTransaction } from '@solana/transactions';\n\ntype ComputeUnitEstimateForTransactionMessageConfig = Readonly<{\n abortSignal?: AbortSignal;\n commitment?: Commitment;\n minContextSlot?: Slot;\n rpc: Rpc<SimulateTransactionApi>;\n transactionMessage: CompilableTransactionMessage | (ITransactionMessageWithFeePayer & TransactionMessage);\n}>;\n\nconst COMPUTE_BUDGET_PROGRAM_ADDRESS =\n 'ComputeBudget111111111111111111111111111111' as Address<'ComputeBudget111111111111111111111111111111'>;\n// HACK: Since the `compileTransaction()` method will not compile a transaction with no lifetime we\n// supply a dummy lifetime.\nconst INVALID_BUT_SUFFICIENT_FOR_COMPILATION_BLOCKHASH = {\n blockhash: '11111111111111111111111111111111' as Blockhash,\n lastValidBlockHeight: 0n, // This is not included in compiled transactions; it can be anything.\n} as const;\nconst SET_COMPUTE_UNIT_LIMIT_INSTRUCTION_INDEX = 0x02;\n\nfunction createComputeUnitLimitInstruction(units: number): IInstruction<typeof COMPUTE_BUDGET_PROGRAM_ADDRESS> {\n const data = new Uint8Array(5);\n data[0] = SET_COMPUTE_UNIT_LIMIT_INSTRUCTION_INDEX;\n getU32Encoder().write(units, data, 1 /* offset */);\n return Object.freeze({\n data,\n programAddress: COMPUTE_BUDGET_PROGRAM_ADDRESS,\n });\n}\n\nfunction isSetComputeLimitInstruction(\n instruction: IInstruction,\n): instruction is IInstruction<typeof COMPUTE_BUDGET_PROGRAM_ADDRESS> & IInstructionWithData<Uint8Array> {\n return (\n isInstructionForProgram(instruction, COMPUTE_BUDGET_PROGRAM_ADDRESS) &&\n isInstructionWithData(instruction) &&\n instruction.data[0] === SET_COMPUTE_UNIT_LIMIT_INSTRUCTION_INDEX\n );\n}\n\n/**\n * Simulates a transaction message on the network and returns the number of compute units it\n * consumed during simulation.\n *\n * The estimate this function returns can be used to set a compute unit limit on the transaction.\n * Correctly budgeting a compute unit limit for your transaction message can increase the probability\n * that your transaction will be accepted for processing.\n *\n * If you don't declare a compute unit limit on your transaction, validators will assume an upper\n * limit of 200K compute units (CU) per instruction. Since validators have an incentive to pack as\n * many transactions into each block as possible, they may choose to include transactions that they\n * know will fit into the remaining compute budget for the current block over transactions that\n * might not. For this reason, you should set a compute unit limit on each of your transaction\n * messages, whenever possible.\n *\n * ## Example\n *\n * ```ts\n * import { getSetComputeLimitInstruction } from '@solana-program/compute-budget';\n * import { createSolanaRpc, getComputeUnitEstimateForTransactionMessageFactory, pipe } from '@solana/web3.js';\n *\n * // Create an estimator function.\n * const rpc = createSolanaRpc('http://127.0.0.1:8899');\n * const getComputeUnitEstimateForTransactionMessage =\n * getComputeUnitEstimateForTransactionMessageFactory({ rpc });\n *\n * // Create your transaction message.\n * const transactionMessage = pipe(\n * createTransactionMessage({ version: 'legacy' }),\n * /* ... *\\/\n * );\n *\n * // Request an estimate of the actual compute units this message will consume.\n * const computeUnitsEstimate =\n * await getComputeUnitEstimateForTransactionMessage(transactionMessage);\n *\n * // Set the transaction message's compute unit budget.\n * const transactionMessageWithComputeUnitLimit = prependTransactionMessageInstruction(\n * getSetComputeLimitInstruction({ units: computeUnitsEstimate }),\n * transactionMessage,\n * );\n * ```\n *\n * > [!WARNING]\n * > The compute unit estimate is just that &ndash; an estimate. The compute unit consumption of the\n * > actual transaction might be higher or lower than what was observed in simulation. Unless you\n * > are confident that your particular transaction message will consume the same or fewer compute\n * > units as was estimated, you might like to augment the estimate by either a fixed number of CUs\n * > or a multiplier.\n *\n * > [!NOTE]\n * > If you are preparing an _unsigned_ transaction, destined to be signed and submitted to the\n * > network by a wallet, you might like to leave it up to the wallet to determine the compute unit\n * > limit. Consider that the wallet might have a more global view of how many compute units certain\n * > types of transactions consume, and might be able to make better estimates of an appropriate\n * > compute unit budget.\n */\nexport async function getComputeUnitEstimateForTransactionMessage_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n rpc,\n transactionMessage,\n ...simulateConfig\n}: ComputeUnitEstimateForTransactionMessageConfig): Promise<number> {\n /**\n * STEP 1: Make sure the transaction message will not fail in simulation for lack of a lifetime\n * - either a recent blockhash lifetime or a nonce.\n */\n const isDurableNonceTransactionMessage = isDurableNonceTransaction(transactionMessage);\n let compilableTransactionMessage;\n if (isDurableNonceTransactionMessage || isTransactionMessageWithBlockhashLifetime(transactionMessage)) {\n compilableTransactionMessage = transactionMessage;\n } else {\n compilableTransactionMessage = setTransactionMessageLifetimeUsingBlockhash(\n INVALID_BUT_SUFFICIENT_FOR_COMPILATION_BLOCKHASH,\n transactionMessage,\n );\n }\n /**\n * STEP 2: Ensure that the message has a `SetComputeLimit` instruction. The set compute limit\n * instruction itself consumes compute units, so it must be included in the simulation.\n */\n const existingSetComputeUnitLimitInstructionIndex =\n transactionMessage.instructions.findIndex(isSetComputeLimitInstruction);\n const maxComputeUnitLimitInstruction = createComputeUnitLimitInstruction(1_400_000 /* MAX_COMPUTE_UNIT_LIMIT */);\n if (existingSetComputeUnitLimitInstructionIndex === -1) {\n compilableTransactionMessage = appendTransactionMessageInstruction(\n maxComputeUnitLimitInstruction,\n compilableTransactionMessage,\n );\n } else {\n const nextInstructions = [...compilableTransactionMessage.instructions];\n nextInstructions.splice(existingSetComputeUnitLimitInstructionIndex, 1, maxComputeUnitLimitInstruction);\n compilableTransactionMessage = Object.freeze({\n ...compilableTransactionMessage,\n instructions: nextInstructions,\n } as typeof compilableTransactionMessage);\n }\n /**\n * STEP 3: Simulate the transaction to measure its compute unit consumption.\n */\n const compiledTransaction = compileTransaction(compilableTransactionMessage);\n const wireTransactionBytes = getBase64EncodedWireTransaction(compiledTransaction);\n try {\n const {\n value: { err: transactionError, unitsConsumed },\n } = await rpc\n .simulateTransaction(wireTransactionBytes, {\n ...simulateConfig,\n encoding: 'base64',\n replaceRecentBlockhash: !isDurableNonceTransactionMessage,\n sigVerify: false,\n })\n .send({ abortSignal });\n if (unitsConsumed == null) {\n // This should never be hit, because all RPCs should support `unitsConsumed` by now.\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT);\n }\n // FIXME(https://github.com/anza-xyz/agave/issues/1295): The simulation response returns\n // compute units as a u64, but the `SetComputeLimit` instruction only accepts a u32. Until\n // this changes, downcast it.\n const downcastUnitsConsumed = unitsConsumed > 4_294_967_295n ? 4_294_967_295 : Number(unitsConsumed);\n if (transactionError) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT, {\n cause: transactionError,\n unitsConsumed: downcastUnitsConsumed,\n });\n }\n return downcastUnitsConsumed;\n } catch (e) {\n if (isSolanaError(e, SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT)) throw e;\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT, {\n cause: e,\n });\n }\n}\n","import { Rpc, SimulateTransactionApi } from '@solana/rpc';\nimport {\n CompilableTransactionMessage,\n ITransactionMessageWithFeePayer,\n TransactionMessage,\n} from '@solana/transaction-messages';\n\nimport { getComputeUnitEstimateForTransactionMessage_INTERNAL_ONLY_DO_NOT_EXPORT } from './compute-limit-internal';\n\ntype ComputeUnitEstimateForTransactionMessageFactoryConfig = Readonly<{\n rpc: Rpc<SimulateTransactionApi>;\n}>;\ntype ComputeUnitEstimateForTransactionMessageFunction = (\n transactionMessage: CompilableTransactionMessage | (ITransactionMessageWithFeePayer & TransactionMessage),\n config?: Omit<\n Parameters<typeof getComputeUnitEstimateForTransactionMessage_INTERNAL_ONLY_DO_NOT_EXPORT>[0],\n 'rpc' | 'transactionMessage'\n >,\n) => Promise<number>;\n\nexport function getComputeUnitEstimateForTransactionMessageFactory({\n rpc,\n}: ComputeUnitEstimateForTransactionMessageFactoryConfig): ComputeUnitEstimateForTransactionMessageFunction {\n return async function getComputeUnitEstimateForTransactionMessage(transactionMessage, config) {\n return await getComputeUnitEstimateForTransactionMessage_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n rpc,\n transactionMessage,\n });\n };\n}\n","import {\n assertAccountsDecoded,\n assertAccountsExist,\n type FetchAccountsConfig,\n fetchJsonParsedAccounts,\n} from '@solana/accounts';\nimport type { Address } from '@solana/addresses';\nimport type { GetMultipleAccountsApi, Rpc } from '@solana/rpc';\nimport {\n type AddressesByLookupTableAddress,\n CompilableTransactionMessage,\n CompiledTransactionMessage,\n decompileTransactionMessage,\n} from '@solana/transaction-messages';\n\ntype FetchedAddressLookup = {\n addresses: Address[];\n};\n\nasync function fetchLookupTables(\n lookupTableAddresses: Address[],\n rpc: Rpc<GetMultipleAccountsApi>,\n config?: FetchAccountsConfig,\n): Promise<AddressesByLookupTableAddress> {\n const fetchedLookupTables = await fetchJsonParsedAccounts<FetchedAddressLookup[]>(\n rpc,\n lookupTableAddresses,\n config,\n );\n assertAccountsDecoded(fetchedLookupTables);\n assertAccountsExist(fetchedLookupTables);\n\n return fetchedLookupTables.reduce<AddressesByLookupTableAddress>((acc, lookup) => {\n return {\n ...acc,\n [lookup.address]: lookup.data.addresses,\n };\n }, {});\n}\n\ntype DecompileTransactionMessageFetchingLookupTablesConfig = FetchAccountsConfig & {\n lastValidBlockHeight?: bigint;\n};\n\nexport async function decompileTransactionMessageFetchingLookupTables(\n compiledTransactionMessage: CompiledTransactionMessage,\n rpc: Rpc<GetMultipleAccountsApi>,\n config?: DecompileTransactionMessageFetchingLookupTablesConfig,\n): Promise<CompilableTransactionMessage> {\n const lookupTables =\n 'addressTableLookups' in compiledTransactionMessage &&\n compiledTransactionMessage.addressTableLookups !== undefined &&\n compiledTransactionMessage.addressTableLookups.length > 0\n ? compiledTransactionMessage.addressTableLookups\n : [];\n const lookupTableAddresses = lookupTables.map(l => l.lookupTableAddress);\n\n const { lastValidBlockHeight, ...fetchAccountsConfig } = config ?? {};\n const addressesByLookupTableAddress =\n lookupTableAddresses.length > 0 ? await fetchLookupTables(lookupTableAddresses, rpc, fetchAccountsConfig) : {};\n\n return decompileTransactionMessage(compiledTransactionMessage, {\n addressesByLookupTableAddress,\n lastValidBlockHeight,\n });\n}\n","import type { Signature } from '@solana/keys';\nimport type { Rpc, SendTransactionApi } from '@solana/rpc';\nimport { Commitment, commitmentComparator } from '@solana/rpc-types';\nimport {\n waitForDurableNonceTransactionConfirmation,\n waitForRecentTransactionConfirmation,\n} from '@solana/transaction-confirmation';\nimport {\n FullySignedTransaction,\n getBase64EncodedWireTransaction,\n TransactionWithBlockhashLifetime,\n TransactionWithDurableNonceLifetime,\n} from '@solana/transactions';\n\ninterface SendAndConfirmDurableNonceTransactionConfig\n extends SendTransactionBaseConfig,\n SendTransactionConfigWithoutEncoding {\n confirmDurableNonceTransaction: (\n config: Omit<\n Parameters<typeof waitForDurableNonceTransactionConfirmation>[0],\n 'getNonceInvalidationPromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) => Promise<void>;\n transaction: FullySignedTransaction & TransactionWithDurableNonceLifetime;\n}\n\ninterface SendAndConfirmTransactionWithBlockhashLifetimeConfig\n extends SendTransactionBaseConfig,\n SendTransactionConfigWithoutEncoding {\n confirmRecentTransaction: (\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmation>[0],\n 'getBlockHeightExceedencePromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) => Promise<void>;\n transaction: FullySignedTransaction & TransactionWithBlockhashLifetime;\n}\n\ninterface SendTransactionBaseConfig extends SendTransactionConfigWithoutEncoding {\n abortSignal?: AbortSignal;\n commitment: Commitment;\n rpc: Rpc<SendTransactionApi>;\n transaction: FullySignedTransaction;\n}\n\ntype SendTransactionConfigWithoutEncoding = Omit<\n NonNullable<Parameters<SendTransactionApi['sendTransaction']>[1]>,\n 'encoding'\n>;\n\nfunction getSendTransactionConfigWithAdjustedPreflightCommitment(\n commitment: Commitment,\n config?: SendTransactionConfigWithoutEncoding,\n): SendTransactionConfigWithoutEncoding | void {\n if (\n // The developer has supplied no value for `preflightCommitment`.\n !config?.preflightCommitment &&\n // The value of `commitment` is lower than the server default of `preflightCommitment`.\n commitmentComparator(commitment, 'finalized' /* default value of `preflightCommitment` */) < 0\n ) {\n return {\n ...config,\n // In the common case, it is unlikely that you want to simulate a transaction at\n // `finalized` commitment when your standard of commitment for confirming the\n // transaction is lower. Cap the simulation commitment level to the level of the\n // confirmation commitment.\n preflightCommitment: commitment,\n };\n }\n // The commitment at which the developer wishes to confirm the transaction is at least as\n // high as the commitment at which they want to simulate it. Honour the config as-is.\n return config;\n}\n\nexport async function sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendTransactionBaseConfig): Promise<Signature> {\n const base64EncodedWireTransaction = getBase64EncodedWireTransaction(transaction);\n return await rpc\n .sendTransaction(base64EncodedWireTransaction, {\n ...getSendTransactionConfigWithAdjustedPreflightCommitment(commitment, sendTransactionConfig),\n encoding: 'base64',\n })\n .send({ abortSignal });\n}\n\nexport async function sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n confirmDurableNonceTransaction,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendAndConfirmDurableNonceTransactionConfig): Promise<Signature> {\n const transactionSignature = await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...sendTransactionConfig,\n abortSignal,\n commitment,\n rpc,\n transaction,\n });\n await confirmDurableNonceTransaction({\n abortSignal,\n commitment,\n transaction,\n });\n return transactionSignature;\n}\n\nexport async function sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n confirmRecentTransaction,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendAndConfirmTransactionWithBlockhashLifetimeConfig): Promise<Signature> {\n const transactionSignature = await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...sendTransactionConfig,\n abortSignal,\n commitment,\n rpc,\n transaction,\n });\n await confirmRecentTransaction({\n abortSignal,\n commitment,\n transaction,\n });\n return transactionSignature;\n}\n","import type { GetAccountInfoApi, GetSignatureStatusesApi, Rpc, SendTransactionApi } from '@solana/rpc';\nimport type { AccountNotificationsApi, RpcSubscriptions, SignatureNotificationsApi } from '@solana/rpc-subscriptions';\nimport {\n createNonceInvalidationPromiseFactory,\n createRecentSignatureConfirmationPromiseFactory,\n waitForDurableNonceTransactionConfirmation,\n} from '@solana/transaction-confirmation';\nimport { FullySignedTransaction, TransactionWithDurableNonceLifetime } from '@solana/transactions';\n\nimport { sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT } from './send-transaction-internal';\n\ntype SendAndConfirmDurableNonceTransactionFunction = (\n transaction: FullySignedTransaction & TransactionWithDurableNonceLifetime,\n config: Omit<\n Parameters<typeof sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT>[0],\n 'confirmDurableNonceTransaction' | 'rpc' | 'transaction'\n >,\n) => Promise<void>;\n\ntype SendAndConfirmDurableNonceTransactionFactoryConfig<TCluster> = {\n rpc: Rpc<GetAccountInfoApi & GetSignatureStatusesApi & SendTransactionApi> & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions<AccountNotificationsApi & SignatureNotificationsApi> & { '~cluster'?: TCluster };\n};\n\nexport function sendAndConfirmDurableNonceTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmDurableNonceTransactionFactoryConfig<'devnet'>): SendAndConfirmDurableNonceTransactionFunction;\nexport function sendAndConfirmDurableNonceTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmDurableNonceTransactionFactoryConfig<'testnet'>): SendAndConfirmDurableNonceTransactionFunction;\nexport function sendAndConfirmDurableNonceTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmDurableNonceTransactionFactoryConfig<'mainnet'>): SendAndConfirmDurableNonceTransactionFunction;\nexport function sendAndConfirmDurableNonceTransactionFactory<\n TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void,\n>({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmDurableNonceTransactionFactoryConfig<TCluster>): SendAndConfirmDurableNonceTransactionFunction {\n const getNonceInvalidationPromise = createNonceInvalidationPromiseFactory({ rpc, rpcSubscriptions } as Parameters<\n typeof createNonceInvalidationPromiseFactory\n >[0]);\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n } as Parameters<typeof createRecentSignatureConfirmationPromiseFactory>[0]);\n async function confirmDurableNonceTransaction(\n config: Omit<\n Parameters<typeof waitForDurableNonceTransactionConfirmation>[0],\n 'getNonceInvalidationPromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) {\n await waitForDurableNonceTransactionConfirmation({\n ...config,\n getNonceInvalidationPromise,\n getRecentSignatureConfirmationPromise,\n });\n }\n return async function sendAndConfirmDurableNonceTransaction(transaction, config) {\n await sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n confirmDurableNonceTransaction,\n rpc,\n transaction,\n });\n };\n}\n","import type { GetEpochInfoApi, GetSignatureStatusesApi, Rpc, SendTransactionApi } from '@solana/rpc';\nimport type { RpcSubscriptions, SignatureNotificationsApi, SlotNotificationsApi } from '@solana/rpc-subscriptions';\nimport {\n createBlockHeightExceedencePromiseFactory,\n createRecentSignatureConfirmationPromiseFactory,\n waitForRecentTransactionConfirmation,\n} from '@solana/transaction-confirmation';\nimport { FullySignedTransaction, TransactionWithBlockhashLifetime } from '@solana/transactions';\n\nimport { sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT } from './send-transaction-internal';\n\ntype SendAndConfirmTransactionWithBlockhashLifetimeFunction = (\n transaction: FullySignedTransaction & TransactionWithBlockhashLifetime,\n config: Omit<\n Parameters<typeof sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT>[0],\n 'confirmRecentTransaction' | 'rpc' | 'transaction'\n >,\n) => Promise<void>;\n\ntype SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<TCluster> = {\n rpc: Rpc<GetEpochInfoApi & GetSignatureStatusesApi & SendTransactionApi> & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi & SlotNotificationsApi> & { '~cluster'?: TCluster };\n};\n\nexport function sendAndConfirmTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<'devnet'>): SendAndConfirmTransactionWithBlockhashLifetimeFunction;\nexport function sendAndConfirmTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<'testnet'>): SendAndConfirmTransactionWithBlockhashLifetimeFunction;\nexport function sendAndConfirmTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<'mainnet'>): SendAndConfirmTransactionWithBlockhashLifetimeFunction;\nexport function sendAndConfirmTransactionFactory<TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void>({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<TCluster>): SendAndConfirmTransactionWithBlockhashLifetimeFunction {\n const getBlockHeightExceedencePromise = createBlockHeightExceedencePromiseFactory({\n rpc,\n rpcSubscriptions,\n } as Parameters<typeof createBlockHeightExceedencePromiseFactory>[0]);\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n } as Parameters<typeof createRecentSignatureConfirmationPromiseFactory>[0]);\n async function confirmRecentTransaction(\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmation>[0],\n 'getBlockHeightExceedencePromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) {\n await waitForRecentTransactionConfirmation({\n ...config,\n getBlockHeightExceedencePromise,\n getRecentSignatureConfirmationPromise,\n });\n }\n return async function sendAndConfirmTransaction(transaction, config) {\n await sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n confirmRecentTransaction,\n rpc,\n transaction,\n });\n };\n}\n","import type { Rpc, SendTransactionApi } from '@solana/rpc';\nimport { FullySignedTransaction } from '@solana/transactions';\n\nimport { sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT } from './send-transaction-internal';\n\ntype SendTransactionWithoutConfirmingFunction = (\n transaction: FullySignedTransaction,\n config: Omit<Parameters<typeof sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT>[0], 'rpc' | 'transaction'>,\n) => Promise<void>;\n\ninterface SendTransactionWithoutConfirmingFactoryConfig {\n rpc: Rpc<SendTransactionApi>;\n}\n\nexport function sendTransactionWithoutConfirmingFactory({\n rpc,\n}: SendTransactionWithoutConfirmingFactoryConfig): SendTransactionWithoutConfirmingFunction {\n return async function sendTransactionWithoutConfirming(transaction, config) {\n await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n rpc,\n transaction,\n });\n };\n}\n"]}