@solana/errors
Advanced tools
+60
| import chalk from 'chalk'; | ||
| import { Command, InvalidArgumentError } from 'commander'; | ||
| import { version } from '../package.json'; | ||
| import { SolanaErrorCode } from './codes'; | ||
| import { decodeEncodedContext } from './context'; | ||
| import { getHumanReadableErrorMessage } from './message-formatter'; | ||
| import { SolanaErrorMessages } from './messages'; | ||
| const program = new Command(); | ||
| program.name('@solana/errors').description('Decode Solana JavaScript errors thrown in production').version(version); | ||
| program | ||
| .command('decode') | ||
| .description('Decode a `SolanaErrorCode` to a human-readable message') | ||
| .argument('<code>', 'numeric error code to decode', rawCode => { | ||
| const code = parseInt(rawCode, 10); | ||
| if (isNaN(code) || `${code}` !== rawCode) { | ||
| throw new InvalidArgumentError('It must be an integer'); | ||
| } | ||
| if (!(code in SolanaErrorMessages)) { | ||
| throw new InvalidArgumentError('There exists no error with that code'); | ||
| } | ||
| return code; | ||
| }) | ||
| .argument('[encodedContext]', 'encoded context to interpolate into the error message', encodedContext => { | ||
| try { | ||
| return decodeEncodedContext(encodedContext); | ||
| } catch { | ||
| throw new InvalidArgumentError('Encoded context malformed'); | ||
| } | ||
| }) | ||
| .action((code: number, context: object) => { | ||
| const message = getHumanReadableErrorMessage(code as SolanaErrorCode, context); | ||
| console.log(` | ||
| ${ | ||
| chalk.bold( | ||
| chalk.rgb(154, 71, 255)('[') + | ||
| chalk.rgb(144, 108, 244)('D') + | ||
| chalk.rgb(134, 135, 233)('e') + | ||
| chalk.rgb(122, 158, 221)('c') + | ||
| chalk.rgb(110, 178, 209)('o') + | ||
| chalk.rgb(95, 195, 196)('d') + | ||
| chalk.rgb(79, 212, 181)('e') + | ||
| chalk.rgb(57, 227, 166)('d') + | ||
| chalk.rgb(19, 241, 149)(']'), | ||
| ) + chalk.rgb(19, 241, 149)(' Solana error code #' + code) | ||
| } | ||
| - ${message}`); | ||
| if (context) { | ||
| console.log(` | ||
| ${chalk.yellowBright(chalk.bold('[Context]'))} | ||
| ${JSON.stringify(context, null, 4).split('\n').join('\n ')}`); | ||
| } | ||
| }); | ||
| export function run(argv: readonly string[]) { | ||
| program.parse(argv); | ||
| } |
+682
| /** | ||
| * To add a new error, follow the instructions at | ||
| * https://github.com/anza-xyz/kit/tree/main/packages/errors/#adding-a-new-error | ||
| * | ||
| * @module | ||
| * @privateRemarks | ||
| * WARNING: | ||
| * - Don't remove error codes | ||
| * - Don't change or reorder error codes. | ||
| * | ||
| * Good naming conventions: | ||
| * - 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__`. | ||
| * - 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. | ||
| * - Recommended prefixes and suffixes: | ||
| * - `MALFORMED_`: Some input was not constructed properly. E.g. `MALFORMED_BASE58_ENCODED_ADDRESS`. | ||
| * - `INVALID_`: Some input is invalid (other than because it was MALFORMED). E.g. `INVALID_NUMBER_OF_BYTES`. | ||
| * - `EXPECTED_`: Some input was different than expected, no need to specify the "GOT" part unless necessary. E.g. `EXPECTED_DECODED_ACCOUNT`. | ||
| * - `_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`. | ||
| * - `_MUST_BE_`: Some condition must be true. E.g. `NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE`. | ||
| * - `_FAILED_TO_`: Tried to perform some operation and failed. E.g. `FAILED_TO_DECODE_ACCOUNT`. | ||
| * - `_NOT_FOUND`: Some operation lead to not finding something. E.g. `ACCOUNT_NOT_FOUND`. | ||
| * - `_OUT_OF_RANGE`: Some value is out of range. E.g. `ENUM_DISCRIMINATOR_OUT_OF_RANGE`. | ||
| * - `_EXCEEDED`: Some limit was exceeded. E.g. `PDA_MAX_SEED_LENGTH_EXCEEDED`. | ||
| * - `_MISMATCH`: Some elements do not match. E.g. `ENCODER_DECODER_FIXED_SIZE_MISMATCH`. | ||
| * - `_MISSING`: Some required input is missing. E.g. `TRANSACTION_FEE_PAYER_MISSING`. | ||
| * - `_UNIMPLEMENTED`: Some required component is not available in the environment. E.g. `SUBTLE_CRYPTO_VERIFY_FUNCTION_UNIMPLEMENTED`. | ||
| */ | ||
| export const SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED = 1; | ||
| export const SOLANA_ERROR__INVALID_NONCE = 2; | ||
| export const SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND = 3; | ||
| export const SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE = 4; | ||
| export const SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH = 5; | ||
| export const SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE = 6; | ||
| export const SOLANA_ERROR__MALFORMED_BIGINT_STRING = 7; | ||
| export const SOLANA_ERROR__MALFORMED_NUMBER_STRING = 8; | ||
| export const SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE = 9; | ||
| export const SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR = 10; | ||
| export const SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION = 11; | ||
| export const SOLANA_ERROR__FAILED_TO_SEND_TRANSACTIONS = 12; | ||
| // JSON-RPC-related errors. | ||
| // Reserve error codes in the range [-32768, -32000] | ||
| // Keep in sync with https://github.com/anza-xyz/agave/blob/master/rpc-client-api/src/custom_error.rs | ||
| export const SOLANA_ERROR__JSON_RPC__PARSE_ERROR = -32700; | ||
| export const SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR = -32603; | ||
| export const SOLANA_ERROR__JSON_RPC__INVALID_PARAMS = -32602; | ||
| export const SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND = -32601; | ||
| export const SOLANA_ERROR__JSON_RPC__INVALID_REQUEST = -32600; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_UNREACHABLE = -32019; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_NOT_EPOCH_BOUNDARY = -32018; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_EPOCH_REWARDS_PERIOD_ACTIVE = -32017; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED = -32016; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION = -32015; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET = -32014; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH = -32013; | ||
| export const SOLANA_ERROR__JSON_RPC__SCAN_ERROR = -32012; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE = -32011; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX = -32010; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED = -32009; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT = -32008; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED = -32007; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE = -32006; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY = -32005; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE = -32004; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE = -32003; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE = -32002; | ||
| export const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP = -32001; | ||
| // Addresses-related errors. | ||
| // Reserve error codes in the range [2800000-2800999]. | ||
| export const SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH = 2800000; | ||
| export const SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE = 2800001; | ||
| export const SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS = 2800002; | ||
| export const SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY = 2800003; | ||
| export const SOLANA_ERROR__ADDRESSES__MALFORMED_PDA = 2800004; | ||
| export const SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE = 2800005; | ||
| export const SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED = 2800006; | ||
| export const SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED = 2800007; | ||
| export const SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE = 2800008; | ||
| export const SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED = 2800009; | ||
| export const SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER = 2800010; | ||
| export const SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS = 2800011; | ||
| // Account-related errors. | ||
| // Reserve error codes in the range [3230000-3230999]. | ||
| export const SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND = 3230000; | ||
| export const SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND = 32300001; | ||
| export const SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT = 3230002; | ||
| export const SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT = 3230003; | ||
| export const SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED = 3230004; | ||
| // Subtle-Crypto-related errors. | ||
| // Reserve error codes in the range [3610000-3610999]. | ||
| export const SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT = 3610000; | ||
| export const SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED = 3610001; | ||
| export const SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED = 3610002; | ||
| export const SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED = 3610003; | ||
| export const SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED = 3610004; | ||
| export const SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED = 3610005; | ||
| export const SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED = 3610006; | ||
| export const SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY = 3610007; | ||
| // Crypto-related errors. | ||
| // Reserve error codes in the range [3611000-3611050]. | ||
| export const SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED = 3611000; | ||
| // Key-related errors. | ||
| // Reserve error codes in the range [3704000-3704999]. | ||
| export const SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH = 3704000; | ||
| export const SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH = 3704001; | ||
| export const SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH = 3704002; | ||
| export const SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE = 3704003; | ||
| export const SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY = 3704004; | ||
| // Instruction-related errors. | ||
| // Reserve error codes in the range [4128000-4128999]. | ||
| export const SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS = 4128000; | ||
| export const SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA = 4128001; | ||
| export const SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH = 4128002; | ||
| // Instruction errors. | ||
| // Reserve error codes starting with [4615000-4615999] for the Rust enum `InstructionError`. | ||
| // Error names here are dictated by the RPC (see ./instruction-error.ts). | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN = 4615000; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR = 4615001; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT = 4615002; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA = 4615003; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA = 4615004; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL = 4615005; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS = 4615006; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID = 4615007; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE = 4615008; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED = 4615009; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT = 4615010; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION = 4615011; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID = 4615012; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND = 4615013; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED = 4615014; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE = 4615015; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED = 4615016; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX = 4615017; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED = 4615018; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED = 4615019; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS = 4615020; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED = 4615021; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE = 4615022; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED = 4615023; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = 4615024; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC = 4615025; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM = 4615026; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR = 4615027; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED = 4615028; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE = 4615029; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT = 4615030; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID = 4615031; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH = 4615032; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT = 4615033; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED = 4615034; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED = 4615035; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS = 4615036; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC = 4615037; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED = 4615038; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION = 4615039; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE = 4615040; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE = 4615041; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE = 4615042; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE = 4615043; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY = 4615044; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR = 4615045; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT = 4615046; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER = 4615047; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW = 4615048; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR = 4615049; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER = 4615050; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED = 4615051; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED = 4615052; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED = 4615053; | ||
| export const SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS = 4615054; | ||
| // Signer-related errors. | ||
| // Reserve error codes in the range [5508000-5508999]. | ||
| export const SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS = 5508000; | ||
| export const SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER = 5508001; | ||
| export const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER = 5508002; | ||
| export const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER = 5508003; | ||
| export const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER = 5508004; | ||
| export const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER = 5508005; | ||
| export const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER = 5508006; | ||
| export const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER = 5508007; | ||
| export const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER = 5508008; | ||
| export const SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS = 5508009; | ||
| export const SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING = 5508010; | ||
| export const SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED = 5508011; | ||
| // Offchain-message-related errors. | ||
| // Reserve error codes in the range [5607000-5607999]. | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__MAXIMUM_LENGTH_EXCEEDED = 5607000; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__RESTRICTED_ASCII_BODY_CHARACTER_OUT_OF_RANGE = 5607001; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__APPLICATION_DOMAIN_STRING_LENGTH_OUT_OF_RANGE = 5607002; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__INVALID_APPLICATION_DOMAIN_BYTE_LENGTH = 5607003; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_SIGNATURES_MISMATCH = 5607004; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_REQUIRED_SIGNERS_CANNOT_BE_ZERO = 5607005; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__VERSION_NUMBER_NOT_SUPPORTED = 5607006; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_FORMAT_MISMATCH = 5607007; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_LENGTH_MISMATCH = 5607008; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_MUST_BE_NON_EMPTY = 5607009; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_ENVELOPE_SIGNATURES_CANNOT_BE_ZERO = 5607010; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURES_MISSING = 5607011; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__ENVELOPE_SIGNERS_MISMATCH = 5607012; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__ADDRESSES_CANNOT_SIGN_OFFCHAIN_MESSAGE = 5607013; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__UNEXPECTED_VERSION = 5607014; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_SORTED = 5607015; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_UNIQUE = 5607016; | ||
| export const SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURE_VERIFICATION_FAILURE = 5607017; | ||
| // Transaction-related errors. | ||
| // Reserve error codes in the range [5663000-5663999]. | ||
| export const SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES = 5663000; | ||
| export const SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE = 5663001; | ||
| export const SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME = 5663002; | ||
| export const SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME = 5663003; | ||
| export const SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE = 5663004; | ||
| export const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING = 5663005; | ||
| export const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE = 5663006; | ||
| export const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND = 5663007; | ||
| export const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING = 5663008; | ||
| export const SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING = 5663009; | ||
| export const SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING = 5663010; | ||
| export const SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING = 5663011; | ||
| export const SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING = 5663012; | ||
| export const SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING = 5663013; | ||
| export const SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE = 5663014; | ||
| export const SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION = 5663015; | ||
| export const SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES = 5663016; | ||
| export const SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH = 5663017; | ||
| export const SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT = 5663018; | ||
| export const SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT = 5663019; | ||
| export const SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT = 5663020; | ||
| export const SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_NOT_SUPPORTED = 5663021; | ||
| export const SOLANA_ERROR__TRANSACTION__NONCE_ACCOUNT_CANNOT_BE_IN_LOOKUP_TABLE = 5663022; | ||
| export const SOLANA_ERROR__TRANSACTION__MALFORMED_MESSAGE_BYTES = 5663023; | ||
| export const SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_MESSAGE_BYTES = 5663024; | ||
| export const SOLANA_ERROR__TRANSACTION__CANNOT_DECODE_EMPTY_TRANSACTION_BYTES = 5663025; | ||
| export const SOLANA_ERROR__TRANSACTION__VERSION_ZERO_MUST_BE_ENCODED_WITH_SIGNATURES_FIRST = 5663026; | ||
| export const SOLANA_ERROR__TRANSACTION__SIGNATURE_COUNT_TOO_HIGH_FOR_TRANSACTION_BYTES = 5663027; | ||
| export const SOLANA_ERROR__TRANSACTION__INVALID_CONFIG_MASK_PRIORITY_FEE_BITS = 5663028; | ||
| export const SOLANA_ERROR__TRANSACTION__INVALID_NONCE_ACCOUNT_INDEX = 5663029; | ||
| // Transaction errors. | ||
| // Reserve error codes starting with [7050000-7050999] for the Rust enum `TransactionError`. | ||
| // Error names here are dictated by the RPC (see ./transaction-error.ts). | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN = 7050000; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE = 7050001; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE = 7050002; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND = 7050003; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND = 7050004; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE = 7050005; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE = 7050006; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED = 7050007; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND = 7050008; | ||
| // `InstructionError` intentionally omitted. | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP = 7050009; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE = 7050010; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX = 7050011; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE = 7050012; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION = 7050013; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE = 7050014; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE = 7050015; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = 7050016; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT = 7050017; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION = 7050018; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT = 7050019; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT = 7050020; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT = 7050021; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS = 7050022; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND = 7050023; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER = 7050024; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA = 7050025; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX = 7050026; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT = 7050027; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT = 7050028; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT = 7050029; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION = 7050030; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT = 7050031; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED = 7050032; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT = 7050033; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED = 7050034; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED = 7050035; | ||
| export const SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION = 7050036; | ||
| // Instruction plan related errors. | ||
| // Reserve error codes in the range [7618000-7618999]. | ||
| export const SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_CANNOT_ACCOMMODATE_PLAN = 7618000; | ||
| export const SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_PACKER_ALREADY_COMPLETE = 7618001; | ||
| export const SOLANA_ERROR__INSTRUCTION_PLANS__EMPTY_INSTRUCTION_PLAN = 7618002; | ||
| export const SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLAN = 7618003; | ||
| export const SOLANA_ERROR__INSTRUCTION_PLANS__NON_DIVISIBLE_TRANSACTION_PLANS_NOT_SUPPORTED = 7618004; | ||
| export const SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_SINGLE_TRANSACTION_PLAN_RESULT_NOT_FOUND = 7618005; | ||
| export const SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_INSTRUCTION_PLAN = 7618006; | ||
| export const SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN = 7618007; | ||
| export const SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN_RESULT = 7618008; | ||
| export const SOLANA_ERROR__INSTRUCTION_PLANS__EXPECTED_SUCCESSFUL_TRANSACTION_PLAN_RESULT = 7618009; | ||
| // Codec-related errors. | ||
| // Reserve error codes in the range [8078000-8078999]. | ||
| export const SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY = 8078000; | ||
| export const SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH = 8078001; | ||
| export const SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH = 8078002; | ||
| export const SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH = 8078003; | ||
| export const SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH = 8078004; | ||
| export const SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH = 8078005; | ||
| export const SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH = 8078006; | ||
| export const SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS = 8078007; | ||
| export const SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE = 8078008; | ||
| export const SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT = 8078009; | ||
| export const SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT = 8078010; | ||
| export const SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE = 8078011; | ||
| export const SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE = 8078012; | ||
| export const SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH = 8078013; | ||
| export const SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE = 8078014; | ||
| export const SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT = 8078015; | ||
| export const SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE = 8078016; | ||
| export const SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE = 8078017; | ||
| export const SOLANA_ERROR__CODECS__INVALID_CONSTANT = 8078018; | ||
| export const SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE = 8078019; | ||
| export const SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL = 8078020; | ||
| export const SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES = 8078021; | ||
| export const SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS = 8078022; | ||
| export const SOLANA_ERROR__CODECS__EXPECTED_DECODER_TO_CONSUME_ENTIRE_BYTE_ARRAY = 8078023; | ||
| export const SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_VALUE = 8078024; | ||
| export const SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_BYTES = 8078025; | ||
| // RPC-related errors. | ||
| // Reserve error codes in the range [8100000-8100999]. | ||
| export const SOLANA_ERROR__RPC__INTEGER_OVERFLOW = 8100000; | ||
| export const SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN = 8100001; | ||
| export const SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR = 8100002; | ||
| export const SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD = 8100003; | ||
| // RPC-Subscriptions-related errors. | ||
| // Reserve error codes in the range [8190000-8190999]. | ||
| export const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN = 8190000; | ||
| export const SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID = 8190001; | ||
| export const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED = 8190002; | ||
| export const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED = 8190003; | ||
| export const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT = 8190004; | ||
| // Program-client-related errors. | ||
| // Reserve error codes in the range [8500000-8500999]. | ||
| export const SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS = 8500000; | ||
| export const SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE = 8500001; | ||
| export const SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION = 8500002; | ||
| export const SOLANA_ERROR__PROGRAM_CLIENTS__UNEXPECTED_RESOLVED_INSTRUCTION_INPUT_TYPE = 8500003; | ||
| export const SOLANA_ERROR__PROGRAM_CLIENTS__RESOLVED_INSTRUCTION_INPUT_MUST_BE_NON_NULL = 8500004; | ||
| export const SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_ACCOUNT_TYPE = 8500005; | ||
| export const SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT = 8500006; | ||
| // Invariant violation errors. | ||
| // Reserve error codes in the range [9900000-9900999]. | ||
| // These errors should only be thrown when there is a bug with the | ||
| // library itself and should, in theory, never reach the end user. | ||
| export const SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING = 9900000; | ||
| export const SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE = 9900001; | ||
| export const SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING = 9900002; | ||
| export const SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE = 9900003; | ||
| export const SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED = 9900004; | ||
| export const SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_INSTRUCTION_PLAN_KIND = 9900005; | ||
| export const SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_TRANSACTION_PLAN_KIND = 9900006; | ||
| /** | ||
| * A union of every Solana error code | ||
| * | ||
| * @privateRemarks | ||
| * You might be wondering why this is not a TypeScript enum or const enum. | ||
| * | ||
| * One of the goals of this library is to enable people to use some or none of it without having to | ||
| * bundle all of it. | ||
| * | ||
| * If we made the set of error codes an enum then anyone who imported it (even if to only use a | ||
| * single error code) would be forced to bundle every code and its label. | ||
| * | ||
| * Const enums appear to solve this problem by letting the compiler inline only the codes that are | ||
| * actually used. Unfortunately exporting ambient (const) enums from a library like `@solana/errors` | ||
| * is not safe, for a variety of reasons covered here: https://stackoverflow.com/a/28818850 | ||
| */ | ||
| export type SolanaErrorCode = | ||
| | typeof SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND | ||
| | typeof SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED | ||
| | typeof SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT | ||
| | typeof SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT | ||
| | typeof SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND | ||
| | typeof SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED | ||
| | typeof SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS | ||
| | typeof SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH | ||
| | typeof SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY | ||
| | typeof SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS | ||
| | typeof SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE | ||
| | typeof SOLANA_ERROR__ADDRESSES__MALFORMED_PDA | ||
| | typeof SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED | ||
| | typeof SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED | ||
| | typeof SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER | ||
| | typeof SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED | ||
| | typeof SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY | ||
| | typeof SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS | ||
| | typeof SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL | ||
| | typeof SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH | ||
| | typeof SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH | ||
| | typeof SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH | ||
| | typeof SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__CODECS__EXPECTED_DECODER_TO_CONSUME_ENTIRE_BYTE_ARRAY | ||
| | typeof SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH | ||
| | typeof SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH | ||
| | typeof SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH | ||
| | typeof SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE | ||
| | typeof SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH | ||
| | typeof SOLANA_ERROR__CODECS__INVALID_CONSTANT | ||
| | typeof SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT | ||
| | typeof SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT | ||
| | typeof SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT | ||
| | typeof SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS | ||
| | typeof SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_BYTES | ||
| | typeof SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_VALUE | ||
| | typeof SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE | ||
| | typeof SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES | ||
| | typeof SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED | ||
| | typeof SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION | ||
| | typeof SOLANA_ERROR__FAILED_TO_SEND_TRANSACTIONS | ||
| | typeof SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS | ||
| | typeof SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA | ||
| | typeof SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR | ||
| | typeof SOLANA_ERROR__INSTRUCTION_PLANS__EMPTY_INSTRUCTION_PLAN | ||
| | typeof SOLANA_ERROR__INSTRUCTION_PLANS__EXPECTED_SUCCESSFUL_TRANSACTION_PLAN_RESULT | ||
| | typeof SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_SINGLE_TRANSACTION_PLAN_RESULT_NOT_FOUND | ||
| | typeof SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLAN | ||
| | typeof SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_CANNOT_ACCOMMODATE_PLAN | ||
| | typeof SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_PACKER_ALREADY_COMPLETE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_PLANS__NON_DIVISIBLE_TRANSACTION_PLANS_NOT_SUPPORTED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_INSTRUCTION_PLAN | ||
| | typeof SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN | ||
| | typeof SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN_RESULT | ||
| | typeof SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH | ||
| | typeof SOLANA_ERROR__INVALID_NONCE | ||
| | typeof SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING | ||
| | typeof SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED | ||
| | typeof SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_INSTRUCTION_PLAN_KIND | ||
| | typeof SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_TRANSACTION_PLAN_KIND | ||
| | typeof SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE | ||
| | typeof SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING | ||
| | typeof SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE | ||
| | typeof SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR | ||
| | typeof SOLANA_ERROR__JSON_RPC__INVALID_PARAMS | ||
| | typeof SOLANA_ERROR__JSON_RPC__INVALID_REQUEST | ||
| | typeof SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND | ||
| | typeof SOLANA_ERROR__JSON_RPC__PARSE_ERROR | ||
| | typeof SOLANA_ERROR__JSON_RPC__SCAN_ERROR | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_EPOCH_REWARDS_PERIOD_ACTIVE | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_UNREACHABLE | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_NOT_EPOCH_BOUNDARY | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION | ||
| | typeof SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH | ||
| | typeof SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH | ||
| | typeof SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH | ||
| | typeof SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY | ||
| | typeof SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__MALFORMED_BIGINT_STRING | ||
| | typeof SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR | ||
| | typeof SOLANA_ERROR__MALFORMED_NUMBER_STRING | ||
| | typeof SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__ADDRESSES_CANNOT_SIGN_OFFCHAIN_MESSAGE | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__APPLICATION_DOMAIN_STRING_LENGTH_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__ENVELOPE_SIGNERS_MISMATCH | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__INVALID_APPLICATION_DOMAIN_BYTE_LENGTH | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__MAXIMUM_LENGTH_EXCEEDED | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_FORMAT_MISMATCH | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_LENGTH_MISMATCH | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_MUST_BE_NON_EMPTY | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_ENVELOPE_SIGNATURES_CANNOT_BE_ZERO | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_REQUIRED_SIGNERS_CANNOT_BE_ZERO | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_SIGNATURES_MISMATCH | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__RESTRICTED_ASCII_BODY_CHARACTER_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_SORTED | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_UNIQUE | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURE_VERIFICATION_FAILURE | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURES_MISSING | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__UNEXPECTED_VERSION | ||
| | typeof SOLANA_ERROR__OFFCHAIN_MESSAGE__VERSION_NUMBER_NOT_SUPPORTED | ||
| | typeof SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT | ||
| | typeof SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION | ||
| | typeof SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS | ||
| | typeof SOLANA_ERROR__PROGRAM_CLIENTS__RESOLVED_INSTRUCTION_INPUT_MUST_BE_NON_NULL | ||
| | typeof SOLANA_ERROR__PROGRAM_CLIENTS__UNEXPECTED_RESOLVED_INSTRUCTION_INPUT_TYPE | ||
| | typeof SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_ACCOUNT_TYPE | ||
| | typeof SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE | ||
| | typeof SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD | ||
| | typeof SOLANA_ERROR__RPC__INTEGER_OVERFLOW | ||
| | typeof SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR | ||
| | typeof SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN | ||
| | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN | ||
| | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED | ||
| | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED | ||
| | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT | ||
| | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID | ||
| | typeof SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS | ||
| | typeof SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER | ||
| | typeof SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER | ||
| | typeof SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER | ||
| | typeof SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER | ||
| | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER | ||
| | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER | ||
| | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER | ||
| | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER | ||
| | typeof SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS | ||
| | typeof SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING | ||
| | typeof SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED | ||
| | typeof SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY | ||
| | typeof SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED | ||
| | typeof SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT | ||
| | typeof SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED | ||
| | typeof SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED | ||
| | typeof SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED | ||
| | typeof SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED | ||
| | typeof SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED | ||
| | typeof SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING | ||
| | typeof SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION | ||
| | typeof SOLANA_ERROR__TRANSACTION__CANNOT_DECODE_EMPTY_TRANSACTION_BYTES | ||
| | typeof SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_MESSAGE_BYTES | ||
| | typeof SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES | ||
| | typeof SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT | ||
| | typeof SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME | ||
| | typeof SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME | ||
| | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING | ||
| | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING | ||
| | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND | ||
| | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT | ||
| | typeof SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT | ||
| | typeof SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING | ||
| | typeof SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING | ||
| | typeof SOLANA_ERROR__TRANSACTION__INVALID_CONFIG_MASK_PRIORITY_FEE_BITS | ||
| | typeof SOLANA_ERROR__TRANSACTION__INVALID_NONCE_ACCOUNT_INDEX | ||
| | typeof SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE | ||
| | typeof SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING | ||
| | typeof SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES | ||
| | typeof SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE | ||
| | typeof SOLANA_ERROR__TRANSACTION__MALFORMED_MESSAGE_BYTES | ||
| | typeof SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH | ||
| | typeof SOLANA_ERROR__TRANSACTION__NONCE_ACCOUNT_CANNOT_BE_IN_LOOKUP_TABLE | ||
| | typeof SOLANA_ERROR__TRANSACTION__SIGNATURE_COUNT_TOO_HIGH_FOR_TRANSACTION_BYTES | ||
| | typeof SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING | ||
| | typeof SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_NOT_SUPPORTED | ||
| | typeof SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE | ||
| | typeof SOLANA_ERROR__TRANSACTION__VERSION_ZERO_MUST_BE_ENCODED_WITH_SIGNATURES_FIRST | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT | ||
| | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT; | ||
| /** | ||
| * Errors of this type are understood to have an optional {@link SolanaError} nested inside as | ||
| * `cause`. | ||
| */ | ||
| export type SolanaErrorCodeWithCause = | ||
| | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE | ||
| | typeof SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT; | ||
| /** | ||
| * Errors of this type have a deprecated `cause` property. Consumers should use the error's | ||
| * `context` instead to access relevant error information. | ||
| */ | ||
| export type SolanaErrorCodeWithDeprecatedCause = | ||
| typeof SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLAN; |
+862
| /** | ||
| * To add a new error, follow the instructions at | ||
| * https://github.com/anza-xyz/kit/tree/main/packages/errors/#adding-a-new-error | ||
| * | ||
| * @privateRemarks | ||
| * WARNING: | ||
| * - Don't change or remove members of an error's context. | ||
| */ | ||
| import { | ||
| SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND, | ||
| SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED, | ||
| SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT, | ||
| SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT, | ||
| SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND, | ||
| SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS, | ||
| SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH, | ||
| SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED, | ||
| SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED, | ||
| SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE, | ||
| SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE, | ||
| SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED, | ||
| SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE, | ||
| SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY, | ||
| SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS, | ||
| SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL, | ||
| SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH, | ||
| SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH, | ||
| SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE, | ||
| SOLANA_ERROR__CODECS__EXPECTED_DECODER_TO_CONSUME_ENTIRE_BYTE_ARRAY, | ||
| SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, | ||
| SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE, | ||
| SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, | ||
| SOLANA_ERROR__CODECS__INVALID_CONSTANT, | ||
| SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT, | ||
| SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT, | ||
| SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT, | ||
| SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, | ||
| SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_BYTES, | ||
| SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, | ||
| SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE, | ||
| SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE, | ||
| SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE, | ||
| SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES, | ||
| SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE, | ||
| SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION, | ||
| SOLANA_ERROR__FAILED_TO_SEND_TRANSACTIONS, | ||
| SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS, | ||
| SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA, | ||
| SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__EXPECTED_SUCCESSFUL_TRANSACTION_PLAN_RESULT, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_SINGLE_TRANSACTION_PLAN_RESULT_NOT_FOUND, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLAN, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_CANNOT_ACCOMMODATE_PLAN, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_INSTRUCTION_PLAN, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN_RESULT, | ||
| SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH, | ||
| SOLANA_ERROR__INVALID_NONCE, | ||
| SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING, | ||
| SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED, | ||
| SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_INSTRUCTION_PLAN_KIND, | ||
| SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_TRANSACTION_PLAN_KIND, | ||
| SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE, | ||
| SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR, | ||
| SOLANA_ERROR__JSON_RPC__INVALID_PARAMS, | ||
| SOLANA_ERROR__JSON_RPC__INVALID_REQUEST, | ||
| SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND, | ||
| SOLANA_ERROR__JSON_RPC__PARSE_ERROR, | ||
| SOLANA_ERROR__JSON_RPC__SCAN_ERROR, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_EPOCH_REWARDS_PERIOD_ACTIVE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_NOT_EPOCH_BOUNDARY, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION, | ||
| SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH, | ||
| SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH, | ||
| SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH, | ||
| SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE, | ||
| SOLANA_ERROR__MALFORMED_BIGINT_STRING, | ||
| SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR, | ||
| SOLANA_ERROR__MALFORMED_NUMBER_STRING, | ||
| SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__ADDRESSES_CANNOT_SIGN_OFFCHAIN_MESSAGE, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__APPLICATION_DOMAIN_STRING_LENGTH_OUT_OF_RANGE, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__ENVELOPE_SIGNERS_MISMATCH, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__INVALID_APPLICATION_DOMAIN_BYTE_LENGTH, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__MAXIMUM_LENGTH_EXCEEDED, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_FORMAT_MISMATCH, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_LENGTH_MISMATCH, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_SIGNATURES_MISMATCH, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURE_VERIFICATION_FAILURE, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURES_MISSING, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__UNEXPECTED_VERSION, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__VERSION_NUMBER_NOT_SUPPORTED, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__RESOLVED_INSTRUCTION_INPUT_MUST_BE_NON_NULL, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__UNEXPECTED_RESOLVED_INSTRUCTION_INPUT_TYPE, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_ACCOUNT_TYPE, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE, | ||
| SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD, | ||
| SOLANA_ERROR__RPC__INTEGER_OVERFLOW, | ||
| SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR, | ||
| SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN, | ||
| SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN, | ||
| SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT, | ||
| SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER, | ||
| SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY, | ||
| SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE, | ||
| SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING, | ||
| SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION, | ||
| SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT, | ||
| SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING, | ||
| SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE, | ||
| SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND, | ||
| SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT, | ||
| SOLANA_ERROR__TRANSACTION__INVALID_CONFIG_MASK_PRIORITY_FEE_BITS, | ||
| SOLANA_ERROR__TRANSACTION__INVALID_NONCE_ACCOUNT_INDEX, | ||
| SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES, | ||
| SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE, | ||
| SOLANA_ERROR__TRANSACTION__MALFORMED_MESSAGE_BYTES, | ||
| SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH, | ||
| SOLANA_ERROR__TRANSACTION__NONCE_ACCOUNT_CANNOT_BE_IN_LOOKUP_TABLE, | ||
| SOLANA_ERROR__TRANSACTION__SIGNATURE_COUNT_TOO_HIGH_FOR_TRANSACTION_BYTES, | ||
| SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING, | ||
| SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_NOT_SUPPORTED, | ||
| SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE, | ||
| SOLANA_ERROR__TRANSACTION__VERSION_ZERO_MUST_BE_ENCODED_WITH_SIGNATURES_FIRST, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN, | ||
| SolanaErrorCode, | ||
| } from './codes'; | ||
| import { RpcSimulateTransactionResult } from './json-rpc-error'; | ||
| type BasicInstructionErrorContext<T extends SolanaErrorCode> = { [P in T]: { index: number } }; | ||
| type DefaultUnspecifiedErrorContextToUndefined<T> = { | ||
| [P in SolanaErrorCode]: P extends keyof T ? T[P] : undefined; | ||
| }; | ||
| type ReadonlyContextValue<T> = { | ||
| [P in keyof T]: Readonly<T[P]>; | ||
| }; | ||
| type TypedArrayMutableProperties = 'copyWithin' | 'fill' | 'reverse' | 'set' | 'sort'; | ||
| interface ReadonlyUint8Array extends Omit<Uint8Array, TypedArrayMutableProperties> { | ||
| readonly [n: number]: number; | ||
| } | ||
| /** A amount of bytes. */ | ||
| type Bytes = number; | ||
| /** | ||
| * A map of every {@link SolanaError} code to the type of its `context` property. | ||
| */ | ||
| export type SolanaErrorContext = ReadonlyContextValue< | ||
| DefaultUnspecifiedErrorContextToUndefined< | ||
| BasicInstructionErrorContext< | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID | ||
| | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR | ||
| > & { | ||
| [SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND]: { | ||
| address: string; | ||
| }; | ||
| [SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED]: { | ||
| addresses: readonly string[]; | ||
| }; | ||
| [SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT]: { | ||
| address: string; | ||
| }; | ||
| [SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT]: { | ||
| address: string; | ||
| }; | ||
| [SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND]: { | ||
| addresses: readonly string[]; | ||
| }; | ||
| [SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS]: { | ||
| putativeAddress: string; | ||
| }; | ||
| [SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH]: { | ||
| actualLength: number; | ||
| }; | ||
| [SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED]: { | ||
| actual: number; | ||
| maxSeeds: number; | ||
| }; | ||
| [SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED]: { | ||
| actual: number; | ||
| index: number; | ||
| maxSeedLength: number; | ||
| }; | ||
| [SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE]: { | ||
| bump: number; | ||
| }; | ||
| [SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE]: { | ||
| actualLength: number; | ||
| }; | ||
| [SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE]: { | ||
| actualLength: number; | ||
| }; | ||
| [SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED]: { | ||
| currentBlockHeight: bigint; | ||
| lastValidBlockHeight: bigint; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY]: { | ||
| codecDescription: string; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS]: { | ||
| stringValues: readonly string[]; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL]: { | ||
| encodedBytes: ReadonlyUint8Array; | ||
| hexEncodedBytes: string; | ||
| hexSentinel: string; | ||
| sentinel: ReadonlyUint8Array; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH]: { | ||
| decoderFixedSize: number; | ||
| encoderFixedSize: number; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH]: { | ||
| decoderMaxSize: number | undefined; | ||
| encoderMaxSize: number | undefined; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE]: { | ||
| discriminator: bigint | number; | ||
| formattedValidDiscriminators: string; | ||
| validDiscriminators: readonly number[]; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__EXPECTED_DECODER_TO_CONSUME_ENTIRE_BYTE_ARRAY]: { | ||
| expectedLength: number; | ||
| numExcessBytes: number; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH]: { | ||
| bytesLength: number; | ||
| codecDescription: string; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE]: { | ||
| codecDescription: string; | ||
| expectedSize: number; | ||
| hexZeroValue: string; | ||
| zeroValue: ReadonlyUint8Array; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH]: { | ||
| bytesLength: number; | ||
| codecDescription: string; | ||
| expected: number; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__INVALID_CONSTANT]: { | ||
| constant: ReadonlyUint8Array; | ||
| data: ReadonlyUint8Array; | ||
| hexConstant: string; | ||
| hexData: string; | ||
| offset: number; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT]: { | ||
| value: bigint | boolean | number | string | null | undefined; | ||
| variants: readonly (bigint | boolean | number | string | null | undefined)[]; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT]: { | ||
| formattedNumericalValues: string; | ||
| numericalValues: readonly number[]; | ||
| stringValues: readonly string[]; | ||
| variant: number | string | symbol; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT]: { | ||
| value: bigint | boolean | number | string | null | undefined; | ||
| variants: readonly (bigint | boolean | number | string | null | undefined)[]; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS]: { | ||
| actual: bigint | number; | ||
| codecDescription: string; | ||
| expected: bigint | number; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_BYTES]: { | ||
| bytes: ReadonlyUint8Array; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE]: { | ||
| alphabet: string; | ||
| base: number; | ||
| value: string; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE]: { | ||
| discriminator: bigint | number; | ||
| maxRange: number; | ||
| minRange: number; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE]: { | ||
| codecDescription: string; | ||
| max: bigint | number; | ||
| min: bigint | number; | ||
| value: bigint | number; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE]: { | ||
| bytesLength: number; | ||
| codecDescription: string; | ||
| offset: number; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES]: { | ||
| decodedBytes: ReadonlyUint8Array; | ||
| hexDecodedBytes: string; | ||
| hexSentinel: string; | ||
| sentinel: ReadonlyUint8Array; | ||
| }; | ||
| [SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE]: { | ||
| maxRange: number; | ||
| minRange: number; | ||
| variant: number; | ||
| }; | ||
| [SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION]: { | ||
| causeMessage: string; | ||
| logs?: readonly string[]; | ||
| preflightData?: Omit<RpcSimulateTransactionResult, 'err'>; | ||
| transactionPlanResult: unknown; | ||
| }; | ||
| [SOLANA_ERROR__FAILED_TO_SEND_TRANSACTIONS]: { | ||
| causeMessages: string; | ||
| failedTransactions: ReadonlyArray<{ | ||
| error: Error; | ||
| index: number; | ||
| logs?: readonly string[]; | ||
| preflightData?: Omit<RpcSimulateTransactionResult, 'err'>; | ||
| }>; | ||
| transactionPlanResult: unknown; | ||
| }; | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR]: { | ||
| index: number; | ||
| }; | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM]: { | ||
| code: number; | ||
| index: number; | ||
| }; | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN]: { | ||
| errorName: string; | ||
| index: number; | ||
| instructionErrorContext?: unknown; | ||
| }; | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__EXPECTED_SUCCESSFUL_TRANSACTION_PLAN_RESULT]: { | ||
| transactionPlanResult: unknown; | ||
| }; | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_SINGLE_TRANSACTION_PLAN_RESULT_NOT_FOUND]: { | ||
| transactionPlanResult: unknown; | ||
| }; | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLAN]: { | ||
| abortReason?: unknown; | ||
| transactionPlanResult: unknown; | ||
| }; | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_CANNOT_ACCOMMODATE_PLAN]: { | ||
| numBytesRequired: number; | ||
| numFreeBytes: number; | ||
| }; | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_INSTRUCTION_PLAN]: { | ||
| actualKind: string; | ||
| expectedKind: string; | ||
| instructionPlan: unknown; | ||
| }; | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN]: { | ||
| actualKind: string; | ||
| expectedKind: string; | ||
| transactionPlan: unknown; | ||
| }; | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN_RESULT]: { | ||
| actualKind: string; | ||
| expectedKind: string; | ||
| transactionPlanResult: unknown; | ||
| }; | ||
| [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS]: { | ||
| data?: ReadonlyUint8Array; | ||
| programAddress: string; | ||
| }; | ||
| [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA]: { | ||
| accountAddresses?: readonly string[]; | ||
| programAddress: string; | ||
| }; | ||
| [SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH]: { | ||
| actualProgramAddress: string; | ||
| expectedProgramAddress: string; | ||
| }; | ||
| [SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH]: { | ||
| actualLength: number; | ||
| }; | ||
| [SOLANA_ERROR__INVALID_NONCE]: { | ||
| actualNonceValue: string; | ||
| expectedNonceValue: string; | ||
| }; | ||
| [SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING]: { | ||
| cacheKey: string; | ||
| }; | ||
| [SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED]: { | ||
| channelName: string; | ||
| supportedChannelNames: readonly string[]; | ||
| }; | ||
| [SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_INSTRUCTION_PLAN_KIND]: { | ||
| kind: string; | ||
| }; | ||
| [SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_TRANSACTION_PLAN_KIND]: { | ||
| kind: string; | ||
| }; | ||
| [SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE]: { | ||
| unexpectedValue: unknown; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__INVALID_PARAMS]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__INVALID_REQUEST]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__PARSE_ERROR]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__SCAN_ERROR]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_EPOCH_REWARDS_PERIOD_ACTIVE]: { | ||
| currentBlockHeight: bigint; | ||
| rewardsCompleteBlockHeight: bigint; | ||
| slot: bigint; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED]: { | ||
| contextSlot: bigint; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY]: { | ||
| numSlotsBehind?: number; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE]: Omit< | ||
| RpcSimulateTransactionResult, | ||
| 'err' | ||
| >; | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_NOT_EPOCH_BOUNDARY]: { | ||
| slot: bigint; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION]: { | ||
| __serverMessage: string; | ||
| }; | ||
| [SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH]: { | ||
| byteLength: number; | ||
| }; | ||
| [SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH]: { | ||
| actualLength: number; | ||
| }; | ||
| [SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH]: { | ||
| actualLength: number; | ||
| }; | ||
| [SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE]: { | ||
| actualLength: number; | ||
| }; | ||
| [SOLANA_ERROR__MALFORMED_BIGINT_STRING]: { | ||
| value: string; | ||
| }; | ||
| [SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR]: { | ||
| error: unknown; | ||
| message: string; | ||
| }; | ||
| [SOLANA_ERROR__MALFORMED_NUMBER_STRING]: { | ||
| value: string; | ||
| }; | ||
| [SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND]: { | ||
| nonceAccountAddress: string; | ||
| }; | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__ADDRESSES_CANNOT_SIGN_OFFCHAIN_MESSAGE]: { | ||
| expectedAddresses: readonly string[]; | ||
| unexpectedAddresses: readonly string[]; | ||
| }; | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__APPLICATION_DOMAIN_STRING_LENGTH_OUT_OF_RANGE]: { | ||
| actualLength: number; | ||
| }; | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__ENVELOPE_SIGNERS_MISMATCH]: { | ||
| missingRequiredSigners: readonly string[]; | ||
| unexpectedSigners: readonly string[]; | ||
| }; | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__INVALID_APPLICATION_DOMAIN_BYTE_LENGTH]: { | ||
| actualLength: number; | ||
| }; | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__MAXIMUM_LENGTH_EXCEEDED]: { | ||
| actualBytes: number; | ||
| maxBytes: number; | ||
| }; | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_FORMAT_MISMATCH]: { | ||
| actualMessageFormat: number; | ||
| expectedMessageFormat: number; | ||
| }; | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_LENGTH_MISMATCH]: { | ||
| actualLength: number; | ||
| specifiedLength: number; | ||
| }; | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_SIGNATURES_MISMATCH]: { | ||
| numRequiredSignatures: number; | ||
| signatoryAddresses: readonly string[]; | ||
| signaturesLength: number; | ||
| }; | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURES_MISSING]: { | ||
| addresses: readonly string[]; | ||
| }; | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURE_VERIFICATION_FAILURE]: { | ||
| signatoriesWithInvalidSignatures: readonly string[]; | ||
| signatoriesWithMissingSignatures: readonly string[]; | ||
| }; | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__UNEXPECTED_VERSION]: { | ||
| actualVersion: number; | ||
| expectedVersion: number; | ||
| }; | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__VERSION_NUMBER_NOT_SUPPORTED]: { | ||
| unsupportedVersion: number; | ||
| }; | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT]: { | ||
| accountData: ReadonlyUint8Array; | ||
| programName: string; | ||
| }; | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION]: { | ||
| instructionData: ReadonlyUint8Array; | ||
| programName: string; | ||
| }; | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS]: { | ||
| actualAccountMetas: number; | ||
| expectedAccountMetas: number; | ||
| }; | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__RESOLVED_INSTRUCTION_INPUT_MUST_BE_NON_NULL]: { | ||
| inputName: string; | ||
| }; | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__UNEXPECTED_RESOLVED_INSTRUCTION_INPUT_TYPE]: { | ||
| expectedType: string; | ||
| inputName: string; | ||
| }; | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_ACCOUNT_TYPE]: { | ||
| accountType: number | string; | ||
| programName: string; | ||
| }; | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE]: { | ||
| instructionType: number | string; | ||
| programName: string; | ||
| }; | ||
| [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN]: { | ||
| notificationName: string; | ||
| }; | ||
| [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT]: { | ||
| errorEvent: Event; | ||
| }; | ||
| [SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD]: { | ||
| method: string; | ||
| params: readonly unknown[]; | ||
| }; | ||
| [SOLANA_ERROR__RPC__INTEGER_OVERFLOW]: { | ||
| argumentLabel: string; | ||
| keyPath: readonly (number | string | symbol)[]; | ||
| methodName: string; | ||
| optionalPathLabel: string; | ||
| path?: string; | ||
| value: bigint; | ||
| }; | ||
| [SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR]: { | ||
| headers: Headers; | ||
| message: string; | ||
| statusCode: number; | ||
| }; | ||
| [SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN]: { | ||
| headers: readonly string[]; | ||
| }; | ||
| [SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS]: { | ||
| address: string; | ||
| }; | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER]: { | ||
| address: string; | ||
| }; | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER]: { | ||
| address: string; | ||
| }; | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER]: { | ||
| address: string; | ||
| }; | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER]: { | ||
| address: string; | ||
| }; | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER]: { | ||
| address: string; | ||
| }; | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER]: { | ||
| address: string; | ||
| }; | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER]: { | ||
| address: string; | ||
| }; | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER]: { | ||
| address: string; | ||
| }; | ||
| [SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY]: { | ||
| key: CryptoKey; | ||
| }; | ||
| [SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE]: { | ||
| value: bigint; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION]: { | ||
| index: number; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT]: { | ||
| accountIndex: number; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED]: { | ||
| accountIndex: number; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN]: { | ||
| errorName: string; | ||
| transactionErrorContext?: unknown; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION]: { | ||
| expectedAddresses: readonly string[]; | ||
| unexpectedAddresses: readonly string[]; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING]: { | ||
| index: number; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT]: { | ||
| transactionSize: Bytes; | ||
| transactionSizeLimit: Bytes; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING]: { | ||
| lookupTableAddresses: readonly string[]; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE]: { | ||
| highestKnownIndex: number; | ||
| highestRequestedIndex: number; | ||
| lookupTableAddress: string; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND]: { | ||
| index: number; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT]: Omit< | ||
| RpcSimulateTransactionResult, | ||
| 'err' | ||
| >; | ||
| [SOLANA_ERROR__TRANSACTION__INVALID_CONFIG_MASK_PRIORITY_FEE_BITS]: { | ||
| mask: number; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__INVALID_NONCE_ACCOUNT_INDEX]: { | ||
| nonce: string; | ||
| nonceAccountIndex: number; | ||
| numberOfStaticAccounts: number; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES]: { | ||
| programAddress: string; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE]: { | ||
| programAddress: string; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__MALFORMED_MESSAGE_BYTES]: { | ||
| messageBytes: ReadonlyUint8Array; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH]: { | ||
| numRequiredSignatures: number; | ||
| signaturesLength: number; | ||
| signerAddresses: readonly string[]; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__NONCE_ACCOUNT_CANNOT_BE_IN_LOOKUP_TABLE]: { | ||
| nonce: string; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING]: { | ||
| addresses: readonly string[]; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__SIGNATURE_COUNT_TOO_HIGH_FOR_TRANSACTION_BYTES]: { | ||
| numExpectedSignatures: number; | ||
| transactionBytes: ReadonlyUint8Array; | ||
| transactionBytesLength: number; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_NOT_SUPPORTED]: { | ||
| unsupportedVersion: number; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE]: { | ||
| actualVersion: number; | ||
| }; | ||
| [SOLANA_ERROR__TRANSACTION__VERSION_ZERO_MUST_BE_ENCODED_WITH_SIGNATURES_FIRST]: { | ||
| firstByte: number; | ||
| transactionBytes: ReadonlyUint8Array; | ||
| }; | ||
| } | ||
| > | ||
| >; | ||
| export function decodeEncodedContext(encodedContext: string): object { | ||
| const decodedUrlString = __NODEJS__ ? Buffer.from(encodedContext, 'base64').toString('utf8') : atob(encodedContext); | ||
| return Object.fromEntries(new URLSearchParams(decodedUrlString).entries()); | ||
| } | ||
| function encodeValue(value: unknown): string { | ||
| if (Array.isArray(value)) { | ||
| const commaSeparatedValues = value.map(encodeValue).join('%2C%20' /* ", " */); | ||
| return '%5B' /* "[" */ + commaSeparatedValues + /* "]" */ '%5D'; | ||
| } else if (typeof value === 'bigint') { | ||
| return `${value}n`; | ||
| } else { | ||
| return encodeURIComponent( | ||
| String( | ||
| value != null && Object.getPrototypeOf(value) === null | ||
| ? // Plain objects with no prototype don't have a `toString` method. | ||
| // Convert them before stringifying them. | ||
| { ...(value as object) } | ||
| : value, | ||
| ), | ||
| ); | ||
| } | ||
| } | ||
| function encodeObjectContextEntry([key, value]: [string, unknown]): `${typeof key}=${string}` { | ||
| return `${key}=${encodeValue(value)}`; | ||
| } | ||
| export function encodeContextObject(context: object): string { | ||
| const searchParamsString = Object.entries(context).map(encodeObjectContextEntry).join('&'); | ||
| return __NODEJS__ ? Buffer.from(searchParamsString, 'utf8').toString('base64') : btoa(searchParamsString); | ||
| } |
+148
| import { SolanaErrorCode, SolanaErrorCodeWithCause, SolanaErrorCodeWithDeprecatedCause } from './codes'; | ||
| import { SolanaErrorContext } from './context'; | ||
| import { getErrorMessage } from './message-formatter'; | ||
| /** | ||
| * A variant of {@link SolanaError} where the `cause` property is deprecated. | ||
| * | ||
| * This type is returned by {@link isSolanaError} when checking for error codes in | ||
| * {@link SolanaErrorCodeWithDeprecatedCause}. Accessing `cause` on these errors will show | ||
| * a deprecation warning in IDEs that support JSDoc `@deprecated` tags. | ||
| */ | ||
| export interface SolanaErrorWithDeprecatedCause< | ||
| TErrorCode extends SolanaErrorCodeWithDeprecatedCause = SolanaErrorCodeWithDeprecatedCause, | ||
| > extends Omit<SolanaError<TErrorCode>, 'cause'> { | ||
| /** | ||
| * @deprecated The `cause` property is deprecated for this error code. | ||
| * Use the error's `context` property instead to access relevant error information. | ||
| */ | ||
| readonly cause?: unknown; | ||
| } | ||
| /** | ||
| * A type guard that returns `true` if the input is a {@link SolanaError}, optionally with a | ||
| * particular error code. | ||
| * | ||
| * When the `code` argument is supplied and the input is a {@link SolanaError}, TypeScript will | ||
| * refine the error's {@link SolanaError#context | `context`} property to the type associated with | ||
| * that error code. You can use that context to render useful error messages, or to make | ||
| * context-aware decisions that help your application to recover from the error. | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * import { | ||
| * SOLANA_ERROR__TRANSACTION__MISSING_SIGNATURE, | ||
| * SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING, | ||
| * isSolanaError, | ||
| * } from '@solana/errors'; | ||
| * import { assertIsFullySignedTransaction, getSignatureFromTransaction } from '@solana/transactions'; | ||
| * | ||
| * try { | ||
| * const transactionSignature = getSignatureFromTransaction(tx); | ||
| * assertIsFullySignedTransaction(tx); | ||
| * /* ... *\/ | ||
| * } catch (e) { | ||
| * if (isSolanaError(e, SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING)) { | ||
| * displayError( | ||
| * "We can't send this transaction without signatures for these addresses:\n- %s", | ||
| * // The type of the `context` object is now refined to contain `addresses`. | ||
| * e.context.addresses.join('\n- '), | ||
| * ); | ||
| * return; | ||
| * } else if (isSolanaError(e, SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING)) { | ||
| * if (!tx.feePayer) { | ||
| * displayError('Choose a fee payer for this transaction before sending it'); | ||
| * } else { | ||
| * displayError('The fee payer still needs to sign for this transaction'); | ||
| * } | ||
| * return; | ||
| * } | ||
| * throw e; | ||
| * } | ||
| * ``` | ||
| */ | ||
| export function isSolanaError<TErrorCode extends SolanaErrorCodeWithDeprecatedCause>( | ||
| e: unknown, | ||
| code: TErrorCode, | ||
| ): e is SolanaErrorWithDeprecatedCause<TErrorCode>; | ||
| export function isSolanaError<TErrorCode extends SolanaErrorCode>( | ||
| e: unknown, | ||
| code?: TErrorCode, | ||
| ): e is SolanaError<TErrorCode>; | ||
| export function isSolanaError<TErrorCode extends SolanaErrorCode>( | ||
| e: unknown, | ||
| /** | ||
| * When supplied, this function will require that the input is a {@link SolanaError} _and_ that | ||
| * its error code is exactly this value. | ||
| */ | ||
| code?: TErrorCode, | ||
| ): e is SolanaError<TErrorCode> { | ||
| const isSolanaError = e instanceof Error && e.name === 'SolanaError'; | ||
| if (isSolanaError) { | ||
| if (code !== undefined) { | ||
| return (e as SolanaError<TErrorCode>).context.__code === code; | ||
| } | ||
| return true; | ||
| } | ||
| return false; | ||
| } | ||
| type SolanaErrorCodedContext = { | ||
| [P in SolanaErrorCode]: Readonly<{ | ||
| __code: P; | ||
| }> & | ||
| (SolanaErrorContext[P] extends undefined ? object : SolanaErrorContext[P]); | ||
| }; | ||
| /** | ||
| * Encapsulates an error's stacktrace, a Solana-specific numeric code that indicates what went | ||
| * wrong, and optional context if the type of error indicated by the code supports it. | ||
| */ | ||
| export class SolanaError<TErrorCode extends SolanaErrorCode = SolanaErrorCode> extends Error { | ||
| /** | ||
| * Indicates the root cause of this {@link SolanaError}, if any. | ||
| * | ||
| * For example, a transaction error might have an instruction error as its root cause. In this | ||
| * case, you will be able to access the instruction error on the transaction error as `cause`. | ||
| */ | ||
| readonly cause?: TErrorCode extends SolanaErrorCodeWithCause ? SolanaError : unknown = this.cause; | ||
| /** | ||
| * Contains context that can assist in understanding or recovering from a {@link SolanaError}. | ||
| */ | ||
| readonly context: SolanaErrorCodedContext[TErrorCode]; | ||
| constructor( | ||
| ...[code, contextAndErrorOptions]: SolanaErrorContext[TErrorCode] extends undefined | ||
| ? [code: TErrorCode, errorOptions?: ErrorOptions | undefined] | ||
| : [code: TErrorCode, contextAndErrorOptions: SolanaErrorContext[TErrorCode] & (ErrorOptions | undefined)] | ||
| ) { | ||
| let context: SolanaErrorContext[TErrorCode] | undefined; | ||
| let errorOptions: ErrorOptions | undefined; | ||
| if (contextAndErrorOptions) { | ||
| Object.entries(Object.getOwnPropertyDescriptors(contextAndErrorOptions)).forEach(([name, descriptor]) => { | ||
| // If the `ErrorOptions` type ever changes, update this code. | ||
| if (name === 'cause') { | ||
| errorOptions = { cause: descriptor.value }; | ||
| } else { | ||
| if (context === undefined) { | ||
| context = { | ||
| __code: code, | ||
| } as unknown as SolanaErrorContext[TErrorCode]; | ||
| } | ||
| Object.defineProperty(context, name, descriptor); | ||
| } | ||
| }); | ||
| } | ||
| const message = getErrorMessage(code, context); | ||
| super(message, errorOptions); | ||
| this.context = Object.freeze( | ||
| context === undefined | ||
| ? { | ||
| __code: code, | ||
| } | ||
| : context, | ||
| ) as SolanaErrorCodedContext[TErrorCode]; | ||
| // This is necessary so that `isSolanaError()` can identify a `SolanaError` without having | ||
| // to import the class for use in an `instanceof` check. | ||
| this.name = 'SolanaError'; | ||
| } | ||
| } |
+72
| /** | ||
| * This package brings together every error message across all Solana JavaScript modules. | ||
| * | ||
| * # Reading error messages | ||
| * | ||
| * ## In development mode | ||
| * | ||
| * When your bundler sets the constant `__DEV__` to `true`, every error message will be included in | ||
| * the bundle. As such, you will be able to read them in plain language wherever they appear. | ||
| * | ||
| * > [!WARNING] | ||
| * > The size of your JavaScript bundle will increase significantly with the inclusion of every | ||
| * > error message in development mode. Be sure to build your bundle with `__DEV__` set to `false` | ||
| * > when you go to production. | ||
| * | ||
| * ## In production mode | ||
| * | ||
| * When your bundler sets the constant `__DEV__` to `false`, error messages will be stripped from | ||
| * the bundle to save space. Only the error code will appear when an error is encountered. Follow | ||
| * the instructions in the error message to convert the error code back to the human-readable error | ||
| * message. | ||
| * | ||
| * For instance, to recover the error text for the error with code `123`: | ||
| * | ||
| * ```package-install | ||
| * npx @solana/errors decode -- 123 | ||
| * ``` | ||
| * | ||
| * > [!IMPORTANT] | ||
| * > The string representation of a {@link SolanaError} should not be shown to users. Developers | ||
| * > should use {@link isSolanaError} to distinguish the type of a thrown error, then show a custom, | ||
| * > localized error message appropriate for their application's audience. Custom error messages | ||
| * > should use the error's {@link SolanaError#context | `context`} if it would help the reader | ||
| * > understand what happened and/or what to do next. | ||
| * | ||
| * # Adding a new error | ||
| * | ||
| * 1. Add a new exported error code constant to `src/codes.ts`. | ||
| * 2. Add that new constant to the {@link SolanaErrorCode} union in `src/codes.ts`. | ||
| * 3. If you would like the new error to encapsulate context about the error itself (eg. the public | ||
| * keys for which a transaction is missing signatures) define the shape of that context in | ||
| * `src/context.ts`. | ||
| * 4. Add the error's message to `src/messages.ts`. Any context values that you defined above will | ||
| * be interpolated into the message wherever you write `$key`, where `key` is the index of a | ||
| * value in the context (eg. ``'Missing a signature for account `$address`'``). | ||
| * 5. Publish a new version of `@solana/errors`. | ||
| * 6. Bump the version of `@solana/errors` in the package from which the error is thrown. | ||
| * | ||
| * # Removing an error message | ||
| * | ||
| * - Don't remove errors. | ||
| * - Don't change the meaning of an error message. | ||
| * - Don't change or reorder error codes. | ||
| * - Don't change or remove members of an error's context. | ||
| * | ||
| * When an older client throws an error, we want to make sure that they can always decode the error. | ||
| * If you make any of the changes above, old clients will, by definition, not have received your | ||
| * changes. This could make the errors that they throw impossible to decode going forward. | ||
| * | ||
| * # Catching errors | ||
| * | ||
| * See {@link isSolanaError} for an example of how to handle a caught {@link SolanaError}. | ||
| * | ||
| * @packageDocumentation | ||
| */ | ||
| export * from './codes'; | ||
| export * from './error'; | ||
| export * from './instruction-error'; | ||
| export * from './json-rpc-error'; | ||
| export * from './simulation-errors'; | ||
| export * from './stack-trace'; | ||
| export * from './transaction-error'; |
| import { SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM, SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN } from './codes'; | ||
| import { SolanaError } from './error'; | ||
| import { getSolanaErrorFromRpcError } from './rpc-enum-errors'; | ||
| const ORDERED_ERROR_NAMES = [ | ||
| // Keep synced with RPC source: https://github.com/anza-xyz/solana-sdk/blob/master/instruction-error/src/lib.rs | ||
| // If this list ever gets too large, consider implementing a compression strategy like this: | ||
| // https://gist.github.com/steveluscher/aaa7cbbb5433b1197983908a40860c47 | ||
| 'GenericError', | ||
| 'InvalidArgument', | ||
| 'InvalidInstructionData', | ||
| 'InvalidAccountData', | ||
| 'AccountDataTooSmall', | ||
| 'InsufficientFunds', | ||
| 'IncorrectProgramId', | ||
| 'MissingRequiredSignature', | ||
| 'AccountAlreadyInitialized', | ||
| 'UninitializedAccount', | ||
| 'UnbalancedInstruction', | ||
| 'ModifiedProgramId', | ||
| 'ExternalAccountLamportSpend', | ||
| 'ExternalAccountDataModified', | ||
| 'ReadonlyLamportChange', | ||
| 'ReadonlyDataModified', | ||
| 'DuplicateAccountIndex', | ||
| 'ExecutableModified', | ||
| 'RentEpochModified', | ||
| 'NotEnoughAccountKeys', | ||
| 'AccountDataSizeChanged', | ||
| 'AccountNotExecutable', | ||
| 'AccountBorrowFailed', | ||
| 'AccountBorrowOutstanding', | ||
| 'DuplicateAccountOutOfSync', | ||
| 'Custom', | ||
| 'InvalidError', | ||
| 'ExecutableDataModified', | ||
| 'ExecutableLamportChange', | ||
| 'ExecutableAccountNotRentExempt', | ||
| 'UnsupportedProgramId', | ||
| 'CallDepth', | ||
| 'MissingAccount', | ||
| 'ReentrancyNotAllowed', | ||
| 'MaxSeedLengthExceeded', | ||
| 'InvalidSeeds', | ||
| 'InvalidRealloc', | ||
| 'ComputationalBudgetExceeded', | ||
| 'PrivilegeEscalation', | ||
| 'ProgramEnvironmentSetupFailure', | ||
| 'ProgramFailedToComplete', | ||
| 'ProgramFailedToCompile', | ||
| 'Immutable', | ||
| 'IncorrectAuthority', | ||
| 'BorshIoError', | ||
| 'AccountNotRentExempt', | ||
| 'InvalidAccountOwner', | ||
| 'ArithmeticOverflow', | ||
| 'UnsupportedSysvar', | ||
| 'IllegalOwner', | ||
| 'MaxAccountsDataAllocationsExceeded', | ||
| 'MaxAccountsExceeded', | ||
| 'MaxInstructionTraceLengthExceeded', | ||
| 'BuiltinProgramsMustConsumeComputeUnits', | ||
| ]; | ||
| export function getSolanaErrorFromInstructionError( | ||
| /** | ||
| * The index of the instruction inside the transaction. | ||
| */ | ||
| index: bigint | number, | ||
| instructionError: string | { [key: string]: unknown }, | ||
| ): SolanaError { | ||
| const numberIndex = Number(index); | ||
| return getSolanaErrorFromRpcError( | ||
| { | ||
| errorCodeBaseOffset: 4615001, | ||
| getErrorContext(errorCode, rpcErrorName, rpcErrorContext) { | ||
| if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN) { | ||
| return { | ||
| errorName: rpcErrorName, | ||
| index: numberIndex, | ||
| ...(rpcErrorContext !== undefined ? { instructionErrorContext: rpcErrorContext } : null), | ||
| }; | ||
| } else if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM) { | ||
| return { | ||
| code: Number(rpcErrorContext as bigint | number), | ||
| index: numberIndex, | ||
| }; | ||
| } | ||
| return { index: numberIndex }; | ||
| }, | ||
| orderedErrorNames: ORDERED_ERROR_NAMES, | ||
| rpcEnumError: instructionError, | ||
| }, | ||
| getSolanaErrorFromInstructionError, | ||
| ); | ||
| } |
| import { | ||
| SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR, | ||
| SOLANA_ERROR__JSON_RPC__INVALID_PARAMS, | ||
| SOLANA_ERROR__JSON_RPC__INVALID_REQUEST, | ||
| SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND, | ||
| SOLANA_ERROR__JSON_RPC__PARSE_ERROR, | ||
| SOLANA_ERROR__JSON_RPC__SCAN_ERROR, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION, | ||
| SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR, | ||
| SolanaErrorCode, | ||
| } from './codes'; | ||
| import { SolanaErrorContext } from './context'; | ||
| import { SolanaError } from './error'; | ||
| import { safeCaptureStackTrace } from './stack-trace'; | ||
| import { getSolanaErrorFromTransactionError } from './transaction-error'; | ||
| interface RpcErrorResponse { | ||
| code: bigint | number; | ||
| data?: unknown; | ||
| message: string; | ||
| } | ||
| type TransactionError = string | { [key: string]: unknown }; | ||
| /** | ||
| * Keep in sync with https://github.com/anza-xyz/agave/blob/master/rpc-client-types/src/response.rs | ||
| * @hidden | ||
| */ | ||
| export interface RpcSimulateTransactionResult { | ||
| accounts: | ||
| | ({ | ||
| data: | ||
| | string // LegacyBinary | ||
| | { | ||
| // Json | ||
| parsed: unknown; | ||
| program: string; | ||
| space: bigint; | ||
| } | ||
| // Binary | ||
| | [encodedBytes: string, encoding: 'base58' | 'base64' | 'base64+zstd' | 'binary' | 'jsonParsed']; | ||
| executable: boolean; | ||
| lamports: bigint; | ||
| owner: string; | ||
| rentEpoch: bigint; | ||
| space?: bigint; | ||
| } | null)[] | ||
| | null; | ||
| err: TransactionError | null; | ||
| // Enabled by `enable_cpi_recording` | ||
| innerInstructions?: | ||
| | { | ||
| index: number; | ||
| instructions: ( | ||
| | { | ||
| // Compiled | ||
| accounts: number[]; | ||
| data: string; | ||
| programIdIndex: number; | ||
| stackHeight?: number; | ||
| } | ||
| | { | ||
| // Parsed | ||
| parsed: unknown; | ||
| program: string; | ||
| programId: string; | ||
| stackHeight?: number; | ||
| } | ||
| | { | ||
| // PartiallyDecoded | ||
| accounts: string[]; | ||
| data: string; | ||
| programId: string; | ||
| stackHeight?: number; | ||
| } | ||
| )[]; | ||
| }[] | ||
| | null; | ||
| loadedAccountsDataSize: number | null; | ||
| logs: string[] | null; | ||
| replacementBlockhash: string | null; | ||
| returnData: { | ||
| data: [string, 'base64']; | ||
| programId: string; | ||
| } | null; | ||
| unitsConsumed: bigint | null; | ||
| } | ||
| export function getSolanaErrorFromJsonRpcError(putativeErrorResponse: unknown): SolanaError { | ||
| let out: SolanaError; | ||
| if (isRpcErrorResponse(putativeErrorResponse)) { | ||
| const { code: rawCode, data, message } = putativeErrorResponse; | ||
| const code = Number(rawCode); | ||
| if (code === SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE) { | ||
| const { err, ...preflightErrorContext } = data as RpcSimulateTransactionResult; | ||
| const causeObject = err ? { cause: getSolanaErrorFromTransactionError(err) } : null; | ||
| out = new SolanaError(SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE, { | ||
| ...preflightErrorContext, | ||
| ...causeObject, | ||
| }); | ||
| } else { | ||
| let errorContext; | ||
| switch (code) { | ||
| case SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR: | ||
| case SOLANA_ERROR__JSON_RPC__INVALID_PARAMS: | ||
| case SOLANA_ERROR__JSON_RPC__INVALID_REQUEST: | ||
| case SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND: | ||
| case SOLANA_ERROR__JSON_RPC__PARSE_ERROR: | ||
| case SOLANA_ERROR__JSON_RPC__SCAN_ERROR: | ||
| case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP: | ||
| case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE: | ||
| case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET: | ||
| case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX: | ||
| case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED: | ||
| case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED: | ||
| case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE: | ||
| case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION: | ||
| // The server supplies no structured data, but rather a pre-formatted message. Put | ||
| // the server message in `context` so as not to completely lose the data. The long | ||
| // term fix for this is to add data to the server responses and modify the | ||
| // messages in `@solana/errors` to be actual format strings. | ||
| errorContext = { __serverMessage: message }; | ||
| break; | ||
| default: | ||
| if (typeof data === 'object' && !Array.isArray(data)) { | ||
| errorContext = data; | ||
| } | ||
| } | ||
| out = new SolanaError(code as SolanaErrorCode, errorContext as SolanaErrorContext[SolanaErrorCode]); | ||
| } | ||
| } else { | ||
| const message = | ||
| typeof putativeErrorResponse === 'object' && | ||
| putativeErrorResponse !== null && | ||
| 'message' in putativeErrorResponse && | ||
| typeof putativeErrorResponse.message === 'string' | ||
| ? putativeErrorResponse.message | ||
| : 'Malformed JSON-RPC error with no message attribute'; | ||
| out = new SolanaError(SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR, { error: putativeErrorResponse, message }); | ||
| } | ||
| safeCaptureStackTrace(out, getSolanaErrorFromJsonRpcError); | ||
| return out; | ||
| } | ||
| function isRpcErrorResponse(value: unknown): value is RpcErrorResponse { | ||
| return ( | ||
| typeof value === 'object' && | ||
| value !== null && | ||
| 'code' in value && | ||
| 'message' in value && | ||
| (typeof value.code === 'number' || typeof value.code === 'bigint') && | ||
| typeof value.message === 'string' | ||
| ); | ||
| } |
| import { SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN, SolanaErrorCode } from './codes'; | ||
| import { encodeContextObject } from './context'; | ||
| import { SolanaErrorMessages } from './messages'; | ||
| const INSTRUCTION_ERROR_RANGE_SIZE = 1000; | ||
| const enum StateType { | ||
| EscapeSequence, | ||
| Text, | ||
| Variable, | ||
| } | ||
| type State = Readonly<{ | ||
| [START_INDEX]: number; | ||
| [TYPE]: StateType; | ||
| }>; | ||
| const START_INDEX = 'i'; | ||
| const TYPE = 't'; | ||
| export function getHumanReadableErrorMessage<TErrorCode extends SolanaErrorCode>( | ||
| code: TErrorCode, | ||
| context: object = {}, | ||
| ): string { | ||
| const messageFormatString = SolanaErrorMessages[code]; | ||
| if (messageFormatString.length === 0) { | ||
| return ''; | ||
| } | ||
| let state: State; | ||
| function commitStateUpTo(endIndex?: number) { | ||
| if (state[TYPE] === StateType.Variable) { | ||
| const variableName = messageFormatString.slice(state[START_INDEX] + 1, endIndex); | ||
| fragments.push( | ||
| variableName in context | ||
| ? // eslint-disable-next-line @typescript-eslint/restrict-template-expressions | ||
| `${context[variableName as keyof typeof context]}` | ||
| : `$${variableName}`, | ||
| ); | ||
| } else if (state[TYPE] === StateType.Text) { | ||
| fragments.push(messageFormatString.slice(state[START_INDEX], endIndex)); | ||
| } | ||
| } | ||
| const fragments: string[] = []; | ||
| messageFormatString.split('').forEach((char, ii) => { | ||
| if (ii === 0) { | ||
| state = { | ||
| [START_INDEX]: 0, | ||
| [TYPE]: | ||
| messageFormatString[0] === '\\' | ||
| ? StateType.EscapeSequence | ||
| : messageFormatString[0] === '$' | ||
| ? StateType.Variable | ||
| : StateType.Text, | ||
| }; | ||
| return; | ||
| } | ||
| let nextState; | ||
| switch (state[TYPE]) { | ||
| case StateType.EscapeSequence: | ||
| nextState = { [START_INDEX]: ii, [TYPE]: StateType.Text }; | ||
| break; | ||
| case StateType.Text: | ||
| if (char === '\\') { | ||
| nextState = { [START_INDEX]: ii, [TYPE]: StateType.EscapeSequence }; | ||
| } else if (char === '$') { | ||
| nextState = { [START_INDEX]: ii, [TYPE]: StateType.Variable }; | ||
| } | ||
| break; | ||
| case StateType.Variable: | ||
| if (char === '\\') { | ||
| nextState = { [START_INDEX]: ii, [TYPE]: StateType.EscapeSequence }; | ||
| } else if (char === '$') { | ||
| nextState = { [START_INDEX]: ii, [TYPE]: StateType.Variable }; | ||
| } else if (!char.match(/\w/)) { | ||
| nextState = { [START_INDEX]: ii, [TYPE]: StateType.Text }; | ||
| } | ||
| break; | ||
| } | ||
| if (nextState) { | ||
| if (state !== nextState) { | ||
| commitStateUpTo(ii); | ||
| } | ||
| state = nextState; | ||
| } | ||
| }); | ||
| commitStateUpTo(); | ||
| let message = fragments.join(''); | ||
| if ( | ||
| code >= SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN && | ||
| code < SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN + INSTRUCTION_ERROR_RANGE_SIZE && | ||
| 'index' in context | ||
| ) { | ||
| message += ` (instruction #${(context as { index: number }).index + 1})`; | ||
| } | ||
| return message; | ||
| } | ||
| export function getErrorMessage<TErrorCode extends SolanaErrorCode>( | ||
| code: TErrorCode, | ||
| context: Record<string, unknown> = {}, | ||
| ): string { | ||
| if (__DEV__) { | ||
| return getHumanReadableErrorMessage(code, context); | ||
| } else { | ||
| let decodingAdviceMessage = `Solana error #${code}; Decode this error by running \`npx @solana/errors decode -- ${code}`; | ||
| if (Object.keys(context).length) { | ||
| /** | ||
| * DANGER: Be sure that the shell command is escaped in such a way that makes it | ||
| * impossible for someone to craft malicious context values that would result in | ||
| * an exploit against anyone who bindly copy/pastes it into their terminal. | ||
| */ | ||
| decodingAdviceMessage += ` '${encodeContextObject(context)}'`; | ||
| } | ||
| return `${decodingAdviceMessage}\``; | ||
| } | ||
| } |
+791
| /* eslint-disable sort-keys-fix/sort-keys-fix */ | ||
| /** | ||
| * To add a new error, follow the instructions at | ||
| * https://github.com/anza-xyz/kit/tree/main/packages/errors#adding-a-new-error | ||
| * | ||
| * WARNING: | ||
| * - Don't change the meaning of an error message. | ||
| */ | ||
| import { | ||
| SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND, | ||
| SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED, | ||
| SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT, | ||
| SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT, | ||
| SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND, | ||
| SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED, | ||
| SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS, | ||
| SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH, | ||
| SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY, | ||
| SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS, | ||
| SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE, | ||
| SOLANA_ERROR__ADDRESSES__MALFORMED_PDA, | ||
| SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED, | ||
| SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED, | ||
| SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE, | ||
| SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER, | ||
| SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE, | ||
| SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED, | ||
| SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE, | ||
| SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY, | ||
| SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS, | ||
| SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL, | ||
| SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH, | ||
| SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH, | ||
| SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH, | ||
| SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE, | ||
| SOLANA_ERROR__CODECS__EXPECTED_DECODER_TO_CONSUME_ENTIRE_BYTE_ARRAY, | ||
| SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH, | ||
| SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, | ||
| SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH, | ||
| SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE, | ||
| SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, | ||
| SOLANA_ERROR__CODECS__INVALID_CONSTANT, | ||
| SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT, | ||
| SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT, | ||
| SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT, | ||
| SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, | ||
| SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_BYTES, | ||
| SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_VALUE, | ||
| SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, | ||
| SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE, | ||
| SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE, | ||
| SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE, | ||
| SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES, | ||
| SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE, | ||
| SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED, | ||
| SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION, | ||
| SOLANA_ERROR__FAILED_TO_SEND_TRANSACTIONS, | ||
| SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS, | ||
| SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA, | ||
| SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID, | ||
| SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__EMPTY_INSTRUCTION_PLAN, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__EXPECTED_SUCCESSFUL_TRANSACTION_PLAN_RESULT, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_SINGLE_TRANSACTION_PLAN_RESULT_NOT_FOUND, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLAN, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_CANNOT_ACCOMMODATE_PLAN, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_PACKER_ALREADY_COMPLETE, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__NON_DIVISIBLE_TRANSACTION_PLANS_NOT_SUPPORTED, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_INSTRUCTION_PLAN, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN, | ||
| SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN_RESULT, | ||
| SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH, | ||
| SOLANA_ERROR__INVALID_NONCE, | ||
| SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING, | ||
| SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED, | ||
| SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_INSTRUCTION_PLAN_KIND, | ||
| SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_TRANSACTION_PLAN_KIND, | ||
| SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE, | ||
| SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING, | ||
| SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE, | ||
| SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR, | ||
| SOLANA_ERROR__JSON_RPC__INVALID_PARAMS, | ||
| SOLANA_ERROR__JSON_RPC__INVALID_REQUEST, | ||
| SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND, | ||
| SOLANA_ERROR__JSON_RPC__PARSE_ERROR, | ||
| SOLANA_ERROR__JSON_RPC__SCAN_ERROR, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_EPOCH_REWARDS_PERIOD_ACTIVE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_UNREACHABLE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_NOT_EPOCH_BOUNDARY, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE, | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION, | ||
| SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH, | ||
| SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH, | ||
| SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH, | ||
| SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY, | ||
| SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE, | ||
| SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE, | ||
| SOLANA_ERROR__MALFORMED_BIGINT_STRING, | ||
| SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR, | ||
| SOLANA_ERROR__MALFORMED_NUMBER_STRING, | ||
| SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__ADDRESSES_CANNOT_SIGN_OFFCHAIN_MESSAGE, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__APPLICATION_DOMAIN_STRING_LENGTH_OUT_OF_RANGE, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__ENVELOPE_SIGNERS_MISMATCH, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__INVALID_APPLICATION_DOMAIN_BYTE_LENGTH, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__MAXIMUM_LENGTH_EXCEEDED, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_FORMAT_MISMATCH, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_LENGTH_MISMATCH, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_MUST_BE_NON_EMPTY, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_ENVELOPE_SIGNATURES_CANNOT_BE_ZERO, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_REQUIRED_SIGNERS_CANNOT_BE_ZERO, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_SIGNATURES_MISMATCH, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__RESTRICTED_ASCII_BODY_CHARACTER_OUT_OF_RANGE, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_SORTED, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_UNIQUE, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURE_VERIFICATION_FAILURE, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURES_MISSING, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__UNEXPECTED_VERSION, | ||
| SOLANA_ERROR__OFFCHAIN_MESSAGE__VERSION_NUMBER_NOT_SUPPORTED, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__RESOLVED_INSTRUCTION_INPUT_MUST_BE_NON_NULL, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__UNEXPECTED_RESOLVED_INSTRUCTION_INPUT_TYPE, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_ACCOUNT_TYPE, | ||
| SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE, | ||
| SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD, | ||
| SOLANA_ERROR__RPC__INTEGER_OVERFLOW, | ||
| SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR, | ||
| SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN, | ||
| SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN, | ||
| SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED, | ||
| SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED, | ||
| SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT, | ||
| SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID, | ||
| SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER, | ||
| SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER, | ||
| SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS, | ||
| SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING, | ||
| SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, | ||
| SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY, | ||
| SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED, | ||
| SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT, | ||
| SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED, | ||
| SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED, | ||
| SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED, | ||
| SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED, | ||
| SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED, | ||
| SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE, | ||
| SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING, | ||
| SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION, | ||
| SOLANA_ERROR__TRANSACTION__CANNOT_DECODE_EMPTY_TRANSACTION_BYTES, | ||
| SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_MESSAGE_BYTES, | ||
| SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES, | ||
| SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT, | ||
| SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME, | ||
| SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME, | ||
| SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING, | ||
| SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE, | ||
| SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING, | ||
| SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND, | ||
| SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT, | ||
| SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT, | ||
| SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING, | ||
| SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING, | ||
| SOLANA_ERROR__TRANSACTION__INVALID_CONFIG_MASK_PRIORITY_FEE_BITS, | ||
| SOLANA_ERROR__TRANSACTION__INVALID_NONCE_ACCOUNT_INDEX, | ||
| SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE, | ||
| SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING, | ||
| SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES, | ||
| SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE, | ||
| SOLANA_ERROR__TRANSACTION__MALFORMED_MESSAGE_BYTES, | ||
| SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH, | ||
| SOLANA_ERROR__TRANSACTION__NONCE_ACCOUNT_CANNOT_BE_IN_LOOKUP_TABLE, | ||
| SOLANA_ERROR__TRANSACTION__SIGNATURE_COUNT_TOO_HIGH_FOR_TRANSACTION_BYTES, | ||
| SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING, | ||
| SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_NOT_SUPPORTED, | ||
| SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE, | ||
| SOLANA_ERROR__TRANSACTION__VERSION_ZERO_MUST_BE_ENCODED_WITH_SIGNATURES_FIRST, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT, | ||
| SolanaErrorCode, | ||
| } from './codes'; | ||
| /** | ||
| * A map of every {@link SolanaError} code to the error message shown to developers in development | ||
| * mode. | ||
| */ | ||
| export const SolanaErrorMessages: Readonly<{ | ||
| // This type makes this data structure exhaustive with respect to `SolanaErrorCode`. | ||
| // TypeScript will fail to build this project if add an error code without a message. | ||
| [P in SolanaErrorCode]: string; | ||
| }> = { | ||
| [SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND]: 'Account not found at address: $address', | ||
| [SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED]: | ||
| 'Not all accounts were decoded. Encoded accounts found at addresses: $addresses.', | ||
| [SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT]: 'Expected decoded account at address: $address', | ||
| [SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT]: 'Failed to decode account data at address: $address', | ||
| [SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND]: 'Accounts not found at addresses: $addresses', | ||
| [SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED]: | ||
| 'Unable to find a viable program address bump seed.', | ||
| [SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS]: '$putativeAddress is not a base58-encoded address.', | ||
| [SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH]: | ||
| 'Expected base58 encoded address to decode to a byte array of length 32. Actual length: $actualLength.', | ||
| [SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY]: 'The `CryptoKey` must be an `Ed25519` public key.', | ||
| [SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS]: | ||
| '$putativeOffCurveAddress is not a base58-encoded off-curve address.', | ||
| [SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE]: 'Invalid seeds; point must fall off the Ed25519 curve.', | ||
| [SOLANA_ERROR__ADDRESSES__MALFORMED_PDA]: | ||
| 'Expected given program derived address to have the following format: [Address, ProgramDerivedAddressBump].', | ||
| [SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED]: | ||
| 'A maximum of $maxSeeds seeds, including the bump seed, may be supplied when creating an address. Received: $actual.', | ||
| [SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED]: | ||
| 'The seed at index $index with length $actual exceeds the maximum length of $maxSeedLength bytes.', | ||
| [SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE]: | ||
| 'Expected program derived address bump to be in the range [0, 255], got: $bump.', | ||
| [SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER]: 'Program address cannot end with PDA marker.', | ||
| [SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE]: | ||
| 'Expected base58-encoded address string of length in the range [32, 44]. Actual length: $actualLength.', | ||
| [SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE]: | ||
| 'Expected base58-encoded blockash string of length in the range [32, 44]. Actual length: $actualLength.', | ||
| [SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED]: | ||
| 'The network has progressed past the last block for which this transaction could have been committed.', | ||
| [SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY]: | ||
| 'Codec [$codecDescription] cannot decode empty byte arrays.', | ||
| [SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS]: | ||
| 'Enum codec cannot use lexical values [$stringValues] as discriminators. Either remove all lexical values or set `useValuesAsDiscriminators` to `false`.', | ||
| [SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL]: | ||
| 'Sentinel [$hexSentinel] must not be present in encoded bytes [$hexEncodedBytes].', | ||
| [SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH]: | ||
| 'Encoder and decoder must have the same fixed size, got [$encoderFixedSize] and [$decoderFixedSize].', | ||
| [SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH]: | ||
| 'Encoder and decoder must have the same max size, got [$encoderMaxSize] and [$decoderMaxSize].', | ||
| [SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH]: | ||
| 'Encoder and decoder must either both be fixed-size or variable-size.', | ||
| [SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE]: | ||
| 'Enum discriminator out of range. Expected a number in [$formattedValidDiscriminators], got $discriminator.', | ||
| [SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH]: 'Expected a fixed-size codec, got a variable-size one.', | ||
| [SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH]: | ||
| 'Codec [$codecDescription] expected a positive byte length, got $bytesLength.', | ||
| [SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH]: 'Expected a variable-size codec, got a fixed-size one.', | ||
| [SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE]: | ||
| 'Codec [$codecDescription] expected zero-value [$hexZeroValue] to have the same size as the provided fixed-size item [$expectedSize bytes].', | ||
| [SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH]: | ||
| 'Codec [$codecDescription] expected $expected bytes, got $bytesLength.', | ||
| [SOLANA_ERROR__CODECS__INVALID_CONSTANT]: | ||
| 'Expected byte array constant [$hexConstant] to be present in data [$hexData] at offset [$offset].', | ||
| [SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT]: | ||
| 'Invalid discriminated union variant. Expected one of [$variants], got $value.', | ||
| [SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT]: | ||
| 'Invalid enum variant. Expected one of [$stringValues] or a number in [$formattedNumericalValues], got $variant.', | ||
| [SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT]: | ||
| 'Invalid literal union variant. Expected one of [$variants], got $value.', | ||
| [SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS]: | ||
| 'Expected [$codecDescription] to have $expected items, got $actual.', | ||
| [SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE]: 'Invalid value $value for base $base with alphabet $alphabet.', | ||
| [SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE]: | ||
| 'Literal union discriminator out of range. Expected a number between $minRange and $maxRange, got $discriminator.', | ||
| [SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE]: | ||
| 'Codec [$codecDescription] expected number to be in the range [$min, $max], got $value.', | ||
| [SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE]: | ||
| 'Codec [$codecDescription] expected offset to be in the range [0, $bytesLength], got $offset.', | ||
| [SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES]: | ||
| 'Expected sentinel [$hexSentinel] to be present in decoded bytes [$hexDecodedBytes].', | ||
| [SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE]: | ||
| 'Union variant out of range. Expected an index between $minRange and $maxRange, got $variant.', | ||
| [SOLANA_ERROR__CODECS__EXPECTED_DECODER_TO_CONSUME_ENTIRE_BYTE_ARRAY]: | ||
| 'This decoder expected a byte array of exactly $expectedLength bytes, but $numExcessBytes unexpected excess bytes remained after decoding. Are you sure that you have chosen the correct decoder for this data?', | ||
| [SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_VALUE]: | ||
| 'Invalid pattern match value. The provided value does not match any of the specified patterns.', | ||
| [SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_BYTES]: | ||
| 'Invalid pattern match bytes. The provided byte array does not match any of the specified patterns.', | ||
| [SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED]: 'No random values implementation could be found.', | ||
| [SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION]: 'Failed to send transaction$causeMessage', | ||
| [SOLANA_ERROR__FAILED_TO_SEND_TRANSACTIONS]: 'Failed to send transactions$causeMessages', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED]: 'Instruction requires an uninitialized account', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED]: | ||
| 'Instruction tries to borrow reference for an account which is already borrowed', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING]: | ||
| 'Instruction left account with an outstanding borrowed reference', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED]: | ||
| "Program other than the account's owner changed the size of the account data", | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL]: 'Account data too small for instruction', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE]: 'Instruction expected an executable account', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT]: | ||
| 'An account does not have enough lamports to be rent-exempt', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW]: 'Program arithmetic overflowed', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR]: 'Failed to serialize or deserialize account data', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS]: | ||
| 'Builtin programs must consume compute units', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH]: 'Cross-program invocation call depth too deep', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED]: 'Computational budget exceeded', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM]: 'Custom program error: #$code', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX]: 'Instruction contains duplicate accounts', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC]: | ||
| 'Instruction modifications of multiply-passed account differ', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT]: 'Executable accounts must be rent exempt', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED]: 'Instruction changed executable accounts data', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE]: | ||
| 'Instruction changed the balance of an executable account', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED]: 'Instruction changed executable bit of an account', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED]: | ||
| 'Instruction modified data of an account it does not own', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND]: | ||
| 'Instruction spent from the balance of an account it does not own', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR]: 'Generic instruction error', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER]: 'Provided owner is not allowed', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE]: 'Account is immutable', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY]: 'Incorrect authority provided', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID]: 'Incorrect program id for instruction', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS]: 'Insufficient funds for instruction', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA]: 'Invalid account data for instruction', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER]: 'Invalid account owner', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT]: 'Invalid program argument', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR]: 'Program returned invalid error code', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA]: 'Invalid instruction data', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC]: 'Failed to reallocate account data', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS]: 'Provided seeds do not result in a valid address', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED]: | ||
| 'Accounts data allocations exceeded the maximum allowed per transaction', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED]: 'Max accounts exceeded', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED]: 'Max instruction trace length exceeded', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED]: | ||
| 'Length of the seed is too long for address generation', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT]: 'An account required by the instruction is missing', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE]: 'Missing required signature for instruction', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID]: | ||
| 'Instruction illegally modified the program id of an account', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS]: 'Insufficient account keys for instruction', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION]: | ||
| 'Cross-program invocation with unauthorized signer or writable account', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE]: | ||
| 'Failed to create program execution environment', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE]: 'Program failed to compile', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE]: 'Program failed to complete', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED]: 'Instruction modified data of a read-only account', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE]: | ||
| 'Instruction changed the balance of a read-only account', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED]: | ||
| 'Cross-program invocation reentrancy not allowed for this instruction', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED]: 'Instruction modified rent epoch of an account', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION]: | ||
| 'Sum of account balances before and after instruction do not match', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT]: 'Instruction requires an initialized account', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN]: 'The instruction failed with the error: $errorName', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID]: 'Unsupported program id', | ||
| [SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR]: 'Unsupported sysvar', | ||
| [SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_INSTRUCTION_PLAN_KIND]: 'Invalid instruction plan kind: $kind.', | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__EMPTY_INSTRUCTION_PLAN]: 'The provided instruction plan is empty.', | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_SINGLE_TRANSACTION_PLAN_RESULT_NOT_FOUND]: | ||
| 'No failed transaction plan result was found in the provided transaction plan result.', | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__NON_DIVISIBLE_TRANSACTION_PLANS_NOT_SUPPORTED]: | ||
| 'This transaction plan executor does not support non-divisible sequential plans. To support them, you may create your own executor such that multi-transaction atomicity is preserved — e.g. by targetting RPCs that support transaction bundles.', | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLAN]: | ||
| 'The provided transaction plan failed to execute. See the `transactionPlanResult` attribute for more details. Note that the `cause` property is deprecated, and a future version will not set it.', | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_CANNOT_ACCOMMODATE_PLAN]: | ||
| 'The provided message has insufficient capacity to accommodate the next instruction(s) in this plan. Expected at least $numBytesRequired free byte(s), got $numFreeBytes byte(s).', | ||
| [SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_TRANSACTION_PLAN_KIND]: 'Invalid transaction plan kind: $kind.', | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_PACKER_ALREADY_COMPLETE]: | ||
| 'No more instructions to pack; the message packer has completed the instruction plan.', | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_INSTRUCTION_PLAN]: | ||
| 'Unexpected instruction plan. Expected $expectedKind plan, got $actualKind plan.', | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN]: | ||
| 'Unexpected transaction plan. Expected $expectedKind plan, got $actualKind plan.', | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN_RESULT]: | ||
| 'Unexpected transaction plan result. Expected $expectedKind plan, got $actualKind plan.', | ||
| [SOLANA_ERROR__INSTRUCTION_PLANS__EXPECTED_SUCCESSFUL_TRANSACTION_PLAN_RESULT]: | ||
| 'Expected a successful transaction plan result. I.e. there is at least one failed or cancelled transaction in the plan.', | ||
| [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS]: 'The instruction does not have any accounts.', | ||
| [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA]: 'The instruction does not have any data.', | ||
| [SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH]: | ||
| 'Expected instruction to have progress address $expectedProgramAddress, got $actualProgramAddress.', | ||
| [SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH]: | ||
| 'Expected base58 encoded blockhash to decode to a byte array of length 32. Actual length: $actualLength.', | ||
| [SOLANA_ERROR__INVALID_NONCE]: | ||
| 'The nonce `$expectedNonceValue` is no longer valid. It has advanced to `$actualNonceValue`', | ||
| [SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING]: | ||
| 'Invariant violation: Found no abortable iterable cache entry for key `$cacheKey`. It ' + | ||
| 'should be impossible to hit this error; please file an issue at ' + | ||
| 'https://sola.na/web3invariant', | ||
| [SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED]: | ||
| 'Invariant violation: This data publisher does not publish to the channel named ' + | ||
| '`$channelName`. Supported channels include $supportedChannelNames.', | ||
| [SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE]: | ||
| 'Invariant violation: WebSocket message iterator state is corrupt; iterated without first ' + | ||
| 'resolving existing message promise. It should be impossible to hit this error; please ' + | ||
| 'file an issue at https://sola.na/web3invariant', | ||
| [SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING]: | ||
| 'Invariant violation: WebSocket message iterator is missing state storage. It should be ' + | ||
| 'impossible to hit this error; please file an issue at https://sola.na/web3invariant', | ||
| [SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE]: | ||
| 'Invariant violation: Switch statement non-exhaustive. Received unexpected value ' + | ||
| '`$unexpectedValue`. It should be impossible to hit this error; please file an issue at ' + | ||
| 'https://sola.na/web3invariant', | ||
| [SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR]: 'JSON-RPC error: Internal JSON-RPC error ($__serverMessage)', | ||
| [SOLANA_ERROR__JSON_RPC__INVALID_PARAMS]: 'JSON-RPC error: Invalid method parameter(s) ($__serverMessage)', | ||
| [SOLANA_ERROR__JSON_RPC__INVALID_REQUEST]: | ||
| 'JSON-RPC error: The JSON sent is not a valid `Request` object ($__serverMessage)', | ||
| [SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND]: | ||
| 'JSON-RPC error: The method does not exist / is not available ($__serverMessage)', | ||
| [SOLANA_ERROR__JSON_RPC__PARSE_ERROR]: | ||
| 'JSON-RPC error: An error occurred on the server while parsing the JSON text ($__serverMessage)', | ||
| [SOLANA_ERROR__JSON_RPC__SCAN_ERROR]: '$__serverMessage', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP]: '$__serverMessage', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE]: '$__serverMessage', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET]: '$__serverMessage', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_EPOCH_REWARDS_PERIOD_ACTIVE]: | ||
| 'Epoch rewards period still active at slot $slot', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX]: '$__serverMessage', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED]: '$__serverMessage', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_UNREACHABLE]: | ||
| 'Failed to query long-term storage; please try again', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED]: 'Minimum context slot has not been reached', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY]: 'Node is unhealthy; behind by $numSlotsBehind slots', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT]: 'No snapshot', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE]: 'Transaction simulation failed', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_NOT_EPOCH_BOUNDARY]: | ||
| "Rewards cannot be found because slot $slot is not the epoch boundary. This may be due to gap in the queried node's local ledger or long-term storage", | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED]: '$__serverMessage', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE]: | ||
| 'Transaction history is not available from this node', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE]: '$__serverMessage', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH]: 'Transaction signature length mismatch', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE]: | ||
| 'Transaction signature verification failure', | ||
| [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION]: '$__serverMessage', | ||
| [SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH]: 'Key pair bytes must be of length 64, got $byteLength.', | ||
| [SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH]: | ||
| 'Expected private key bytes with length 32. Actual length: $actualLength.', | ||
| [SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH]: | ||
| 'Expected base58-encoded signature to decode to a byte array of length 64. Actual length: $actualLength.', | ||
| [SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY]: | ||
| 'The provided private key does not match the provided public key.', | ||
| [SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE]: | ||
| 'Expected base58-encoded signature string of length in the range [64, 88]. Actual length: $actualLength.', | ||
| [SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE]: 'Lamports value must be in the range [0, 2e64-1]', | ||
| [SOLANA_ERROR__MALFORMED_BIGINT_STRING]: '`$value` cannot be parsed as a `BigInt`', | ||
| [SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR]: '$message', | ||
| [SOLANA_ERROR__MALFORMED_NUMBER_STRING]: '`$value` cannot be parsed as a `Number`', | ||
| [SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND]: 'No nonce account could be found at address `$nonceAccountAddress`', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__INVALID_APPLICATION_DOMAIN_BYTE_LENGTH]: | ||
| 'Expected base58 encoded application domain to decode to a byte array of length 32. Actual length: $actualLength.', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__ADDRESSES_CANNOT_SIGN_OFFCHAIN_MESSAGE]: | ||
| 'Attempted to sign an offchain message with an address that is not a signer for it', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__APPLICATION_DOMAIN_STRING_LENGTH_OUT_OF_RANGE]: | ||
| 'Expected base58-encoded application domain string of length in the range [32, 44]. Actual length: $actualLength.', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__ENVELOPE_SIGNERS_MISMATCH]: | ||
| 'The signer addresses in this offchain message envelope do not match the list of ' + | ||
| 'required signers in the message preamble. These unexpected signers were present in the ' + | ||
| 'envelope: `[$unexpectedSigners]`. These required signers were missing from the envelope ' + | ||
| '`[$missingSigners]`.', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__MAXIMUM_LENGTH_EXCEEDED]: | ||
| 'The message body provided has a byte-length of $actualBytes. The maximum allowable ' + | ||
| 'byte-length is $maxBytes', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_FORMAT_MISMATCH]: | ||
| 'Expected message format $expectedMessageFormat, got $actualMessageFormat', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_LENGTH_MISMATCH]: | ||
| 'The message length specified in the message preamble is $specifiedLength bytes. The actual length of the message is $actualLength bytes.', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_MUST_BE_NON_EMPTY]: 'Offchain message content must be non-empty', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_REQUIRED_SIGNERS_CANNOT_BE_ZERO]: | ||
| 'Offchain message must specify the address of at least one required signer', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_ENVELOPE_SIGNATURES_CANNOT_BE_ZERO]: | ||
| 'Offchain message envelope must reserve space for at least one signature', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_SIGNATURES_MISMATCH]: | ||
| 'The offchain message preamble specifies $numRequiredSignatures required signature(s), got $signaturesLength.', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_SORTED]: | ||
| 'The signatories of this offchain message must be listed in lexicographical order', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_UNIQUE]: | ||
| 'An address must be listed no more than once among the signatories of an offchain message', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURES_MISSING]: | ||
| 'Offchain message is missing signatures for addresses: $addresses.', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURE_VERIFICATION_FAILURE]: | ||
| 'Offchain message signature verification failed. Signature mismatch for required ' + | ||
| 'signatories [$signatoriesWithInvalidSignatures]. Missing signatures for signatories ' + | ||
| '[$signatoriesWithMissingSignatures]', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__RESTRICTED_ASCII_BODY_CHARACTER_OUT_OF_RANGE]: | ||
| 'The message body provided contains characters whose codes fall outside the allowed ' + | ||
| 'range. In order to ensure clear-signing compatiblity with hardware wallets, the message ' + | ||
| 'may only contain line feeds and characters in the range [\\x20-\\x7e].', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__UNEXPECTED_VERSION]: | ||
| 'Expected offchain message version $expectedVersion. Got $actualVersion.', | ||
| [SOLANA_ERROR__OFFCHAIN_MESSAGE__VERSION_NUMBER_NOT_SUPPORTED]: | ||
| 'This version of Kit does not support decoding offchain messages with version ' + | ||
| '$unsupportedVersion. The current max supported version is 0.', | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT]: | ||
| 'The provided account could not be identified as an account from the $programName program.', | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION]: | ||
| 'The provided instruction could not be identified as an instruction from the $programName program.', | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS]: | ||
| 'The provided instruction is missing some accounts. Expected at least $expectedAccountMetas account(s), got $actualAccountMetas.', | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__RESOLVED_INSTRUCTION_INPUT_MUST_BE_NON_NULL]: | ||
| "Expected resolved instruction input '$inputName' to be non-null.", | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__UNEXPECTED_RESOLVED_INSTRUCTION_INPUT_TYPE]: | ||
| "Expected resolved instruction input '$inputName' to be of type `$expectedType`.", | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_ACCOUNT_TYPE]: | ||
| "Unrecognized account type '$accountType' for the $programName program.", | ||
| [SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE]: | ||
| "Unrecognized instruction type '$instructionType' for the $programName program.", | ||
| [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN]: | ||
| "The notification name must end in 'Notifications' and the API must supply a " + | ||
| "subscription plan creator function for the notification '$notificationName'.", | ||
| [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED]: | ||
| 'WebSocket was closed before payload could be added to the send buffer', | ||
| [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED]: 'WebSocket connection closed', | ||
| [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT]: 'WebSocket failed to connect', | ||
| [SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID]: | ||
| 'Failed to obtain a subscription id from the server', | ||
| [SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD]: 'Could not find an API plan for RPC method: `$method`', | ||
| [SOLANA_ERROR__RPC__INTEGER_OVERFLOW]: | ||
| 'The $argumentLabel argument to the `$methodName` RPC method$optionalPathLabel was ' + | ||
| '`$value`. This number is unsafe for use with the Solana JSON-RPC because it exceeds ' + | ||
| '`Number.MAX_SAFE_INTEGER`.', | ||
| [SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR]: 'HTTP error ($statusCode): $message', | ||
| [SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN]: | ||
| 'HTTP header(s) forbidden: $headers. Learn more at ' + | ||
| 'https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name.', | ||
| [SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS]: | ||
| 'Multiple distinct signers were identified for address `$address`. Please ensure that ' + | ||
| 'you are using the same signer instance for each address.', | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER]: | ||
| 'The provided value does not implement the `KeyPairSigner` interface', | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER]: | ||
| 'The provided value does not implement the `MessageModifyingSigner` interface', | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER]: | ||
| 'The provided value does not implement the `MessagePartialSigner` interface', | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER]: | ||
| 'The provided value does not implement any of the `MessageSigner` interfaces', | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER]: | ||
| 'The provided value does not implement the `TransactionModifyingSigner` interface', | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER]: | ||
| 'The provided value does not implement the `TransactionPartialSigner` interface', | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER]: | ||
| 'The provided value does not implement the `TransactionSendingSigner` interface', | ||
| [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER]: | ||
| 'The provided value does not implement any of the `TransactionSigner` interfaces', | ||
| [SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS]: | ||
| 'More than one `TransactionSendingSigner` was identified.', | ||
| [SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING]: | ||
| 'No `TransactionSendingSigner` was identified. Please provide a valid ' + | ||
| '`TransactionWithSingleSendingSigner` transaction.', | ||
| [SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED]: | ||
| 'Wallet account signers do not support signing multiple messages/transactions in a single operation', | ||
| [SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY]: 'Cannot export a non-extractable key.', | ||
| [SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED]: 'No digest implementation could be found.', | ||
| [SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT]: | ||
| 'Cryptographic operations are only allowed in secure browser contexts. Read more ' + | ||
| 'here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts.', | ||
| [SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED]: | ||
| 'This runtime does not support the generation of Ed25519 key pairs.\n\nInstall ' + | ||
| '@solana/webcrypto-ed25519-polyfill and call its `install` function before generating keys in ' + | ||
| 'environments that do not support Ed25519.\n\nFor a list of runtimes that ' + | ||
| 'currently support Ed25519 operations, visit ' + | ||
| 'https://github.com/WICG/webcrypto-secure-curves/issues/20.', | ||
| [SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED]: | ||
| 'No signature verification implementation could be found.', | ||
| [SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED]: 'No key generation implementation could be found.', | ||
| [SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED]: 'No signing implementation could be found.', | ||
| [SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED]: 'No key export implementation could be found.', | ||
| [SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE]: | ||
| 'Timestamp value must be in the range [-(2n ** 63n), (2n ** 63n) - 1]. `$value` given', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING]: | ||
| 'Transaction processing left an account with an outstanding borrowed reference', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE]: 'Account in use', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE]: 'Account loaded twice', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND]: | ||
| 'Attempt to debit an account but found no record of a prior credit.', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND]: | ||
| "Transaction loads an address table account that doesn't exist", | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED]: 'This transaction has already been processed', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND]: 'Blockhash not found', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP]: 'Loader call chain is too deep', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE]: | ||
| 'Transactions are currently disabled due to cluster maintenance', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION]: | ||
| 'Transaction contains a duplicate instruction ($index) that is not allowed', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE]: 'Insufficient funds for fee', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT]: | ||
| 'Transaction results in an account ($accountIndex) with insufficient funds for rent', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE]: 'This account may not be used to pay transaction fees', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX]: 'Transaction contains an invalid account reference', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA]: | ||
| 'Transaction loads an address table account with invalid data', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX]: | ||
| 'Transaction address table lookup uses an invalid index', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER]: | ||
| 'Transaction loads an address table account with an invalid owner', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT]: | ||
| 'LoadedAccountsDataSizeLimit set for transaction must be greater than 0.', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION]: | ||
| 'This program may not be used for executing instructions', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT]: | ||
| 'Transaction leaves an account with a lower balance than rent-exempt minimum', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT]: | ||
| 'Transaction loads a writable account that cannot be written', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED]: | ||
| 'Transaction exceeded max loaded accounts data size cap', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE]: | ||
| 'Transaction requires a fee but has no signature present', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND]: 'Attempt to load a program that does not exist', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED]: | ||
| 'Execution of the program referenced by account at index $accountIndex is temporarily restricted.', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED]: 'ResanitizationNeeded', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE]: 'Transaction failed to sanitize accounts offsets correctly', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE]: 'Transaction did not pass signature verification', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS]: 'Transaction locked too many accounts', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION]: | ||
| 'Sum of account balances before and after transaction do not match', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN]: 'The transaction failed with the error `$errorName`', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION]: 'Transaction version is unsupported', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT]: | ||
| 'Transaction would exceed account data limit within the block', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT]: | ||
| 'Transaction would exceed total account data limit', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT]: | ||
| 'Transaction would exceed max account limit within the block', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT]: | ||
| 'Transaction would exceed max Block Cost Limit', | ||
| [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT]: 'Transaction would exceed max Vote Cost Limit', | ||
| [SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION]: | ||
| 'Attempted to sign a transaction with an address that is not a signer for it', | ||
| [SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING]: 'Transaction is missing an address at index: $index.', | ||
| [SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES]: | ||
| 'Transaction has no expected signers therefore it cannot be encoded', | ||
| [SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT]: | ||
| 'Transaction size $transactionSize exceeds limit of $transactionSizeLimit bytes', | ||
| [SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME]: 'Transaction does not have a blockhash lifetime', | ||
| [SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME]: 'Transaction is not a durable nonce transaction', | ||
| [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING]: | ||
| 'Contents of these address lookup tables unknown: $lookupTableAddresses', | ||
| [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE]: | ||
| 'Lookup of address at index $highestRequestedIndex failed for lookup table ' + | ||
| '`$lookupTableAddress`. Highest known index is $highestKnownIndex. The lookup table ' + | ||
| 'may have been extended since its contents were retrieved', | ||
| [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING]: 'No fee payer set in CompiledTransaction', | ||
| [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND]: | ||
| 'Could not find program address at index $index', | ||
| [SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT]: | ||
| 'Failed to estimate the compute unit consumption for this transaction message. This is ' + | ||
| 'likely because simulating the transaction failed. Inspect the `cause` property of this ' + | ||
| 'error to learn more', | ||
| [SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT]: | ||
| 'Transaction failed when it was simulated in order to estimate the compute unit consumption. ' + | ||
| 'The compute unit estimate provided is for a transaction that failed when simulated and may not ' + | ||
| 'be representative of the compute units this transaction would consume if successful. Inspect the ' + | ||
| '`cause` property of this error to learn more', | ||
| [SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING]: 'Transaction is missing a fee payer.', | ||
| [SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING]: | ||
| "Could not determine this transaction's signature. Make sure that the transaction has " + | ||
| 'been signed by its fee payer.', | ||
| [SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE]: | ||
| 'Transaction first instruction is not advance nonce account instruction.', | ||
| [SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING]: | ||
| 'Transaction with no instructions cannot be durable nonce transaction.', | ||
| [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES]: | ||
| 'This transaction includes an address (`$programAddress`) which is both ' + | ||
| 'invoked and set as the fee payer. Program addresses may not pay fees', | ||
| [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE]: | ||
| 'This transaction includes an address (`$programAddress`) which is both invoked and ' + | ||
| 'marked writable. Program addresses may not be writable', | ||
| [SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH]: | ||
| 'The transaction message expected the transaction to have $numRequiredSignatures signatures, got $signaturesLength.', | ||
| [SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING]: 'Transaction is missing signatures for addresses: $addresses.', | ||
| [SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE]: | ||
| 'Transaction version must be in the range [0, 127]. `$actualVersion` given', | ||
| [SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_NOT_SUPPORTED]: | ||
| 'This version of Kit does not support decoding transactions with version $unsupportedVersion. The current max supported version is 1.', | ||
| [SOLANA_ERROR__TRANSACTION__NONCE_ACCOUNT_CANNOT_BE_IN_LOOKUP_TABLE]: | ||
| 'The transaction has a durable nonce lifetime (with nonce `$nonce`), but the nonce account address is in a lookup table. The lifetime constraint cannot be constructed without fetching the lookup tables for the transaction.', | ||
| [SOLANA_ERROR__TRANSACTION__INVALID_CONFIG_MASK_PRIORITY_FEE_BITS]: | ||
| 'Invalid transaction config mask: $mask. Bits 0 and 1 must match (both set or both unset)', | ||
| [SOLANA_ERROR__TRANSACTION__MALFORMED_MESSAGE_BYTES]: 'Transaction message bytes are malformed: $messageBytes', | ||
| [SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_MESSAGE_BYTES]: | ||
| 'Transaction message bytes are empty, so the transaction cannot be encoded', | ||
| [SOLANA_ERROR__TRANSACTION__CANNOT_DECODE_EMPTY_TRANSACTION_BYTES]: | ||
| 'Transaction bytes are empty, so no transaction can be decoded', | ||
| [SOLANA_ERROR__TRANSACTION__VERSION_ZERO_MUST_BE_ENCODED_WITH_SIGNATURES_FIRST]: | ||
| 'Transaction version 0 must be encoded with signatures first. This transaction was encoded with first byte $firstByte, which is expected to be a signature count for v0 transactions.', | ||
| [SOLANA_ERROR__TRANSACTION__SIGNATURE_COUNT_TOO_HIGH_FOR_TRANSACTION_BYTES]: | ||
| 'The provided transaction bytes expect that there should be $numExpectedSignatures signatures, but the bytes are not long enough to contain a transaction message with this many signatures. The provided bytes are $transactionBytesLength bytes long.', | ||
| [SOLANA_ERROR__TRANSACTION__INVALID_NONCE_ACCOUNT_INDEX]: | ||
| 'The transaction has a durable nonce lifetime, but the nonce account index is invalid. Expected a nonce account index less than $numberOfStaticAccounts, got $nonceAccountIndex.', | ||
| }; |
| import { SolanaErrorCode } from './codes'; | ||
| import { SolanaErrorContext } from './context'; | ||
| import { SolanaError } from './error'; | ||
| import { safeCaptureStackTrace } from './stack-trace'; | ||
| type Config = Readonly<{ | ||
| /** | ||
| * Oh, hello. You might wonder what in tarnation is going on here. Allow us to explain. | ||
| * | ||
| * One of the goals of `@solana/errors` is to allow errors that are not interesting to your | ||
| * application to shake out of your app bundle in production. This means that we must never | ||
| * export large hardcoded maps of error codes/messages. | ||
| * | ||
| * Unfortunately, where instruction and transaction errors from the RPC are concerned, we have | ||
| * no choice but to keep a map between the RPC `rpcEnumError` enum name and its corresponding | ||
| * `SolanaError` code. In the interest of implementing that map in as few bytes of source code | ||
| * as possible, we do the following: | ||
| * | ||
| * 1. Reserve a block of sequential error codes for the enum in question | ||
| * 2. Hardcode the list of enum names in that same order | ||
| * 3. Match the enum error name from the RPC with its index in that list, and reconstruct the | ||
| * `SolanaError` code by adding the `errorCodeBaseOffset` to that index | ||
| */ | ||
| errorCodeBaseOffset: number; | ||
| getErrorContext: ( | ||
| errorCode: SolanaErrorCode, | ||
| rpcErrorName: string, | ||
| rpcErrorContext?: unknown, | ||
| ) => SolanaErrorContext[SolanaErrorCode]; | ||
| orderedErrorNames: string[]; | ||
| rpcEnumError: string | { [key: string]: unknown }; | ||
| }>; | ||
| export function getSolanaErrorFromRpcError( | ||
| { errorCodeBaseOffset, getErrorContext, orderedErrorNames, rpcEnumError }: Config, | ||
| // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type | ||
| constructorOpt: Function, | ||
| ): SolanaError { | ||
| let rpcErrorName; | ||
| let rpcErrorContext; | ||
| if (typeof rpcEnumError === 'string') { | ||
| rpcErrorName = rpcEnumError; | ||
| } else { | ||
| rpcErrorName = Object.keys(rpcEnumError)[0]; | ||
| rpcErrorContext = rpcEnumError[rpcErrorName]; | ||
| } | ||
| const codeOffset = orderedErrorNames.indexOf(rpcErrorName); | ||
| const errorCode = (errorCodeBaseOffset + codeOffset) as SolanaErrorCode; | ||
| const errorContext = getErrorContext(errorCode, rpcErrorName, rpcErrorContext); | ||
| const err = new SolanaError(errorCode, errorContext); | ||
| safeCaptureStackTrace(err, constructorOpt); | ||
| return err; | ||
| } |
| import { | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE, | ||
| SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT, | ||
| SolanaErrorCode, | ||
| } from './codes'; | ||
| import { isSolanaError } from './error'; | ||
| /** | ||
| * Extracts the underlying cause from a simulation-related error. | ||
| * | ||
| * When a transaction simulation fails, the error is often wrapped in a | ||
| * simulation-specific {@link SolanaError}. This function unwraps such errors | ||
| * by returning the `cause` property, giving you access to the actual error | ||
| * that triggered the simulation failure. | ||
| * | ||
| * If the provided error is not a simulation-related error, it is returned unchanged. | ||
| * | ||
| * The following error codes are considered simulation errors: | ||
| * - {@link SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE} | ||
| * - {@link SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT} | ||
| * | ||
| * @param error - The error to unwrap. | ||
| * @return The underlying cause if the error is a simulation error, otherwise the original error. | ||
| * | ||
| * @example | ||
| * Unwrapping a preflight failure to access the root cause. | ||
| * ```ts | ||
| * import { unwrapSimulationError } from '@solana/errors'; | ||
| * | ||
| * try { | ||
| * await sendTransaction(signedTransaction); | ||
| * } catch (e) { | ||
| * const cause = unwrapSimulationError(e); | ||
| * console.log('Send transaction failed due to:', cause); | ||
| * } | ||
| * ``` | ||
| */ | ||
| export function unwrapSimulationError(error: unknown): unknown { | ||
| const simulationCodes: SolanaErrorCode[] = [ | ||
| SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE, | ||
| SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT, | ||
| ]; | ||
| if (isSolanaError(error) && !!error.cause && simulationCodes.includes(error.context.__code)) { | ||
| return error.cause; | ||
| } | ||
| return error; | ||
| } |
| export function safeCaptureStackTrace(...args: Parameters<typeof Error.captureStackTrace>): void { | ||
| if ('captureStackTrace' in Error && typeof Error.captureStackTrace === 'function') { | ||
| Error.captureStackTrace(...args); | ||
| } | ||
| } |
| import { | ||
| SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED, | ||
| SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN, | ||
| } from './codes'; | ||
| import { SolanaError } from './error'; | ||
| import { getSolanaErrorFromInstructionError } from './instruction-error'; | ||
| import { getSolanaErrorFromRpcError } from './rpc-enum-errors'; | ||
| /** | ||
| * How to add an error when an entry is added to the RPC `TransactionError` enum: | ||
| * | ||
| * 1. Follow the instructions in `./codes.ts` to add a corresponding Solana error code | ||
| * 2. Add the `TransactionError` enum name in the same order as it appears in `./codes.ts` | ||
| * 3. Add the new error name/code mapping to `./__tests__/transaction-error-test.ts` | ||
| */ | ||
| const ORDERED_ERROR_NAMES = [ | ||
| // Keep synced with RPC source: https://github.com/anza-xyz/agave/blob/master/sdk/src/transaction/error.rs | ||
| // If this list ever gets too large, consider implementing a compression strategy like this: | ||
| // https://gist.github.com/steveluscher/aaa7cbbb5433b1197983908a40860c47 | ||
| 'AccountInUse', | ||
| 'AccountLoadedTwice', | ||
| 'AccountNotFound', | ||
| 'ProgramAccountNotFound', | ||
| 'InsufficientFundsForFee', | ||
| 'InvalidAccountForFee', | ||
| 'AlreadyProcessed', | ||
| 'BlockhashNotFound', | ||
| // `InstructionError` intentionally omitted; delegated to `getSolanaErrorFromInstructionError` | ||
| 'CallChainTooDeep', | ||
| 'MissingSignatureForFee', | ||
| 'InvalidAccountIndex', | ||
| 'SignatureFailure', | ||
| 'InvalidProgramForExecution', | ||
| 'SanitizeFailure', | ||
| 'ClusterMaintenance', | ||
| 'AccountBorrowOutstanding', | ||
| 'WouldExceedMaxBlockCostLimit', | ||
| 'UnsupportedVersion', | ||
| 'InvalidWritableAccount', | ||
| 'WouldExceedMaxAccountCostLimit', | ||
| 'WouldExceedAccountDataBlockLimit', | ||
| 'TooManyAccountLocks', | ||
| 'AddressLookupTableNotFound', | ||
| 'InvalidAddressLookupTableOwner', | ||
| 'InvalidAddressLookupTableData', | ||
| 'InvalidAddressLookupTableIndex', | ||
| 'InvalidRentPayingAccount', | ||
| 'WouldExceedMaxVoteCostLimit', | ||
| 'WouldExceedAccountDataTotalLimit', | ||
| 'DuplicateInstruction', | ||
| 'InsufficientFundsForRent', | ||
| 'MaxLoadedAccountsDataSizeExceeded', | ||
| 'InvalidLoadedAccountsDataSizeLimit', | ||
| 'ResanitizationNeeded', | ||
| 'ProgramExecutionTemporarilyRestricted', | ||
| 'UnbalancedTransaction', | ||
| ]; | ||
| export function getSolanaErrorFromTransactionError(transactionError: string | { [key: string]: unknown }): SolanaError { | ||
| if (typeof transactionError === 'object' && 'InstructionError' in transactionError) { | ||
| return getSolanaErrorFromInstructionError( | ||
| ...(transactionError.InstructionError as Parameters<typeof getSolanaErrorFromInstructionError>), | ||
| ); | ||
| } | ||
| return getSolanaErrorFromRpcError( | ||
| { | ||
| errorCodeBaseOffset: 7050001, | ||
| getErrorContext(errorCode, rpcErrorName, rpcErrorContext) { | ||
| if (errorCode === SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN) { | ||
| return { | ||
| errorName: rpcErrorName, | ||
| ...(rpcErrorContext !== undefined ? { transactionErrorContext: rpcErrorContext } : null), | ||
| }; | ||
| } else if (errorCode === SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION) { | ||
| return { | ||
| index: Number(rpcErrorContext as bigint | number), | ||
| }; | ||
| } else if ( | ||
| errorCode === SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT || | ||
| errorCode === SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED | ||
| ) { | ||
| return { | ||
| accountIndex: Number((rpcErrorContext as { account_index: bigint | number }).account_index), | ||
| }; | ||
| } | ||
| }, | ||
| orderedErrorNames: ORDERED_ERROR_NAMES, | ||
| rpcEnumError: transactionError, | ||
| }, | ||
| getSolanaErrorFromTransactionError, | ||
| ); | ||
| } |
+3
-2
| { | ||
| "name": "@solana/errors", | ||
| "version": "6.3.1", | ||
| "version": "6.3.2-canary-20260313112147", | ||
| "description": "Throw, identify, and decode Solana JavaScript errors", | ||
@@ -36,3 +36,4 @@ "homepage": "https://www.solanakit.com/api#solanaerrors", | ||
| "files": [ | ||
| "./dist/" | ||
| "./dist/", | ||
| "./src/" | ||
| ], | ||
@@ -39,0 +40,0 @@ "sideEffects": false, |
Sorry, the diff of this file is too big to display
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
1934520
10.58%52
33.33%10807
40.75%1
Infinity%29
3.57%