>();
const { data, error } = useTrackedDataSWR(['balance', address], {
initialValueSource: client.rpc.getBalance(address),
initialValueMapper: (lamports: bigint) => lamports,
streamSource: client.rpcSubscriptions.accountNotifications(address),
streamValueMapper: ({ lamports }: { lamports: bigint }) => lamports,
});
if (error) return Failed to load.
;
return {data ? `${data.value} lamports at slot ${data.context.slot}` : 'Loadingβ¦'}
;
}
```
Like `useSubscriptionSWR`, it returns only `{ data, error }`, toggle the `key` to or from `null` to stop or restart. The spec does not need to be memoized. Slot dedupe spans the cache, not just one store, so a reconnect's fresh fetch can't regress the cached envelope to an older slot.
Like `useSubscriptionSWR`, when `key` flips to `null` the `data` is cleared. Pass SWR's `keepPreviousData` if you want the last value to persist across the toggle.
We do not have a `useAction` counterpart. Use `useAction` or SWR's `mutate` directly.
# Airdropping tokens (/recipes/airdropping-tokens)
This recipe airdrops a freshly minted SPL token to many recipient wallets at once. It demonstrates how to compose an [instruction plan](/docs/guides/sending-multiple-transactions) that creates the mint sequentially first and then mints to every recipient in parallel β letting Kit pack the work into as few transactions as possible and send the parallel batches concurrently.
## Set up a client
Install Kit and the plugins you need.
```bash
npm install @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer @solana-program/token
```
```bash
pnpm add @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer @solana-program/token
```
```bash
yarn add @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer @solana-program/token
```
```bash
bun add @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer @solana-program/token
```
Compose a client with a generated signer, a local RPC connection, an airdrop to fund the signer, and the Token program plugin. Make sure a local validator is running (`solana-test-validator`) before this code executes.
```ts twoslash
import { createClient, lamports } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { airdropSigner, generatedSigner } from '@solana/kit-plugin-signer';
import { tokenProgram } from '@solana-program/token';
const client = await createClient()
.use(generatedSigner())
.use(solanaLocalRpc())
.use(airdropSigner(lamports(100_000_000_000n)))
.use(tokenProgram());
```
The signer is funded with 100 SOL because creating ATAs costs a small amount of rent for each recipient.
## Generate the recipients
For the demo, generate 100 random destination addresses up front. In a real airdrop, this list would come from a database, a CSV, or some other source.
```ts twoslash
import { generateKeyPairSigner } from '@solana/kit';
const recipients = await Promise.all(
Array.from({ length: 100 }, async () => (await generateKeyPairSigner()).address),
);
```
## Build the airdrop plan
Compose the work as a `sequentialInstructionPlan` whose first child creates the mint and whose second child is a `parallelInstructionPlan` containing one mint-to-ATA plan per recipient.
```ts twoslash
import {
Address,
generateKeyPairSigner,
parallelInstructionPlan,
sequentialInstructionPlan,
} from '@solana/kit';
const recipients = null as unknown as Address[];
// ---cut-start---
import { createClient, lamports } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { airdropSigner, generatedSigner } from '@solana/kit-plugin-signer';
import { tokenProgram } from '@solana-program/token';
const client = await createClient()
.use(generatedSigner())
.use(solanaLocalRpc())
.use(airdropSigner(lamports(100_000_000_000n)))
.use(tokenProgram());
// ---cut-end---
const mint = await generateKeyPairSigner();
const instructionPlan = sequentialInstructionPlan([
client.token.instructions.createMint({
newMint: mint,
decimals: 6,
mintAuthority: client.identity.address,
}),
parallelInstructionPlan(
await Promise.all(
recipients.map((owner) =>
client.token.instructions.mintToATA({
mint: mint.address,
owner,
mintAuthority: client.identity,
amount: 1_000n * 10n ** 6n, // 1,000 tokens
decimals: 6,
}),
),
),
),
]);
```
The mint must exist before any recipient can receive tokens, which is why the outer plan is sequential. Each `mintToATA` is independent of the others, so wrapping them in a `parallelInstructionPlan` lets Kit run them concurrently. The Token plugin's `mintToATA` is asynchronous because it derives each recipient's ATA address up front, so wrap the whole list in a single `Promise.all`.
## Send and inspect the results
`client.sendTransactions(plan)` plans, signs, sends, and confirms every transaction in the tree. Wrap the call in [`passthroughFailedTransactionPlanExecution`](/docs/advanced-guides/errors#walking-transaction-plan-results) so a failure on one transaction does not throw β you keep the full result tree and can decide what to do per recipient.
```ts twoslash
import {
flattenTransactionPlanResult,
InstructionPlan,
passthroughFailedTransactionPlanExecution,
} from '@solana/kit';
const instructionPlan = null as unknown as InstructionPlan;
// ---cut-start---
import { createClient, lamports } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { airdropSigner, generatedSigner } from '@solana/kit-plugin-signer';
import { tokenProgram } from '@solana-program/token';
const client = await createClient()
.use(generatedSigner())
.use(solanaLocalRpc())
.use(airdropSigner(lamports(100_000_000_000n)))
.use(tokenProgram());
// ---cut-end---
const result = await passthroughFailedTransactionPlanExecution(
client.sendTransactions(instructionPlan),
);
for (const [index, single] of flattenTransactionPlanResult(result).entries()) {
if (single.status === 'successful') {
console.log(`#${index} β
${single.context.signature}`);
} else if (single.status === 'failed') {
console.error(`#${index} β ${single.error.message}`);
} else {
console.warn(`#${index} βοΈ canceled`);
}
}
```
`flattenTransactionPlanResult` collapses the tree into one entry per transaction in the order they were planned, so iterating the array is enough to log each outcome individually. For a single bottom-line view across the whole airdrop, [`summarizeTransactionPlanResult`](/docs/advanced-guides/errors#walking-transaction-plan-results) returns success/failure/cancellation counts and a top-level `successful` boolean.
## Next steps
* [Sending multiple transactions](/docs/guides/sending-multiple-transactions) β the full guide on multi-transaction operations and instruction plan composition.
* [Advanced guides β Errors](/docs/advanced-guides/errors) β deep dive on `TransactionPlanResult`, walking failed trees, and program-specific errors.
* [Creating a token](/recipes/creating-a-token) β the simpler single-recipient version of this flow.
# Creating a token (/recipes/creating-a-token)
This recipe walks through the full lifecycle of an SPL token: creating a mint, minting tokens to your own associated token account (ATA), and transferring some to another wallet. It runs against a local validator so you can experiment without spending mainnet SOL.
## Set up a client
Install Kit and the plugins you need.
```bash
npm install @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer @solana-program/token
```
```bash
pnpm add @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer @solana-program/token
```
```bash
yarn add @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer @solana-program/token
```
```bash
bun add @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer @solana-program/token
```
Compose a client with a generated signer, a local RPC connection, an airdrop to fund the signer, and the Token program plugin. Make sure a local validator is running (`solana-test-validator`) before this code executes.
```ts twoslash
import { createClient, lamports } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { airdropSigner, generatedSigner } from '@solana/kit-plugin-signer';
import { tokenProgram } from '@solana-program/token';
const client = await createClient()
.use(generatedSigner())
.use(solanaLocalRpc())
.use(airdropSigner(lamports(1_000_000_000n)))
.use(tokenProgram());
```
## Create the mint
Generate a fresh signer for the mint account and ask the Token program plugin to build a `createMint` instruction plan. The plan creates the mint account, funds it for rent exemption, and initializes it as a Token mint β all in one atomic operation.
```ts twoslash
import { generateKeyPairSigner } from '@solana/kit';
// ---cut-start---
import { createClient, lamports } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { airdropSigner, generatedSigner } from '@solana/kit-plugin-signer';
import { tokenProgram } from '@solana-program/token';
const client = await createClient()
.use(generatedSigner())
.use(solanaLocalRpc())
.use(airdropSigner(lamports(1_000_000_000n)))
.use(tokenProgram());
// ---cut-end---
const mint = await generateKeyPairSigner();
await client.token.instructions
.createMint({
newMint: mint,
decimals: 9,
mintAuthority: client.identity.address,
})
.sendTransaction();
console.log(`π Mint created: ${mint.address}`);
```
The mint authority is the signer allowed to mint new tokens later. Setting it to `client.identity.address` makes the current client's identity the authority, which is what you want for a recipe like this one.
## Mint tokens to your ATA
Tokens live in associated token accounts (ATAs) β one ATA per `(owner, mint)` pair. The plugin's `mintToATA` helper derives the ATA address, creates it if it does not exist yet, and mints tokens to it in a single instruction plan.
```ts twoslash
import { Address } from '@solana/kit';
const mintAddress = null as unknown as Address;
// ---cut-start---
import { createClient, lamports } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { airdropSigner, generatedSigner } from '@solana/kit-plugin-signer';
import { tokenProgram } from '@solana-program/token';
const client = await createClient()
.use(generatedSigner())
.use(solanaLocalRpc())
.use(airdropSigner(lamports(1_000_000_000n)))
.use(tokenProgram());
// ---cut-end---
await client.token.instructions
.mintToATA({
mint: mintAddress,
owner: client.identity.address,
mintAuthority: client.identity,
amount: 1_000n * 10n ** 9n, // 1,000 tokens with 9 decimals
decimals: 9,
})
.sendTransaction();
```
`mintToATA` is asynchronous because it derives the ATA address before building the plan, but the `.sendTransaction()` shortcut is exposed on the returned promise itself β a single `await` on the call is enough. Pass the same `decimals` you used when creating the mint; the plugin uses it as a safety check to make sure you are minting against the mint you think you are.
## Transfer tokens to a recipient
Sending tokens to another wallet follows the same pattern as minting: the plugin derives both the source and destination ATAs, creates the destination if it doesn't exist, and issues the transfer.
```ts twoslash
import { address, Address } from '@solana/kit';
const mintAddress = null as unknown as Address;
// ---cut-start---
import { createClient, lamports } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { airdropSigner, generatedSigner } from '@solana/kit-plugin-signer';
import { tokenProgram } from '@solana-program/token';
const client = await createClient()
.use(generatedSigner())
.use(solanaLocalRpc())
.use(airdropSigner(lamports(1_000_000_000n)))
.use(tokenProgram());
// ---cut-end---
const recipient = address('GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ');
await client.token.instructions
.transferToATA({
mint: mintAddress,
authority: client.identity,
recipient,
amount: 100n * 10n ** 9n, // 100 tokens
decimals: 9,
})
.sendTransaction();
```
The `authority` is the owner of the source tokens, which here is the same identity that minted them. The plugin pulls tokens out of `authority`'s ATA for the given mint, creates the recipient's ATA if needed, and deposits the tokens.
## Next steps
* [Using program plugins](/docs/guides/using-program-plugins) β explore everything `client.token` and other program namespaces expose.
* [Fetching accounts](/docs/guides/fetching-accounts) β read the mint and token account balances back from the chain.
* [Airdropping tokens](/recipes/airdropping-tokens) β extend this recipe to many recipients in parallel.
# Recipes (/recipes)
Recipes are short, copy-pasteable walkthroughs for specific tasks. Each one starts with a working setup, then walks through the steps you need to ship a feature β sending SOL, creating a token, airdropping tokens to many wallets, and so on.
If you are new to Kit, start with the [Getting started](/docs/getting-started) tutorial first. If you are looking for deeper, reference-style coverage, the [Guides](/docs/guides) section is the next step. Recipes sit between the two: focused, end-to-end snippets you can drop into a project today.
# Transferring SOL (/recipes/transferring-sol)
This recipe walks through sending SOL from your client's payer to another address. It uses a local validator so you can run it end-to-end without touching real funds, and shows how to surface a useful error when a transfer fails.
## Set up a client
Install Kit and the plugins you need.
```bash
npm install @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer @solana-program/system
```
```bash
pnpm add @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer @solana-program/system
```
```bash
yarn add @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer @solana-program/system
```
```bash
bun add @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer @solana-program/system
```
Compose a client with a generated signer, a local RPC connection, an airdrop to fund the signer, and the System program plugin. Make sure a local validator is running (`solana-test-validator`) before this code executes.
```ts twoslash
import { createClient, lamports } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { airdropSigner, generatedSigner } from '@solana/kit-plugin-signer';
import { systemProgram } from '@solana-program/system';
const client = await createClient()
.use(generatedSigner())
.use(solanaLocalRpc())
.use(airdropSigner(lamports(1_000_000_000n)))
.use(systemProgram());
```
## Send the transfer
Use `client.system.instructions.transferSol` to build the transfer instruction, then call `.sendTransaction()` to plan, sign, send, and confirm it in one step.
```ts twoslash
import { address, lamports } from '@solana/kit';
// ---cut-start---
import { createClient } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { airdropSigner, generatedSigner } from '@solana/kit-plugin-signer';
import { systemProgram } from '@solana-program/system';
const client = await createClient()
.use(generatedSigner())
.use(solanaLocalRpc())
.use(airdropSigner(lamports(1_000_000_000n)))
.use(systemProgram());
// ---cut-end---
const recipient = address('GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ');
const result = await client.system.instructions
.transferSol({
source: client.payer,
destination: recipient,
amount: lamports(10_000_000n), // 0.01 SOL
})
.sendTransaction();
console.log(`β
${result.context.signature}`);
```
The shortcut is equivalent to passing the instruction to `client.sendTransaction([...])`. Reach for the array form when you want to combine several instructions into a single atomic transaction.
## Handle errors
When a transfer fails, `client.sendTransaction(...)` throws a [`SolanaError`](/docs/advanced-guides/errors) with the `SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION` code. Wrapping the call lets you surface a useful message and inspect the underlying program error.
```ts twoslash
import {
address,
isSolanaError,
lamports,
SingleTransactionPlanResult,
SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION,
} from '@solana/kit';
import { getSystemErrorMessage, isSystemError } from '@solana-program/system';
// ---cut-start---
import { createClient } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { airdropSigner, generatedSigner } from '@solana/kit-plugin-signer';
import { systemProgram } from '@solana-program/system';
const client = await createClient()
.use(generatedSigner())
.use(solanaLocalRpc())
.use(airdropSigner(lamports(1_000_000_000n)))
.use(systemProgram());
const recipient = address('GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ');
// ---cut-end---
try {
await client.system.instructions
.transferSol({
source: client.payer,
destination: recipient,
amount: lamports(10_000_000n),
})
.sendTransaction();
} catch (e) {
if (!isSolanaError(e, SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION)) throw e;
const result = e.context.transactionPlanResult as SingleTransactionPlanResult;
const transactionMessage = result.context.message ?? result.plannedMessage;
const cause = e.cause as Error;
if (isSystemError(cause, transactionMessage)) {
console.error(`System program error: ${getSystemErrorMessage(cause.context.code)}`);
} else {
console.error('Transfer failed:', e.message);
}
}
```
`error.cause` carries the underlying error, and `error.context.transactionPlanResult` carries the planned transaction message. Pairing them with `isSystemError` and `getSystemErrorMessage` from `@solana-program/system` turns an opaque program error code into a human-readable message β invaluable when something like an underfunded source account causes the transfer to fail.
## Next steps
* [Sending transactions](/docs/guides/sending-transactions) β the full guide on single transactions, including planning and configuration.
* [Advanced guides β Errors](/docs/advanced-guides/errors) β deep dive on `SolanaError` codes and program-specific error parsing.
# API Reference (/api)
Welcome to the Solana Kit API Reference! It covers a total of **46 packages** most of which are available via the main `@solana/kit` package.
## Need Help?
* Check out our [Getting Started guide](/docs/getting-started/).
* Learn about key concepts in our [Advanced Guides](/docs/advanced-guides/).
## All Packages
### `@solana/kit`
Packages (32)
[@solana/accounts](#solanaaccounts) \
[@solana/addresses](#solanaaddresses) \
[@solana/codecs-core](#solanacodecs-core) \
[@solana/codecs-data-structures](#solanacodecs-data-structures) \
[@solana/codecs-numbers](#solanacodecs-numbers) \
[@solana/codecs-strings](#solanacodecs-strings) \
[@solana/errors](#solanaerrors) \
[@solana/fixed-points](#solanafixed-points) \
[@solana/functional](#solanafunctional) \
[@solana/instruction-plans](#solanainstruction-plans) \
[@solana/instructions](#solanainstructions) \
[@solana/keys](#solanakeys) \
[@solana/offchain-messages](#solanaoffchain-messages) \
[@solana/options](#solanaoptions) \
[@solana/plugin-core](#solanaplugin-core) \
[@solana/plugin-interfaces](#solanaplugin-interfaces) \
[@solana/programs](#solanaprograms) \
[@solana/promises](#solanapromises) \
[@solana/rpc](#solanarpc) \
[@solana/rpc-api](#solanarpc-api) \
[@solana/rpc-parsed-types](#solanarpc-parsed-types) \
[@solana/rpc-spec](#solanarpc-spec) \
[@solana/rpc-spec-types](#solanarpc-spec-types) \
[@solana/rpc-subscriptions](#solanarpc-subscriptions) \
[@solana/rpc-subscriptions-api](#solanarpc-subscriptions-api) \
[@solana/rpc-subscriptions-spec](#solanarpc-subscriptions-spec) \
[@solana/rpc-types](#solanarpc-types) \
[@solana/signers](#solanasigners) \
[@solana/subscribable](#solanasubscribable) \
[@solana/transaction-introspection](#solanatransaction-introspection) \
[@solana/transaction-messages](#solanatransaction-messages) \
[@solana/transactions](#solanatransactions)
Types (2)
[CreateReactiveStoreWithInitialValueAndSlotTrackingConfig](/api/type-aliases/CreateReactiveStoreWithInitialValueAndSlotTrackingConfig) \
[ResourceLimitsEstimate](/api/type-aliases/ResourceLimitsEstimate)
Functions (14)
[airdropFactory](/api/functions/airdropFactory) \
[createAsyncGeneratorWithInitialValueAndSlotTracking](/api/functions/createAsyncGeneratorWithInitialValueAndSlotTracking) \
[createClientWithFetchAccountsFromRpc](/api/functions/createClientWithFetchAccountsFromRpc) \
[createClientWithGetMinimumBalanceFromRpc](/api/functions/createClientWithGetMinimumBalanceFromRpc) \
[createClientWithInterfacesFromRpc](/api/functions/createClientWithInterfacesFromRpc) \
[createReactiveStoreWithInitialValueAndSlotTracking](/api/functions/createReactiveStoreWithInitialValueAndSlotTracking) \
[decompileTransactionMessageFetchingLookupTables](/api/functions/decompileTransactionMessageFetchingLookupTables) \
[estimateAndSetResourceLimitsFactory](/api/functions/estimateAndSetResourceLimitsFactory) \
[estimateResourceLimitsFactory](/api/functions/estimateResourceLimitsFactory) \
[fetchAddressesForLookupTables](/api/functions/fetchAddressesForLookupTables) \
[fillTransactionMessageProvisoryResourceLimits](/api/functions/fillTransactionMessageProvisoryResourceLimits) \
[sendAndConfirmDurableNonceTransactionFactory](/api/functions/sendAndConfirmDurableNonceTransactionFactory) \
[sendAndConfirmTransactionFactory](/api/functions/sendAndConfirmTransactionFactory) \
[sendTransactionWithoutConfirmingFactory](/api/functions/sendTransactionWithoutConfirmingFactory)
### `@solana/accounts`
Types (7)
[Account](/api/interfaces/Account) \
[BaseAccount](/api/interfaces/BaseAccount) \
[EncodedAccount](/api/interfaces/EncodedAccount) \
[FetchAccountConfig](/api/interfaces/FetchAccountConfig) \
[FetchAccountsConfig](/api/interfaces/FetchAccountsConfig) \
[MaybeAccount](/api/type-aliases/MaybeAccount) \
[MaybeEncodedAccount](/api/type-aliases/MaybeEncodedAccount)
Functions (12)
[assertAccountDecoded](/api/functions/assertAccountDecoded) \
[assertAccountExists](/api/functions/assertAccountExists) \
[assertAccountsDecoded](/api/functions/assertAccountsDecoded) \
[assertAccountsExist](/api/functions/assertAccountsExist) \
[decodeAccount](/api/functions/decodeAccount) \
[fetchEncodedAccount](/api/functions/fetchEncodedAccount) \
[fetchEncodedAccounts](/api/functions/fetchEncodedAccounts) \
[fetchJsonParsedAccount](/api/functions/fetchJsonParsedAccount) \
[fetchJsonParsedAccounts](/api/functions/fetchJsonParsedAccounts) \
[parseBase58RpcAccount](/api/functions/parseBase58RpcAccount) \
[parseBase64RpcAccount](/api/functions/parseBase64RpcAccount) \
[parseJsonRpcAccount](/api/functions/parseJsonRpcAccount)
Variables (1)
[BASE\_ACCOUNT\_SIZE](/api/variables/BASE_ACCOUNT_SIZE)
### `@solana/addresses`
Types (4)
[Address](/api/type-aliases/Address) \
[OffCurveAddress](/api/type-aliases/OffCurveAddress) \
[ProgramDerivedAddress](/api/type-aliases/ProgramDerivedAddress) \
[ProgramDerivedAddressBump](/api/type-aliases/ProgramDerivedAddressBump)
Functions (16)
[address](/api/functions/address) \
[assertIsAddress](/api/functions/assertIsAddress) \
[assertIsOffCurveAddress](/api/functions/assertIsOffCurveAddress) \
[assertIsProgramDerivedAddress](/api/functions/assertIsProgramDerivedAddress) \
[createAddressWithSeed](/api/functions/createAddressWithSeed) \
[getAddressCodec](/api/functions/getAddressCodec) \
[getAddressComparator](/api/functions/getAddressComparator) \
[getAddressDecoder](/api/functions/getAddressDecoder) \
[getAddressEncoder](/api/functions/getAddressEncoder) \
[getAddressFromPublicKey](/api/functions/getAddressFromPublicKey) \
[getProgramDerivedAddress](/api/functions/getProgramDerivedAddress) \
[getPublicKeyFromAddress](/api/functions/getPublicKeyFromAddress) \
[isAddress](/api/functions/isAddress) \
[isOffCurveAddress](/api/functions/isOffCurveAddress) \
[isProgramDerivedAddress](/api/functions/isProgramDerivedAddress) \
[offCurveAddress](/api/functions/offCurveAddress)
### `@solana/assertions`
Functions (6)
[assertDigestCapabilityIsAvailable](/api/functions/assertDigestCapabilityIsAvailable) \
[assertKeyExporterIsAvailable](/api/functions/assertKeyExporterIsAvailable) \
[assertKeyGenerationIsAvailable](/api/functions/assertKeyGenerationIsAvailable) \
[assertPRNGIsAvailable](/api/functions/assertPRNGIsAvailable) \
[assertSigningCapabilityIsAvailable](/api/functions/assertSigningCapabilityIsAvailable) \
[assertVerificationCapabilityIsAvailable](/api/functions/assertVerificationCapabilityIsAvailable)
### `@solana/codecs`
Packages (6)
[@solana/codecs-core](#solanacodecs-core) \
[@solana/codecs-data-structures](#solanacodecs-data-structures) \
[@solana/codecs-numbers](#solanacodecs-numbers) \
[@solana/codecs-strings](#solanacodecs-strings) \
[@solana/fixed-points](#solanafixed-points) \
[@solana/options](#solanaoptions)
### `@solana/codecs-core`
Types (11)
[Codec](/api/type-aliases/Codec) \
[Decoder](/api/type-aliases/Decoder) \
[Encoder](/api/type-aliases/Encoder) \
[FixedSizeCodec](/api/interfaces/FixedSizeCodec) \
[FixedSizeDecoder](/api/interfaces/FixedSizeDecoder) \
[FixedSizeEncoder](/api/interfaces/FixedSizeEncoder) \
[Offset](/api/type-aliases/Offset) \
[ReadonlyUint8Array](/api/interfaces/ReadonlyUint8Array) \
[VariableSizeCodec](/api/interfaces/VariableSizeCodec) \
[VariableSizeDecoder](/api/interfaces/VariableSizeDecoder) \
[VariableSizeEncoder](/api/interfaces/VariableSizeEncoder)
Functions (46)
[addCodecSentinel](/api/functions/addCodecSentinel) \
[addCodecSizePrefix](/api/functions/addCodecSizePrefix) \
[addDecoderSentinel](/api/functions/addDecoderSentinel) \
[addDecoderSizePrefix](/api/functions/addDecoderSizePrefix) \
[addEncoderSentinel](/api/functions/addEncoderSentinel) \
[addEncoderSizePrefix](/api/functions/addEncoderSizePrefix) \
[assertByteArrayHasEnoughBytesForCodec](/api/functions/assertByteArrayHasEnoughBytesForCodec) \
[assertByteArrayIsNotEmptyForCodec](/api/functions/assertByteArrayIsNotEmptyForCodec) \
[assertByteArrayOffsetIsNotOutOfRange](/api/functions/assertByteArrayOffsetIsNotOutOfRange) \
[assertIsFixedSize](/api/functions/assertIsFixedSize) \
[assertIsVariableSize](/api/functions/assertIsVariableSize) \
[bytesEqual](/api/functions/bytesEqual) \
[combineCodec](/api/functions/combineCodec) \
[containsBytes](/api/functions/containsBytes) \
[createCodec](/api/functions/createCodec) \
[createDecoder](/api/functions/createDecoder) \
[createDecoderThatConsumesEntireByteArray](/api/functions/createDecoderThatConsumesEntireByteArray) \
[createEncoder](/api/functions/createEncoder) \
[fixBytes](/api/functions/fixBytes) \
[fixCodecSize](/api/functions/fixCodecSize) \
[fixDecoderSize](/api/functions/fixDecoderSize) \
[fixEncoderSize](/api/functions/fixEncoderSize) \
[getEncodedSize](/api/functions/getEncodedSize) \
[isFixedSize](/api/functions/isFixedSize) \
[isVariableSize](/api/functions/isVariableSize) \
[mergeBytes](/api/functions/mergeBytes) \
[offsetCodec](/api/functions/offsetCodec) \
[offsetDecoder](/api/functions/offsetDecoder) \
[offsetEncoder](/api/functions/offsetEncoder) \
[padBytes](/api/functions/padBytes) \
[padLeftCodec](/api/functions/padLeftCodec) \
[padLeftDecoder](/api/functions/padLeftDecoder) \
[padLeftEncoder](/api/functions/padLeftEncoder) \
[padRightCodec](/api/functions/padRightCodec) \
[padRightDecoder](/api/functions/padRightDecoder) \
[padRightEncoder](/api/functions/padRightEncoder) \
[resizeCodec](/api/functions/resizeCodec) \
[resizeDecoder](/api/functions/resizeDecoder) \
[resizeEncoder](/api/functions/resizeEncoder) \
[reverseCodec](/api/functions/reverseCodec) \
[reverseDecoder](/api/functions/reverseDecoder) \
[reverseEncoder](/api/functions/reverseEncoder) \
[toArrayBuffer](/api/functions/toArrayBuffer) \
[transformCodec](/api/functions/transformCodec) \
[transformDecoder](/api/functions/transformDecoder) \
[transformEncoder](/api/functions/transformEncoder)
### `@solana/codecs-data-structures`
Types (16)
[ArrayCodecConfig](/api/type-aliases/ArrayCodecConfig) \
[ArrayLikeCodecSize](/api/type-aliases/ArrayLikeCodecSize) \
[BitArrayCodecConfig](/api/type-aliases/BitArrayCodecConfig) \
[BooleanCodecConfig](/api/type-aliases/BooleanCodecConfig) \
[DependentStructDecoderBuilder](/api/type-aliases/DependentStructDecoderBuilder) \
[DependentStructDecoderFieldFactory](/api/type-aliases/DependentStructDecoderFieldFactory) \
[DiscriminatedUnion](/api/type-aliases/DiscriminatedUnion) \
[DiscriminatedUnionCodecConfig](/api/type-aliases/DiscriminatedUnionCodecConfig) \
[EnumCodecConfig](/api/type-aliases/EnumCodecConfig) \
[GetDiscriminatedUnionVariant](/api/type-aliases/GetDiscriminatedUnionVariant) \
[GetDiscriminatedUnionVariantContent](/api/type-aliases/GetDiscriminatedUnionVariantContent) \
[LiteralUnionCodecConfig](/api/type-aliases/LiteralUnionCodecConfig) \
[MapCodecConfig](/api/type-aliases/MapCodecConfig) \
[NullableCodecConfig](/api/type-aliases/NullableCodecConfig) \
[SetCodecConfig](/api/type-aliases/SetCodecConfig) \
[TupleCodecConfig](/api/type-aliases/TupleCodecConfig)
Functions (59)
[assertValidNumberOfItemsForCodec](/api/functions/assertValidNumberOfItemsForCodec) \
[createDependentStructDecoder](/api/functions/createDependentStructDecoder) \
[getArrayCodec](/api/functions/getArrayCodec) \
[getArrayDecoder](/api/functions/getArrayDecoder) \
[getArrayEncoder](/api/functions/getArrayEncoder) \
[getBitArrayCodec](/api/functions/getBitArrayCodec) \
[getBitArrayDecoder](/api/functions/getBitArrayDecoder) \
[getBitArrayEncoder](/api/functions/getBitArrayEncoder) \
[getBooleanCodec](/api/functions/getBooleanCodec) \
[getBooleanDecoder](/api/functions/getBooleanDecoder) \
[getBooleanEncoder](/api/functions/getBooleanEncoder) \
[getBytesCodec](/api/functions/getBytesCodec) \
[getBytesDecoder](/api/functions/getBytesDecoder) \
[getBytesEncoder](/api/functions/getBytesEncoder) \
[getConstantCodec](/api/functions/getConstantCodec) \
[getConstantDecoder](/api/functions/getConstantDecoder) \
[getConstantEncoder](/api/functions/getConstantEncoder) \
[getDiscriminatedUnionCodec](/api/functions/getDiscriminatedUnionCodec) \
[getDiscriminatedUnionDecoder](/api/functions/getDiscriminatedUnionDecoder) \
[getDiscriminatedUnionEncoder](/api/functions/getDiscriminatedUnionEncoder) \
[getEnumCodec](/api/functions/getEnumCodec) \
[getEnumDecoder](/api/functions/getEnumDecoder) \
[getEnumEncoder](/api/functions/getEnumEncoder) \
[getHiddenPrefixCodec](/api/functions/getHiddenPrefixCodec) \
[getHiddenPrefixDecoder](/api/functions/getHiddenPrefixDecoder) \
[getHiddenPrefixEncoder](/api/functions/getHiddenPrefixEncoder) \
[getHiddenSuffixCodec](/api/functions/getHiddenSuffixCodec) \
[getHiddenSuffixDecoder](/api/functions/getHiddenSuffixDecoder) \
[getHiddenSuffixEncoder](/api/functions/getHiddenSuffixEncoder) \
[getLiteralUnionCodec](/api/functions/getLiteralUnionCodec) \
[getLiteralUnionDecoder](/api/functions/getLiteralUnionDecoder) \
[getLiteralUnionEncoder](/api/functions/getLiteralUnionEncoder) \
[getMapCodec](/api/functions/getMapCodec) \
[getMapDecoder](/api/functions/getMapDecoder) \
[getMapEncoder](/api/functions/getMapEncoder) \
[getNullableCodec](/api/functions/getNullableCodec) \
[getNullableDecoder](/api/functions/getNullableDecoder) \
[getNullableEncoder](/api/functions/getNullableEncoder) \
[getPatternMatchCodec](/api/functions/getPatternMatchCodec) \
[getPatternMatchDecoder](/api/functions/getPatternMatchDecoder) \
[getPatternMatchEncoder](/api/functions/getPatternMatchEncoder) \
[getPredicateCodec](/api/functions/getPredicateCodec) \
[getPredicateDecoder](/api/functions/getPredicateDecoder) \
[getPredicateEncoder](/api/functions/getPredicateEncoder) \
[getSetCodec](/api/functions/getSetCodec) \
[getSetDecoder](/api/functions/getSetDecoder) \
[getSetEncoder](/api/functions/getSetEncoder) \
[getStructCodec](/api/functions/getStructCodec) \
[getStructDecoder](/api/functions/getStructDecoder) \
[getStructEncoder](/api/functions/getStructEncoder) \
[getTupleCodec](/api/functions/getTupleCodec) \
[getTupleDecoder](/api/functions/getTupleDecoder) \
[getTupleEncoder](/api/functions/getTupleEncoder) \
[getUnionCodec](/api/functions/getUnionCodec) \
[getUnionDecoder](/api/functions/getUnionDecoder) \
[getUnionEncoder](/api/functions/getUnionEncoder) \
[getUnitCodec](/api/functions/getUnitCodec) \
[getUnitDecoder](/api/functions/getUnitDecoder) \
[getUnitEncoder](/api/functions/getUnitEncoder)
### `@solana/codecs-numbers`
Enums (1)
[Endian](/api/enumerations/Endian)
Types (7)
[FixedSizeNumberCodec](/api/type-aliases/FixedSizeNumberCodec) \
[FixedSizeNumberDecoder](/api/type-aliases/FixedSizeNumberDecoder) \
[FixedSizeNumberEncoder](/api/type-aliases/FixedSizeNumberEncoder) \
[NumberCodec](/api/type-aliases/NumberCodec) \
[NumberCodecConfig](/api/type-aliases/NumberCodecConfig) \
[NumberDecoder](/api/type-aliases/NumberDecoder) \
[NumberEncoder](/api/type-aliases/NumberEncoder)
Functions (40)
[assertNumberIsBetweenForCodec](/api/functions/assertNumberIsBetweenForCodec) \
[getF32Codec](/api/functions/getF32Codec) \
[getF32Decoder](/api/functions/getF32Decoder) \
[getF32Encoder](/api/functions/getF32Encoder) \
[getF64Codec](/api/functions/getF64Codec) \
[getF64Decoder](/api/functions/getF64Decoder) \
[getF64Encoder](/api/functions/getF64Encoder) \
[getI128Codec](/api/functions/getI128Codec) \
[getI128Decoder](/api/functions/getI128Decoder) \
[getI128Encoder](/api/functions/getI128Encoder) \
[getI16Codec](/api/functions/getI16Codec) \
[getI16Decoder](/api/functions/getI16Decoder) \
[getI16Encoder](/api/functions/getI16Encoder) \
[getI32Codec](/api/functions/getI32Codec) \
[getI32Decoder](/api/functions/getI32Decoder) \
[getI32Encoder](/api/functions/getI32Encoder) \
[getI64Codec](/api/functions/getI64Codec) \
[getI64Decoder](/api/functions/getI64Decoder) \
[getI64Encoder](/api/functions/getI64Encoder) \
[getI8Codec](/api/functions/getI8Codec) \
[getI8Decoder](/api/functions/getI8Decoder) \
[getI8Encoder](/api/functions/getI8Encoder) \
[getShortU16Codec](/api/functions/getShortU16Codec) \
[getShortU16Decoder](/api/functions/getShortU16Decoder) \
[getShortU16Encoder](/api/functions/getShortU16Encoder) \
[getU128Codec](/api/functions/getU128Codec) \
[getU128Decoder](/api/functions/getU128Decoder) \
[getU128Encoder](/api/functions/getU128Encoder) \
[getU16Codec](/api/functions/getU16Codec) \
[getU16Decoder](/api/functions/getU16Decoder) \
[getU16Encoder](/api/functions/getU16Encoder) \
[getU32Codec](/api/functions/getU32Codec) \
[getU32Decoder](/api/functions/getU32Decoder) \
[getU32Encoder](/api/functions/getU32Encoder) \
[getU64Codec](/api/functions/getU64Codec) \
[getU64Decoder](/api/functions/getU64Decoder) \
[getU64Encoder](/api/functions/getU64Encoder) \
[getU8Codec](/api/functions/getU8Codec) \
[getU8Decoder](/api/functions/getU8Decoder) \
[getU8Encoder](/api/functions/getU8Encoder)
### `@solana/codecs-strings`
Functions (24)
[assertValidBaseString](/api/functions/assertValidBaseString) \
[getBase10Codec](/api/functions/getBase10Codec) \
[getBase10Decoder](/api/functions/getBase10Decoder) \
[getBase10Encoder](/api/functions/getBase10Encoder) \
[getBase16Codec](/api/functions/getBase16Codec) \
[getBase16Decoder](/api/functions/getBase16Decoder) \
[getBase16Encoder](/api/functions/getBase16Encoder) \
[getBase58Codec](/api/functions/getBase58Codec) \
[getBase58Decoder](/api/functions/getBase58Decoder) \
[getBase58Encoder](/api/functions/getBase58Encoder) \
[getBase64Codec](/api/functions/getBase64Codec) \
[getBase64Decoder](/api/functions/getBase64Decoder) \
[getBase64Encoder](/api/functions/getBase64Encoder) \
[getBaseXCodec](/api/functions/getBaseXCodec) \
[getBaseXDecoder](/api/functions/getBaseXDecoder) \
[getBaseXEncoder](/api/functions/getBaseXEncoder) \
[getBaseXResliceCodec](/api/functions/getBaseXResliceCodec) \
[getBaseXResliceDecoder](/api/functions/getBaseXResliceDecoder) \
[getBaseXResliceEncoder](/api/functions/getBaseXResliceEncoder) \
[getUtf8Codec](/api/functions/getUtf8Codec) \
[getUtf8Decoder](/api/functions/getUtf8Decoder) \
[getUtf8Encoder](/api/functions/getUtf8Encoder) \
[padNullCharacters](/api/functions/padNullCharacters) \
[removeNullCharacters](/api/functions/removeNullCharacters)
### `@solana/compat`
Functions (4)
[fromLegacyKeypair](/api/functions/fromLegacyKeypair) \
[fromLegacyPublicKey](/api/functions/fromLegacyPublicKey) \
[fromLegacyTransactionInstruction](/api/functions/fromLegacyTransactionInstruction) \
[fromVersionedTransaction](/api/functions/fromVersionedTransaction)
### `@solana/errors`
Classes (1)
[SolanaError](/api/classes/SolanaError)
Types (4)
[SolanaErrorCode](/api/type-aliases/SolanaErrorCode) \
[SolanaErrorCodeWithCause](/api/type-aliases/SolanaErrorCodeWithCause) \
[SolanaErrorCodeWithDeprecatedCause](/api/type-aliases/SolanaErrorCodeWithDeprecatedCause) \
[SolanaErrorWithDeprecatedCause](/api/interfaces/SolanaErrorWithDeprecatedCause)
Functions (6)
[getSolanaErrorFromInstructionError](/api/functions/getSolanaErrorFromInstructionError) \
[getSolanaErrorFromJsonRpcError](/api/functions/getSolanaErrorFromJsonRpcError) \
[getSolanaErrorFromTransactionError](/api/functions/getSolanaErrorFromTransactionError) \
[isSolanaError](/api/functions/isSolanaError) \
[safeCaptureStackTrace](/api/functions/safeCaptureStackTrace) \
[unwrapSimulationError](/api/functions/unwrapSimulationError)
Variables (328)
[SOLANA\_ERROR\_\_ACCOUNTS\_\_ACCOUNT\_NOT\_FOUND](/api/variables/SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND) \
[SOLANA\_ERROR\_\_ACCOUNTS\_\_EXPECTED\_ALL\_ACCOUNTS\_TO\_BE\_DECODED](/api/variables/SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED) \
[SOLANA\_ERROR\_\_ACCOUNTS\_\_EXPECTED\_DECODED\_ACCOUNT](/api/variables/SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT) \
[SOLANA\_ERROR\_\_ACCOUNTS\_\_FAILED\_TO\_DECODE\_ACCOUNT](/api/variables/SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT) \
[SOLANA\_ERROR\_\_ACCOUNTS\_\_ONE\_OR\_MORE\_ACCOUNTS\_NOT\_FOUND](/api/variables/SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND) \
[SOLANA\_ERROR\_\_ADDRESSES\_\_FAILED\_TO\_FIND\_VIABLE\_PDA\_BUMP\_SEED](/api/variables/SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED) \
[SOLANA\_ERROR\_\_ADDRESSES\_\_INVALID\_BASE58\_ENCODED\_ADDRESS](/api/variables/SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS) \
[SOLANA\_ERROR\_\_ADDRESSES\_\_INVALID\_BYTE\_LENGTH](/api/variables/SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH) \
[SOLANA\_ERROR\_\_ADDRESSES\_\_INVALID\_ED25519\_PUBLIC\_KEY](/api/variables/SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY) \
[SOLANA\_ERROR\_\_ADDRESSES\_\_INVALID\_OFF\_CURVE\_ADDRESS](/api/variables/SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS) \
[SOLANA\_ERROR\_\_ADDRESSES\_\_INVALID\_SEEDS\_POINT\_ON\_CURVE](/api/variables/SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE) \
[SOLANA\_ERROR\_\_ADDRESSES\_\_MALFORMED\_PDA](/api/variables/SOLANA_ERROR__ADDRESSES__MALFORMED_PDA) \
[SOLANA\_ERROR\_\_ADDRESSES\_\_MAX\_NUMBER\_OF\_PDA\_SEEDS\_EXCEEDED](/api/variables/SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED) \
[SOLANA\_ERROR\_\_ADDRESSES\_\_MAX\_PDA\_SEED\_LENGTH\_EXCEEDED](/api/variables/SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED) \
[SOLANA\_ERROR\_\_ADDRESSES\_\_PDA\_BUMP\_SEED\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_ADDRESSES\_\_PDA\_ENDS\_WITH\_PDA\_MARKER](/api/variables/SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER) \
[SOLANA\_ERROR\_\_ADDRESSES\_\_STRING\_LENGTH\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_BLOCK\_HEIGHT\_EXCEEDED](/api/variables/SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED) \
[SOLANA\_ERROR\_\_BLOCKHASH\_STRING\_LENGTH\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_CODECS\_\_CANNOT\_DECODE\_EMPTY\_BYTE\_ARRAY](/api/variables/SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY) \
[SOLANA\_ERROR\_\_CODECS\_\_CANNOT\_USE\_LEXICAL\_VALUES\_AS\_ENUM\_DISCRIMINATORS](/api/variables/SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS) \
[SOLANA\_ERROR\_\_CODECS\_\_ENCODED\_BYTES\_MUST\_NOT\_INCLUDE\_SENTINEL](/api/variables/SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL) \
[SOLANA\_ERROR\_\_CODECS\_\_ENCODER\_DECODER\_FIXED\_SIZE\_MISMATCH](/api/variables/SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH) \
[SOLANA\_ERROR\_\_CODECS\_\_ENCODER\_DECODER\_MAX\_SIZE\_MISMATCH](/api/variables/SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH) \
[SOLANA\_ERROR\_\_CODECS\_\_ENCODER\_DECODER\_SIZE\_COMPATIBILITY\_MISMATCH](/api/variables/SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH) \
[SOLANA\_ERROR\_\_CODECS\_\_ENUM\_DISCRIMINATOR\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_CODECS\_\_EXPECTED\_DECODER\_TO\_CONSUME\_ENTIRE\_BYTE\_ARRAY](/api/variables/SOLANA_ERROR__CODECS__EXPECTED_DECODER_TO_CONSUME_ENTIRE_BYTE_ARRAY) \
[SOLANA\_ERROR\_\_CODECS\_\_EXPECTED\_FIXED\_LENGTH](/api/variables/SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH) \
[SOLANA\_ERROR\_\_CODECS\_\_EXPECTED\_POSITIVE\_BYTE\_LENGTH](/api/variables/SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH) \
[SOLANA\_ERROR\_\_CODECS\_\_EXPECTED\_VARIABLE\_LENGTH](/api/variables/SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH) \
[SOLANA\_ERROR\_\_CODECS\_\_EXPECTED\_ZERO\_VALUE\_TO\_MATCH\_ITEM\_FIXED\_SIZE](/api/variables/SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE) \
[SOLANA\_ERROR\_\_CODECS\_\_INVALID\_BYTE\_LENGTH](/api/variables/SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH) \
[SOLANA\_ERROR\_\_CODECS\_\_INVALID\_CONSTANT](/api/variables/SOLANA_ERROR__CODECS__INVALID_CONSTANT) \
[SOLANA\_ERROR\_\_CODECS\_\_INVALID\_DISCRIMINATED\_UNION\_VARIANT](/api/variables/SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT) \
[SOLANA\_ERROR\_\_CODECS\_\_INVALID\_ENUM\_VARIANT](/api/variables/SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT) \
[SOLANA\_ERROR\_\_CODECS\_\_INVALID\_LITERAL\_UNION\_VARIANT](/api/variables/SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT) \
[SOLANA\_ERROR\_\_CODECS\_\_INVALID\_NUMBER\_OF\_ITEMS](/api/variables/SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS) \
[SOLANA\_ERROR\_\_CODECS\_\_INVALID\_PATTERN\_MATCH\_BYTES](/api/variables/SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_BYTES) \
[SOLANA\_ERROR\_\_CODECS\_\_INVALID\_PATTERN\_MATCH\_VALUE](/api/variables/SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_VALUE) \
[SOLANA\_ERROR\_\_CODECS\_\_INVALID\_STRING\_FOR\_BASE](/api/variables/SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE) \
[SOLANA\_ERROR\_\_CODECS\_\_LITERAL\_UNION\_DISCRIMINATOR\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_CODECS\_\_NUMBER\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_CODECS\_\_OFFSET\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_CODECS\_\_SENTINEL\_MISSING\_IN\_DECODED\_BYTES](/api/variables/SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES) \
[SOLANA\_ERROR\_\_CODECS\_\_UNION\_VARIANT\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_CRYPTO\_\_RANDOM\_VALUES\_FUNCTION\_UNIMPLEMENTED](/api/variables/SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED) \
[SOLANA\_ERROR\_\_FAILED\_TO\_SEND\_TRANSACTION](/api/variables/SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION) \
[SOLANA\_ERROR\_\_FAILED\_TO\_SEND\_TRANSACTIONS](/api/variables/SOLANA_ERROR__FAILED_TO_SEND_TRANSACTIONS) \
[SOLANA\_ERROR\_\_FAILED\_TO\_SIGN\_TRANSACTION](/api/variables/SOLANA_ERROR__FAILED_TO_SIGN_TRANSACTION) \
[SOLANA\_ERROR\_\_FAILED\_TO\_SIGN\_TRANSACTIONS](/api/variables/SOLANA_ERROR__FAILED_TO_SIGN_TRANSACTIONS) \
[SOLANA\_ERROR\_\_FIXED\_POINTS\_\_ARITHMETIC\_OVERFLOW](/api/variables/SOLANA_ERROR__FIXED_POINTS__ARITHMETIC_OVERFLOW) \
[SOLANA\_ERROR\_\_FIXED\_POINTS\_\_DIVISION\_BY\_ZERO](/api/variables/SOLANA_ERROR__FIXED_POINTS__DIVISION_BY_ZERO) \
[SOLANA\_ERROR\_\_FIXED\_POINTS\_\_FRACTIONAL\_BITS\_EXCEED\_TOTAL\_BITS](/api/variables/SOLANA_ERROR__FIXED_POINTS__FRACTIONAL_BITS_EXCEED_TOTAL_BITS) \
[SOLANA\_ERROR\_\_FIXED\_POINTS\_\_INVALID\_DECIMALS](/api/variables/SOLANA_ERROR__FIXED_POINTS__INVALID_DECIMALS) \
[SOLANA\_ERROR\_\_FIXED\_POINTS\_\_INVALID\_FRACTIONAL\_BITS](/api/variables/SOLANA_ERROR__FIXED_POINTS__INVALID_FRACTIONAL_BITS) \
[SOLANA\_ERROR\_\_FIXED\_POINTS\_\_INVALID\_STRING](/api/variables/SOLANA_ERROR__FIXED_POINTS__INVALID_STRING) \
[SOLANA\_ERROR\_\_FIXED\_POINTS\_\_INVALID\_TOTAL\_BITS](/api/variables/SOLANA_ERROR__FIXED_POINTS__INVALID_TOTAL_BITS) \
[SOLANA\_ERROR\_\_FIXED\_POINTS\_\_INVALID\_ZERO\_DENOMINATOR\_RATIO](/api/variables/SOLANA_ERROR__FIXED_POINTS__INVALID_ZERO_DENOMINATOR_RATIO) \
[SOLANA\_ERROR\_\_FIXED\_POINTS\_\_MALFORMED\_RAW\_VALUE](/api/variables/SOLANA_ERROR__FIXED_POINTS__MALFORMED_RAW_VALUE) \
[SOLANA\_ERROR\_\_FIXED\_POINTS\_\_SHAPE\_MISMATCH](/api/variables/SOLANA_ERROR__FIXED_POINTS__SHAPE_MISMATCH) \
[SOLANA\_ERROR\_\_FIXED\_POINTS\_\_STRICT\_MODE\_PRECISION\_LOSS](/api/variables/SOLANA_ERROR__FIXED_POINTS__STRICT_MODE_PRECISION_LOSS) \
[SOLANA\_ERROR\_\_FIXED\_POINTS\_\_TOTAL\_BITS\_NOT\_BYTE\_ALIGNED](/api/variables/SOLANA_ERROR__FIXED_POINTS__TOTAL_BITS_NOT_BYTE_ALIGNED) \
[SOLANA\_ERROR\_\_FIXED\_POINTS\_\_VALUE\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__FIXED_POINTS__VALUE_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_FS\_\_UNSUPPORTED\_ENVIRONMENT](/api/variables/SOLANA_ERROR__FS__UNSUPPORTED_ENVIRONMENT) \
[SOLANA\_ERROR\_\_INSTRUCTION\_\_EXPECTED\_TO\_HAVE\_ACCOUNTS](/api/variables/SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS) \
[SOLANA\_ERROR\_\_INSTRUCTION\_\_EXPECTED\_TO\_HAVE\_DATA](/api/variables/SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA) \
[SOLANA\_ERROR\_\_INSTRUCTION\_\_PROGRAM\_ID\_MISMATCH](/api/variables/SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_ACCOUNT\_ALREADY\_INITIALIZED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_ACCOUNT\_BORROW\_FAILED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_ACCOUNT\_BORROW\_OUTSTANDING](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_ACCOUNT\_DATA\_SIZE\_CHANGED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_ACCOUNT\_DATA\_TOO\_SMALL](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_ACCOUNT\_NOT\_EXECUTABLE](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_ACCOUNT\_NOT\_RENT\_EXEMPT](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_ARITHMETIC\_OVERFLOW](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_BORSH\_IO\_ERROR](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_BUILTIN\_PROGRAMS\_MUST\_CONSUME\_COMPUTE\_UNITS](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_CALL\_DEPTH](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_COMPUTATIONAL\_BUDGET\_EXCEEDED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_CUSTOM](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_DUPLICATE\_ACCOUNT\_INDEX](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_DUPLICATE\_ACCOUNT\_OUT\_OF\_SYNC](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_EXECUTABLE\_ACCOUNT\_NOT\_RENT\_EXEMPT](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_EXECUTABLE\_DATA\_MODIFIED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_EXECUTABLE\_LAMPORT\_CHANGE](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_EXECUTABLE\_MODIFIED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_EXTERNAL\_ACCOUNT\_DATA\_MODIFIED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_EXTERNAL\_ACCOUNT\_LAMPORT\_SPEND](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_GENERIC\_ERROR](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_ILLEGAL\_OWNER](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_IMMUTABLE](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_INCORRECT\_AUTHORITY](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_INCORRECT\_PROGRAM\_ID](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_INSUFFICIENT\_FUNDS](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_INVALID\_ACCOUNT\_DATA](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_INVALID\_ACCOUNT\_OWNER](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_INVALID\_ARGUMENT](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_INVALID\_ERROR](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_INVALID\_INSTRUCTION\_DATA](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_INVALID\_REALLOC](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_INVALID\_SEEDS](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_MAX\_ACCOUNTS\_DATA\_ALLOCATIONS\_EXCEEDED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_MAX\_ACCOUNTS\_EXCEEDED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_MAX\_INSTRUCTION\_TRACE\_LENGTH\_EXCEEDED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_MAX\_SEED\_LENGTH\_EXCEEDED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_MISSING\_ACCOUNT](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_MISSING\_REQUIRED\_SIGNATURE](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_MODIFIED\_PROGRAM\_ID](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_NOT\_ENOUGH\_ACCOUNT\_KEYS](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_PRIVILEGE\_ESCALATION](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_PROGRAM\_ENVIRONMENT\_SETUP\_FAILURE](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_PROGRAM\_FAILED\_TO\_COMPILE](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_PROGRAM\_FAILED\_TO\_COMPLETE](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_READONLY\_DATA\_MODIFIED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_READONLY\_LAMPORT\_CHANGE](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_REENTRANCY\_NOT\_ALLOWED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_RENT\_EPOCH\_MODIFIED](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_UNBALANCED\_INSTRUCTION](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_UNINITIALIZED\_ACCOUNT](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_UNKNOWN](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_UNSUPPORTED\_PROGRAM\_ID](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID) \
[SOLANA\_ERROR\_\_INSTRUCTION\_ERROR\_\_UNSUPPORTED\_SYSVAR](/api/variables/SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR) \
[SOLANA\_ERROR\_\_INSTRUCTION\_PLANS\_\_EMPTY\_INSTRUCTION\_PLAN](/api/variables/SOLANA_ERROR__INSTRUCTION_PLANS__EMPTY_INSTRUCTION_PLAN) \
[SOLANA\_ERROR\_\_INSTRUCTION\_PLANS\_\_EXPECTED\_SUCCESSFUL\_TRANSACTION\_PLAN\_RESULT](/api/variables/SOLANA_ERROR__INSTRUCTION_PLANS__EXPECTED_SUCCESSFUL_TRANSACTION_PLAN_RESULT) \
[SOLANA\_ERROR\_\_INSTRUCTION\_PLANS\_\_FAILED\_SINGLE\_TRANSACTION\_PLAN\_RESULT\_NOT\_FOUND](/api/variables/SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_SINGLE_TRANSACTION_PLAN_RESULT_NOT_FOUND) \
[SOLANA\_ERROR\_\_INSTRUCTION\_PLANS\_\_FAILED\_TO\_EXECUTE\_TRANSACTION\_PLAN](/api/variables/SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLAN) \
[SOLANA\_ERROR\_\_INSTRUCTION\_PLANS\_\_INVALID\_MAX\_INSTRUCTIONS\_PER\_TRANSACTION](/api/variables/SOLANA_ERROR__INSTRUCTION_PLANS__INVALID_MAX_INSTRUCTIONS_PER_TRANSACTION) \
[SOLANA\_ERROR\_\_INSTRUCTION\_PLANS\_\_MAX\_INSTRUCTIONS\_PER\_TRANSACTION\_EXCEEDED](/api/variables/SOLANA_ERROR__INSTRUCTION_PLANS__MAX_INSTRUCTIONS_PER_TRANSACTION_EXCEEDED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_PLANS\_\_MESSAGE\_CANNOT\_ACCOMMODATE\_PLAN](/api/variables/SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_CANNOT_ACCOMMODATE_PLAN) \
[SOLANA\_ERROR\_\_INSTRUCTION\_PLANS\_\_MESSAGE\_PACKER\_ALREADY\_COMPLETE](/api/variables/SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_PACKER_ALREADY_COMPLETE) \
[SOLANA\_ERROR\_\_INSTRUCTION\_PLANS\_\_NON\_DIVISIBLE\_TRANSACTION\_PLANS\_NOT\_SUPPORTED](/api/variables/SOLANA_ERROR__INSTRUCTION_PLANS__NON_DIVISIBLE_TRANSACTION_PLANS_NOT_SUPPORTED) \
[SOLANA\_ERROR\_\_INSTRUCTION\_PLANS\_\_UNEXPECTED\_INSTRUCTION\_PLAN](/api/variables/SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_INSTRUCTION_PLAN) \
[SOLANA\_ERROR\_\_INSTRUCTION\_PLANS\_\_UNEXPECTED\_TRANSACTION\_PLAN](/api/variables/SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN) \
[SOLANA\_ERROR\_\_INSTRUCTION\_PLANS\_\_UNEXPECTED\_TRANSACTION\_PLAN\_RESULT](/api/variables/SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN_RESULT) \
[SOLANA\_ERROR\_\_INVALID\_BLOCKHASH\_BYTE\_LENGTH](/api/variables/SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH) \
[SOLANA\_ERROR\_\_INVALID\_NONCE](/api/variables/SOLANA_ERROR__INVALID_NONCE) \
[SOLANA\_ERROR\_\_INVARIANT\_VIOLATION\_\_CACHED\_ABORTABLE\_ITERABLE\_CACHE\_ENTRY\_MISSING](/api/variables/SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING) \
[SOLANA\_ERROR\_\_INVARIANT\_VIOLATION\_\_DATA\_PUBLISHER\_CHANNEL\_UNIMPLEMENTED](/api/variables/SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED) \
[SOLANA\_ERROR\_\_INVARIANT\_VIOLATION\_\_INVALID\_INSTRUCTION\_PLAN\_KIND](/api/variables/SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_INSTRUCTION_PLAN_KIND) \
[SOLANA\_ERROR\_\_INVARIANT\_VIOLATION\_\_INVALID\_TRANSACTION\_PLAN\_KIND](/api/variables/SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_TRANSACTION_PLAN_KIND) \
[SOLANA\_ERROR\_\_INVARIANT\_VIOLATION\_\_SUBSCRIPTION\_ITERATOR\_MUST\_NOT\_POLL\_BEFORE\_RESOLVING\_EXISTING\_MESSAGE\_PROMISE](/api/variables/SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE) \
[SOLANA\_ERROR\_\_INVARIANT\_VIOLATION\_\_SUBSCRIPTION\_ITERATOR\_STATE\_MISSING](/api/variables/SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING) \
[SOLANA\_ERROR\_\_INVARIANT\_VIOLATION\_\_SWITCH\_MUST\_BE\_EXHAUSTIVE](/api/variables/SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_INTERNAL\_ERROR](/api/variables/SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_INVALID\_PARAMS](/api/variables/SOLANA_ERROR__JSON_RPC__INVALID_PARAMS) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_INVALID\_REQUEST](/api/variables/SOLANA_ERROR__JSON_RPC__INVALID_REQUEST) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_METHOD\_NOT\_FOUND](/api/variables/SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_PARSE\_ERROR](/api/variables/SOLANA_ERROR__JSON_RPC__PARSE_ERROR) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SCAN\_ERROR](/api/variables/SOLANA_ERROR__JSON_RPC__SCAN_ERROR) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_BLOCK\_CLEANED\_UP](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_BLOCK\_NOT\_AVAILABLE](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_BLOCK\_STATUS\_NOT\_AVAILABLE\_YET](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_EPOCH\_REWARDS\_PERIOD\_ACTIVE](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_EPOCH_REWARDS_PERIOD_ACTIVE) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_FILTER\_TRANSACTION\_NOT\_FOUND](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_FILTER_TRANSACTION_NOT_FOUND) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_KEY\_EXCLUDED\_FROM\_SECONDARY\_INDEX](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_LONG\_TERM\_STORAGE\_SLOT\_SKIPPED](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_LONG\_TERM\_STORAGE\_UNREACHABLE](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_UNREACHABLE) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_MIN\_CONTEXT\_SLOT\_NOT\_REACHED](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_NO\_SLOT\_HISTORY](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SLOT_HISTORY) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_NO\_SNAPSHOT](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_NODE\_UNHEALTHY](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_SEND\_TRANSACTION\_PREFLIGHT\_FAILURE](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_SLOT\_NOT\_EPOCH\_BOUNDARY](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_NOT_EPOCH_BOUNDARY) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_SLOT\_SKIPPED](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_TRANSACTION\_HISTORY\_NOT\_AVAILABLE](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_TRANSACTION\_PRECOMPILE\_VERIFICATION\_FAILURE](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_TRANSACTION\_SIGNATURE\_LEN\_MISMATCH](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_TRANSACTION\_SIGNATURE\_VERIFICATION\_FAILURE](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE) \
[SOLANA\_ERROR\_\_JSON\_RPC\_\_SERVER\_ERROR\_UNSUPPORTED\_TRANSACTION\_VERSION](/api/variables/SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION) \
[SOLANA\_ERROR\_\_KEYS\_\_INVALID\_BASE58\_IN\_GRIND\_REGEX](/api/variables/SOLANA_ERROR__KEYS__INVALID_BASE58_IN_GRIND_REGEX) \
[SOLANA\_ERROR\_\_KEYS\_\_INVALID\_KEY\_PAIR\_BYTE\_LENGTH](/api/variables/SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH) \
[SOLANA\_ERROR\_\_KEYS\_\_INVALID\_PRIVATE\_KEY\_BYTE\_LENGTH](/api/variables/SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH) \
[SOLANA\_ERROR\_\_KEYS\_\_INVALID\_SIGNATURE\_BYTE\_LENGTH](/api/variables/SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH) \
[SOLANA\_ERROR\_\_KEYS\_\_PUBLIC\_KEY\_MUST\_MATCH\_PRIVATE\_KEY](/api/variables/SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY) \
[SOLANA\_ERROR\_\_KEYS\_\_SIGNATURE\_STRING\_LENGTH\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_KEYS\_\_WRITE\_KEY\_PAIR\_UNSUPPORTED\_ENVIRONMENT](/api/variables/SOLANA_ERROR__KEYS__WRITE_KEY_PAIR_UNSUPPORTED_ENVIRONMENT) \
[SOLANA\_ERROR\_\_LAMPORTS\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_MALFORMED\_BIGINT\_STRING](/api/variables/SOLANA_ERROR__MALFORMED_BIGINT_STRING) \
[SOLANA\_ERROR\_\_MALFORMED\_JSON\_RPC\_ERROR](/api/variables/SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR) \
[SOLANA\_ERROR\_\_MALFORMED\_NUMBER\_STRING](/api/variables/SOLANA_ERROR__MALFORMED_NUMBER_STRING) \
[SOLANA\_ERROR\_\_NONCE\_ACCOUNT\_NOT\_FOUND](/api/variables/SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_ADDRESSES\_CANNOT\_SIGN\_OFFCHAIN\_MESSAGE](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__ADDRESSES_CANNOT_SIGN_OFFCHAIN_MESSAGE) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_APPLICATION\_DOMAIN\_STRING\_LENGTH\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__APPLICATION_DOMAIN_STRING_LENGTH_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_CONTENT\_DOES\_NOT\_MATCH\_EXPECTED](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__CONTENT_DOES_NOT_MATCH_EXPECTED) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_ENVELOPE\_SIGNERS\_MISMATCH](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__ENVELOPE_SIGNERS_MISMATCH) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_INVALID\_APPLICATION\_DOMAIN\_BYTE\_LENGTH](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__INVALID_APPLICATION_DOMAIN_BYTE_LENGTH) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_MAXIMUM\_LENGTH\_EXCEEDED](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__MAXIMUM_LENGTH_EXCEEDED) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_MESSAGE\_FORMAT\_MISMATCH](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_FORMAT_MISMATCH) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_MESSAGE\_LENGTH\_MISMATCH](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_LENGTH_MISMATCH) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_MESSAGE\_MUST\_BE\_NON\_EMPTY](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_MUST_BE_NON_EMPTY) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_NUM\_ENVELOPE\_SIGNATURES\_CANNOT\_BE\_ZERO](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_ENVELOPE_SIGNATURES_CANNOT_BE_ZERO) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_NUM\_REQUIRED\_SIGNERS\_CANNOT\_BE\_ZERO](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_REQUIRED_SIGNERS_CANNOT_BE_ZERO) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_NUM\_SIGNATURES\_MISMATCH](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_SIGNATURES_MISMATCH) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_REQUIRED\_SIGNATORIES\_DO\_NOT\_MATCH\_EXPECTED](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__REQUIRED_SIGNATORIES_DO_NOT_MATCH_EXPECTED) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_RESTRICTED\_ASCII\_BODY\_CHARACTER\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__RESTRICTED_ASCII_BODY_CHARACTER_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_SIGNATORIES\_MUST\_BE\_SORTED](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_SORTED) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_SIGNATORIES\_MUST\_BE\_UNIQUE](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_UNIQUE) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_SIGNATURE\_VERIFICATION\_FAILURE](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURE_VERIFICATION_FAILURE) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_SIGNATURES\_MISSING](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURES_MISSING) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_UNEXPECTED\_VERSION](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__UNEXPECTED_VERSION) \
[SOLANA\_ERROR\_\_OFFCHAIN\_MESSAGE\_\_VERSION\_NUMBER\_NOT\_SUPPORTED](/api/variables/SOLANA_ERROR__OFFCHAIN_MESSAGE__VERSION_NUMBER_NOT_SUPPORTED) \
[SOLANA\_ERROR\_\_PROGRAM\_CLIENTS\_\_FAILED\_TO\_IDENTIFY\_ACCOUNT](/api/variables/SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT) \
[SOLANA\_ERROR\_\_PROGRAM\_CLIENTS\_\_FAILED\_TO\_IDENTIFY\_INSTRUCTION](/api/variables/SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION) \
[SOLANA\_ERROR\_\_PROGRAM\_CLIENTS\_\_INSUFFICIENT\_ACCOUNT\_METAS](/api/variables/SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS) \
[SOLANA\_ERROR\_\_PROGRAM\_CLIENTS\_\_RESOLVED\_INSTRUCTION\_INPUT\_MUST\_BE\_NON\_NULL](/api/variables/SOLANA_ERROR__PROGRAM_CLIENTS__RESOLVED_INSTRUCTION_INPUT_MUST_BE_NON_NULL) \
[SOLANA\_ERROR\_\_PROGRAM\_CLIENTS\_\_UNEXPECTED\_RESOLVED\_INSTRUCTION\_INPUT\_TYPE](/api/variables/SOLANA_ERROR__PROGRAM_CLIENTS__UNEXPECTED_RESOLVED_INSTRUCTION_INPUT_TYPE) \
[SOLANA\_ERROR\_\_PROGRAM\_CLIENTS\_\_UNRECOGNIZED\_ACCOUNT\_TYPE](/api/variables/SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_ACCOUNT_TYPE) \
[SOLANA\_ERROR\_\_PROGRAM\_CLIENTS\_\_UNRECOGNIZED\_INSTRUCTION\_TYPE](/api/variables/SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE) \
[SOLANA\_ERROR\_\_REACT\_\_MISSING\_CAPABILITY](/api/variables/SOLANA_ERROR__REACT__MISSING_CAPABILITY) \
[SOLANA\_ERROR\_\_REACT\_\_MISSING\_PROVIDER](/api/variables/SOLANA_ERROR__REACT__MISSING_PROVIDER) \
[SOLANA\_ERROR\_\_REACT\_\_SUBSCRIPTION\_CLOSED\_WITHOUT\_ERROR](/api/variables/SOLANA_ERROR__REACT__SUBSCRIPTION_CLOSED_WITHOUT_ERROR) \
[SOLANA\_ERROR\_\_RPC\_\_API\_PLAN\_MISSING\_FOR\_RPC\_METHOD](/api/variables/SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD) \
[SOLANA\_ERROR\_\_RPC\_\_INTEGER\_OVERFLOW](/api/variables/SOLANA_ERROR__RPC__INTEGER_OVERFLOW) \
[SOLANA\_ERROR\_\_RPC\_\_TRANSPORT\_HTTP\_ERROR](/api/variables/SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR) \
[SOLANA\_ERROR\_\_RPC\_\_TRANSPORT\_HTTP\_HEADER\_FORBIDDEN](/api/variables/SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN) \
[SOLANA\_ERROR\_\_RPC\_SUBSCRIPTIONS\_\_CANNOT\_CREATE\_SUBSCRIPTION\_PLAN](/api/variables/SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN) \
[SOLANA\_ERROR\_\_RPC\_SUBSCRIPTIONS\_\_CHANNEL\_CLOSED\_BEFORE\_MESSAGE\_BUFFERED](/api/variables/SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED) \
[SOLANA\_ERROR\_\_RPC\_SUBSCRIPTIONS\_\_CHANNEL\_CONNECTION\_CLOSED](/api/variables/SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED) \
[SOLANA\_ERROR\_\_RPC\_SUBSCRIPTIONS\_\_CHANNEL\_FAILED\_TO\_CONNECT](/api/variables/SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT) \
[SOLANA\_ERROR\_\_RPC\_SUBSCRIPTIONS\_\_EXPECTED\_SERVER\_SUBSCRIPTION\_ID](/api/variables/SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID) \
[SOLANA\_ERROR\_\_SIGNER\_\_ADDRESS\_CANNOT\_HAVE\_MULTIPLE\_SIGNERS](/api/variables/SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS) \
[SOLANA\_ERROR\_\_SIGNER\_\_EXPECTED\_KEY\_PAIR\_SIGNER](/api/variables/SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER) \
[SOLANA\_ERROR\_\_SIGNER\_\_EXPECTED\_MESSAGE\_MODIFYING\_SIGNER](/api/variables/SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER) \
[SOLANA\_ERROR\_\_SIGNER\_\_EXPECTED\_MESSAGE\_PARTIAL\_SIGNER](/api/variables/SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER) \
[SOLANA\_ERROR\_\_SIGNER\_\_EXPECTED\_MESSAGE\_SIGNER](/api/variables/SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER) \
[SOLANA\_ERROR\_\_SIGNER\_\_EXPECTED\_TRANSACTION\_MODIFYING\_SIGNER](/api/variables/SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER) \
[SOLANA\_ERROR\_\_SIGNER\_\_EXPECTED\_TRANSACTION\_PARTIAL\_SIGNER](/api/variables/SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER) \
[SOLANA\_ERROR\_\_SIGNER\_\_EXPECTED\_TRANSACTION\_SENDING\_SIGNER](/api/variables/SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER) \
[SOLANA\_ERROR\_\_SIGNER\_\_EXPECTED\_TRANSACTION\_SIGNER](/api/variables/SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER) \
[SOLANA\_ERROR\_\_SIGNER\_\_TRANSACTION\_CANNOT\_HAVE\_MULTIPLE\_SENDING\_SIGNERS](/api/variables/SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS) \
[SOLANA\_ERROR\_\_SIGNER\_\_TRANSACTION\_SENDING\_SIGNER\_MISSING](/api/variables/SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING) \
[SOLANA\_ERROR\_\_SIGNER\_\_WALLET\_ACCOUNT\_CANNOT\_SIGN\_TRANSACTION](/api/variables/SOLANA_ERROR__SIGNER__WALLET_ACCOUNT_CANNOT_SIGN_TRANSACTION) \
[SOLANA\_ERROR\_\_SIGNER\_\_WALLET\_MULTISIGN\_UNIMPLEMENTED](/api/variables/SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED) \
[SOLANA\_ERROR\_\_SUBSCRIBABLE\_\_RETRY\_NOT\_SUPPORTED](/api/variables/SOLANA_ERROR__SUBSCRIBABLE__RETRY_NOT_SUPPORTED) \
[SOLANA\_ERROR\_\_SUBSCRIBABLE\_\_STREAM\_CLOSED\_WITHOUT\_ERROR](/api/variables/SOLANA_ERROR__SUBSCRIBABLE__STREAM_CLOSED_WITHOUT_ERROR) \
[SOLANA\_ERROR\_\_SUBTLE\_CRYPTO\_\_CANNOT\_EXPORT\_NON\_EXTRACTABLE\_KEY](/api/variables/SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY) \
[SOLANA\_ERROR\_\_SUBTLE\_CRYPTO\_\_DIGEST\_UNIMPLEMENTED](/api/variables/SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED) \
[SOLANA\_ERROR\_\_SUBTLE\_CRYPTO\_\_DISALLOWED\_IN\_INSECURE\_CONTEXT](/api/variables/SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT) \
[SOLANA\_ERROR\_\_SUBTLE\_CRYPTO\_\_ED25519\_ALGORITHM\_UNIMPLEMENTED](/api/variables/SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED) \
[SOLANA\_ERROR\_\_SUBTLE\_CRYPTO\_\_EXPORT\_FUNCTION\_UNIMPLEMENTED](/api/variables/SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED) \
[SOLANA\_ERROR\_\_SUBTLE\_CRYPTO\_\_GENERATE\_FUNCTION\_UNIMPLEMENTED](/api/variables/SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED) \
[SOLANA\_ERROR\_\_SUBTLE\_CRYPTO\_\_SIGN\_FUNCTION\_UNIMPLEMENTED](/api/variables/SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED) \
[SOLANA\_ERROR\_\_SUBTLE\_CRYPTO\_\_VERIFY\_FUNCTION\_UNIMPLEMENTED](/api/variables/SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED) \
[SOLANA\_ERROR\_\_TIMESTAMP\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_ADDRESS\_MISSING](/api/variables/SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_ADDRESSES\_CANNOT\_SIGN\_TRANSACTION](/api/variables/SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_CANNOT\_DECODE\_EMPTY\_TRANSACTION\_BYTES](/api/variables/SOLANA_ERROR__TRANSACTION__CANNOT_DECODE_EMPTY_TRANSACTION_BYTES) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_CANNOT\_ENCODE\_WITH\_EMPTY\_MESSAGE\_BYTES](/api/variables/SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_MESSAGE_BYTES) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_CANNOT\_ENCODE\_WITH\_EMPTY\_SIGNATURES](/api/variables/SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_COMPUTE\_UNIT\_LIMIT\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__TRANSACTION__COMPUTE_UNIT_LIMIT_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_EXCEEDS\_SIZE\_LIMIT](/api/variables/SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_EXPECTED\_BLOCKHASH\_LIFETIME](/api/variables/SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_EXPECTED\_NONCE\_LIFETIME](/api/variables/SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_FAILED\_TO\_DECOMPILE\_ADDRESS\_LOOKUP\_TABLE\_CONTENTS\_MISSING](/api/variables/SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_FAILED\_TO\_DECOMPILE\_ADDRESS\_LOOKUP\_TABLE\_INDEX\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_FAILED\_TO\_DECOMPILE\_FEE\_PAYER\_MISSING](/api/variables/SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_FAILED\_TO\_DECOMPILE\_INSTRUCTION\_ACCOUNT\_INDEX\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_ACCOUNT_INDEX_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_FAILED\_TO\_DECOMPILE\_INSTRUCTION\_PROGRAM\_ADDRESS\_NOT\_FOUND](/api/variables/SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_FAILED\_TO\_ESTIMATE\_COMPUTE\_LIMIT](/api/variables/SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_FAILED\_TO\_ESTIMATE\_LOADED\_ACCOUNTS\_DATA\_SIZE\_LIMIT](/api/variables/SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_LOADED_ACCOUNTS_DATA_SIZE_LIMIT) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_FAILED\_WHEN\_SIMULATING\_TO\_ESTIMATE\_COMPUTE\_LIMIT](/api/variables/SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_FAILED\_WHEN\_SIMULATING\_TO\_ESTIMATE\_RESOURCE\_LIMITS](/api/variables/SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_RESOURCE_LIMITS) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_FEE\_PAYER\_MISSING](/api/variables/SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_FEE\_PAYER\_SIGNATURE\_MISSING](/api/variables/SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_INSTRUCTION\_HEADERS\_PAYLOADS\_MISMATCH](/api/variables/SOLANA_ERROR__TRANSACTION__INSTRUCTION_HEADERS_PAYLOADS_MISMATCH) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_INVALID\_CONFIG\_MASK\_PRIORITY\_FEE\_BITS](/api/variables/SOLANA_ERROR__TRANSACTION__INVALID_CONFIG_MASK_PRIORITY_FEE_BITS) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_INVALID\_CONFIG\_VALUE\_KIND](/api/variables/SOLANA_ERROR__TRANSACTION__INVALID_CONFIG_VALUE_KIND) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_INVALID\_HEAP\_SIZE](/api/variables/SOLANA_ERROR__TRANSACTION__INVALID_HEAP_SIZE) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_INVALID\_NONCE\_ACCOUNT\_INDEX](/api/variables/SOLANA_ERROR__TRANSACTION__INVALID_NONCE_ACCOUNT_INDEX) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_INVALID\_NONCE\_TRANSACTION\_FIRST\_INSTRUCTION\_MUST\_BE\_ADVANCE\_NONCE](/api/variables/SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_INVALID\_NONCE\_TRANSACTION\_INSTRUCTIONS\_MISSING](/api/variables/SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_INVOKED\_PROGRAMS\_CANNOT\_PAY\_FEES](/api/variables/SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_INVOKED\_PROGRAMS\_MUST\_NOT\_BE\_WRITABLE](/api/variables/SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_MALFORMED\_MESSAGE\_BYTES](/api/variables/SOLANA_ERROR__TRANSACTION__MALFORMED_MESSAGE_BYTES) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_MESSAGE\_SIGNATURES\_MISMATCH](/api/variables/SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_NONCE\_ACCOUNT\_CANNOT\_BE\_IN\_LOOKUP\_TABLE](/api/variables/SOLANA_ERROR__TRANSACTION__NONCE_ACCOUNT_CANNOT_BE_IN_LOOKUP_TABLE) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_SIGNATURE\_COUNT\_TOO\_HIGH\_FOR\_TRANSACTION\_BYTES](/api/variables/SOLANA_ERROR__TRANSACTION__SIGNATURE_COUNT_TOO_HIGH_FOR_TRANSACTION_BYTES) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_SIGNATURES\_MISSING](/api/variables/SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_TOO\_MANY\_ACCOUNT\_ADDRESSES](/api/variables/SOLANA_ERROR__TRANSACTION__TOO_MANY_ACCOUNT_ADDRESSES) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_TOO\_MANY\_ACCOUNTS\_IN\_INSTRUCTION](/api/variables/SOLANA_ERROR__TRANSACTION__TOO_MANY_ACCOUNTS_IN_INSTRUCTION) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_TOO\_MANY\_INSTRUCTIONS](/api/variables/SOLANA_ERROR__TRANSACTION__TOO_MANY_INSTRUCTIONS) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_TOO\_MANY\_SIGNER\_ADDRESSES](/api/variables/SOLANA_ERROR__TRANSACTION__TOO_MANY_SIGNER_ADDRESSES) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_VERSION\_NUMBER\_NOT\_SUPPORTED](/api/variables/SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_NOT_SUPPORTED) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_VERSION\_NUMBER\_OUT\_OF\_RANGE](/api/variables/SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE) \
[SOLANA\_ERROR\_\_TRANSACTION\_\_VERSION\_ZERO\_MUST\_BE\_ENCODED\_WITH\_SIGNATURES\_FIRST](/api/variables/SOLANA_ERROR__TRANSACTION__VERSION_ZERO_MUST_BE_ENCODED_WITH_SIGNATURES_FIRST) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_ACCOUNT\_BORROW\_OUTSTANDING](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_ACCOUNT\_IN\_USE](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_ACCOUNT\_LOADED\_TWICE](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_ACCOUNT\_NOT\_FOUND](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_ADDRESS\_LOOKUP\_TABLE\_NOT\_FOUND](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_ALREADY\_PROCESSED](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_BLOCKHASH\_NOT\_FOUND](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_CALL\_CHAIN\_TOO\_DEEP](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_CLUSTER\_MAINTENANCE](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_DUPLICATE\_INSTRUCTION](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_INSUFFICIENT\_FUNDS\_FOR\_FEE](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_INSUFFICIENT\_FUNDS\_FOR\_RENT](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_INVALID\_ACCOUNT\_FOR\_FEE](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_INVALID\_ACCOUNT\_INDEX](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_INVALID\_ADDRESS\_LOOKUP\_TABLE\_DATA](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_INVALID\_ADDRESS\_LOOKUP\_TABLE\_INDEX](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_INVALID\_ADDRESS\_LOOKUP\_TABLE\_OWNER](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_INVALID\_LOADED\_ACCOUNTS\_DATA\_SIZE\_LIMIT](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_INVALID\_PROGRAM\_FOR\_EXECUTION](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_INVALID\_RENT\_PAYING\_ACCOUNT](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_INVALID\_WRITABLE\_ACCOUNT](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_MAX\_LOADED\_ACCOUNTS\_DATA\_SIZE\_EXCEEDED](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_MISSING\_SIGNATURE\_FOR\_FEE](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_PROGRAM\_ACCOUNT\_NOT\_FOUND](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_PROGRAM\_EXECUTION\_TEMPORARILY\_RESTRICTED](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_RESANITIZATION\_NEEDED](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_SANITIZE\_FAILURE](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_SIGNATURE\_FAILURE](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_TOO\_MANY\_ACCOUNT\_LOCKS](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_UNBALANCED\_TRANSACTION](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_UNKNOWN](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_UNSUPPORTED\_VERSION](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_WOULD\_EXCEED\_ACCOUNT\_DATA\_BLOCK\_LIMIT](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_WOULD\_EXCEED\_ACCOUNT\_DATA\_TOTAL\_LIMIT](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_WOULD\_EXCEED\_MAX\_ACCOUNT\_COST\_LIMIT](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_WOULD\_EXCEED\_MAX\_BLOCK\_COST\_LIMIT](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT) \
[SOLANA\_ERROR\_\_TRANSACTION\_ERROR\_\_WOULD\_EXCEED\_MAX\_VOTE\_COST\_LIMIT](/api/variables/SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT) \
[SOLANA\_ERROR\_\_TRANSACTION\_INTROSPECTION\_\_CANNOT\_DECODE\_JSON\_PARSED\_TRANSACTION](/api/variables/SOLANA_ERROR__TRANSACTION_INTROSPECTION__CANNOT_DECODE_JSON_PARSED_TRANSACTION) \
[SOLANA\_ERROR\_\_TRANSACTION\_INTROSPECTION\_\_UNRECOGNIZED\_GET\_TRANSACTION\_RESPONSE](/api/variables/SOLANA_ERROR__TRANSACTION_INTROSPECTION__UNRECOGNIZED_GET_TRANSACTION_RESPONSE) \
[SOLANA\_ERROR\_\_WALLET\_\_ACCOUNT\_NOT\_AVAILABLE](/api/variables/SOLANA_ERROR__WALLET__ACCOUNT_NOT_AVAILABLE) \
[SOLANA\_ERROR\_\_WALLET\_\_NO\_SIGNER\_CONNECTED](/api/variables/SOLANA_ERROR__WALLET__NO_SIGNER_CONNECTED) \
[SOLANA\_ERROR\_\_WALLET\_\_NOT\_CONNECTED](/api/variables/SOLANA_ERROR__WALLET__NOT_CONNECTED) \
[SOLANA\_ERROR\_\_WALLET\_\_SIGNER\_NOT\_AVAILABLE](/api/variables/SOLANA_ERROR__WALLET__SIGNER_NOT_AVAILABLE)
### `@solana/fixed-points`
Types (6)
[BinaryFixedPoint](/api/type-aliases/BinaryFixedPoint) \
[DecimalFixedPoint](/api/type-aliases/DecimalFixedPoint) \
[FixedPointCodecConfig](/api/type-aliases/FixedPointCodecConfig) \
[FixedPointToStringOptions](/api/type-aliases/FixedPointToStringOptions) \
[RoundingMode](/api/type-aliases/RoundingMode) \
[Signedness](/api/type-aliases/Signedness)
Functions (53)
[absoluteBinaryFixedPoint](/api/functions/absoluteBinaryFixedPoint) \
[absoluteDecimalFixedPoint](/api/functions/absoluteDecimalFixedPoint) \
[addBinaryFixedPoint](/api/functions/addBinaryFixedPoint) \
[addDecimalFixedPoint](/api/functions/addDecimalFixedPoint) \
[assertIsBinaryFixedPoint](/api/functions/assertIsBinaryFixedPoint) \
[assertIsDecimalFixedPoint](/api/functions/assertIsDecimalFixedPoint) \
[binaryFixedPoint](/api/functions/binaryFixedPoint) \
[binaryFixedPointToBase10](/api/functions/binaryFixedPointToBase10) \
[binaryFixedPointToNumber](/api/functions/binaryFixedPointToNumber) \
[binaryFixedPointToString](/api/functions/binaryFixedPointToString) \
[cmpBinaryFixedPoint](/api/functions/cmpBinaryFixedPoint) \
[cmpDecimalFixedPoint](/api/functions/cmpDecimalFixedPoint) \
[decimalFixedPoint](/api/functions/decimalFixedPoint) \
[decimalFixedPointToNumber](/api/functions/decimalFixedPointToNumber) \
[decimalFixedPointToString](/api/functions/decimalFixedPointToString) \
[divideBinaryFixedPoint](/api/functions/divideBinaryFixedPoint) \
[divideDecimalFixedPoint](/api/functions/divideDecimalFixedPoint) \
[eqBinaryFixedPoint](/api/functions/eqBinaryFixedPoint) \
[eqDecimalFixedPoint](/api/functions/eqDecimalFixedPoint) \
[formatBinaryFixedPoint](/api/functions/formatBinaryFixedPoint) \
[formatDecimalFixedPoint](/api/functions/formatDecimalFixedPoint) \
[getBinaryFixedPointCodec](/api/functions/getBinaryFixedPointCodec) \
[getBinaryFixedPointDecoder](/api/functions/getBinaryFixedPointDecoder) \
[getBinaryFixedPointEncoder](/api/functions/getBinaryFixedPointEncoder) \
[getDecimalFixedPointCodec](/api/functions/getDecimalFixedPointCodec) \
[getDecimalFixedPointDecoder](/api/functions/getDecimalFixedPointDecoder) \
[getDecimalFixedPointEncoder](/api/functions/getDecimalFixedPointEncoder) \
[gtBinaryFixedPoint](/api/functions/gtBinaryFixedPoint) \
[gtDecimalFixedPoint](/api/functions/gtDecimalFixedPoint) \
[gteBinaryFixedPoint](/api/functions/gteBinaryFixedPoint) \
[gteDecimalFixedPoint](/api/functions/gteDecimalFixedPoint) \
[isBinaryFixedPoint](/api/functions/isBinaryFixedPoint) \
[isDecimalFixedPoint](/api/functions/isDecimalFixedPoint) \
[ltBinaryFixedPoint](/api/functions/ltBinaryFixedPoint) \
[ltDecimalFixedPoint](/api/functions/ltDecimalFixedPoint) \
[lteBinaryFixedPoint](/api/functions/lteBinaryFixedPoint) \
[lteDecimalFixedPoint](/api/functions/lteDecimalFixedPoint) \
[multiplyBinaryFixedPoint](/api/functions/multiplyBinaryFixedPoint) \
[multiplyDecimalFixedPoint](/api/functions/multiplyDecimalFixedPoint) \
[negateBinaryFixedPoint](/api/functions/negateBinaryFixedPoint) \
[negateDecimalFixedPoint](/api/functions/negateDecimalFixedPoint) \
[ratioBinaryFixedPoint](/api/functions/ratioBinaryFixedPoint) \
[ratioDecimalFixedPoint](/api/functions/ratioDecimalFixedPoint) \
[rawBinaryFixedPoint](/api/functions/rawBinaryFixedPoint) \
[rawDecimalFixedPoint](/api/functions/rawDecimalFixedPoint) \
[rescaleBinaryFixedPoint](/api/functions/rescaleBinaryFixedPoint) \
[rescaleDecimalFixedPoint](/api/functions/rescaleDecimalFixedPoint) \
[subtractBinaryFixedPoint](/api/functions/subtractBinaryFixedPoint) \
[subtractDecimalFixedPoint](/api/functions/subtractDecimalFixedPoint) \
[toSignedBinaryFixedPoint](/api/functions/toSignedBinaryFixedPoint) \
[toSignedDecimalFixedPoint](/api/functions/toSignedDecimalFixedPoint) \
[toUnsignedBinaryFixedPoint](/api/functions/toUnsignedBinaryFixedPoint) \
[toUnsignedDecimalFixedPoint](/api/functions/toUnsignedDecimalFixedPoint)
### `@solana/functional`
Functions (1)
[pipe](/api/functions/pipe)
### `@solana/instruction-plans`
Types (27)
[CanceledSingleTransactionPlanResult](/api/type-aliases/CanceledSingleTransactionPlanResult) \
[FailedSingleTransactionPlanResult](/api/type-aliases/FailedSingleTransactionPlanResult) \
[InstructionPlan](/api/type-aliases/InstructionPlan) \
[InstructionPlanInput](/api/type-aliases/InstructionPlanInput) \
[MessagePacker](/api/type-aliases/MessagePacker) \
[MessagePackerInstructionPlan](/api/type-aliases/MessagePackerInstructionPlan) \
[ParallelInstructionPlan](/api/type-aliases/ParallelInstructionPlan) \
[ParallelTransactionPlan](/api/type-aliases/ParallelTransactionPlan) \
[ParallelTransactionPlanResult](/api/type-aliases/ParallelTransactionPlanResult) \
[SequentialInstructionPlan](/api/type-aliases/SequentialInstructionPlan) \
[SequentialTransactionPlan](/api/type-aliases/SequentialTransactionPlan) \
[SequentialTransactionPlanResult](/api/type-aliases/SequentialTransactionPlanResult) \
[SingleInstructionPlan](/api/type-aliases/SingleInstructionPlan) \
[SingleTransactionPlan](/api/type-aliases/SingleTransactionPlan) \
[SingleTransactionPlanResult](/api/type-aliases/SingleTransactionPlanResult) \
[SuccessfulSingleTransactionPlanResult](/api/type-aliases/SuccessfulSingleTransactionPlanResult) \
[SuccessfulTransactionPlanResult](/api/type-aliases/SuccessfulTransactionPlanResult) \
[TransactionPlan](/api/type-aliases/TransactionPlan) \
[TransactionPlanExecutor](/api/type-aliases/TransactionPlanExecutor) \
[TransactionPlanExecutorConfig](/api/type-aliases/TransactionPlanExecutorConfig) \
[TransactionPlanInput](/api/type-aliases/TransactionPlanInput) \
[TransactionPlanner](/api/type-aliases/TransactionPlanner) \
[TransactionPlannerConfig](/api/type-aliases/TransactionPlannerConfig) \
[TransactionPlanResult](/api/type-aliases/TransactionPlanResult) \
[TransactionPlanResultContext](/api/type-aliases/TransactionPlanResultContext) \
[TransactionPlanResultContextWithSignature](/api/type-aliases/TransactionPlanResultContextWithSignature) \
[TransactionPlanResultSummary](/api/type-aliases/TransactionPlanResultSummary)
Functions (81)
[appendTransactionMessageInstructionPlan](/api/functions/appendTransactionMessageInstructionPlan) \
[assertIsCanceledSingleTransactionPlanResult](/api/functions/assertIsCanceledSingleTransactionPlanResult) \
[assertIsFailedSingleTransactionPlanResult](/api/functions/assertIsFailedSingleTransactionPlanResult) \
[assertIsMessagePackerInstructionPlan](/api/functions/assertIsMessagePackerInstructionPlan) \
[assertIsNonDivisibleSequentialInstructionPlan](/api/functions/assertIsNonDivisibleSequentialInstructionPlan) \
[assertIsNonDivisibleSequentialTransactionPlan](/api/functions/assertIsNonDivisibleSequentialTransactionPlan) \
[assertIsNonDivisibleSequentialTransactionPlanResult](/api/functions/assertIsNonDivisibleSequentialTransactionPlanResult) \
[assertIsParallelInstructionPlan](/api/functions/assertIsParallelInstructionPlan) \
[assertIsParallelTransactionPlan](/api/functions/assertIsParallelTransactionPlan) \
[assertIsParallelTransactionPlanResult](/api/functions/assertIsParallelTransactionPlanResult) \
[assertIsSequentialInstructionPlan](/api/functions/assertIsSequentialInstructionPlan) \
[assertIsSequentialTransactionPlan](/api/functions/assertIsSequentialTransactionPlan) \
[assertIsSequentialTransactionPlanResult](/api/functions/assertIsSequentialTransactionPlanResult) \
[assertIsSingleInstructionPlan](/api/functions/assertIsSingleInstructionPlan) \
[assertIsSingleTransactionPlan](/api/functions/assertIsSingleTransactionPlan) \
[assertIsSingleTransactionPlanResult](/api/functions/assertIsSingleTransactionPlanResult) \
[assertIsSuccessfulSingleTransactionPlanResult](/api/functions/assertIsSuccessfulSingleTransactionPlanResult) \
[assertIsSuccessfulTransactionPlanResult](/api/functions/assertIsSuccessfulTransactionPlanResult) \
[canceledSingleTransactionPlanResult](/api/functions/canceledSingleTransactionPlanResult) \
[createFailedToExecuteTransactionPlanError](/api/functions/createFailedToExecuteTransactionPlanError) \
[createFailedToSendTransactionError](/api/functions/createFailedToSendTransactionError) \
[createFailedToSendTransactionsError](/api/functions/createFailedToSendTransactionsError) \
[createFailedToSignTransactionError](/api/functions/createFailedToSignTransactionError) \
[createFailedToSignTransactionsError](/api/functions/createFailedToSignTransactionsError) \
[createTransactionPlanExecutor](/api/functions/createTransactionPlanExecutor) \
[createTransactionPlanExecutorWithConcurrentLeaves](/api/functions/createTransactionPlanExecutorWithConcurrentLeaves) \
[createTransactionPlanner](/api/functions/createTransactionPlanner) \
[everyInstructionPlan](/api/functions/everyInstructionPlan) \
[everyTransactionPlan](/api/functions/everyTransactionPlan) \
[everyTransactionPlanResult](/api/functions/everyTransactionPlanResult) \
[failedSingleTransactionPlanResult](/api/functions/failedSingleTransactionPlanResult) \
[findInstructionPlan](/api/functions/findInstructionPlan) \
[findTransactionPlan](/api/functions/findTransactionPlan) \
[findTransactionPlanResult](/api/functions/findTransactionPlanResult) \
[flattenInstructionPlan](/api/functions/flattenInstructionPlan) \
[flattenTransactionPlan](/api/functions/flattenTransactionPlan) \
[flattenTransactionPlanResult](/api/functions/flattenTransactionPlanResult) \
[getFirstFailedSingleTransactionPlanResult](/api/functions/getFirstFailedSingleTransactionPlanResult) \
[getLinearMessagePackerInstructionPlan](/api/functions/getLinearMessagePackerInstructionPlan) \
[getMessagePackerInstructionPlanFromInstructions](/api/functions/getMessagePackerInstructionPlanFromInstructions) \
[getReallocMessagePackerInstructionPlan](/api/functions/getReallocMessagePackerInstructionPlan) \
[isCanceledSingleTransactionPlanResult](/api/functions/isCanceledSingleTransactionPlanResult) \
[isFailedSingleTransactionPlanResult](/api/functions/isFailedSingleTransactionPlanResult) \
[isInstructionPlan](/api/functions/isInstructionPlan) \
[isMessagePackerInstructionPlan](/api/functions/isMessagePackerInstructionPlan) \
[isNonDivisibleSequentialInstructionPlan](/api/functions/isNonDivisibleSequentialInstructionPlan) \
[isNonDivisibleSequentialTransactionPlan](/api/functions/isNonDivisibleSequentialTransactionPlan) \
[isNonDivisibleSequentialTransactionPlanResult](/api/functions/isNonDivisibleSequentialTransactionPlanResult) \
[isParallelInstructionPlan](/api/functions/isParallelInstructionPlan) \
[isParallelTransactionPlan](/api/functions/isParallelTransactionPlan) \
[isParallelTransactionPlanResult](/api/functions/isParallelTransactionPlanResult) \
[isSequentialInstructionPlan](/api/functions/isSequentialInstructionPlan) \
[isSequentialTransactionPlan](/api/functions/isSequentialTransactionPlan) \
[isSequentialTransactionPlanResult](/api/functions/isSequentialTransactionPlanResult) \
[isSingleInstructionPlan](/api/functions/isSingleInstructionPlan) \
[isSingleTransactionPlan](/api/functions/isSingleTransactionPlan) \
[isSingleTransactionPlanResult](/api/functions/isSingleTransactionPlanResult) \
[isSuccessfulSingleTransactionPlanResult](/api/functions/isSuccessfulSingleTransactionPlanResult) \
[isSuccessfulTransactionPlanResult](/api/functions/isSuccessfulTransactionPlanResult) \
[isTransactionPlan](/api/functions/isTransactionPlan) \
[isTransactionPlanResult](/api/functions/isTransactionPlanResult) \
[nonDivisibleSequentialInstructionPlan](/api/functions/nonDivisibleSequentialInstructionPlan) \
[nonDivisibleSequentialTransactionPlan](/api/functions/nonDivisibleSequentialTransactionPlan) \
[nonDivisibleSequentialTransactionPlanResult](/api/functions/nonDivisibleSequentialTransactionPlanResult) \
[parallelInstructionPlan](/api/functions/parallelInstructionPlan) \
[parallelTransactionPlan](/api/functions/parallelTransactionPlan) \
[parallelTransactionPlanResult](/api/functions/parallelTransactionPlanResult) \
[parseInstructionOrTransactionPlanInput](/api/functions/parseInstructionOrTransactionPlanInput) \
[parseInstructionPlanInput](/api/functions/parseInstructionPlanInput) \
[parseTransactionPlanInput](/api/functions/parseTransactionPlanInput) \
[passthroughFailedTransactionPlanExecution](/api/functions/passthroughFailedTransactionPlanExecution) \
[sequentialInstructionPlan](/api/functions/sequentialInstructionPlan) \
[sequentialTransactionPlan](/api/functions/sequentialTransactionPlan) \
[sequentialTransactionPlanResult](/api/functions/sequentialTransactionPlanResult) \
[singleInstructionPlan](/api/functions/singleInstructionPlan) \
[singleTransactionPlan](/api/functions/singleTransactionPlan) \
[successfulSingleTransactionPlanResult](/api/functions/successfulSingleTransactionPlanResult) \
[summarizeTransactionPlanResult](/api/functions/summarizeTransactionPlanResult) \
[transformInstructionPlan](/api/functions/transformInstructionPlan) \
[transformTransactionPlan](/api/functions/transformTransactionPlan) \
[transformTransactionPlanResult](/api/functions/transformTransactionPlanResult)
### `@solana/instructions`
Enums (1)
[AccountRole](/api/enumerations/AccountRole)
Types (11)
[AccountLookupMeta](/api/interfaces/AccountLookupMeta) \
[AccountMeta](/api/interfaces/AccountMeta) \
[Instruction](/api/interfaces/Instruction) \
[InstructionWithAccounts](/api/interfaces/InstructionWithAccounts) \
[InstructionWithData](/api/interfaces/InstructionWithData) \
[ReadonlyAccount](/api/type-aliases/ReadonlyAccount) \
[ReadonlyAccountLookup](/api/type-aliases/ReadonlyAccountLookup) \
[ReadonlySignerAccount](/api/type-aliases/ReadonlySignerAccount) \
[WritableAccount](/api/type-aliases/WritableAccount) \
[WritableAccountLookup](/api/type-aliases/WritableAccountLookup) \
[WritableSignerAccount](/api/type-aliases/WritableSignerAccount)
Functions (13)
[assertIsInstructionForProgram](/api/functions/assertIsInstructionForProgram) \
[assertIsInstructionWithAccounts](/api/functions/assertIsInstructionWithAccounts) \
[assertIsInstructionWithData](/api/functions/assertIsInstructionWithData) \
[downgradeRoleToNonSigner](/api/functions/downgradeRoleToNonSigner) \
[downgradeRoleToReadonly](/api/functions/downgradeRoleToReadonly) \
[isInstructionForProgram](/api/functions/isInstructionForProgram) \
[isInstructionWithAccounts](/api/functions/isInstructionWithAccounts) \
[isInstructionWithData](/api/functions/isInstructionWithData) \
[isSignerRole](/api/functions/isSignerRole) \
[isWritableRole](/api/functions/isWritableRole) \
[mergeRoles](/api/functions/mergeRoles) \
[upgradeRoleToSigner](/api/functions/upgradeRoleToSigner) \
[upgradeRoleToWritable](/api/functions/upgradeRoleToWritable)
### `@solana/keys`
Types (5)
[GrindKeyPairMatches](/api/type-aliases/GrindKeyPairMatches) \
[GrindKeyPairsConfig](/api/type-aliases/GrindKeyPairsConfig) \
[Signature](/api/type-aliases/Signature) \
[SignatureBytes](/api/type-aliases/SignatureBytes) \
[WriteKeyPairConfig](/api/type-aliases/WriteKeyPairConfig)
Functions (16)
[assertIsSignature](/api/functions/assertIsSignature) \
[assertIsSignatureBytes](/api/functions/assertIsSignatureBytes) \
[createKeyPairFromBytes](/api/functions/createKeyPairFromBytes) \
[createKeyPairFromPrivateKeyBytes](/api/functions/createKeyPairFromPrivateKeyBytes) \
[createPrivateKeyFromBytes](/api/functions/createPrivateKeyFromBytes) \
[generateKeyPair](/api/functions/generateKeyPair) \
[getPublicKeyFromPrivateKey](/api/functions/getPublicKeyFromPrivateKey) \
[grindKeyPair](/api/functions/grindKeyPair) \
[grindKeyPairs](/api/functions/grindKeyPairs) \
[isSignature](/api/functions/isSignature) \
[isSignatureBytes](/api/functions/isSignatureBytes) \
[signature](/api/functions/signature) \
[signatureBytes](/api/functions/signatureBytes) \
[signBytes](/api/functions/signBytes) \
[verifySignature](/api/functions/verifySignature) \
[writeKeyPair](/api/functions/writeKeyPair)
### `@solana/nominal-types`
Types (5)
[AffinePoint](/api/type-aliases/AffinePoint) \
[Brand](/api/type-aliases/Brand) \
[CompressedData](/api/type-aliases/CompressedData) \
[EncodedString](/api/type-aliases/EncodedString) \
[NominalType](/api/type-aliases/NominalType)
### `@solana/offchain-messages`
Enums (1)
[OffchainMessageContentFormat](/api/enumerations/OffchainMessageContentFormat)
Types (20)
[BaseOffchainMessageV0](/api/type-aliases/BaseOffchainMessageV0) \
[BaseOffchainMessageV1](/api/type-aliases/BaseOffchainMessageV1) \
[FullySignedOffchainMessageEnvelope](/api/type-aliases/FullySignedOffchainMessageEnvelope) \
[OffchainMessage](/api/type-aliases/OffchainMessage) \
[OffchainMessageApplicationDomain](/api/type-aliases/OffchainMessageApplicationDomain) \
[OffchainMessageBytes](/api/type-aliases/OffchainMessageBytes) \
[OffchainMessageContent](/api/type-aliases/OffchainMessageContent) \
[OffchainMessageContentRestrictedAsciiOf1232BytesMax](/api/type-aliases/OffchainMessageContentRestrictedAsciiOf1232BytesMax) \
[OffchainMessageContentUtf8Of1232BytesMax](/api/type-aliases/OffchainMessageContentUtf8Of1232BytesMax) \
[OffchainMessageContentUtf8Of65535BytesMax](/api/type-aliases/OffchainMessageContentUtf8Of65535BytesMax) \
[OffchainMessageEnvelope](/api/interfaces/OffchainMessageEnvelope) \
[OffchainMessageSignatory](/api/type-aliases/OffchainMessageSignatory) \
[OffchainMessageV0](/api/type-aliases/OffchainMessageV0) \
[OffchainMessageV1](/api/type-aliases/OffchainMessageV1) \
[OffchainMessageVersion](/api/type-aliases/OffchainMessageVersion) \
[OffchainMessageWithContent](/api/type-aliases/OffchainMessageWithContent) \
[OffchainMessageWithRequiredSignatories](/api/interfaces/OffchainMessageWithRequiredSignatories) \
[OffchainMessageWithRestrictedAsciiOf1232BytesMaxContent](/api/interfaces/OffchainMessageWithRestrictedAsciiOf1232BytesMaxContent) \
[OffchainMessageWithUtf8Of1232BytesMaxContent](/api/interfaces/OffchainMessageWithUtf8Of1232BytesMaxContent) \
[OffchainMessageWithUtf8Of65535BytesMaxContent](/api/interfaces/OffchainMessageWithUtf8Of65535BytesMaxContent)
Functions (39)
[assertIsFullySignedOffchainMessageEnvelope](/api/functions/assertIsFullySignedOffchainMessageEnvelope) \
[assertIsOffchainMessageApplicationDomain](/api/functions/assertIsOffchainMessageApplicationDomain) \
[assertIsOffchainMessageContentRestrictedAsciiOf1232BytesMax](/api/functions/assertIsOffchainMessageContentRestrictedAsciiOf1232BytesMax) \
[assertIsOffchainMessageContentUtf8Of1232BytesMax](/api/functions/assertIsOffchainMessageContentUtf8Of1232BytesMax) \
[assertIsOffchainMessageContentUtf8Of65535BytesMax](/api/functions/assertIsOffchainMessageContentUtf8Of65535BytesMax) \
[assertIsOffchainMessageRestrictedAsciiOf1232BytesMax](/api/functions/assertIsOffchainMessageRestrictedAsciiOf1232BytesMax) \
[assertIsOffchainMessageUtf8Of1232BytesMax](/api/functions/assertIsOffchainMessageUtf8Of1232BytesMax) \
[assertIsOffchainMessageUtf8Of65535BytesMax](/api/functions/assertIsOffchainMessageUtf8Of65535BytesMax) \
[assertOffchainMessageV1Equal](/api/functions/assertOffchainMessageV1Equal) \
[compileOffchainMessageEnvelope](/api/functions/compileOffchainMessageEnvelope) \
[compileOffchainMessageV0Envelope](/api/functions/compileOffchainMessageV0Envelope) \
[compileOffchainMessageV1Envelope](/api/functions/compileOffchainMessageV1Envelope) \
[getOffchainMessageApplicationDomainCodec](/api/functions/getOffchainMessageApplicationDomainCodec) \
[getOffchainMessageApplicationDomainDecoder](/api/functions/getOffchainMessageApplicationDomainDecoder) \
[getOffchainMessageApplicationDomainEncoder](/api/functions/getOffchainMessageApplicationDomainEncoder) \
[getOffchainMessageCodec](/api/functions/getOffchainMessageCodec) \
[getOffchainMessageDecoder](/api/functions/getOffchainMessageDecoder) \
[getOffchainMessageEncoder](/api/functions/getOffchainMessageEncoder) \
[getOffchainMessageEnvelopeCodec](/api/functions/getOffchainMessageEnvelopeCodec) \
[getOffchainMessageEnvelopeDecoder](/api/functions/getOffchainMessageEnvelopeDecoder) \
[getOffchainMessageEnvelopeEncoder](/api/functions/getOffchainMessageEnvelopeEncoder) \
[getOffchainMessageV0Codec](/api/functions/getOffchainMessageV0Codec) \
[getOffchainMessageV0Decoder](/api/functions/getOffchainMessageV0Decoder) \
[getOffchainMessageV0Encoder](/api/functions/getOffchainMessageV0Encoder) \
[getOffchainMessageV1Codec](/api/functions/getOffchainMessageV1Codec) \
[getOffchainMessageV1Decoder](/api/functions/getOffchainMessageV1Decoder) \
[getOffchainMessageV1Encoder](/api/functions/getOffchainMessageV1Encoder) \
[isFullySignedOffchainMessageEnvelope](/api/functions/isFullySignedOffchainMessageEnvelope) \
[isOffchainMessageApplicationDomain](/api/functions/isOffchainMessageApplicationDomain) \
[isOffchainMessageContentRestrictedAsciiOf1232BytesMax](/api/functions/isOffchainMessageContentRestrictedAsciiOf1232BytesMax) \
[isOffchainMessageContentUtf8Of1232BytesMax](/api/functions/isOffchainMessageContentUtf8Of1232BytesMax) \
[isOffchainMessageContentUtf8Of65535BytesMax](/api/functions/isOffchainMessageContentUtf8Of65535BytesMax) \
[offchainMessageApplicationDomain](/api/functions/offchainMessageApplicationDomain) \
[offchainMessageContentRestrictedAsciiOf1232BytesMax](/api/functions/offchainMessageContentRestrictedAsciiOf1232BytesMax) \
[offchainMessageContentUtf8Of1232BytesMax](/api/functions/offchainMessageContentUtf8Of1232BytesMax) \
[offchainMessageContentUtf8Of65535BytesMax](/api/functions/offchainMessageContentUtf8Of65535BytesMax) \
[partiallySignOffchainMessageEnvelope](/api/functions/partiallySignOffchainMessageEnvelope) \
[signOffchainMessageEnvelope](/api/functions/signOffchainMessageEnvelope) \
[verifyOffchainMessageEnvelope](/api/functions/verifyOffchainMessageEnvelope)
### `@solana/options`
Types (6)
[None](/api/type-aliases/None) \
[Option](/api/type-aliases/Option) \
[OptionCodecConfig](/api/type-aliases/OptionCodecConfig) \
[OptionOrNullable](/api/type-aliases/OptionOrNullable) \
[Some](/api/type-aliases/Some) \
[UnwrappedOption](/api/type-aliases/UnwrappedOption)
Functions (11)
[getOptionCodec](/api/functions/getOptionCodec) \
[getOptionDecoder](/api/functions/getOptionDecoder) \
[getOptionEncoder](/api/functions/getOptionEncoder) \
[isNone](/api/functions/isNone) \
[isOption](/api/functions/isOption) \
[isSome](/api/functions/isSome) \
[none](/api/functions/none) \
[some](/api/functions/some) \
[unwrapOption](/api/functions/unwrapOption) \
[unwrapOptionRecursively](/api/functions/unwrapOptionRecursively) \
[wrapNullable](/api/functions/wrapNullable)
### `@solana/plugin-core`
Types (4)
[AsyncClient](/api/type-aliases/AsyncClient) \
[Client](/api/type-aliases/Client) \
[ClientPlugin](/api/type-aliases/ClientPlugin) \
[ExtendedClient](/api/type-aliases/ExtendedClient)
Functions (3)
[createClient](/api/functions/createClient) \
[extendClient](/api/functions/extendClient) \
[withCleanup](/api/functions/withCleanup)
### `@solana/plugin-interfaces`
Types (14)
[ClientWithAirdrop](/api/type-aliases/ClientWithAirdrop) \
[ClientWithFetchAccounts](/api/type-aliases/ClientWithFetchAccounts) \
[ClientWithGetMinimumBalance](/api/type-aliases/ClientWithGetMinimumBalance) \
[ClientWithIdentity](/api/type-aliases/ClientWithIdentity) \
[ClientWithPayer](/api/type-aliases/ClientWithPayer) \
[ClientWithRpc](/api/type-aliases/ClientWithRpc) \
[ClientWithRpcSubscriptions](/api/type-aliases/ClientWithRpcSubscriptions) \
[ClientWithSubscribeToIdentity](/api/type-aliases/ClientWithSubscribeToIdentity) \
[ClientWithSubscribeToPayer](/api/type-aliases/ClientWithSubscribeToPayer) \
[ClientWithTransactionPlanning](/api/type-aliases/ClientWithTransactionPlanning) \
[ClientWithTransactionSending](/api/type-aliases/ClientWithTransactionSending) \
[ClientWithTransactionSigning](/api/type-aliases/ClientWithTransactionSigning) \
[GetMinimumBalanceConfig](/api/type-aliases/GetMinimumBalanceConfig) \
[SubscribeToFn](/api/type-aliases/SubscribeToFn)
### `@solana/program-client-core`
Types (4)
[InstructionWithByteDelta](/api/type-aliases/InstructionWithByteDelta) \
[ResolvedInstructionAccount](/api/type-aliases/ResolvedInstructionAccount) \
[SelfFetchFunctions](/api/type-aliases/SelfFetchFunctions) \
[SelfPlanAndSendFunctions](/api/type-aliases/SelfPlanAndSendFunctions)
Functions (7)
[addSelfFetchFunctions](/api/functions/addSelfFetchFunctions) \
[addSelfPlanAndSendFunctions](/api/functions/addSelfPlanAndSendFunctions) \
[getAccountMetaFactory](/api/functions/getAccountMetaFactory) \
[getAddressFromResolvedInstructionAccount](/api/functions/getAddressFromResolvedInstructionAccount) \
[getNonNullResolvedInstructionInput](/api/functions/getNonNullResolvedInstructionInput) \
[getResolvedInstructionAccountAsProgramDerivedAddress](/api/functions/getResolvedInstructionAccountAsProgramDerivedAddress) \
[getResolvedInstructionAccountAsTransactionSigner](/api/functions/getResolvedInstructionAccountAsTransactionSigner)
### `@solana/programs`
Functions (1)
[isProgramError](/api/functions/isProgramError)
### `@solana/promises`
Functions (3)
[getAbortablePromise](/api/functions/getAbortablePromise) \
[isAbortError](/api/functions/isAbortError) \
[safeRace](/api/functions/safeRace)
### `@solana/react`
Types (13)
[ActionResult](/api/type-aliases/ActionResult) \
[ClientProviderProps](/api/type-aliases/ClientProviderProps) \
[RequestResult](/api/type-aliases/RequestResult) \
[SelectedWalletAccountContextProviderProps](/api/type-aliases/SelectedWalletAccountContextProviderProps) \
[SelectedWalletAccountContextValue](/api/type-aliases/SelectedWalletAccountContextValue) \
[SelectedWalletAccountState](/api/type-aliases/SelectedWalletAccountState) \
[SubscriptionResult](/api/type-aliases/SubscriptionResult) \
[TrackedDataResult](/api/type-aliases/TrackedDataResult) \
[TrackedDataSpec](/api/type-aliases/TrackedDataSpec) \
[UseClientCapabilityConfig](/api/type-aliases/UseClientCapabilityConfig) \
[UseRequestOptions](/api/type-aliases/UseRequestOptions) \
[UseSubscriptionOptions](/api/type-aliases/UseSubscriptionOptions) \
[UseTrackedDataOptions](/api/type-aliases/UseTrackedDataOptions)
Functions (25)
[ClientProvider](/api/functions/ClientProvider) \
[SelectedWalletAccountContextProvider](/api/functions/SelectedWalletAccountContextProvider) \
[useAction](/api/functions/useAction) \
[useAirdrop](/api/functions/useAirdrop) \
[useClient](/api/functions/useClient) \
[useClientCapability](/api/functions/useClientCapability) \
[useIdentity](/api/functions/useIdentity) \
[usePayer](/api/functions/usePayer) \
[usePlanTransaction](/api/functions/usePlanTransaction) \
[usePlanTransactions](/api/functions/usePlanTransactions) \
[useRequest](/api/functions/useRequest) \
[useSelectedWalletAccount](/api/functions/useSelectedWalletAccount) \
[useSendTransaction](/api/functions/useSendTransaction) \
[useSendTransactions](/api/functions/useSendTransactions) \
[useSignAndSendTransaction](/api/functions/useSignAndSendTransaction) \
[useSignAndSendTransactions](/api/functions/useSignAndSendTransactions) \
[useSignIn](/api/functions/useSignIn) \
[useSignMessage](/api/functions/useSignMessage) \
[useSignTransaction](/api/functions/useSignTransaction) \
[useSignTransactions](/api/functions/useSignTransactions) \
[useSubscription](/api/functions/useSubscription) \
[useTrackedData](/api/functions/useTrackedData) \
[useWalletAccountMessageSigner](/api/functions/useWalletAccountMessageSigner) \
[useWalletAccountTransactionSendingSigner](/api/functions/useWalletAccountTransactionSendingSigner) \
[useWalletAccountTransactionSigner](/api/functions/useWalletAccountTransactionSigner)
Variables (2)
[ClientContext](/api/variables/ClientContext) \
[SelectedWalletAccountContext](/api/variables/SelectedWalletAccountContext)
### `@solana/rpc`
Packages (2)
[@solana/rpc-api](#solanarpc-api) \
[@solana/rpc-spec](#solanarpc-spec)
Types (10)
[RpcDevnet](/api/type-aliases/RpcDevnet) \
[RpcFromTransport](/api/type-aliases/RpcFromTransport) \
[RpcMainnet](/api/type-aliases/RpcMainnet) \
[RpcTestnet](/api/type-aliases/RpcTestnet) \
[RpcTransportDevnet](/api/type-aliases/RpcTransportDevnet) \
[RpcTransportFromClusterUrl](/api/type-aliases/RpcTransportFromClusterUrl) \
[RpcTransportMainnet](/api/type-aliases/RpcTransportMainnet) \
[RpcTransportTestnet](/api/type-aliases/RpcTransportTestnet) \
[SolanaRpcApiFromClusterUrl](/api/type-aliases/SolanaRpcApiFromClusterUrl) \
[SolanaRpcApiFromTransport](/api/type-aliases/SolanaRpcApiFromTransport)
Functions (3)
[createDefaultRpcTransport](/api/functions/createDefaultRpcTransport) \
[createSolanaRpc](/api/functions/createSolanaRpc) \
[createSolanaRpcFromTransport](/api/functions/createSolanaRpcFromTransport)
Variables (1)
[DEFAULT\_RPC\_CONFIG](/api/variables/DEFAULT_RPC_CONFIG)
### `@solana/rpc-api`
Types (62)
[GetAccountInfoApi](/api/type-aliases/GetAccountInfoApi) \
[GetAgGenesisCertApi](/api/type-aliases/GetAgGenesisCertApi) \
[GetBalanceApi](/api/type-aliases/GetBalanceApi) \
[GetBlockApi](/api/type-aliases/GetBlockApi) \
[GetBlockCommitmentApi](/api/type-aliases/GetBlockCommitmentApi) \
[GetBlockHeightApi](/api/type-aliases/GetBlockHeightApi) \
[GetBlockProductionApi](/api/type-aliases/GetBlockProductionApi) \
[GetBlocksApi](/api/type-aliases/GetBlocksApi) \
[GetBlocksWithLimitApi](/api/type-aliases/GetBlocksWithLimitApi) \
[GetBlockTimeApi](/api/type-aliases/GetBlockTimeApi) \
[GetClusterNodesApi](/api/type-aliases/GetClusterNodesApi) \
[GetEpochInfoApi](/api/type-aliases/GetEpochInfoApi) \
[GetEpochScheduleApi](/api/type-aliases/GetEpochScheduleApi) \
[GetFeeForMessageApi](/api/type-aliases/GetFeeForMessageApi) \
[GetFirstAvailableBlockApi](/api/type-aliases/GetFirstAvailableBlockApi) \
[GetGenesisHashApi](/api/type-aliases/GetGenesisHashApi) \
[GetHealthApi](/api/type-aliases/GetHealthApi) \
[GetHighestSnapshotSlotApi](/api/type-aliases/GetHighestSnapshotSlotApi) \
[GetIdentityApi](/api/type-aliases/GetIdentityApi) \
[GetInflationGovernorApi](/api/type-aliases/GetInflationGovernorApi) \
[GetInflationRateApi](/api/type-aliases/GetInflationRateApi) \
[GetInflationRewardApi](/api/type-aliases/GetInflationRewardApi) \
[GetLargestAccountsApi](/api/type-aliases/GetLargestAccountsApi) \
[GetLatestBlockhashApi](/api/type-aliases/GetLatestBlockhashApi) \
[GetLeaderScheduleApi](/api/type-aliases/GetLeaderScheduleApi) \
[GetMaxRetransmitSlotApi](/api/type-aliases/GetMaxRetransmitSlotApi) \
[GetMaxShredInsertSlotApi](/api/type-aliases/GetMaxShredInsertSlotApi) \
[GetMinimumBalanceForRentExemptionApi](/api/type-aliases/GetMinimumBalanceForRentExemptionApi) \
[GetMultipleAccountsApi](/api/type-aliases/GetMultipleAccountsApi) \
[GetProgramAccountsApi](/api/type-aliases/GetProgramAccountsApi) \
[GetRecentPerformanceSamplesApi](/api/type-aliases/GetRecentPerformanceSamplesApi) \
[GetRecentPrioritizationFeesApi](/api/type-aliases/GetRecentPrioritizationFeesApi) \
[GetSignaturesForAddressApi](/api/type-aliases/GetSignaturesForAddressApi) \
[GetSignatureStatusesApi](/api/type-aliases/GetSignatureStatusesApi) \
[GetSlotApi](/api/type-aliases/GetSlotApi) \
[GetSlotLeaderApi](/api/type-aliases/GetSlotLeaderApi) \
[GetSlotLeadersApi](/api/type-aliases/GetSlotLeadersApi) \
[GetStakeMinimumDelegationApi](/api/type-aliases/GetStakeMinimumDelegationApi) \
[GetSupplyApi](/api/type-aliases/GetSupplyApi) \
[GetTokenAccountBalanceApi](/api/type-aliases/GetTokenAccountBalanceApi) \
[GetTokenAccountsByDelegateApi](/api/type-aliases/GetTokenAccountsByDelegateApi) \
[GetTokenAccountsByOwnerApi](/api/type-aliases/GetTokenAccountsByOwnerApi) \
[GetTokenLargestAccountsApi](/api/type-aliases/GetTokenLargestAccountsApi) \
[GetTokenSupplyApi](/api/type-aliases/GetTokenSupplyApi) \
[GetTransactionApi](/api/type-aliases/GetTransactionApi) \
[GetTransactionApiResponseBase58](/api/type-aliases/GetTransactionApiResponseBase58) \
[GetTransactionApiResponseBase64](/api/type-aliases/GetTransactionApiResponseBase64) \
[GetTransactionApiResponseJson](/api/type-aliases/GetTransactionApiResponseJson) \
[GetTransactionApiResponseJsonParsed](/api/type-aliases/GetTransactionApiResponseJsonParsed) \
[GetTransactionCountApi](/api/type-aliases/GetTransactionCountApi) \
[GetTransactionsForAddressApi](/api/type-aliases/GetTransactionsForAddressApi) \
[GetVersionApi](/api/type-aliases/GetVersionApi) \
[GetVoteAccountsApi](/api/type-aliases/GetVoteAccountsApi) \
[IsBlockhashValidApi](/api/type-aliases/IsBlockhashValidApi) \
[MinimumLedgerSlotApi](/api/type-aliases/MinimumLedgerSlotApi) \
[RequestAirdropApi](/api/type-aliases/RequestAirdropApi) \
[SendTransactionApi](/api/type-aliases/SendTransactionApi) \
[SimulateTransactionApi](/api/type-aliases/SimulateTransactionApi) \
[SolanaRpcApi](/api/type-aliases/SolanaRpcApi) \
[SolanaRpcApiDevnet](/api/type-aliases/SolanaRpcApiDevnet) \
[SolanaRpcApiMainnet](/api/type-aliases/SolanaRpcApiMainnet) \
[SolanaRpcApiTestnet](/api/type-aliases/SolanaRpcApiTestnet)
Functions (1)
[createSolanaRpcApi](/api/functions/createSolanaRpcApi)
### `@solana/rpc-parsed-types`
Types (11)
[JsonParsedAddressLookupTableAccount](/api/type-aliases/JsonParsedAddressLookupTableAccount) \
[JsonParsedBpfUpgradeableLoaderProgramAccount](/api/type-aliases/JsonParsedBpfUpgradeableLoaderProgramAccount) \
[JsonParsedConfigProgramAccount](/api/type-aliases/JsonParsedConfigProgramAccount) \
[JsonParsedNonceAccount](/api/type-aliases/JsonParsedNonceAccount) \
[JsonParsedStakeProgramAccount](/api/type-aliases/JsonParsedStakeProgramAccount) \
[JsonParsedSysvarAccount](/api/type-aliases/JsonParsedSysvarAccount) \
[JsonParsedTokenAccount](/api/type-aliases/JsonParsedTokenAccount) \
[JsonParsedTokenProgramAccount](/api/type-aliases/JsonParsedTokenProgramAccount) \
[JsonParsedVoteAccount](/api/type-aliases/JsonParsedVoteAccount) \
[RpcParsedInfo](/api/type-aliases/RpcParsedInfo) \
[RpcParsedType](/api/type-aliases/RpcParsedType)
### `@solana/rpc-spec`
Types (8)
[PendingRpcRequest](/api/type-aliases/PendingRpcRequest) \
[Rpc](/api/type-aliases/Rpc) \
[RpcApi](/api/type-aliases/RpcApi) \
[RpcApiConfig](/api/type-aliases/RpcApiConfig) \
[RpcConfig](/api/type-aliases/RpcConfig) \
[RpcPlan](/api/type-aliases/RpcPlan) \
[RpcSendOptions](/api/type-aliases/RpcSendOptions) \
[RpcTransport](/api/type-aliases/RpcTransport)
Functions (3)
[createJsonRpcApi](/api/functions/createJsonRpcApi) \
[createRpc](/api/functions/createRpc) \
[isJsonRpcPayload](/api/functions/isJsonRpcPayload)
### `@solana/rpc-spec-types`
Types (10)
[Callable](/api/type-aliases/Callable) \
[Flatten](/api/type-aliases/Flatten) \
[OverloadImplementations](/api/type-aliases/OverloadImplementations) \
[Overloads](/api/type-aliases/Overloads) \
[RpcRequest](/api/type-aliases/RpcRequest) \
[RpcRequestTransformer](/api/type-aliases/RpcRequestTransformer) \
[RpcResponse](/api/type-aliases/RpcResponse) \
[RpcResponseData](/api/type-aliases/RpcResponseData) \
[RpcResponseTransformer](/api/type-aliases/RpcResponseTransformer) \
[UnionToIntersection](/api/type-aliases/UnionToIntersection)
Functions (3)
[createRpcMessage](/api/functions/createRpcMessage) \
[parseJsonWithBigInts](/api/functions/parseJsonWithBigInts) \
[stringifyJsonWithBigInts](/api/functions/stringifyJsonWithBigInts)
### `@solana/rpc-subscriptions`
Packages (2)
[@solana/rpc-subscriptions-api](#solanarpc-subscriptions-api) \
[@solana/rpc-subscriptions-spec](#solanarpc-subscriptions-spec)
Types (21)
[DefaultRpcSubscriptionsChannelConfig](/api/type-aliases/DefaultRpcSubscriptionsChannelConfig) \
[DefaultRpcSubscriptionsTransportConfig](/api/type-aliases/DefaultRpcSubscriptionsTransportConfig) \
[RpcSubscriptionsChannelCreatorDevnet](/api/type-aliases/RpcSubscriptionsChannelCreatorDevnet) \
[RpcSubscriptionsChannelCreatorFromClusterUrl](/api/type-aliases/RpcSubscriptionsChannelCreatorFromClusterUrl) \
[RpcSubscriptionsChannelCreatorMainnet](/api/type-aliases/RpcSubscriptionsChannelCreatorMainnet) \
[RpcSubscriptionsChannelCreatorTestnet](/api/type-aliases/RpcSubscriptionsChannelCreatorTestnet) \
[RpcSubscriptionsChannelCreatorWithCluster](/api/type-aliases/RpcSubscriptionsChannelCreatorWithCluster) \
[RpcSubscriptionsChannelDevnet](/api/type-aliases/RpcSubscriptionsChannelDevnet) \
[RpcSubscriptionsChannelFromClusterUrl](/api/type-aliases/RpcSubscriptionsChannelFromClusterUrl) \
[RpcSubscriptionsChannelMainnet](/api/type-aliases/RpcSubscriptionsChannelMainnet) \
[RpcSubscriptionsChannelTestnet](/api/type-aliases/RpcSubscriptionsChannelTestnet) \
[RpcSubscriptionsChannelWithCluster](/api/type-aliases/RpcSubscriptionsChannelWithCluster) \
[RpcSubscriptionsDevnet](/api/type-aliases/RpcSubscriptionsDevnet) \
[RpcSubscriptionsFromTransport](/api/type-aliases/RpcSubscriptionsFromTransport) \
[RpcSubscriptionsMainnet](/api/type-aliases/RpcSubscriptionsMainnet) \
[RpcSubscriptionsTestnet](/api/type-aliases/RpcSubscriptionsTestnet) \
[RpcSubscriptionsTransportDevnet](/api/type-aliases/RpcSubscriptionsTransportDevnet) \
[RpcSubscriptionsTransportFromClusterUrl](/api/type-aliases/RpcSubscriptionsTransportFromClusterUrl) \
[RpcSubscriptionsTransportMainnet](/api/type-aliases/RpcSubscriptionsTransportMainnet) \
[RpcSubscriptionsTransportTestnet](/api/type-aliases/RpcSubscriptionsTransportTestnet) \
[RpcSubscriptionsTransportWithCluster](/api/type-aliases/RpcSubscriptionsTransportWithCluster)
Functions (12)
[createDefaultRpcSubscriptionsChannelCreator](/api/functions/createDefaultRpcSubscriptionsChannelCreator) \
[createDefaultRpcSubscriptionsTransport](/api/functions/createDefaultRpcSubscriptionsTransport) \
[createDefaultSolanaRpcSubscriptionsChannelCreator](/api/functions/createDefaultSolanaRpcSubscriptionsChannelCreator) \
[createRpcSubscriptionsTransportFromChannelCreator](/api/functions/createRpcSubscriptionsTransportFromChannelCreator) \
[createSolanaRpcSubscriptions](/api/functions/createSolanaRpcSubscriptions) \
[createSolanaRpcSubscriptions\_UNSTABLE](/api/functions/createSolanaRpcSubscriptions_UNSTABLE) \
[createSolanaRpcSubscriptionsFromTransport](/api/functions/createSolanaRpcSubscriptionsFromTransport) \
[getChannelPoolingChannelCreator](/api/functions/getChannelPoolingChannelCreator) \
[getRpcSubscriptionsChannelWithAutoping](/api/functions/getRpcSubscriptionsChannelWithAutoping) \
[getRpcSubscriptionsChannelWithBigIntJSONSerialization](/api/functions/getRpcSubscriptionsChannelWithBigIntJSONSerialization) \
[getRpcSubscriptionsChannelWithJSONSerialization](/api/functions/getRpcSubscriptionsChannelWithJSONSerialization) \
[getRpcSubscriptionsTransportWithSubscriptionCoalescing](/api/functions/getRpcSubscriptionsTransportWithSubscriptionCoalescing)
Variables (1)
[DEFAULT\_RPC\_SUBSCRIPTIONS\_CONFIG](/api/variables/DEFAULT_RPC_SUBSCRIPTIONS_CONFIG)
### `@solana/rpc-subscriptions-api`
Types (11)
[AccountNotificationsApi](/api/type-aliases/AccountNotificationsApi) \
[BlockNotificationsApi](/api/type-aliases/BlockNotificationsApi) \
[LogsNotificationsApi](/api/type-aliases/LogsNotificationsApi) \
[ProgramNotificationsApi](/api/type-aliases/ProgramNotificationsApi) \
[RootNotificationsApi](/api/type-aliases/RootNotificationsApi) \
[SignatureNotificationsApi](/api/type-aliases/SignatureNotificationsApi) \
[SlotNotificationsApi](/api/type-aliases/SlotNotificationsApi) \
[SlotsUpdatesNotificationsApi](/api/type-aliases/SlotsUpdatesNotificationsApi) \
[SolanaRpcSubscriptionsApi](/api/type-aliases/SolanaRpcSubscriptionsApi) \
[SolanaRpcSubscriptionsApiUnstable](/api/type-aliases/SolanaRpcSubscriptionsApiUnstable) \
[VoteNotificationsApi](/api/type-aliases/VoteNotificationsApi)
Functions (2)
[createSolanaRpcSubscriptionsApi](/api/functions/createSolanaRpcSubscriptionsApi) \
[createSolanaRpcSubscriptionsApi\_UNSTABLE](/api/functions/createSolanaRpcSubscriptionsApi_UNSTABLE)
### `@solana/rpc-subscriptions-channel-websocket`
Types (1)
[Config](/api/type-aliases/Config)
Functions (1)
[createWebSocketChannel](/api/functions/createWebSocketChannel)
### `@solana/rpc-subscriptions-spec`
Types (13)
[PendingRpcSubscriptionsRequest](/api/type-aliases/PendingRpcSubscriptionsRequest) \
[RpcSubscribeOptions](/api/type-aliases/RpcSubscribeOptions) \
[RpcSubscriptionChannelEvents](/api/type-aliases/RpcSubscriptionChannelEvents) \
[RpcSubscriptions](/api/type-aliases/RpcSubscriptions) \
[RpcSubscriptionsApi](/api/type-aliases/RpcSubscriptionsApi) \
[RpcSubscriptionsApiConfig](/api/type-aliases/RpcSubscriptionsApiConfig) \
[RpcSubscriptionsApiMethods](/api/interfaces/RpcSubscriptionsApiMethods) \
[RpcSubscriptionsChannel](/api/interfaces/RpcSubscriptionsChannel) \
[RpcSubscriptionsChannelCreator](/api/type-aliases/RpcSubscriptionsChannelCreator) \
[RpcSubscriptionsConfig](/api/type-aliases/RpcSubscriptionsConfig) \
[RpcSubscriptionsPlan](/api/type-aliases/RpcSubscriptionsPlan) \
[RpcSubscriptionsTransport](/api/interfaces/RpcSubscriptionsTransport) \
[RpcSubscriptionsTransportDataEvents](/api/type-aliases/RpcSubscriptionsTransportDataEvents)
Functions (5)
[createRpcSubscriptionsApi](/api/functions/createRpcSubscriptionsApi) \
[createSubscriptionRpc](/api/functions/createSubscriptionRpc) \
[executeRpcPubSubSubscriptionPlan](/api/functions/executeRpcPubSubSubscriptionPlan) \
[transformChannelInboundMessages](/api/functions/transformChannelInboundMessages) \
[transformChannelOutboundMessages](/api/functions/transformChannelOutboundMessages)
### `@solana/rpc-transformers`
Types (7)
[AllowedNumericKeypaths](/api/type-aliases/AllowedNumericKeypaths) \
[IntegerOverflowHandler](/api/type-aliases/IntegerOverflowHandler) \
[KeyPath](/api/type-aliases/KeyPath) \
[KeyPathWildcard](/api/type-aliases/KeyPathWildcard) \
[RequestTransformerConfig](/api/type-aliases/RequestTransformerConfig) \
[ResponseTransformerConfig](/api/type-aliases/ResponseTransformerConfig) \
[TraversalState](/api/type-aliases/TraversalState)
Functions (10)
[getBigIntUpcastResponseTransformer](/api/functions/getBigIntUpcastResponseTransformer) \
[getDefaultCommitmentRequestTransformer](/api/functions/getDefaultCommitmentRequestTransformer) \
[getDefaultRequestTransformerForSolanaRpc](/api/functions/getDefaultRequestTransformerForSolanaRpc) \
[getDefaultResponseTransformerForSolanaRpc](/api/functions/getDefaultResponseTransformerForSolanaRpc) \
[getDefaultResponseTransformerForSolanaRpcSubscriptions](/api/functions/getDefaultResponseTransformerForSolanaRpcSubscriptions) \
[getIntegerOverflowRequestTransformer](/api/functions/getIntegerOverflowRequestTransformer) \
[getResultResponseTransformer](/api/functions/getResultResponseTransformer) \
[getThrowSolanaErrorResponseTransformer](/api/functions/getThrowSolanaErrorResponseTransformer) \
[getTreeWalkerRequestTransformer](/api/functions/getTreeWalkerRequestTransformer) \
[getTreeWalkerResponseTransformer](/api/functions/getTreeWalkerResponseTransformer)
Variables (6)
[innerInstructionsConfigs](/api/variables/innerInstructionsConfigs) \
[jsonParsedAccountsConfigs](/api/variables/jsonParsedAccountsConfigs) \
[jsonParsedTokenAccountsConfigs](/api/variables/jsonParsedTokenAccountsConfigs) \
[KEYPATH\_WILDCARD](/api/variables/KEYPATH_WILDCARD) \
[messageConfig](/api/variables/messageConfig) \
[tokenBalancesConfigs](/api/variables/tokenBalancesConfigs)
### `@solana/rpc-transport-http`
Functions (2)
[createHttpTransport](/api/functions/createHttpTransport) \
[createHttpTransportForSolanaRpc](/api/functions/createHttpTransportForSolanaRpc)
### `@solana/rpc-types`
Types (47)
[AccountInfoBase](/api/type-aliases/AccountInfoBase) \
[AccountInfoWithBase58Bytes](/api/type-aliases/AccountInfoWithBase58Bytes) \
[AccountInfoWithBase58EncodedData](/api/type-aliases/AccountInfoWithBase58EncodedData) \
[AccountInfoWithBase64EncodedData](/api/type-aliases/AccountInfoWithBase64EncodedData) \
[AccountInfoWithBase64EncodedZStdCompressedData](/api/type-aliases/AccountInfoWithBase64EncodedZStdCompressedData) \
[AccountInfoWithJsonData](/api/type-aliases/AccountInfoWithJsonData) \
[AccountInfoWithPubkey](/api/type-aliases/AccountInfoWithPubkey) \
[Base58EncodedBytes](/api/type-aliases/Base58EncodedBytes) \
[Base58EncodedDataResponse](/api/type-aliases/Base58EncodedDataResponse) \
[Base64EncodedBytes](/api/type-aliases/Base64EncodedBytes) \
[Base64EncodedDataResponse](/api/type-aliases/Base64EncodedDataResponse) \
[Base64EncodedZStdCompressedBytes](/api/type-aliases/Base64EncodedZStdCompressedBytes) \
[Base64EncodedZStdCompressedDataResponse](/api/type-aliases/Base64EncodedZStdCompressedDataResponse) \
[Blockhash](/api/type-aliases/Blockhash) \
[ClusterUrl](/api/type-aliases/ClusterUrl) \
[Commitment](/api/type-aliases/Commitment) \
[DataSlice](/api/type-aliases/DataSlice) \
[DevnetUrl](/api/type-aliases/DevnetUrl) \
[Epoch](/api/type-aliases/Epoch) \
[F64UnsafeSeeDocumentation](/api/type-aliases/F64UnsafeSeeDocumentation) \
[GetProgramAccountsDatasizeFilter](/api/type-aliases/GetProgramAccountsDatasizeFilter) \
[GetProgramAccountsMemcmpFilter](/api/type-aliases/GetProgramAccountsMemcmpFilter) \
[Lamports](/api/type-aliases/Lamports) \
[MainnetUrl](/api/type-aliases/MainnetUrl) \
[MicroLamports](/api/type-aliases/MicroLamports) \
[Reward](/api/type-aliases/Reward) \
[SignedLamports](/api/type-aliases/SignedLamports) \
[Slot](/api/type-aliases/Slot) \
[Sol](/api/type-aliases/Sol) \
[SolanaRpcResponse](/api/type-aliases/SolanaRpcResponse) \
[StringifiedBigInt](/api/type-aliases/StringifiedBigInt) \
[StringifiedNumber](/api/type-aliases/StringifiedNumber) \
[TestnetUrl](/api/type-aliases/TestnetUrl) \
[TokenAmount](/api/type-aliases/TokenAmount) \
[TokenBalance](/api/type-aliases/TokenBalance) \
[TransactionConfig](/api/type-aliases/TransactionConfig) \
[TransactionError](/api/type-aliases/TransactionError) \
[TransactionForAccounts](/api/type-aliases/TransactionForAccounts) \
[TransactionForFullBase58](/api/type-aliases/TransactionForFullBase58) \
[TransactionForFullBase64](/api/type-aliases/TransactionForFullBase64) \
[TransactionForFullJson](/api/type-aliases/TransactionForFullJson) \
[TransactionForFullJsonParsed](/api/type-aliases/TransactionForFullJsonParsed) \
[TransactionForFullMetaInnerInstructionsParsed](/api/type-aliases/TransactionForFullMetaInnerInstructionsParsed) \
[TransactionForFullMetaInnerInstructionsUnparsed](/api/type-aliases/TransactionForFullMetaInnerInstructionsUnparsed) \
[TransactionStatus](/api/type-aliases/TransactionStatus) \
[UnixTimestamp](/api/type-aliases/UnixTimestamp) \
[UnwrapRpcResponse](/api/type-aliases/UnwrapRpcResponse)
Functions (36)
[assertIsBlockhash](/api/functions/assertIsBlockhash) \
[assertIsLamports](/api/functions/assertIsLamports) \
[assertIsStringifiedBigInt](/api/functions/assertIsStringifiedBigInt) \
[assertIsStringifiedNumber](/api/functions/assertIsStringifiedNumber) \
[assertIsUnixTimestamp](/api/functions/assertIsUnixTimestamp) \
[blockhash](/api/functions/blockhash) \
[commitmentComparator](/api/functions/commitmentComparator) \
[devnet](/api/functions/devnet) \
[getBlockhashCodec](/api/functions/getBlockhashCodec) \
[getBlockhashComparator](/api/functions/getBlockhashComparator) \
[getBlockhashDecoder](/api/functions/getBlockhashDecoder) \
[getBlockhashEncoder](/api/functions/getBlockhashEncoder) \
[getDefaultLamportsCodec](/api/functions/getDefaultLamportsCodec) \
[getDefaultLamportsDecoder](/api/functions/getDefaultLamportsDecoder) \
[getDefaultLamportsEncoder](/api/functions/getDefaultLamportsEncoder) \
[getLamportsCodec](/api/functions/getLamportsCodec) \
[getLamportsDecoder](/api/functions/getLamportsDecoder) \
[getLamportsEncoder](/api/functions/getLamportsEncoder) \
[getSolCodec](/api/functions/getSolCodec) \
[getSolDecoder](/api/functions/getSolDecoder) \
[getSolEncoder](/api/functions/getSolEncoder) \
[isBlockhash](/api/functions/isBlockhash) \
[isLamports](/api/functions/isLamports) \
[isSolanaRpcResponse](/api/functions/isSolanaRpcResponse) \
[isStringifiedBigInt](/api/functions/isStringifiedBigInt) \
[isStringifiedNumber](/api/functions/isStringifiedNumber) \
[isUnixTimestamp](/api/functions/isUnixTimestamp) \
[lamports](/api/functions/lamports) \
[lamportsToSol](/api/functions/lamportsToSol) \
[mainnet](/api/functions/mainnet) \
[sol](/api/functions/sol) \
[solToLamports](/api/functions/solToLamports) \
[stringifiedBigInt](/api/functions/stringifiedBigInt) \
[stringifiedNumber](/api/functions/stringifiedNumber) \
[testnet](/api/functions/testnet) \
[unixTimestamp](/api/functions/unixTimestamp)
### `@solana/signers`
Packages (1)
[@solana/keys](#solanakeys)
Types (24)
[AccountSignerMeta](/api/interfaces/AccountSignerMeta) \
[BaseSignerConfig](/api/type-aliases/BaseSignerConfig) \
[BaseTransactionSignerConfig](/api/interfaces/BaseTransactionSignerConfig) \
[InstructionWithSigners](/api/interfaces/InstructionWithSigners) \
[KeyPairSigner](/api/type-aliases/KeyPairSigner) \
[MessageModifyingSigner](/api/type-aliases/MessageModifyingSigner) \
[MessageModifyingSignerConfig](/api/type-aliases/MessageModifyingSignerConfig) \
[MessagePartialSigner](/api/type-aliases/MessagePartialSigner) \
[MessagePartialSignerConfig](/api/type-aliases/MessagePartialSignerConfig) \
[MessageSigner](/api/type-aliases/MessageSigner) \
[NoopSigner](/api/type-aliases/NoopSigner) \
[OffchainMessageSignatorySigner](/api/type-aliases/OffchainMessageSignatorySigner) \
[SignableMessage](/api/type-aliases/SignableMessage) \
[SignatureDictionary](/api/type-aliases/SignatureDictionary) \
[TransactionMessageWithFeePayerSigner](/api/interfaces/TransactionMessageWithFeePayerSigner) \
[TransactionMessageWithSigners](/api/type-aliases/TransactionMessageWithSigners) \
[TransactionMessageWithSingleSendingSigner](/api/type-aliases/TransactionMessageWithSingleSendingSigner) \
[TransactionModifyingSigner](/api/type-aliases/TransactionModifyingSigner) \
[TransactionModifyingSignerConfig](/api/type-aliases/TransactionModifyingSignerConfig) \
[TransactionPartialSigner](/api/type-aliases/TransactionPartialSigner) \
[TransactionPartialSignerConfig](/api/type-aliases/TransactionPartialSignerConfig) \
[TransactionSendingSigner](/api/type-aliases/TransactionSendingSigner) \
[TransactionSendingSignerConfig](/api/type-aliases/TransactionSendingSignerConfig) \
[TransactionSigner](/api/type-aliases/TransactionSigner)
Functions (42)
[addSignersToInstruction](/api/functions/addSignersToInstruction) \
[addSignersToTransactionMessage](/api/functions/addSignersToTransactionMessage) \
[assertContainsResolvableTransactionSendingSigner](/api/functions/assertContainsResolvableTransactionSendingSigner) \
[assertIsKeyPairSigner](/api/functions/assertIsKeyPairSigner) \
[assertIsMessageModifyingSigner](/api/functions/assertIsMessageModifyingSigner) \
[assertIsMessagePartialSigner](/api/functions/assertIsMessagePartialSigner) \
[assertIsMessageSigner](/api/functions/assertIsMessageSigner) \
[assertIsTransactionMessageWithSingleSendingSigner](/api/functions/assertIsTransactionMessageWithSingleSendingSigner) \
[assertIsTransactionModifyingSigner](/api/functions/assertIsTransactionModifyingSigner) \
[assertIsTransactionPartialSigner](/api/functions/assertIsTransactionPartialSigner) \
[assertIsTransactionSendingSigner](/api/functions/assertIsTransactionSendingSigner) \
[assertIsTransactionSigner](/api/functions/assertIsTransactionSigner) \
[createKeyPairSignerFromBytes](/api/functions/createKeyPairSignerFromBytes) \
[createKeyPairSignerFromPrivateKeyBytes](/api/functions/createKeyPairSignerFromPrivateKeyBytes) \
[createNoopSigner](/api/functions/createNoopSigner) \
[createSignableMessage](/api/functions/createSignableMessage) \
[createSignerFromKeyPair](/api/functions/createSignerFromKeyPair) \
[generateKeyPairSigner](/api/functions/generateKeyPairSigner) \
[getSignersFromInstruction](/api/functions/getSignersFromInstruction) \
[getSignersFromOffchainMessage](/api/functions/getSignersFromOffchainMessage) \
[getSignersFromTransactionMessage](/api/functions/getSignersFromTransactionMessage) \
[grindKeyPairSigner](/api/functions/grindKeyPairSigner) \
[grindKeyPairSigners](/api/functions/grindKeyPairSigners) \
[isKeyPairSigner](/api/functions/isKeyPairSigner) \
[isMessageModifyingSigner](/api/functions/isMessageModifyingSigner) \
[isMessagePartialSigner](/api/functions/isMessagePartialSigner) \
[isMessageSigner](/api/functions/isMessageSigner) \
[isTransactionMessageWithSingleSendingSigner](/api/functions/isTransactionMessageWithSingleSendingSigner) \
[isTransactionModifyingSigner](/api/functions/isTransactionModifyingSigner) \
[isTransactionPartialSigner](/api/functions/isTransactionPartialSigner) \
[isTransactionSendingSigner](/api/functions/isTransactionSendingSigner) \
[isTransactionSigner](/api/functions/isTransactionSigner) \
[partiallySignOffchainMessageWithSigners](/api/functions/partiallySignOffchainMessageWithSigners) \
[partiallySignTransactionMessageWithSigners](/api/functions/partiallySignTransactionMessageWithSigners) \
[partiallySignTransactionWithSigners](/api/functions/partiallySignTransactionWithSigners) \
[setTransactionMessageFeePayerSigner](/api/functions/setTransactionMessageFeePayerSigner) \
[signAndSendTransactionMessageWithSigners](/api/functions/signAndSendTransactionMessageWithSigners) \
[signAndSendTransactionWithSigners](/api/functions/signAndSendTransactionWithSigners) \
[signOffchainMessageWithSigners](/api/functions/signOffchainMessageWithSigners) \
[signTransactionMessageWithSigners](/api/functions/signTransactionMessageWithSigners) \
[signTransactionWithSigners](/api/functions/signTransactionWithSigners) \
[writeKeyPairSigner](/api/functions/writeKeyPairSigner)
### `@solana/subscribable`
Types (10)
[DataPublisher](/api/interfaces/DataPublisher) \
[ReactiveActionSource](/api/type-aliases/ReactiveActionSource) \
[ReactiveActionState](/api/type-aliases/ReactiveActionState) \
[ReactiveActionStatus](/api/type-aliases/ReactiveActionStatus) \
[ReactiveActionStore](/api/type-aliases/ReactiveActionStore) \
[ReactiveState](/api/type-aliases/ReactiveState) \
[ReactiveStreamSource](/api/type-aliases/ReactiveStreamSource) \
[ReactiveStreamStore](/api/type-aliases/ReactiveStreamStore) \
[TypedEventEmitter](/api/interfaces/TypedEventEmitter) \
[TypedEventTarget](/api/interfaces/TypedEventTarget)
Functions (6)
[bridgeStoreToAsyncIterable](/api/functions/bridgeStoreToAsyncIterable) \
[createAsyncIterableFromDataPublisher](/api/functions/createAsyncIterableFromDataPublisher) \
[createReactiveActionStore](/api/functions/createReactiveActionStore) \
[createReactiveStoreFromDataPublisherFactory](/api/functions/createReactiveStoreFromDataPublisherFactory) \
[demultiplexDataPublisher](/api/functions/demultiplexDataPublisher) \
[getDataPublisherFromEventEmitter](/api/functions/getDataPublisherFromEventEmitter)
### `@solana/sysvars`
Types (9)
[SysvarClock](/api/type-aliases/SysvarClock) \
[SysvarEpochRewards](/api/type-aliases/SysvarEpochRewards) \
[SysvarEpochSchedule](/api/type-aliases/SysvarEpochSchedule) \
[SysvarLastRestartSlot](/api/type-aliases/SysvarLastRestartSlot) \
[SysvarRecentBlockhashes](/api/type-aliases/SysvarRecentBlockhashes) \
[SysvarRent](/api/type-aliases/SysvarRent) \
[SysvarSlotHashes](/api/type-aliases/SysvarSlotHashes) \
[SysvarSlotHistory](/api/type-aliases/SysvarSlotHistory) \
[SysvarStakeHistory](/api/type-aliases/SysvarStakeHistory)
Functions (38)
[fetchEncodedSysvarAccount](/api/functions/fetchEncodedSysvarAccount) \
[fetchJsonParsedSysvarAccount](/api/functions/fetchJsonParsedSysvarAccount) \
[fetchSysvarClock](/api/functions/fetchSysvarClock) \
[fetchSysvarEpochRewards](/api/functions/fetchSysvarEpochRewards) \
[fetchSysvarEpochSchedule](/api/functions/fetchSysvarEpochSchedule) \
[fetchSysvarLastRestartSlot](/api/functions/fetchSysvarLastRestartSlot) \
[fetchSysvarRecentBlockhashes](/api/functions/fetchSysvarRecentBlockhashes) \
[fetchSysvarRent](/api/functions/fetchSysvarRent) \
[fetchSysvarSlotHashes](/api/functions/fetchSysvarSlotHashes) \
[fetchSysvarSlotHistory](/api/functions/fetchSysvarSlotHistory) \
[fetchSysvarStakeHistory](/api/functions/fetchSysvarStakeHistory) \
[getSysvarClockCodec](/api/functions/getSysvarClockCodec) \
[getSysvarClockDecoder](/api/functions/getSysvarClockDecoder) \
[getSysvarClockEncoder](/api/functions/getSysvarClockEncoder) \
[getSysvarEpochRewardsCodec](/api/functions/getSysvarEpochRewardsCodec) \
[getSysvarEpochRewardsDecoder](/api/functions/getSysvarEpochRewardsDecoder) \
[getSysvarEpochRewardsEncoder](/api/functions/getSysvarEpochRewardsEncoder) \
[getSysvarEpochScheduleCodec](/api/functions/getSysvarEpochScheduleCodec) \
[getSysvarEpochScheduleDecoder](/api/functions/getSysvarEpochScheduleDecoder) \
[getSysvarEpochScheduleEncoder](/api/functions/getSysvarEpochScheduleEncoder) \
[getSysvarLastRestartSlotCodec](/api/functions/getSysvarLastRestartSlotCodec) \
[getSysvarLastRestartSlotDecoder](/api/functions/getSysvarLastRestartSlotDecoder) \
[getSysvarLastRestartSlotEncoder](/api/functions/getSysvarLastRestartSlotEncoder) \
[getSysvarRecentBlockhashesCodec](/api/functions/getSysvarRecentBlockhashesCodec) \
[getSysvarRecentBlockhashesDecoder](/api/functions/getSysvarRecentBlockhashesDecoder) \
[getSysvarRecentBlockhashesEncoder](/api/functions/getSysvarRecentBlockhashesEncoder) \
[getSysvarRentCodec](/api/functions/getSysvarRentCodec) \
[getSysvarRentDecoder](/api/functions/getSysvarRentDecoder) \
[getSysvarRentEncoder](/api/functions/getSysvarRentEncoder) \
[getSysvarSlotHashesCodec](/api/functions/getSysvarSlotHashesCodec) \
[getSysvarSlotHashesDecoder](/api/functions/getSysvarSlotHashesDecoder) \
[getSysvarSlotHashesEncoder](/api/functions/getSysvarSlotHashesEncoder) \
[getSysvarSlotHistoryCodec](/api/functions/getSysvarSlotHistoryCodec) \
[getSysvarSlotHistoryDecoder](/api/functions/getSysvarSlotHistoryDecoder) \
[getSysvarSlotHistoryEncoder](/api/functions/getSysvarSlotHistoryEncoder) \
[getSysvarStakeHistoryCodec](/api/functions/getSysvarStakeHistoryCodec) \
[getSysvarStakeHistoryDecoder](/api/functions/getSysvarStakeHistoryDecoder) \
[getSysvarStakeHistoryEncoder](/api/functions/getSysvarStakeHistoryEncoder)
Variables (10)
[SYSVAR\_CLOCK\_ADDRESS](/api/variables/SYSVAR_CLOCK_ADDRESS) \
[SYSVAR\_EPOCH\_REWARDS\_ADDRESS](/api/variables/SYSVAR_EPOCH_REWARDS_ADDRESS) \
[SYSVAR\_EPOCH\_SCHEDULE\_ADDRESS](/api/variables/SYSVAR_EPOCH_SCHEDULE_ADDRESS) \
[SYSVAR\_INSTRUCTIONS\_ADDRESS](/api/variables/SYSVAR_INSTRUCTIONS_ADDRESS) \
[SYSVAR\_LAST\_RESTART\_SLOT\_ADDRESS](/api/variables/SYSVAR_LAST_RESTART_SLOT_ADDRESS) \
[SYSVAR\_RECENT\_BLOCKHASHES\_ADDRESS](/api/variables/SYSVAR_RECENT_BLOCKHASHES_ADDRESS) \
[SYSVAR\_RENT\_ADDRESS](/api/variables/SYSVAR_RENT_ADDRESS) \
[SYSVAR\_SLOT\_HASHES\_ADDRESS](/api/variables/SYSVAR_SLOT_HASHES_ADDRESS) \
[SYSVAR\_SLOT\_HISTORY\_ADDRESS](/api/variables/SYSVAR_SLOT_HISTORY_ADDRESS) \
[SYSVAR\_STAKE\_HISTORY\_ADDRESS](/api/variables/SYSVAR_STAKE_HISTORY_ADDRESS)
### `@solana/transaction-confirmation`
Types (1)
[TransactionWithLastValidBlockHeight](/api/type-aliases/TransactionWithLastValidBlockHeight)
Functions (7)
[createBlockHeightExceedencePromiseFactory](/api/functions/createBlockHeightExceedencePromiseFactory) \
[createNonceInvalidationPromiseFactory](/api/functions/createNonceInvalidationPromiseFactory) \
[createRecentSignatureConfirmationPromiseFactory](/api/functions/createRecentSignatureConfirmationPromiseFactory) \
[getTimeoutPromise](/api/functions/getTimeoutPromise) \
[waitForDurableNonceTransactionConfirmation](/api/functions/waitForDurableNonceTransactionConfirmation) \
[waitForRecentTransactionConfirmation](/api/functions/waitForRecentTransactionConfirmation) \
[waitForRecentTransactionConfirmationUntilTimeout](/api/functions/waitForRecentTransactionConfirmationUntilTimeout)
### `@solana/transaction-introspection`
Types (6)
[DecodedRpcTransaction](/api/type-aliases/DecodedRpcTransaction) \
[InstructionTrace](/api/type-aliases/InstructionTrace) \
[LoadedAddresses](/api/type-aliases/LoadedAddresses) \
[MetaWithInnerInstructions](/api/type-aliases/MetaWithInnerInstructions) \
[ResolvedInstruction](/api/type-aliases/ResolvedInstruction) \
[TracedInstruction](/api/type-aliases/TracedInstruction)
Functions (5)
[decodeTransactionFromRpcResponse](/api/functions/decodeTransactionFromRpcResponse) \
[getAccountMetasFromCompiledTransactionMessage](/api/functions/getAccountMetasFromCompiledTransactionMessage) \
[getInnerInstructionsFromMeta](/api/functions/getInnerInstructionsFromMeta) \
[getInstructionsFromCompiledTransactionMessage](/api/functions/getInstructionsFromCompiledTransactionMessage) \
[walkInstructions](/api/functions/walkInstructions)
### `@solana/transaction-messages`
Types (21)
[AddressesByLookupTableAddress](/api/type-aliases/AddressesByLookupTableAddress) \
[BlockhashLifetimeConstraint](/api/type-aliases/BlockhashLifetimeConstraint) \
[CompiledTransactionMessage](/api/type-aliases/CompiledTransactionMessage) \
[CompiledTransactionMessageWithLifetime](/api/type-aliases/CompiledTransactionMessageWithLifetime) \
[DecompileTransactionMessageConfig](/api/type-aliases/DecompileTransactionMessageConfig) \
[ExcludeTransactionMessageDurableNonceLifetime](/api/type-aliases/ExcludeTransactionMessageDurableNonceLifetime) \
[ExcludeTransactionMessageLifetime](/api/type-aliases/ExcludeTransactionMessageLifetime) \
[ExcludeTransactionMessageWithinSizeLimit](/api/type-aliases/ExcludeTransactionMessageWithinSizeLimit) \
[LegacyCompiledTransactionMessage](/api/type-aliases/LegacyCompiledTransactionMessage) \
[Nonce](/api/type-aliases/Nonce) \
[NonceLifetimeConstraint](/api/type-aliases/NonceLifetimeConstraint) \
[TransactionMessage](/api/type-aliases/TransactionMessage) \
[TransactionMessageWithBlockhashLifetime](/api/interfaces/TransactionMessageWithBlockhashLifetime) \
[TransactionMessageWithDurableNonceLifetime](/api/interfaces/TransactionMessageWithDurableNonceLifetime) \
[TransactionMessageWithFeePayer](/api/interfaces/TransactionMessageWithFeePayer) \
[TransactionMessageWithinSizeLimit](/api/type-aliases/TransactionMessageWithinSizeLimit) \
[TransactionMessageWithLifetime](/api/type-aliases/TransactionMessageWithLifetime) \
[TransactionVersion](/api/type-aliases/TransactionVersion) \
[V0CompiledTransactionMessage](/api/type-aliases/V0CompiledTransactionMessage) \
[V1CompiledTransactionMessage](/api/type-aliases/V1CompiledTransactionMessage) \
[V1TransactionConfig](/api/type-aliases/V1TransactionConfig)
Functions (39)
[appendTransactionMessageInstruction](/api/functions/appendTransactionMessageInstruction) \
[appendTransactionMessageInstructions](/api/functions/appendTransactionMessageInstructions) \
[areV1ConfigsEqual](/api/functions/areV1ConfigsEqual) \
[assertIsTransactionMessageWithBlockhashLifetime](/api/functions/assertIsTransactionMessageWithBlockhashLifetime) \
[assertIsTransactionMessageWithDurableNonceLifetime](/api/functions/assertIsTransactionMessageWithDurableNonceLifetime) \
[compileTransactionMessage](/api/functions/compileTransactionMessage) \
[compressTransactionMessageUsingAddressLookupTables](/api/functions/compressTransactionMessageUsingAddressLookupTables) \
[createTransactionMessage](/api/functions/createTransactionMessage) \
[decompileTransactionMessage](/api/functions/decompileTransactionMessage) \
[getCompiledTransactionMessageCodec](/api/functions/getCompiledTransactionMessageCodec) \
[getCompiledTransactionMessageDecoder](/api/functions/getCompiledTransactionMessageDecoder) \
[getCompiledTransactionMessageEncoder](/api/functions/getCompiledTransactionMessageEncoder) \
[getTransactionMessageComputeUnitLimit](/api/functions/getTransactionMessageComputeUnitLimit) \
[getTransactionMessageComputeUnitPrice](/api/functions/getTransactionMessageComputeUnitPrice) \
[getTransactionMessageHeapSize](/api/functions/getTransactionMessageHeapSize) \
[getTransactionMessageLoadedAccountsDataSizeLimit](/api/functions/getTransactionMessageLoadedAccountsDataSizeLimit) \
[getTransactionMessagePriorityFeeLamports](/api/functions/getTransactionMessagePriorityFeeLamports) \
[getTransactionVersionCodec](/api/functions/getTransactionVersionCodec) \
[getTransactionVersionDecoder](/api/functions/getTransactionVersionDecoder) \
[getTransactionVersionEncoder](/api/functions/getTransactionVersionEncoder) \
[isAdvanceNonceAccountInstruction](/api/functions/isAdvanceNonceAccountInstruction) \
[isTransactionMessageWithBlockhashLifetime](/api/functions/isTransactionMessageWithBlockhashLifetime) \
[isTransactionMessageWithDurableNonceLifetime](/api/functions/isTransactionMessageWithDurableNonceLifetime) \
[isV1ConfigEmpty](/api/functions/isV1ConfigEmpty) \
[prependTransactionMessageInstruction](/api/functions/prependTransactionMessageInstruction) \
[prependTransactionMessageInstructions](/api/functions/prependTransactionMessageInstructions) \
[setTransactionMessageComputeUnitLimit](/api/functions/setTransactionMessageComputeUnitLimit) \
[setTransactionMessageComputeUnitPrice](/api/functions/setTransactionMessageComputeUnitPrice) \
[setTransactionMessageConfig](/api/functions/setTransactionMessageConfig) \
[setTransactionMessageFeePayer](/api/functions/setTransactionMessageFeePayer) \
[setTransactionMessageHeapSize](/api/functions/setTransactionMessageHeapSize) \
[setTransactionMessageLifetimeUsingBlockhash](/api/functions/setTransactionMessageLifetimeUsingBlockhash) \
[setTransactionMessageLifetimeUsingDurableNonce](/api/functions/setTransactionMessageLifetimeUsingDurableNonce) \
[setTransactionMessageLoadedAccountsDataSizeLimit](/api/functions/setTransactionMessageLoadedAccountsDataSizeLimit) \
[setTransactionMessagePriorityFeeLamports](/api/functions/setTransactionMessagePriorityFeeLamports) \
[transactionConfigMaskHasComputeUnitLimit](/api/functions/transactionConfigMaskHasComputeUnitLimit) \
[transactionConfigMaskHasHeapSize](/api/functions/transactionConfigMaskHasHeapSize) \
[transactionConfigMaskHasLoadedAccountsDataSizeLimit](/api/functions/transactionConfigMaskHasLoadedAccountsDataSizeLimit) \
[transactionConfigMaskHasPriorityFee](/api/functions/transactionConfigMaskHasPriorityFee)
Variables (5)
[MAX\_SUPPORTED\_TRANSACTION\_VERSION](/api/variables/MAX_SUPPORTED_TRANSACTION_VERSION) \
[TRANSACTION\_CONFIG\_COMPUTE\_UNIT\_LIMIT\_BIT\_MASK](/api/variables/TRANSACTION_CONFIG_COMPUTE_UNIT_LIMIT_BIT_MASK) \
[TRANSACTION\_CONFIG\_HEAP\_SIZE\_BIT\_MASK](/api/variables/TRANSACTION_CONFIG_HEAP_SIZE_BIT_MASK) \
[TRANSACTION\_CONFIG\_LOADED\_ACCOUNTS\_DATA\_SIZE\_LIMIT\_BIT\_MASK](/api/variables/TRANSACTION_CONFIG_LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT_MASK) \
[TRANSACTION\_CONFIG\_PRIORITY\_FEE\_LAMPORTS\_BIT\_MASK](/api/variables/TRANSACTION_CONFIG_PRIORITY_FEE_LAMPORTS_BIT_MASK)
### `@solana/transactions`
Types (16)
[Base64EncodedWireTransaction](/api/type-aliases/Base64EncodedWireTransaction) \
[FullySignedTransaction](/api/type-aliases/FullySignedTransaction) \
[SendableTransaction](/api/type-aliases/SendableTransaction) \
[SetTransactionLifetimeFromTransactionMessage](/api/type-aliases/SetTransactionLifetimeFromTransactionMessage) \
[SetTransactionWithinSizeLimitFromTransactionMessage](/api/type-aliases/SetTransactionWithinSizeLimitFromTransactionMessage) \
[SignaturesMap](/api/type-aliases/SignaturesMap) \
[Transaction](/api/type-aliases/Transaction) \
[TransactionBlockhashLifetime](/api/type-aliases/TransactionBlockhashLifetime) \
[TransactionDurableNonceLifetime](/api/type-aliases/TransactionDurableNonceLifetime) \
[TransactionFromTransactionMessage](/api/type-aliases/TransactionFromTransactionMessage) \
[TransactionMessageBytes](/api/type-aliases/TransactionMessageBytes) \
[TransactionMessageBytesBase64](/api/type-aliases/TransactionMessageBytesBase64) \
[TransactionWithBlockhashLifetime](/api/type-aliases/TransactionWithBlockhashLifetime) \
[TransactionWithDurableNonceLifetime](/api/type-aliases/TransactionWithDurableNonceLifetime) \
[TransactionWithinSizeLimit](/api/type-aliases/TransactionWithinSizeLimit) \
[TransactionWithLifetime](/api/type-aliases/TransactionWithLifetime)
Functions (25)
[assertIsFullySignedTransaction](/api/functions/assertIsFullySignedTransaction) \
[assertIsSendableTransaction](/api/functions/assertIsSendableTransaction) \
[assertIsTransactionMessageWithinSizeLimit](/api/functions/assertIsTransactionMessageWithinSizeLimit) \
[assertIsTransactionWithBlockhashLifetime](/api/functions/assertIsTransactionWithBlockhashLifetime) \
[assertIsTransactionWithDurableNonceLifetime](/api/functions/assertIsTransactionWithDurableNonceLifetime) \
[assertIsTransactionWithinSizeLimit](/api/functions/assertIsTransactionWithinSizeLimit) \
[compileTransaction](/api/functions/compileTransaction) \
[getBase64EncodedWireTransaction](/api/functions/getBase64EncodedWireTransaction) \
[getSignatureFromTransaction](/api/functions/getSignatureFromTransaction) \
[getTransactionCodec](/api/functions/getTransactionCodec) \
[getTransactionDecoder](/api/functions/getTransactionDecoder) \
[getTransactionEncoder](/api/functions/getTransactionEncoder) \
[getTransactionLifetimeConstraintFromCompiledTransactionMessage](/api/functions/getTransactionLifetimeConstraintFromCompiledTransactionMessage) \
[getTransactionMessageSize](/api/functions/getTransactionMessageSize) \
[getTransactionMessageSizeLimit](/api/functions/getTransactionMessageSizeLimit) \
[getTransactionSize](/api/functions/getTransactionSize) \
[getTransactionSizeLimit](/api/functions/getTransactionSizeLimit) \
[isFullySignedTransaction](/api/functions/isFullySignedTransaction) \
[isSendableTransaction](/api/functions/isSendableTransaction) \
[isTransactionMessageWithinSizeLimit](/api/functions/isTransactionMessageWithinSizeLimit) \
[isTransactionWithBlockhashLifetime](/api/functions/isTransactionWithBlockhashLifetime) \
[isTransactionWithDurableNonceLifetime](/api/functions/isTransactionWithDurableNonceLifetime) \
[isTransactionWithinSizeLimit](/api/functions/isTransactionWithinSizeLimit) \
[partiallySignTransaction](/api/functions/partiallySignTransaction) \
[signTransaction](/api/functions/signTransaction)
### `@solana/wallet-account-signer`
Functions (4)
[createMessageSignerFromWalletAccount](/api/functions/createMessageSignerFromWalletAccount) \
[createSignerFromWalletAccount](/api/functions/createSignerFromWalletAccount) \
[createTransactionSendingSignerFromWalletAccount](/api/functions/createTransactionSendingSignerFromWalletAccount) \
[createTransactionSignerFromWalletAccount](/api/functions/createTransactionSignerFromWalletAccount)
### `@solana/webcrypto-ed25519-polyfill`
Functions (1)
[install](/api/functions/install)
This documentation is automatically generated from the source code using TypeDoc.
# SolanaError (/api/classes/SolanaError)
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.
## Extends
* [`Error`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Error)
## Type Parameters
| Type Parameter | Default type |
| ----------------------------------------------------------------------------- | ------------------------------------------------------ |
| `TErrorCode` *extends* [`SolanaErrorCode`](/api/type-aliases/SolanaErrorCode) | [`SolanaErrorCode`](/api/type-aliases/SolanaErrorCode) |
## Constructors
### Constructor
```ts
new SolanaError(...__namedParameters): SolanaError;
```
#### Parameters
| Parameter | Type |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ...`__namedParameters` | `ReadonlyContextValue`\<`DefaultUnspecifiedErrorContextToUndefined`\<`BasicInstructionErrorContext`\< \| `4615000` \| `4615001` \| `4615002` \| `4615003` \| `4615004` \| `4615005` \| `4615006` \| `4615007` \| `4615008` \| `4615009` \| `4615010` \| `4615011` \| `4615012` \| `4615013` \| `4615014` \| `4615015` \| `4615016` \| `4615017` \| `4615018` \| `4615019` \| `4615020` \| `4615021` \| `4615022` \| `4615023` \| `4615024` \| `4615025` \| `4615026` \| `4615027` \| `4615028` \| `4615029` \| `4615030` \| `4615031` \| `4615032` \| `4615033` \| `4615034` \| `4615035` \| `4615036` \| `4615037` \| `4615038` \| `4615039` \| `4615040` \| `4615041` \| `4615042` \| `4615043` \| `4615044` \| `4615045` \| `4615046` \| `4615047` \| `4615048` \| `4615049` \| `4615050` \| `4615051` \| `4615052` \| `4615053` \| `4615054`> & `object`>>\[`TErrorCode`] *extends* `undefined` ? \[`TErrorCode`, `ErrorOptions`] : \[`TErrorCode`, `ReadonlyContextValue`\<`DefaultUnspecifiedErrorContextToUndefined`\<`BasicInstructionErrorContext`\< \| `4615000` \| `4615001` \| `4615002` \| `4615003` \| `4615004` \| `4615005` \| `4615006` \| `4615007` \| `4615008` \| `4615009` \| `4615010` \| `4615011` \| `4615012` \| `4615013` \| `4615014` \| `4615015` \| `4615016` \| `4615017` \| `4615018` \| `4615019` \| `4615020` \| `4615021` \| `4615022` \| `4615023` \| `4615024` \| `4615025` \| `4615026` \| `4615027` \| `4615028` \| `4615029` \| `4615030` \| `4615031` \| `4615032` \| `4615033` \| `4615034` \| `4615035` \| `4615036` \| `4615037` \| `4615038` \| `4615039` \| `4615040` \| `4615041` \| `4615042` \| `4615043` \| `4615044` \| `4615045` \| `4615046` \| `4615047` \| `4615048` \| `4615049` \| `4615050` \| `4615051` \| `4615052` \| `4615053` \| `4615054`> & `object`>>\[`TErrorCode`] & `ErrorOptions` \| `undefined`] |
#### Returns
`SolanaError`\<`TErrorCode`>
#### Overrides
```ts
Error.constructor
```
## Properties
| Property | Modifier | Type | Description | Overrides | Inherited from |
| ----------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ----------------------- |
| `cause?` | `readonly` | `TErrorCode` *extends* [`SolanaErrorCodeWithCause`](/api/type-aliases/SolanaErrorCodeWithCause) ? `SolanaError`\<[`SolanaErrorCode`](/api/type-aliases/SolanaErrorCode)> : `unknown` | Indicates the root cause of this 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`. | `Error.cause` | - |
| `context` | `readonly` | `SolanaErrorCodedContext`\[`TErrorCode`] | Contains context that can assist in understanding or recovering from a SolanaError. | - | - |
| `message` | `public` | `string` | - | - | `Error.message` |
| `name` | `public` | `string` | - | - | `Error.name` |
| `stack?` | `public` | `string` | - | - | `Error.stack` |
| `stackTraceLimit` | `static` | `number` | The `Error.stackTraceLimit` property specifies the number of stack frames collected by a stack trace (whether generated by `new Error().stack` or `Error.captureStackTrace(obj)`). The default value is `10` but may be set to any valid JavaScript number. Changes will affect any stack trace captured *after* the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. | - | `Error.stackTraceLimit` |
## Methods
### captureStackTrace()
```ts
static captureStackTrace(targetObject, constructorOpt?): void;
```
Creates a `.stack` property on `targetObject`, which when accessed returns
a string representing the location in the code at which
`Error.captureStackTrace()` was called.
```js
const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack; // Similar to `new Error().stack`
```
The first line of the trace will be prefixed with
`${myObject.name}: ${myObject.message}`.
The optional `constructorOpt` argument accepts a function. If given, all frames
above `constructorOpt`, including `constructorOpt`, will be omitted from the
generated stack trace.
The `constructorOpt` argument is useful for hiding implementation
details of error generation from the user. For instance:
```js
function a() {
b();
}
function b() {
c();
}
function c() {
// Create an error without stack trace to avoid calculating the stack trace twice.
const { stackTraceLimit } = Error;
Error.stackTraceLimit = 0;
const error = new Error();
Error.stackTraceLimit = stackTraceLimit;
// Capture the stack trace above function b
Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
throw error;
}
a();
```
#### Parameters
| Parameter | Type |
| ----------------- | ------------------------------------------------------------------------------------------------- |
| `targetObject` | `object` |
| `constructorOpt?` | [`Function`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function) |
#### Returns
`void`
#### Inherited from
```ts
Error.captureStackTrace
```
***
### prepareStackTrace()
```ts
static prepareStackTrace(err, stackTraces): any;
```
#### Parameters
| Parameter | Type |
| ------------- | ------------------------------------------------------------------------------------------- |
| `err` | [`Error`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Error) |
| `stackTraces` | `CallSite`\[] |
#### Returns
`any`
#### See
[https://v8.dev/docs/stack-trace-api#customizing-stack-traces](https://v8.dev/docs/stack-trace-api#customizing-stack-traces)
#### Inherited from
```ts
Error.prepareStackTrace
```
# AccountRole (/api/enumerations/AccountRole)
Describes the purpose for which an account participates in a transaction.
Every account that participates in a transaction can be read from, but only ones that you mark as
writable may be written to, and only ones that you indicate must sign the transaction will gain
the privileges associated with signers at runtime.
| | `isSigner` | `isWritable` |
| ----------------------------- | ---------- | ------------ |
| `AccountRole.READONLY` | β | β |
| `AccountRole.WRITABLE` | β | β
|
| `AccountRole.READONLY_SIGNER` | β
| β |
| `AccountRole.WRITABLE_SIGNER` | β
| β
|
## Enumeration Members
| Enumeration Member | Value |
| --------------------------------------------------------------- | ----- |
| `READONLY` | `0` |
| `READONLY_SIGNER` | `2` |
| `WRITABLE` | `1` |
| `WRITABLE_SIGNER` | `3` |
# Endian (/api/enumerations/Endian)
Defines the byte order used for number serialization.
* `Little`: The least significant byte is stored first.
* `Big`: The most significant byte is stored first.
## Enumeration Members
| Enumeration Member | Value |
| --------------------------------------------- | ----- |
| `Big` | `1` |
| `Little` | `0` |
# OffchainMessageContentFormat (/api/enumerations/OffchainMessageContentFormat)
A restriction on what characters the message text can contain and how long it can be.
The aim of this restriction is to make a message more likely to be signable by a hardware wallet
that imposes limits on message size. In the case of wanting a message to be clear-signable,
restricting the character set to ASCII may ensure that certain models of hardware wallet without
extended character sets can display it onscreen.
## Remarks
This only applies to v0 messages.
## Enumeration Members
| Enumeration Member | Value |
| ----------------------------------------------------------------------------------------------- | ----- |
| `RESTRICTED_ASCII_1232_BYTES_MAX` | `0` |
| `UTF8_1232_BYTES_MAX` | `1` |
| `UTF8_65535_BYTES_MAX` | `2` |
# Account (/api/interfaces/Account)
Contains all the information relevant to a Solana account. It includes the account's address and
data, as well as the properties of [BaseAccount](/api/interfaces/BaseAccount).
## Example
```ts
// Encoded
const myEncodedAccount: Account = {
address: address('1234..5678'),
data: new Uint8Array([1, 2, 3]),
executable: false,
lamports: lamports(1_000_000_000n),
programAddress: address('1111..1111'),
space: 42n,
};
// Decoded
type MyAccountData = { name: string; age: number };
const myDecodedAccount: Account = {
address: address('1234..5678'),
data: { name: 'Alice', age: 30 },
executable: false,
lamports: lamports(1_000_000_000n),
programAddress: address('1111..1111'),
space: 42n,
};
```
## Type Parameters
| Type Parameter | Default type | Description |
| -------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `TData` *extends* \| [`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) \| `object` | - | The nature of this account's data. It can be represented as either a `Uint8Array` β meaning the account is encoded β or a custom data type β meaning the account is decoded. |
| `TAddress` *extends* `string` | `string` | Supply a string literal to define an account having a particular address. |
## Properties
| Property | Modifier | Type |
| --------------------------------------------------- | ---------- | --------------------------------------------------- |
| `address` | `readonly` | [`Address`](/api/type-aliases/Address)\<`TAddress`> |
| `data` | `readonly` | `TData` |
| `executable` | `readonly` | `boolean` |
| `lamports` | `readonly` | [`Lamports`](/api/type-aliases/Lamports) |
| `programAddress` | `readonly` | [`Address`](/api/type-aliases/Address) |
| `space` | `readonly` | `bigint` |
# AccountLookupMeta (/api/interfaces/AccountLookupMeta)
Represents a lookup of the account's address in an address lookup table. It specifies which
lookup table account in which to perform the lookup, the index of the desired account address in
that table, and metadata about its mutability. Notably, account addresses obtained via lookups
may not act as signers.
Typically, you will use one of its subtypes.
| | `role` | `isSigner` | `isWritable` |
| ------------------------------------------------------ | ---------------------- | ---------- | ------------ |
| `ReadonlyLookupAccount` | `AccountRole.READONLY` | No | No |
| `WritableLookupAccount` | `AccountRole.WRITABLE` | No | Yes |
## Example
**A type for the Rent sysvar account that you looked up in a lookup table**
```ts
type RentSysvar = ReadonlyLookupAccount<
'SysvarRent111111111111111111111111111111111',
'MyLookupTable111111111111111111111111111111'
>;
```
## Type Parameters
| Type Parameter | Default type |
| ---------------------------------------- | ------------ |
| `TAddress` *extends* `string` | `string` |
| `TLookupTableAddress` *extends* `string` | `string` |
## Properties
| Property | Modifier | Type |
| ----------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `address` | `readonly` | [`Address`](/api/type-aliases/Address)\<`TAddress`> |
| `addressIndex` | `readonly` | `number` |
| `lookupTableAddress` | `readonly` | [`Address`](/api/type-aliases/Address)\<`TLookupTableAddress`> |
| `role` | `readonly` | \| [`WRITABLE`](/api/enumerations/AccountRole#enumeration-member-writable) \| [`READONLY`](/api/enumerations/AccountRole#enumeration-member-readonly) |
# AccountMeta (/api/interfaces/AccountMeta)
Represents an account's address and metadata about its mutability and whether it must be a signer
of the transaction.
Typically, you will use one of its subtypes.
| | `role` | `isSigner` | `isWritable` |
| --------------------------------- | ----------------------------- | ---------- | ------------ |
| `ReadonlyAccount` | `AccountRole.READONLY` | No | No |
| `WritableAccount` | `AccountRole.WRITABLE` | No | Yes |
| `ReadonlySignerAccount` | `AccountRole.READONLY_SIGNER` | Yes | No |
| `WritableSignerAccount` | `AccountRole.WRITABLE_SIGNER` | Yes | Yes |
## Example
**A type for the Rent sysvar account**
```ts
type RentSysvar = ReadonlyAccount<'SysvarRent111111111111111111111111111111111'>;
```
## Extended by
* [`AccountSignerMeta`](/api/interfaces/AccountSignerMeta)
## Type Parameters
| Type Parameter | Default type |
| ----------------------------- | ------------ |
| `TAddress` *extends* `string` | `string` |
## Properties
| Property | Modifier | Type |
| ------------------------------------- | ---------- | --------------------------------------------------- |
| `address` | `readonly` | [`Address`](/api/type-aliases/Address)\<`TAddress`> |
| `role` | `readonly` | [`AccountRole`](/api/enumerations/AccountRole) |
# AccountSignerMeta (/api/interfaces/AccountSignerMeta)
An extension of the AccountMeta type that allows us to store [TransactionSigners](/api/type-aliases/TransactionSigner) inside it.
Note that, because this type represents a signer, it must use one the following two roles:
* AccountRole.READONLY\_SIGNER
* AccountRole.WRITABLE\_SIGNER
## Example
```ts
import { AccountRole } from '@solana/instructions';
import { generateKeyPairSigner, AccountSignerMeta } from '@solana/signers';
const signer = await generateKeyPairSigner();
const account: AccountSignerMeta = {
address: signer.address,
role: AccountRole.READONLY_SIGNER,
signer,
};
```
## Extends
* `AccountMeta`\<`TAddress`>
## Type Parameters
| Type Parameter | Default type | Description |
| ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `TAddress` *extends* `string` | `string` | Supply a string literal to define an account having a particular address. |
| `TSigner` *extends* [`TransactionSigner`](/api/type-aliases/TransactionSigner)\<`TAddress`> | [`TransactionSigner`](/api/type-aliases/TransactionSigner)\<`TAddress`> | Optionally provide a narrower type for the [TransactionSigner](/api/type-aliases/TransactionSigner) to use within the account meta. |
## Properties
| Property | Modifier | Type | Overrides | Inherited from |
| ------------------------------------- | ---------- | -------------------------------------- | ------------------ | --------------------- |
| `address` | `readonly` | `Address`\<`TAddress`> | - | `AccountMeta.address` |
| `role` | `readonly` | `WRITABLE_SIGNER` \| `READONLY_SIGNER` | `AccountMeta.role` | - |
| `signer` | `readonly` | `TSigner` | - | - |
# BaseAccount (/api/interfaces/BaseAccount)
Defines the attributes common to all Solana accounts. Namely, it contains everything stored
on-chain except the account data itself.
## Example
```ts
const BaseAccount: BaseAccount = {
executable: false,
lamports: lamports(1_000_000_000n),
programAddress: address('1111..1111'),
space: 42n,
};
```
## Properties
| Property | Modifier | Type |
| --------------------------------------------------- | ---------- | ---------------------------------------- |
| `executable` | `readonly` | `boolean` |
| `lamports` | `readonly` | [`Lamports`](/api/type-aliases/Lamports) |
| `programAddress` | `readonly` | [`Address`](/api/type-aliases/Address) |
| `space` | `readonly` | `bigint` |
# BaseTransactionSignerConfig (/api/interfaces/BaseTransactionSignerConfig)
The base configuration object for transaction signers only.
## Extends
* [`BaseSignerConfig`](/api/type-aliases/BaseSignerConfig)
## Properties
| Property | Modifier | Type | Description | Inherited from |
| ---------------------------------------------------- | ---------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ |
| `abortSignal?` | `readonly` | [`AbortSignal`](https://developer.mozilla.org/docs/Web/API/AbortSignal) | An optional `AbortSignal` that can be used to cancel the signing process. **Example** `import { generateKeyPairSigner } from '@solana/signers'; const abortController = new AbortController(); const signer = await generateKeyPairSigner(); signer.signMessages([message], { abortSignal: abortController.signal }); abortController.abort();` | `BaseSignerConfig.abortSignal` |
| `minContextSlot?` | `public` | `bigint` | Signers that simulate transactions (eg. wallets) might be interested in knowing which slot was current when the transaction was prepared. They can use this information to ensure that they don't run the simulation at too early a slot. | - |
# DataPublisher (/api/interfaces/DataPublisher)
Represents an object with an `on` function that you can call to subscribe to certain data over a
named channel.
## Example
```ts
let dataPublisher: DataPublisher<{ error: SolanaError }>;
dataPublisher.on('data', handleData); // ERROR. `data` is not a known channel name.
dataPublisher.on('error', e => {
console.error(e);
}); // OK.
```
## Type Parameters
| Type Parameter | Default type |
| ------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- |
| `TDataByChannelName` *extends* [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `unknown`> | [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `unknown`> |
## Methods
### on()
```ts
on(
channelName,
subscriber,
options?): UnsubscribeFn;
```
Call this to subscribe to data over a named channel.
#### Type Parameters
| Type Parameter |
| --------------------------------------------------------- |
| `TChannelName` *extends* `string` \| `number` \| `symbol` |
#### Parameters
| Parameter | Type | Description |
| ----------------- | --------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| `channelName` | `TChannelName` | The name of the channel on which to subscribe for messages |
| `subscriber` | (`data`) => `void` | The function to call when a message becomes available |
| `options?` | \{ `signal`: [`AbortSignal`](https://developer.mozilla.org/docs/Web/API/AbortSignal); } | - |
| `options.signal?` | [`AbortSignal`](https://developer.mozilla.org/docs/Web/API/AbortSignal) | An abort signal you can fire to unsubscribe |
#### Returns
`UnsubscribeFn`
A function that you can call to unsubscribe
# EncodedAccount (/api/interfaces/EncodedAccount)
Represents an encoded account and is equivalent to an [Account](/api/interfaces/Account) with `Uint8Array` account
data.
## Example
```ts
{
address: address('1234..5678'),
data: new Uint8Array([1, 2, 3]),
executable: false,
lamports: lamports(1_000_000_000n),
programAddress: address('1111..1111'),
space: 42n,
} satisfies EncodedAccount<'1234..5678'>;
```
## Type Parameters
| Type Parameter | Default type | Description |
| ----------------------------- | ------------ | ------------------------------------------------------------------------- |
| `TAddress` *extends* `string` | `string` | Supply a string literal to define an account having a particular address. |
## Properties
| Property | Modifier | Type |
| --------------------------------------------------- | ---------- | ---------------------------------------------------------- |
| `address` | `readonly` | [`Address`](/api/type-aliases/Address)\<`TAddress`> |
| `data` | `readonly` | [`ReadonlyUint8Array`](/api/interfaces/ReadonlyUint8Array) |
| `executable` | `readonly` | `boolean` |
| `lamports` | `readonly` | [`Lamports`](/api/type-aliases/Lamports) |
| `programAddress` | `readonly` | [`Address`](/api/type-aliases/Address) |
| `space` | `readonly` | `bigint` |
# FetchAccountConfig (/api/interfaces/FetchAccountConfig)
Optional configuration for fetching a singular account.
## Properties
| Property | Type | Default value | Description |
| ---------------------------------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `abortSignal?` | [`AbortSignal`](https://developer.mozilla.org/docs/Web/API/AbortSignal) | `undefined` | - |
| `commitment?` | [`Commitment`](/api/type-aliases/Commitment) | Whichever default is applied by the underlying RpcApi in use. For example, when using an API created by a `createSolanaRpc*()` helper, the default commitment is `"confirmed"` unless configured otherwise. Unmitigated by an API layer on the client, the default commitment applied by the server is `"finalized"`. | Fetch the details of the account as of the highest slot that has reached this level of commitment. |
| `minContextSlot?` | `bigint` | `undefined` | Prevents accessing stale data by enforcing that the RPC node has processed transactions up to this slot |
# FetchAccountsConfig (/api/interfaces/FetchAccountsConfig)
Optional configuration for fetching multiple accounts.
## Properties
| Property | Type | Default value | Description |
| ---------------------------------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `abortSignal?` | [`AbortSignal`](https://developer.mozilla.org/docs/Web/API/AbortSignal) | `undefined` | - |
| `commitment?` | [`Commitment`](/api/type-aliases/Commitment) | Whichever default is applied by the underlying RpcApi in use. For example, when using an API created by a `createSolanaRpc*()` helper, the default commitment is `"confirmed"` unless configured otherwise. Unmitigated by an API layer on the client, the default commitment applied by the server is `"finalized"`. | Fetch the details of the accounts as of the highest slot that has reached this level of commitment. |
| `minContextSlot?` | `bigint` | `undefined` | Prevents accessing stale data by enforcing that the RPC node has processed transactions up to this slot |
# FixedSizeCodec (/api/interfaces/FixedSizeCodec)
An object that can encode and decode a value to and from a fixed-size byte array.
See [Codec](/api/type-aliases/Codec) to learn more about creating and composing codecs.
## Example
```ts
const codec: FixedSizeCodec;
const bytes = codec.encode(42);
const value = codec.decode(bytes); // 42n
const size = codec.fixedSize; // 8
```
## See
* [Codec](/api/type-aliases/Codec)
* [VariableSizeCodec](/api/interfaces/VariableSizeCodec)
## Type Parameters
| Type Parameter | Default type | Description |
| -------------------------- | ------------ | --------------------------------------------- |
| `TFrom` | - | The type of the value to encode. |
| `TTo` *extends* `TFrom` | `TFrom` | The type of the decoded value. |
| `TSize` *extends* `number` | `number` | The fixed size of the encoded value in bytes. |
## Properties
| Property | Modifier | Type | Description |
| ----------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `decode` | `readonly` | (`bytes`, `offset?`) => `TTo` | Decodes the provided byte array at the given offset (or zero) and returns the value directly. |
| `encode` | `readonly` | (`value`) => [`ReadonlyUint8Array`](/api/interfaces/ReadonlyUint8Array)\<[`ArrayBuffer`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)> | Encode the provided value and return the encoded bytes directly. |
| `fixedSize` | `readonly` | `TSize` | The fixed size of the encoded value in bytes. |
| `read` | `readonly` | (`bytes`, `offset`) => \[`TTo`, `number`] | Reads the encoded value from the provided byte array at the given offset. Returns the decoded value and the offset of the next byte after the encoded value. |
| `write` | `readonly` | (`value`, `bytes`, `offset`) => `number` | Writes the encoded value into the provided byte array at the given offset. Returns the offset of the next byte after the encoded value. |
# FixedSizeDecoder (/api/interfaces/FixedSizeDecoder)
An object that can decode a fixed-size byte array into a value of type [TTo](#tto).
See [Decoder](/api/type-aliases/Decoder) to learn more about creating and composing decoders.
## Example
```ts
const decoder: FixedSizeDecoder;
const value = decoder.decode(bytes);
const size = decoder.fixedSize; // 4
```
## See
* [Decoder](/api/type-aliases/Decoder)
* [VariableSizeDecoder](/api/interfaces/VariableSizeDecoder)
## Type Parameters
| Type Parameter | Default type | Description |
| -------------------------- | ------------ | --------------------------------------------- |
| `TTo` | - | The type of the decoded value. |
| `TSize` *extends* `number` | `number` | The fixed size of the encoded value in bytes. |
## Properties
| Property | Modifier | Type | Description |
| ----------------------------------------- | ---------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `decode` | `readonly` | (`bytes`, `offset?`) => `TTo` | Decodes the provided byte array at the given offset (or zero) and returns the value directly. |
| `fixedSize` | `readonly` | `TSize` | The fixed size of the encoded value in bytes. |
| `read` | `readonly` | (`bytes`, `offset`) => \[`TTo`, `number`] | Reads the encoded value from the provided byte array at the given offset. Returns the decoded value and the offset of the next byte after the encoded value. |
# FixedSizeEncoder (/api/interfaces/FixedSizeEncoder)
An object that can encode a value of type [TFrom](#tfrom) into a fixed-size [ReadonlyUint8Array](/api/interfaces/ReadonlyUint8Array).
See [Encoder](/api/type-aliases/Encoder) to learn more about creating and composing encoders.
## Example
```ts
const encoder: FixedSizeEncoder;
const bytes = encoder.encode(42);
const size = encoder.fixedSize; // 4
```
## See
* [Encoder](/api/type-aliases/Encoder)
* [VariableSizeEncoder](/api/interfaces/VariableSizeEncoder)
## Type Parameters
| Type Parameter | Default type | Description |
| -------------------------- | ------------ | --------------------------------------------- |
| `TFrom` | - | The type of the value to encode. |
| `TSize` *extends* `number` | `number` | The fixed size of the encoded value in bytes. |
## Properties
| Property | Modifier | Type | Description |
| ----------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `encode` | `readonly` | (`value`) => [`ReadonlyUint8Array`](/api/interfaces/ReadonlyUint8Array)\<[`ArrayBuffer`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)> | Encode the provided value and return the encoded bytes directly. |
| `fixedSize` | `readonly` | `TSize` | The fixed size of the encoded value in bytes. |
| `write` | `readonly` | (`value`, `bytes`, `offset`) => `number` | Writes the encoded value into the provided byte array at the given offset. Returns the offset of the next byte after the encoded value. |
# Instruction (/api/interfaces/Instruction)
An instruction destined for a given program.
## Example
```ts
type StakeProgramInstruction = Instruction<'StakeConfig11111111111111111111111111111111'>;
```
## Extended by
* [`InstructionWithAccounts`](/api/interfaces/InstructionWithAccounts)
* [`InstructionWithData`](/api/interfaces/InstructionWithData)
## Type Parameters
| Type Parameter | Default type |
| ------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- |
| `TProgramAddress` *extends* `string` | `string` |
| `TAccounts` *extends* readonly ( \| [`AccountLookupMeta`](/api/interfaces/AccountLookupMeta) \| [`AccountMeta`](/api/interfaces/AccountMeta))\[] | readonly ( \| [`AccountLookupMeta`](/api/interfaces/AccountLookupMeta) \| [`AccountMeta`](/api/interfaces/AccountMeta))\[] |
## Properties
| Property | Modifier | Type |
| --------------------------------------------------- | ---------- | ------------------------------------------------------------------------------ |
| `accounts?` | `readonly` | `TAccounts` |
| `data?` | `readonly` | [`ReadonlyUint8Array`](/api/interfaces/ReadonlyUint8Array)\<`ArrayBufferLike`> |
| `programAddress` | `readonly` | [`Address`](/api/type-aliases/Address)\<`TProgramAddress`> |
# InstructionWithAccounts (/api/interfaces/InstructionWithAccounts)
An instruction that loads certain accounts.
## Example
```ts
type InstructionWithTwoAccounts = InstructionWithAccounts<
[
WritableAccount, // First account
RentSysvar, // Second account
]
>;
```
## Extends
* [`Instruction`](/api/interfaces/Instruction)
## Type Parameters
| Type Parameter |
| ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `TAccounts` *extends* readonly ( \| [`AccountLookupMeta`](/api/interfaces/AccountLookupMeta) \| [`AccountMeta`](/api/interfaces/AccountMeta))\[] |
## Properties
| Property | Modifier | Type | Overrides | Inherited from |
| --------------------------------------------------- | ---------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `accounts` | `readonly` | `TAccounts` | [`Instruction`](/api/interfaces/Instruction).[`accounts`](/api/interfaces/Instruction#property-accounts) | - |
| `data?` | `readonly` | [`ReadonlyUint8Array`](/api/interfaces/ReadonlyUint8Array)\<`ArrayBufferLike`> | - | [`Instruction`](/api/interfaces/Instruction).[`data`](/api/interfaces/Instruction#property-data) |
| `programAddress` | `readonly` | [`Address`](/api/type-aliases/Address)\<`string`> | - | [`Instruction`](/api/interfaces/Instruction).[`programAddress`](/api/interfaces/Instruction#property-programaddress) |
# InstructionWithData (/api/interfaces/InstructionWithData)
An instruction whose data conforms to a certain type.
This is most useful when you have a branded `Uint8Array` that represents a particular
instruction's data.
## Example
**A type for the \`AdvanceNonce\` instruction of the System program**
```ts
type AdvanceNonceAccountInstruction<
TNonceAccountAddress extends string = string,
TNonceAuthorityAddress extends string = string,
> = Instruction<'11111111111111111111111111111111'> &
InstructionWithAccounts<
[
WritableAccount,
ReadonlyAccount<'SysvarRecentB1ockHashes11111111111111111111'>,
ReadonlySignerAccount,
]
> &
InstructionWithData;
```
## Extends
* [`Instruction`](/api/interfaces/Instruction)
## Type Parameters
| Type Parameter |
| ---------------------------------------------------------------------------- |
| `TData` *extends* [`ReadonlyUint8Array`](/api/interfaces/ReadonlyUint8Array) |
## Properties
| Property | Modifier | Type | Overrides | Inherited from |
| --------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------- |
| `accounts?` | `readonly` | readonly ( \| [`AccountLookupMeta`](/api/interfaces/AccountLookupMeta)\<`string`, `string`> \| [`AccountMeta`](/api/interfaces/AccountMeta)\<`string`>)\[] | - | [`Instruction`](/api/interfaces/Instruction).[`accounts`](/api/interfaces/Instruction#property-accounts) |
| `data` | `readonly` | `TData` | [`Instruction`](/api/interfaces/Instruction).[`data`](/api/interfaces/Instruction#property-data) | - |
| `programAddress` | `readonly` | [`Address`](/api/type-aliases/Address)\<`string`> | - | [`Instruction`](/api/interfaces/Instruction).[`programAddress`](/api/interfaces/Instruction#property-programaddress) |
# InstructionWithSigners (/api/interfaces/InstructionWithSigners)
Composable type that allows [AccountSignerMetas](/api/interfaces/AccountSignerMeta) to be used inside the instruction's `accounts` array
## Example
```ts
import { AccountRole, Instruction } from '@solana/instructions';
import { generateKeyPairSigner, InstructionWithSigners } from '@solana/signers';
const [authority, buffer] = await Promise.all([
generateKeyPairSigner(),
generateKeyPairSigner(),
]);
const instruction: Instruction & InstructionWithSigners = {
programAddress: address('1234..5678'),
accounts: [
// The authority is a signer account.
{
address: authority.address,
role: AccountRole.READONLY_SIGNER,
signer: authority,
},
// The buffer is a writable account.
{ address: buffer.address, role: AccountRole.WRITABLE },
],
};
```
## Type Parameters
| Type Parameter | Default type | Description |
| ------------------------------------------------------------------------------ | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| `TSigner` *extends* [`TransactionSigner`](/api/type-aliases/TransactionSigner) | [`TransactionSigner`](/api/type-aliases/TransactionSigner) | Optionally provide a narrower type for [TransactionSigners](/api/type-aliases/TransactionSigner). |
| `TAccounts` *extends* readonly `AccountMetaWithSigner`\<`TSigner`>\[] | readonly `AccountMetaWithSigner`\<`TSigner`>\[] | Optionally provide a narrower type for the account metas. |
## Properties
| Property | Modifier | Type |
| ---------------------------------------- | ---------- | ----------- |
| `accounts?` | `readonly` | `TAccounts` |
# OffchainMessageEnvelope (/api/interfaces/OffchainMessageEnvelope)
## Properties
| Property | Modifier | Type | Description |
| ------------------------------------------- | ---------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `content` | `readonly` | [`OffchainMessageBytes`](/api/type-aliases/OffchainMessageBytes) | The bytes of the combined offchain message preamble and content |
| `signatures` | `readonly` | `OffchainMessageSignaturesMap` | A map between the addresses of an offchain message's signers, and the 64-byte Ed25519 signature of the combined message preamble and message content by the private key associated with each. |
# OffchainMessageWithRequiredSignatories (/api/interfaces/OffchainMessageWithRequiredSignatories)
An offchain message having a list of accounts that must sign it in order for it to be valid.
## Type Parameters
| Type Parameter | Default type |
| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `TSignatory` *extends* [`OffchainMessageSignatory`](/api/type-aliases/OffchainMessageSignatory) | [`OffchainMessageSignatory`](/api/type-aliases/OffchainMessageSignatory) |
## Properties
| Property | Type |
| ------------------------------------------------------------- | ------------------------ |
| `requiredSignatories` | readonly `TSignatory`\[] |
# OffchainMessageWithRestrictedAsciiOf1232BytesMaxContent (/api/interfaces/OffchainMessageWithRestrictedAsciiOf1232BytesMaxContent)
An offchain message whose content conforms to
[OffchainMessageContentRestrictedAsciiOf1232BytesMax](/api/type-aliases/OffchainMessageContentRestrictedAsciiOf1232BytesMax)
## Properties
| Property | Modifier | Type |
| ------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `content` | `readonly` | [`OffchainMessageContentRestrictedAsciiOf1232BytesMax`](/api/type-aliases/OffchainMessageContentRestrictedAsciiOf1232BytesMax) |
# OffchainMessageWithUtf8Of1232BytesMaxContent (/api/interfaces/OffchainMessageWithUtf8Of1232BytesMaxContent)
An offchain message whose content conforms to
[offchainMessageContentUtf8Of1232BytesMax](/api/functions/offchainMessageContentUtf8Of1232BytesMax)
## Properties
| Property | Modifier | Type |
| ------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------- |
| `content` | `readonly` | [`OffchainMessageContentUtf8Of1232BytesMax`](/api/type-aliases/OffchainMessageContentUtf8Of1232BytesMax) |
# OffchainMessageWithUtf8Of65535BytesMaxContent (/api/interfaces/OffchainMessageWithUtf8Of65535BytesMaxContent)
An offchain message whose content conforms to
[OffchainMessageContentUtf8Of65535BytesMax](/api/type-aliases/OffchainMessageContentUtf8Of65535BytesMax)
## Properties
| Property | Modifier | Type |
| ------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------- |
| `content` | `readonly` | [`OffchainMessageContentUtf8Of65535BytesMax`](/api/type-aliases/OffchainMessageContentUtf8Of65535BytesMax) |
# ReadonlyUint8Array (/api/interfaces/ReadonlyUint8Array)
A read-only variant of `Uint8Array`.
This type prevents modifications to the array by omitting mutable methods such as `copyWithin`,
`fill`, `reverse`, `set`, and `sort`, while still allowing indexed access to elements.
## Example
```ts
const bytes: ReadonlyUint8Array = new Uint8Array([1, 2, 3]);
console.log(bytes[0]); // 1
bytes[0] = 42; // Type error: Cannot assign to '0' because it is a read-only property.
```
## Extends
* [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<`TArrayBuffer`>, `TypedArrayMutableProperties`>
## Type Parameters
| Type Parameter | Default type |
| ------------------------------------------ | ----------------- |
| `TArrayBuffer` *extends* `ArrayBufferLike` | `ArrayBufferLike` |
## Indexable
```ts
[n: number]: number
```
## Properties
| Property | Modifier | Type | Description | Inherited from |
| --------------------------------------------------------- | ---------- | -------------- | ------------------------------------------------- | ------------------------ |
| `[toStringTag]` | `readonly` | `"Uint8Array"` | - | `Omit.[toStringTag]` |
| `buffer` | `readonly` | `TArrayBuffer` | The ArrayBuffer instance referenced by the array. | `Omit.buffer` |
| `byteLength` | `readonly` | `number` | The length in bytes of the array. | `Omit.byteLength` |
| `byteOffset` | `readonly` | `number` | The offset in bytes of the array. | `Omit.byteOffset` |
| `BYTES_PER_ELEMENT` | `readonly` | `number` | The size in bytes of each element in the array. | `Omit.BYTES_PER_ELEMENT` |
| `length` | `readonly` | `number` | The length of the array. | `Omit.length` |
## Methods
### \[iterator]\()
```ts
iterator: ArrayIterator;
```
#### Returns
`ArrayIterator`\<`number`>
#### Inherited from
```ts
Omit.[iterator]
```
***
### at()
```ts
at(index): number | undefined;
```
Returns the item located at the specified index.
#### Parameters
| Parameter | Type | Description |
| --------- | -------- | --------------------------------------------------------------------------------------------------- |
| `index` | `number` | The zero-based index of the desired code unit. A negative index will count back from the last item. |
#### Returns
`number` | `undefined`
#### Inherited from
```ts
Omit.at
```
***
### entries()
```ts
entries(): ArrayIterator<[number, number]>;
```
Returns an array of key, value pairs for every entry in the array
#### Returns
`ArrayIterator`\<\[`number`, `number`]>
#### Inherited from
```ts
Omit.entries
```
***
### every()
```ts
every(predicate, thisArg?): boolean;
```
Determines whether all the members of an array satisfy the specified test.
#### Parameters
| Parameter | Type | Description |
| ----------- | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `predicate` | (`value`, `index`, `array`) => `unknown` | A function that accepts up to three arguments. The every method calls the predicate function for each element in the array until the predicate returns a value which is coercible to the Boolean value false, or until the end of the array. |
| `thisArg?` | `any` | An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value. |
#### Returns
`boolean`
#### Inherited from
```ts
Omit.every
```
***
### filter()
```ts
filter(predicate, thisArg?): Uint8Array;
```
Returns the elements of an array that meet the condition specified in a callback function.
#### Parameters
| Parameter | Type | Description |
| ----------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| `predicate` | (`value`, `index`, `array`) => `any` | A function that accepts up to three arguments. The filter method calls the predicate function one time for each element in the array. |
| `thisArg?` | `any` | An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value. |
#### Returns
[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<[`ArrayBuffer`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)>
#### Inherited from
```ts
Omit.filter
```
***
### find()
```ts
find(predicate, thisArg?): number | undefined;
```
Returns the value of the first element in the array where predicate is true, and undefined
otherwise.
#### Parameters
| Parameter | Type | Description |
| ----------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `predicate` | (`value`, `index`, `obj`) => `boolean` | find calls predicate once for each element of the array, in ascending order, until it finds one where predicate returns true. If such an element is found, find immediately returns that element value. Otherwise, find returns undefined. |
| `thisArg?` | `any` | If provided, it will be used as the this value for each invocation of predicate. If it is not provided, undefined is used instead. |
#### Returns
`number` | `undefined`
#### Inherited from
```ts
Omit.find
```
***
### findIndex()
```ts
findIndex(predicate, thisArg?): number;
```
Returns the index of the first element in the array where predicate is true, and -1
otherwise.
#### Parameters
| Parameter | Type | Description |
| ----------- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `predicate` | (`value`, `index`, `obj`) => `boolean` | find calls predicate once for each element of the array, in ascending order, until it finds one where predicate returns true. If such an element is found, findIndex immediately returns that element index. Otherwise, findIndex returns -1. |
| `thisArg?` | `any` | If provided, it will be used as the this value for each invocation of predicate. If it is not provided, undefined is used instead. |
#### Returns
`number`
#### Inherited from
```ts
Omit.findIndex
```
***
### findLast()
#### Call Signature
```ts
findLast(predicate, thisArg?): S | undefined;
```
Returns the value of the last element in the array where predicate is true, and undefined
otherwise.
##### Type Parameters
| Type Parameter |
| ---------------------- |
| `S` *extends* `number` |
##### Parameters
| Parameter | Type | Description |
| ----------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `predicate` | (`value`, `index`, `array`) => `value is S` | findLast calls predicate once for each element of the array, in descending order, until it finds one where predicate returns true. If such an element is found, findLast immediately returns that element value. Otherwise, findLast returns undefined. |
| `thisArg?` | `any` | If provided, it will be used as the this value for each invocation of predicate. If it is not provided, undefined is used instead. |
##### Returns
`S` | `undefined`
##### Inherited from
```ts
Omit.findLast
```
#### Call Signature
```ts
findLast(predicate, thisArg?): number | undefined;
```
##### Parameters
| Parameter | Type |
| ----------- | ---------------------------------------- |
| `predicate` | (`value`, `index`, `array`) => `unknown` |
| `thisArg?` | `any` |
##### Returns
`number` | `undefined`
##### Inherited from
```ts
Omit.findLast
```
***
### findLastIndex()
```ts
findLastIndex(predicate, thisArg?): number;
```
Returns the index of the last element in the array where predicate is true, and -1
otherwise.
#### Parameters
| Parameter | Type | Description |
| ----------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `predicate` | (`value`, `index`, `array`) => `unknown` | findLastIndex calls predicate once for each element of the array, in descending order, until it finds one where predicate returns true. If such an element is found, findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. |
| `thisArg?` | `any` | If provided, it will be used as the this value for each invocation of predicate. If it is not provided, undefined is used instead. |
#### Returns
`number`
#### Inherited from
```ts
Omit.findLastIndex
```
***
### forEach()
```ts
forEach(callbackfn, thisArg?): void;
```
Performs the specified action for each element in an array.
#### Parameters
| Parameter | Type | Description |
| ------------ | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `callbackfn` | (`value`, `index`, `array`) => `void` | A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. |
| `thisArg?` | `any` | An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. |
#### Returns
`void`
#### Inherited from
```ts
Omit.forEach
```
***
### includes()
```ts
includes(searchElement, fromIndex?): boolean;
```
Determines whether an array includes a certain element, returning true or false as appropriate.
#### Parameters
| Parameter | Type | Description |
| --------------- | -------- | ------------------------------------------------------------------------- |
| `searchElement` | `number` | The element to search for. |
| `fromIndex?` | `number` | The position in this array at which to begin searching for searchElement. |
#### Returns
`boolean`
#### Inherited from
```ts
Omit.includes
```
***
### indexOf()
```ts
indexOf(searchElement, fromIndex?): number;
```
Returns the index of the first occurrence of a value in an array.
#### Parameters
| Parameter | Type | Description |
| --------------- | -------- | ---------------------------------------------------------------------------------------------------- |
| `searchElement` | `number` | The value to locate in the array. |
| `fromIndex?` | `number` | The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. |
#### Returns
`number`
#### Inherited from
```ts
Omit.indexOf
```
***
### join()
```ts
join(separator?): string;
```
Adds all the elements of an array separated by the specified separator string.
#### Parameters
| Parameter | Type | Description |
| ------------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `separator?` | `string` | A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma. |
#### Returns
`string`
#### Inherited from
```ts
Omit.join
```
***
### keys()
```ts
keys(): ArrayIterator;
```
Returns an list of keys in the array
#### Returns
`ArrayIterator`\<`number`>
#### Inherited from
```ts
Omit.keys
```
***
### lastIndexOf()
```ts
lastIndexOf(searchElement, fromIndex?): number;
```
Returns the index of the last occurrence of a value in an array.
#### Parameters
| Parameter | Type | Description |
| --------------- | -------- | ---------------------------------------------------------------------------------------------------- |
| `searchElement` | `number` | The value to locate in the array. |
| `fromIndex?` | `number` | The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. |
#### Returns
`number`
#### Inherited from
```ts
Omit.lastIndexOf
```
***
### map()
```ts
map(callbackfn, thisArg?): Uint8Array;
```
Calls a defined callback function on each element of an array, and returns an array that
contains the results.
#### Parameters
| Parameter | Type | Description |
| ------------ | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `callbackfn` | (`value`, `index`, `array`) => `number` | A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array. |
| `thisArg?` | `any` | An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. |
#### Returns
[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<[`ArrayBuffer`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)>
#### Inherited from
```ts
Omit.map
```
***
### reduce()
#### Call Signature
```ts
reduce(callbackfn): number;
```
Calls the specified callback function for all the elements in an array. The return value of
the callback function is the accumulated result, and is provided as an argument in the next
call to the callback function.
##### Parameters
| Parameter | Type | Description |
| ------------ | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `callbackfn` | (`previousValue`, `currentValue`, `currentIndex`, `array`) => `number` | A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. |
##### Returns
`number`
##### Inherited from
```ts
Omit.reduce
```
#### Call Signature
```ts
reduce(callbackfn, initialValue): number;
```
##### Parameters
| Parameter | Type |
| -------------- | ---------------------------------------------------------------------- |
| `callbackfn` | (`previousValue`, `currentValue`, `currentIndex`, `array`) => `number` |
| `initialValue` | `number` |
##### Returns
`number`
##### Inherited from
```ts
Omit.reduce
```
#### Call Signature
```ts
reduce(callbackfn, initialValue): U;
```
Calls the specified callback function for all the elements in an array. The return value of
the callback function is the accumulated result, and is provided as an argument in the next
call to the callback function.
##### Type Parameters
| Type Parameter |
| -------------- |
| `U` |
##### Parameters
| Parameter | Type | Description |
| -------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `callbackfn` | (`previousValue`, `currentValue`, `currentIndex`, `array`) => `U` | A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. |
| `initialValue` | `U` | If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. |
##### Returns
`U`
##### Inherited from
```ts
Omit.reduce
```
***
### reduceRight()
#### Call Signature
```ts
reduceRight(callbackfn): number;
```
Calls the specified callback function for all the elements in an array, in descending order.
The return value of the callback function is the accumulated result, and is provided as an
argument in the next call to the callback function.
##### Parameters
| Parameter | Type | Description |
| ------------ | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `callbackfn` | (`previousValue`, `currentValue`, `currentIndex`, `array`) => `number` | A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. |
##### Returns
`number`
##### Inherited from
```ts
Omit.reduceRight
```
#### Call Signature
```ts
reduceRight(callbackfn, initialValue): number;
```
##### Parameters
| Parameter | Type |
| -------------- | ---------------------------------------------------------------------- |
| `callbackfn` | (`previousValue`, `currentValue`, `currentIndex`, `array`) => `number` |
| `initialValue` | `number` |
##### Returns
`number`
##### Inherited from
```ts
Omit.reduceRight
```
#### Call Signature
```ts
reduceRight(callbackfn, initialValue): U;
```
Calls the specified callback function for all the elements in an array, in descending order.
The return value of the callback function is the accumulated result, and is provided as an
argument in the next call to the callback function.
##### Type Parameters
| Type Parameter |
| -------------- |
| `U` |
##### Parameters
| Parameter | Type | Description |
| -------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `callbackfn` | (`previousValue`, `currentValue`, `currentIndex`, `array`) => `U` | A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. |
| `initialValue` | `U` | If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. |
##### Returns
`U`
##### Inherited from
```ts
Omit.reduceRight
```
***
### slice()
```ts
slice(start?, end?): Uint8Array;
```
Returns a section of an array.
#### Parameters
| Parameter | Type | Description |
| --------- | -------- | --------------------------------------------------------------------------------------------------- |
| `start?` | `number` | The beginning of the specified portion of the array. |
| `end?` | `number` | The end of the specified portion of the array. This is exclusive of the element at the index 'end'. |
#### Returns
[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<[`ArrayBuffer`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)>
#### Inherited from
```ts
Omit.slice
```
***
### some()
```ts
some(predicate, thisArg?): boolean;
```
Determines whether the specified callback function returns true for any element of an array.
#### Parameters
| Parameter | Type | Description |
| ----------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `predicate` | (`value`, `index`, `array`) => `unknown` | A function that accepts up to three arguments. The some method calls the predicate function for each element in the array until the predicate returns a value which is coercible to the Boolean value true, or until the end of the array. |
| `thisArg?` | `any` | An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value. |
#### Returns
`boolean`
#### Inherited from
```ts
Omit.some
```
***
### subarray()
```ts
subarray(begin?, end?): Uint8Array;
```
Gets a new Uint8Array view of the ArrayBuffer store for this array, referencing the elements
at begin, inclusive, up to end, exclusive.
#### Parameters
| Parameter | Type | Description |
| --------- | -------- | ---------------------------------------- |
| `begin?` | `number` | The index of the beginning of the array. |
| `end?` | `number` | The index of the end of the array. |
#### Returns
[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<`TArrayBuffer`>
#### Inherited from
```ts
Omit.subarray
```
***
### toLocaleString()
#### Call Signature
```ts
toLocaleString(): string;
```
Converts a number to a string by using the current locale.
##### Returns
`string`
##### Inherited from
```ts
Omit.toLocaleString
```
#### Call Signature
```ts
toLocaleString(locales, options?): string;
```
##### Parameters
| Parameter | Type |
| ---------- | ----------------------- |
| `locales` | `string` \| `string`\[] |
| `options?` | `NumberFormatOptions` |
##### Returns
`string`
##### Inherited from
```ts
Omit.toLocaleString
```
***
### toReversed()
```ts
toReversed(): Uint8Array;
```
Copies the array and returns the copy with the elements in reverse order.
#### Returns
[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<[`ArrayBuffer`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)>
#### Inherited from
```ts
Omit.toReversed
```
***
### toSorted()
```ts
toSorted(compareFn?): Uint8Array;
```
Copies and sorts the array.
#### Parameters
| Parameter | Type | Description |
| ------------ | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `compareFn?` | (`a`, `b`) => `number` | Function used to determine the order of the elements. It is expected to return a negative value if the first argument is less than the second argument, zero if they're equal, and a positive value otherwise. If omitted, the elements are sorted in ascending order. `const myNums = Uint8Array.from([11, 2, 22, 1]); myNums.toSorted((a, b) => a - b) // Uint8Array(4) [1, 2, 11, 22]` |
#### Returns
[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<[`ArrayBuffer`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)>
#### Inherited from
```ts
Omit.toSorted
```
***
### toString()
```ts
toString(): string;
```
Returns a string representation of an array.
#### Returns
`string`
#### Inherited from
```ts
Omit.toString
```
***
### valueOf()
```ts
valueOf(): this;
```
Returns the primitive value of the specified object.
#### Returns
`this`
#### Inherited from
```ts
Omit.valueOf
```
***
### values()
```ts
values(): ArrayIterator;
```
Returns an list of values in the array
#### Returns
`ArrayIterator`\<`number`>
#### Inherited from
```ts
Omit.values
```
***
### with()
```ts
with(index, value): Uint8Array;
```
Copies the array and inserts the given number at the provided index.
#### Parameters
| Parameter | Type | Description |
| --------- | -------- | ---------------------------------------------------------------------------------------------------------- |
| `index` | `number` | The index of the value to overwrite. If the index is negative, then it replaces from the end of the array. |
| `value` | `number` | The value to insert into the copied array. |
#### Returns
[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<[`ArrayBuffer`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)>
A copy of the original array with the inserted value.
#### Inherited from
```ts
Omit.with
```
# RpcSubscriptionsApiMethods (/api/interfaces/RpcSubscriptionsApiMethods)
## Indexable
```ts
[methodName: string]: RpcSubscriptionsApiMethod
```
# RpcSubscriptionsChannel (/api/interfaces/RpcSubscriptionsChannel)
A DataPublisher on which you can subscribe to events of type
[RpcSubscriptionChannelEvents\](/api/type-aliases/RpcSubscriptionChannelEvents).
Additionally, you can use this object to send messages of type `TOutboundMessage` back to the
remote end by calling its [\`send(message)\`](#send) method.
## Extends
* `DataPublisher`\<[`RpcSubscriptionChannelEvents`](/api/type-aliases/RpcSubscriptionChannelEvents)\<`TInboundMessage`>>
## Type Parameters
| Type Parameter |
| ------------------ |
| `TOutboundMessage` |
| `TInboundMessage` |
## Methods
### on()
```ts
on(
channelName,
subscriber,
options?): UnsubscribeFn;
```
Call this to subscribe to data over a named channel.
#### Type Parameters
| Type Parameter |
| ----------------------------------------------------------------------------------------------------------------------------------- |
| `TChannelName` *extends* keyof [`RpcSubscriptionChannelEvents`](/api/type-aliases/RpcSubscriptionChannelEvents)\<`TInboundMessage`> |
#### Parameters
| Parameter | Type | Description |
| ----------------- | --------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| `channelName` | `TChannelName` | The name of the channel on which to subscribe for messages |
| `subscriber` | (`data`) => `void` | The function to call when a message becomes available |
| `options?` | \{ `signal`: [`AbortSignal`](https://developer.mozilla.org/docs/Web/API/AbortSignal); } | - |
| `options.signal?` | [`AbortSignal`](https://developer.mozilla.org/docs/Web/API/AbortSignal) | An abort signal you can fire to unsubscribe |
#### Returns
`UnsubscribeFn`
A function that you can call to unsubscribe
#### Inherited from
```ts
DataPublisher.on
```
***
### send()
```ts
send(message): Promise;
```
#### Parameters
| Parameter | Type |
| --------- | ------------------ |
| `message` | `TOutboundMessage` |
#### Returns
[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`>
# RpcSubscriptionsTransport (/api/interfaces/RpcSubscriptionsTransport)
A function that can act as a transport for a [RpcSubscriptions](/api/type-aliases/RpcSubscriptions). It need only return a
promise for a DataPublisher given the supplied config.
```ts
RpcSubscriptionsTransport(config): Promise>>;
```
A function that can act as a transport for a [RpcSubscriptions](/api/type-aliases/RpcSubscriptions). It need only return a
promise for a DataPublisher given the supplied config.
## Type Parameters
| Type Parameter |
| --------------- |
| `TNotification` |
## Parameters
| Parameter | Type |
| --------- | --------------------------------------------------- |
| `config` | `RpcSubscriptionsTransportConfig`\<`TNotification`> |
## Returns
[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`DataPublisher`\<[`RpcSubscriptionsTransportDataEvents`](/api/type-aliases/RpcSubscriptionsTransportDataEvents)\<`TNotification`>>>
# SolanaErrorWithDeprecatedCause (/api/interfaces/SolanaErrorWithDeprecatedCause)
A variant of [SolanaError](/api/classes/SolanaError) where the `cause` property is deprecated.
This type is returned by [isSolanaError](/api/functions/isSolanaError) when checking for error codes in
[SolanaErrorCodeWithDeprecatedCause](/api/type-aliases/SolanaErrorCodeWithDeprecatedCause). Accessing `cause` on these errors will show
a deprecation warning in IDEs that support JSDoc `@deprecated` tags.
## Extends
* [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<[`SolanaError`](/api/classes/SolanaError)\<`TErrorCode`>, `"cause"`>
## Type Parameters
| Type Parameter | Default type |
| ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| `TErrorCode` *extends* [`SolanaErrorCodeWithDeprecatedCause`](/api/type-aliases/SolanaErrorCodeWithDeprecatedCause) | [`SolanaErrorCodeWithDeprecatedCause`](/api/type-aliases/SolanaErrorCodeWithDeprecatedCause) |
## Properties
| Property | Modifier | Type | Description | Inherited from |
| -------------------------------------- | ---------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| ~~`cause?`~~ | `readonly` | `unknown` | **Deprecated** The `cause` property is deprecated for this error code. Use the error's `context` property instead to access relevant error information. | - |
| `context` | `readonly` | `SolanaErrorCodedContext`\[`TErrorCode`] | Contains context that can assist in understanding or recovering from a [SolanaError](/api/classes/SolanaError). | `Omit.context` |
| `message` | `public` | `string` | - | [`SolanaError`](/api/classes/SolanaError).[`message`](/api/classes/SolanaError#property-message) |
| `name` | `public` | `string` | - | [`SolanaError`](/api/classes/SolanaError).[`name`](/api/classes/SolanaError#property-name) |
| `stack?` | `public` | `string` | - | [`SolanaError`](/api/classes/SolanaError).[`stack`](/api/classes/SolanaError#property-stack) |
# TransactionMessageWithBlockhashLifetime (/api/interfaces/TransactionMessageWithBlockhashLifetime)
Represents a transaction message whose lifetime is defined by the age of the blockhash it
includes.
Such a transaction can only be landed on the network if the current block height of the network
is less than or equal to the value of
`TransactionMessageWithBlockhashLifetime['lifetimeConstraint']['lastValidBlockHeight']`.
## Properties
| Property | Modifier | Type |
| ----------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------ |
| `lifetimeConstraint` | `readonly` | [`BlockhashLifetimeConstraint`](/api/type-aliases/BlockhashLifetimeConstraint) |
# TransactionMessageWithDurableNonceLifetime (/api/interfaces/TransactionMessageWithDurableNonceLifetime)
Represents a transaction message whose lifetime is defined by the value of a nonce it includes.
Such a transaction can only be landed on the network if the nonce is known to the network and has
not already been used to land a different transaction.
## Type Parameters
| Type Parameter | Default type |
| ------------------------------------------- | ------------ |
| `TNonceAccountAddress` *extends* `string` | `string` |
| `TNonceAuthorityAddress` *extends* `string` | `string` |
| `TNonceValue` *extends* `string` | `string` |
## Properties
| Property | Modifier | Type |
| ----------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `instructions` | `readonly` | readonly \[`AdvanceNonceAccountInstruction`\<`TNonceAccountAddress`, `TNonceAuthorityAddress`>, `Instruction`\<`string`, readonly (`AccountLookupMeta`\<`string`, `string`> \| `AccountMeta`\<`string`>)\[]>] |
| `lifetimeConstraint` | `readonly` | [`NonceLifetimeConstraint`](/api/type-aliases/NonceLifetimeConstraint)\<`TNonceValue`> |
# TransactionMessageWithFeePayer (/api/interfaces/TransactionMessageWithFeePayer)
Represents a transaction message for which a fee payer has been declared. A transaction must
conform to this type to be compiled and landed on the network.
## Type Parameters
| Type Parameter | Default type |
| ----------------------------- | ------------ |
| `TAddress` *extends* `string` | `string` |
## Properties
| Property | Modifier | Type |
| --------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `feePayer` | `readonly` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `address`: `Address`\<`TAddress`>; }> |
# TransactionMessageWithFeePayerSigner (/api/interfaces/TransactionMessageWithFeePayerSigner)
Alternative to TransactionMessageWithFeePayer that uses a [TransactionSigner](/api/type-aliases/TransactionSigner) for the fee payer.
## Example
```ts
import { TransactionMessage } from '@solana/transaction-messages';
import { generateKeyPairSigner, TransactionMessageWithFeePayerSigner } from '@solana/signers';
const transactionMessage: TransactionMessage & TransactionMessageWithFeePayerSigner = {
feePayer: await generateKeyPairSigner(),
instructions: [],
version: 0,
};
```
## Type Parameters
| Type Parameter | Default type | Description |
| ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| `TAddress` *extends* `string` | `string` | Supply a string literal to define a fee payer having a particular address. |
| `TSigner` *extends* [`TransactionSigner`](/api/type-aliases/TransactionSigner)\<`TAddress`> | [`TransactionSigner`](/api/type-aliases/TransactionSigner)\<`TAddress`> | Optionally provide a narrower type for the [TransactionSigner](/api/type-aliases/TransactionSigner). |
## Properties
| Property | Modifier | Type |
| --------------------------------------- | ---------- | --------- |
| `feePayer` | `readonly` | `TSigner` |
# TypedEventEmitter (/api/interfaces/TypedEventEmitter)
This type allows you to type `addEventListener` and `removeEventListener` so that the call
signature of the listener matches the event type given.
## Example
```ts
const emitter: TypedEventEmitter<{ message: MessageEvent }> = new WebSocket('wss://api.devnet.solana.com');
emitter.addEventListener('data', handleData); // ERROR. `data` is not a known event type.
emitter.addEventListener('message', message => {
console.log(message.origin); // OK. `message` is a `MessageEvent` so it has an `origin` property.
});
```
## Type Parameters
| Type Parameter |
| -------------------------------- |
| `TEventMap` *extends* `EventMap` |
## Methods
### addEventListener()
```ts
addEventListener(
type,
listener,
options?): void;
```
#### Type Parameters
| Type Parameter |
| ------------------------------------------------------- |
| `TEventType` *extends* `string` \| `number` \| `symbol` |
#### Parameters
| Parameter | Type |
| ---------- | --------------------------------------- |
| `type` | `TEventType` |
| `listener` | `Listener`\<`TEventMap`\[`TEventType`]> |
| `options?` | `boolean` \| `AddEventListenerOptions` |
#### Returns
`void`
***
### removeEventListener()
```ts
removeEventListener(
type,
listener,
options?): void;
```
#### Type Parameters
| Type Parameter |
| ------------------------------------------------------- |
| `TEventType` *extends* `string` \| `number` \| `symbol` |
#### Parameters
| Parameter | Type |
| ---------- | --------------------------------------- |
| `type` | `TEventType` |
| `listener` | `Listener`\<`TEventMap`\[`TEventType`]> |
| `options?` | `boolean` \| `EventListenerOptions` |
#### Returns
`void`
# TypedEventTarget (/api/interfaces/TypedEventTarget)
This type is a superset of `TypedEventEmitter` that allows you to constrain calls to
`dispatchEvent`.
## Example
```ts
const target: TypedEventTarget<{ candyVended: CustomEvent<{ flavour: string }> }> = new EventTarget();
target.dispatchEvent(new CustomEvent('candyVended', { detail: { flavour: 'raspberry' } })); // OK.
target.dispatchEvent(new CustomEvent('candyVended', { detail: { flavor: 'raspberry' } })); // ERROR. Misspelling in detail.
```
## Type Parameters
| Type Parameter |
| -------------------------------- |
| `TEventMap` *extends* `EventMap` |
## Methods
### addEventListener()
```ts
addEventListener(
type,
listener,
options?): void;
```
#### Type Parameters
| Type Parameter |
| ------------------------------------------------------- |
| `TEventType` *extends* `string` \| `number` \| `symbol` |
#### Parameters
| Parameter | Type |
| ---------- | --------------------------------------- |
| `type` | `TEventType` |
| `listener` | `Listener`\<`TEventMap`\[`TEventType`]> |
| `options?` | `boolean` \| `AddEventListenerOptions` |
#### Returns
`void`
***
### dispatchEvent()
```ts
dispatchEvent(ev): void;
```
#### Type Parameters
| Type Parameter |
| ------------------------------------------------------- |
| `TEventType` *extends* `string` \| `number` \| `symbol` |
#### Parameters
| Parameter | Type |
| --------- | -------------------------- |
| `ev` | `TEventMap`\[`TEventType`] |
#### Returns
`void`
***
### removeEventListener()
```ts
removeEventListener(
type,
listener,
options?): void;
```
#### Type Parameters
| Type Parameter |
| ------------------------------------------------------- |
| `TEventType` *extends* `string` \| `number` \| `symbol` |
#### Parameters
| Parameter | Type |
| ---------- | --------------------------------------- |
| `type` | `TEventType` |
| `listener` | `Listener`\<`TEventMap`\[`TEventType`]> |
| `options?` | `boolean` \| `EventListenerOptions` |
#### Returns
`void`
# VariableSizeCodec (/api/interfaces/VariableSizeCodec)
An object that can encode and decode a value to and from a variable-size byte array.
See [Codec](/api/type-aliases/Codec) to learn more about creating and composing codecs.
## Example
```ts
const codec: VariableSizeCodec;
const bytes = codec.encode(42);
const value = codec.decode(bytes); // 42n
const size = codec.getSizeFromValue(42);
```
## See
* [Codec](/api/type-aliases/Codec)
* [FixedSizeCodec](/api/interfaces/FixedSizeCodec)
## Type Parameters
| Type Parameter | Default type | Description |
| ----------------------- | ------------ | -------------------------------- |
| `TFrom` | - | The type of the value to encode. |
| `TTo` *extends* `TFrom` | `TFrom` | The type of the decoded value. |
## Properties
| Property | Modifier | Type | Description |
| ------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `decode` | `readonly` | (`bytes`, `offset?`) => `TTo` | Decodes the provided byte array at the given offset (or zero) and returns the value directly. |
| `encode` | `readonly` | (`value`) => [`ReadonlyUint8Array`](/api/interfaces/ReadonlyUint8Array)\<[`ArrayBuffer`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)> | Encode the provided value and return the encoded bytes directly. |
| `getSizeFromValue` | `readonly` | (`value`) => `number` | Returns the size of the encoded value in bytes for a given input. |
| `maxSize?` | `readonly` | `number` | The maximum possible size of an encoded value in bytes, if applicable. |
| `read` | `readonly` | (`bytes`, `offset`) => \[`TTo`, `number`] | Reads the encoded value from the provided byte array at the given offset. Returns the decoded value and the offset of the next byte after the encoded value. |
| `write` | `readonly` | (`value`, `bytes`, `offset`) => `number` | Writes the encoded value into the provided byte array at the given offset. Returns the offset of the next byte after the encoded value. |
# VariableSizeDecoder (/api/interfaces/VariableSizeDecoder)
An object that can decode a variable-size byte array into a value of type [TTo](#tto).
See [Decoder](/api/type-aliases/Decoder) to learn more about creating and composing decoders.
## Example
```ts
const decoder: VariableSizeDecoder;
const value = decoder.decode(bytes);
```
## See
* [Decoder](/api/type-aliases/Decoder)
* VariableSizeDecoder
## Type Parameters
| Type Parameter | Description |
| -------------- | ------------------------------ |
| `TTo` | The type of the decoded value. |
## Properties
| Property | Modifier | Type | Description |
| -------------------------------------- | ---------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `decode` | `readonly` | (`bytes`, `offset?`) => `TTo` | Decodes the provided byte array at the given offset (or zero) and returns the value directly. |
| `maxSize?` | `readonly` | `number` | The maximum possible size of an encoded value in bytes, if applicable. |
| `read` | `readonly` | (`bytes`, `offset`) => \[`TTo`, `number`] | Reads the encoded value from the provided byte array at the given offset. Returns the decoded value and the offset of the next byte after the encoded value. |
# VariableSizeEncoder (/api/interfaces/VariableSizeEncoder)
An object that can encode a value of type [TFrom](#tfrom) into a variable-size [ReadonlyUint8Array](/api/interfaces/ReadonlyUint8Array).
See [Encoder](/api/type-aliases/Encoder) to learn more about creating and composing encoders.
## Example
```ts
const encoder: VariableSizeEncoder;
const bytes = encoder.encode('hello');
const size = encoder.getSizeFromValue('hello');
```
## See
* [Encoder](/api/type-aliases/Encoder)
* [FixedSizeEncoder](/api/interfaces/FixedSizeEncoder)
## Type Parameters
| Type Parameter | Description |
| -------------- | -------------------------------- |
| `TFrom` | The type of the value to encode. |
## Properties
| Property | Modifier | Type | Description |
| ------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `encode` | `readonly` | (`value`) => [`ReadonlyUint8Array`](/api/interfaces/ReadonlyUint8Array)\<[`ArrayBuffer`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)> | Encode the provided value and return the encoded bytes directly. |
| `getSizeFromValue` | `readonly` | (`value`) => `number` | Returns the size of the encoded value in bytes for a given input. |
| `maxSize?` | `readonly` | `number` | The maximum possible size of an encoded value in bytes, if applicable. |
| `write` | `readonly` | (`value`, `bytes`, `offset`) => `number` | Writes the encoded value into the provided byte array at the given offset. Returns the offset of the next byte after the encoded value. |
# AccountInfoBase (/api/type-aliases/AccountInfoBase)
```ts
type AccountInfoBase = Readonly<{
executable: boolean;
lamports: Lamports;
owner: Address;
space: bigint;
}>;
```
# AccountInfoWithBase58Bytes (/api/type-aliases/AccountInfoWithBase58Bytes)
```ts
type AccountInfoWithBase58Bytes = Readonly<{
data: Base58EncodedBytes;
}>;
```
## Deprecated
# AccountInfoWithBase58EncodedData (/api/type-aliases/AccountInfoWithBase58EncodedData)
```ts
type AccountInfoWithBase58EncodedData = Readonly<{
data: Base58EncodedDataResponse;
}>;
```
## Deprecated
# AccountInfoWithBase64EncodedData (/api/type-aliases/AccountInfoWithBase64EncodedData)
```ts
type AccountInfoWithBase64EncodedData = Readonly<{
data: Base64EncodedDataResponse;
}>;
```
# AccountInfoWithBase64EncodedZStdCompressedData (/api/type-aliases/AccountInfoWithBase64EncodedZStdCompressedData)
```ts
type AccountInfoWithBase64EncodedZStdCompressedData = Readonly<{
data: Base64EncodedZStdCompressedDataResponse;
}>;
```
# AccountInfoWithJsonData (/api/type-aliases/AccountInfoWithJsonData)
```ts
type AccountInfoWithJsonData = Readonly<{
data: | Base64EncodedDataResponse
| Readonly<{
parsed: {
info?: object;
type: string;
};
program: string;
space: bigint;
}>;
}>;
```
# AccountInfoWithPubkey (/api/type-aliases/AccountInfoWithPubkey)
```ts
type AccountInfoWithPubkey = Readonly<{
account: TAccount;
pubkey: Address;
}>;
```
## Type Parameters
| Type Parameter |
| --------------------------------------------------------------------------- |
| `TAccount` *extends* [`AccountInfoBase`](/api/type-aliases/AccountInfoBase) |
# AccountNotificationsApi (/api/type-aliases/AccountNotificationsApi)
```ts
type AccountNotificationsApi = object;
```
## Methods
### accountNotifications()
#### Call Signature
```ts
accountNotifications(address, config): SolanaRpcResponse;
```
Subscribe for notifications when there is a change in the Lamports or data of the
account at the specified address.
The notification format is the same as seen in the GetAccountInfoApi.getAccountInfo
RPC HTTP method.
If the account has data, it will be returned in the response as a tuple whose first element
is a base64-encoded string.
##### Parameters
| Parameter | Type |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `address` | `Address` |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: `Commitment`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"base64"`; }> |
##### Returns
`SolanaRpcResponse`\<`AccountInfoBase` & `AccountInfoWithBase64EncodedData`>
##### See
[https://solana.com/docs/rpc/websocket/accountsubscribe](https://solana.com/docs/rpc/websocket/accountsubscribe)
#### Call Signature
```ts
accountNotifications(address, config): SolanaRpcResponse;
```
Subscribe for notifications when there is a change in the Lamports or data of the
account at the specified address.
The notification format is the same as seen in the GetAccountInfoApi.getAccountInfo
RPC HTTP method.
If the account has data, it will first be compressed using
[ZStandard](https://facebook.github.io/zstd/) and the result will be returned in the response
as a tuple whose first element is a base64-encoded string.
##### Parameters
| Parameter | Type |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `address` | `Address` |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: `Commitment`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"base64+zstd"`; }> |
##### Returns
`SolanaRpcResponse`\<`AccountInfoBase` & `AccountInfoWithBase64EncodedZStdCompressedData`>
##### See
[https://solana.com/docs/rpc/websocket/accountsubscribe](https://solana.com/docs/rpc/websocket/accountsubscribe)
#### Call Signature
```ts
accountNotifications(address, config): SolanaRpcResponse;
```
Subscribe for notifications when there is a change in the Lamports or data of the
account at the specified address.
The notification format is the same as seen in the GetAccountInfoApi.getAccountInfo
RPC HTTP method.
If the account has data, the server will attempt to process it using a parser specific to the
account's owning program. If successful, the parsed data will be returned in the response as
JSON. Otherwise, the raw account data will be returned in the response as a tuple whose first
element is a base64-encoded string.
##### Parameters
| Parameter | Type |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `address` | `Address` |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: `Commitment`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"jsonParsed"`; }> |
##### Returns
`SolanaRpcResponse`\<`AccountInfoBase` & `AccountInfoWithJsonData`>
##### See
[https://solana.com/docs/rpc/websocket/accountsubscribe](https://solana.com/docs/rpc/websocket/accountsubscribe)
#### Call Signature
```ts
accountNotifications(address, config): SolanaRpcResponse;
```
Subscribe for notifications when there is a change in the Lamports or data of the
account at the specified address.
The notification format is the same as seen in the GetAccountInfoApi.getAccountInfo
RPC HTTP method.
If the account has data, it will be returned in the response as a tuple whose first element
is a base58-encoded string. If the account contains more than 129 bytes of data, the `data`
field will materialize as the string `"error: data too large for bs58 encoding"`.
##### Parameters
| Parameter | Type |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `address` | `Address` |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: `Commitment`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"base58"`; }> |
##### Returns
`SolanaRpcResponse`\<`AccountInfoBase` & `AccountInfoWithBase58EncodedData`>
##### See
[https://solana.com/docs/rpc/websocket/accountsubscribe](https://solana.com/docs/rpc/websocket/accountsubscribe)
#### Call Signature
```ts
accountNotifications(address, config?): SolanaRpcResponse;
```
Subscribe for notifications when there is a change in the Lamports or data of the
account at the specified address.
The notification format is the same as seen in the GetAccountInfoApi.getAccountInfo
RPC HTTP method.
If the account has data, it will be returned in the response as a base58-encoded string. If
the account contains more than 129 bytes of data, the `data` field will materialize as the
string `"error: data too large for bs58 encoding"`.
##### Parameters
| Parameter | Type |
| --------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `address` | `Address` |
| `config?` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: `Commitment`; }> |
##### Returns
`SolanaRpcResponse`\<`AccountInfoBase` & `AccountInfoWithBase58Bytes`>
##### See
[https://solana.com/docs/rpc/websocket/accountsubscribe](https://solana.com/docs/rpc/websocket/accountsubscribe)
# ActionResult (/api/type-aliases/ActionResult)
```ts
type ActionResult = object;
```
Reactive state and controls for an async action managed by [useAction](/api/functions/useAction)
(and plugin-specific hooks built on top of it).
Lifecycle: starts at `idle`. Each `dispatch(...)` flips to `running`, then to `success` or
`error` depending on the outcome. `data` from a prior `success` and `error` from a prior failure
both persist through subsequent `running` states for stale-while-revalidate UX. `success` clears
`error`; only `reset()` clears `data`.
Calling `dispatch(...)` while a previous call is in flight aborts the first via its
`AbortSignal` and replaces it. Fire-and-forget `dispatch` callers never observe this; awaiters of
a superseded `dispatchAsync` call see a rejection with an `AbortError`, filterable via
`isAbortError` from `@solana/promises`.
## Type Parameters
| Type Parameter | Description |
| --------------------------------------- | ------------------------------------------------------------------------------------------------ |
| `TArgs` *extends* readonly `unknown`\[] | The argument tuple `dispatch` accepts; forwarded to the wrapped function after the abort signal. |
| `TResult` | The value the wrapped function resolves to on success. |
## Properties
### data
```ts
data: TResult | undefined;
```
The result on success, or `undefined` if no successful call has happened yet.
***
### dispatch
```ts
dispatch: (...args) => void;
```
Trigger the action and forget it. Returns `undefined` synchronously and never throws β
failures surface on `status` / `error`, and superseded or `reset()`-aborted calls produce no
state change. This is the variant to wire into UI event handlers (`onClick={() => dispatch()}`):
there is no promise to handle, so it can't produce an unhandled rejection. Calling `dispatch`
again while a prior call is in flight aborts the first. Stable reference.
#### Parameters
| Parameter | Type |
| --------- | ------- |
| ...`args` | `TArgs` |
#### Returns
`void`
#### See
[ActionResult.dispatchAsync](#dispatchasync) when you need the resolved value or propagated errors.
***
### dispatchAsync
```ts
dispatchAsync: (...args) => Promise;
```
Trigger the action and await the outcome. Resolves with the wrapped function's result, or
rejects with the thrown error. Calling `dispatch`/`dispatchAsync` again while a prior call is
in flight aborts the first and rejects its promise with an `AbortError`. Stable reference.
Mirrors `ReactiveActionStore.dispatchAsync`. Use this from imperative callers that read the
resolved value (e.g. to navigate on success); filter supersede rejections with `isAbortError`
from `@solana/promises`. Prefer [ActionResult.dispatch](#dispatch) from event handlers that don't
await β its returned promise, left unhandled, surfaces every supersede/abort as an
`unhandledrejection`.
#### Parameters
| Parameter | Type |
| --------- | ------- |
| ...`args` | `TArgs` |
#### Returns
[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`TResult`>
***
### error
```ts
error: unknown;
```
The error from the most recent failed call, or `undefined`. Persists through a subsequent
`running` state so UIs can keep showing the prior failure while a retry is in flight; a
subsequent `success` clears it.
***
### isError
```ts
isError: boolean;
```
`true` when `status === 'error'`.
***
### isIdle
```ts
isIdle: boolean;
```
`true` when `status === 'idle'`.
***
### isRunning
```ts
isRunning: boolean;
```
`true` when `status === 'running'` β a dispatch is in flight.
***
### isSuccess
```ts
isSuccess: boolean;
```
`true` when `status === 'success'`.
***
### reset
```ts
reset: () => void;
```
Reset state back to `idle`, aborting any in-flight call. Stable reference.
#### Returns
`void`
***
### status
```ts
status: "error" | "idle" | "running" | "success";
```
The current lifecycle status as a discriminated string. The `isIdle` / `isRunning` /
`isSuccess` / `isError` booleans below are derived from this β pick whichever reads better
at the call site.
# Address (/api/type-aliases/Address)
```ts
type Address = Brand, "Address">;
```
Represents a string that validates as a Solana address. Functions that require well-formed
addresses should specify their inputs in terms of this type.
Whenever you need to validate an arbitrary string as a base58-encoded address, use the
[address](/api/functions/address), [assertIsAddress](/api/functions/assertIsAddress), or [isAddress](/api/functions/isAddress) functions in this package.
## Type Parameters
| Type Parameter | Default type |
| ----------------------------- | ------------ |
| `TAddress` *extends* `string` | `string` |
# AddressesByLookupTableAddress (/api/type-aliases/AddressesByLookupTableAddress)
```ts
type AddressesByLookupTableAddress = object;
```
Represents a mapping of lookup table addresses to the addresses of the accounts that are stored
in them.
## Index Signature
```ts
[lookupTableAddress: Address]: Address[]
```
# AffinePoint (/api/type-aliases/AffinePoint)
```ts
type AffinePoint = NominalType<"affinePoint", TValidity> & T;
```
Use this to produce a new type that satisfies the original type, but adds extra type information
that marks the type as being an affine point over a field that either lies on a given curve
(is valid) or does not (is invalid).
## Type Parameters
| Type Parameter | Description |
| ------------------------------------------- | ------------------------------------- |
| `T` | The underlying type |
| `TValidity` *extends* `AffinePointValidity` | Whether the point is valid or invalid |
## Example
```ts
const address = 'dv1ZAGvdsz5hHLwWXsVnM94hWf1pjbKVau1QVkaMJ92';
const onCurveAddress = address as AffinePoint;
onCurveAddress satisfies AffinePoint<'dv1ZAGvdsz5hHLwWXsVnM94hWf1pjbKVau1QVkaMJ92', 'valid'>; // OK
onCurveAddress satisfies AffinePoint; // OK
onCurveAddress satisfies AffinePoint; // ERROR
address satisfies AffinePoint; // ERROR
address satisfies AffinePoint; // ERROR
```
# AllowedNumericKeypaths (/api/type-aliases/AllowedNumericKeypaths)
```ts
type AllowedNumericKeypaths = Partial>;
```
## Type Parameters
| Type Parameter |
| -------------- |
| `TApi` |
# ArrayCodecConfig (/api/type-aliases/ArrayCodecConfig)
```ts
type ArrayCodecConfig = object;
```
Defines the configuration options for array codecs.
## Type Parameters
| Type Parameter | Description |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| `TPrefix` *extends* \| [`NumberCodec`](/api/type-aliases/NumberCodec) \| [`NumberDecoder`](/api/type-aliases/NumberDecoder) \| [`NumberEncoder`](/api/type-aliases/NumberEncoder) | A number codec, decoder, or encoder used for size prefixing. |
## Properties
### description?
```ts
optional description?: string;
```
An optional description for the codec, that will be used in error messages.
***
### size?
```ts
optional size?: ArrayLikeCodecSize;
```
Specifies how the size of the array is determined.
* A [NumberCodec](/api/type-aliases/NumberCodec), [NumberDecoder](/api/type-aliases/NumberDecoder), or [NumberEncoder](/api/type-aliases/NumberEncoder) stores a size prefix before encoding the array.
* A `number` enforces a fixed number of elements.
* `"remainder"` uses all remaining bytes to infer the array length (only for fixed-size items).
#### Default Value
A `u32` size prefix.
# ArrayLikeCodecSize (/api/type-aliases/ArrayLikeCodecSize)
```ts
type ArrayLikeCodecSize = TPrefix | number | "remainder";
```
Defines the possible size strategies for array-like codecs (`array`, `map`, and `set`).
The size of the collection can be determined using one of the following approaches:
* A [NumberCodec](/api/type-aliases/NumberCodec), [NumberDecoder](/api/type-aliases/NumberDecoder), or [NumberEncoder](/api/type-aliases/NumberEncoder) to store a size prefix.
* A fixed `number` of items, enforcing an exact length.
* The string `"remainder"`, which infers the number of items by consuming the rest of the available bytes.
## Type Parameters
| Type Parameter | Description |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| `TPrefix` *extends* \| [`NumberCodec`](/api/type-aliases/NumberCodec) \| [`NumberDecoder`](/api/type-aliases/NumberDecoder) \| [`NumberEncoder`](/api/type-aliases/NumberEncoder) | A number codec, decoder, or encoder used for size prefixing. |
# AsyncClient (/api/type-aliases/AsyncClient)
```ts
type AsyncClient = Promise> & object;
```
An asynchronous wrapper that represents a promise of a client.
The `AsyncClient` type is returned when an async plugin is applied to a client.
It behaves like a `Promise>` but with an additional `use` method
that allows chaining more plugins before the promise resolves.
This enables fluent chaining of both synchronous and asynchronous plugins
without having to await intermediate promises.
## Type Declaration
| Name | Type | Description |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| `use()` | \<`TOutput`>(`plugin`) => `AsyncClient`\<`TOutput` *extends* [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\ ? `U` *extends* `object` ? `U` : `never` : `TOutput`> | Applies a plugin to the client once it resolves. |
## Type Parameters
| Type Parameter | Description |
| -------------------------- | ---------------------------------------------------------------------- |
| `TSelf` *extends* `object` | The shape of the client object that this async client will resolve to. |
# Base58EncodedBytes (/api/type-aliases/Base58EncodedBytes)
```ts
type Base58EncodedBytes = EncodedString;
```
# Base58EncodedDataResponse (/api/type-aliases/Base58EncodedDataResponse)
```ts
type Base58EncodedDataResponse = [Base58EncodedBytes, "base58"];
```
# Base64EncodedBytes (/api/type-aliases/Base64EncodedBytes)
```ts
type Base64EncodedBytes = EncodedString;
```
# Base64EncodedDataResponse (/api/type-aliases/Base64EncodedDataResponse)
```ts
type Base64EncodedDataResponse = [Base64EncodedBytes, "base64"];
```
# Base64EncodedWireTransaction (/api/type-aliases/Base64EncodedWireTransaction)
```ts
type Base64EncodedWireTransaction = Brand, "Base64EncodedWireTransaction">;
```
Represents the wire format of a transaction as a base64-encoded string.
# Base64EncodedZStdCompressedBytes (/api/type-aliases/Base64EncodedZStdCompressedBytes)
```ts
type Base64EncodedZStdCompressedBytes = EncodedString, "base64">;
```
# Base64EncodedZStdCompressedDataResponse (/api/type-aliases/Base64EncodedZStdCompressedDataResponse)
```ts
type Base64EncodedZStdCompressedDataResponse = [Base64EncodedZStdCompressedBytes, "base64+zstd"];
```
# BaseOffchainMessageV0 (/api/type-aliases/BaseOffchainMessageV0)
```ts
type BaseOffchainMessageV0 = Omit;
```
# BaseOffchainMessageV1 (/api/type-aliases/BaseOffchainMessageV1)
```ts
type BaseOffchainMessageV1 = Omit;
```
# BaseSignerConfig (/api/type-aliases/BaseSignerConfig)
```ts
type BaseSignerConfig = Readonly<{
abortSignal?: AbortSignal;
}>;
```
The base configuration object for all signers β including transaction and message signers.
# BinaryFixedPoint (/api/type-aliases/BinaryFixedPoint)
```ts
type BinaryFixedPoint = object;
```
A fixed-point number whose scale is a power of 2. The stored `raw` bigint
represents the mathematical value `raw / 2 ** fractionalBits`.
Binary fixed-point is the fastest fractional representation to compute
with β rescaling is a bit shift β so it is the preferred choice for
audio samples, graphics, probabilities, and any other quantity where
performance matters and the scale does not need to align with decimal
digits.
## Example
A 16-bit signed Q1.15 audio sample:
```ts
type AudioSample = BinaryFixedPoint<'signed', 16, 15>;
```
## See
* [DecimalFixedPoint](/api/type-aliases/DecimalFixedPoint)
* [Signedness](/api/type-aliases/Signedness)
## Type Parameters
| Type Parameter | Description |
| -------------------------------------------------------------------- | ----------------------------------------------------- |
| `TSignedness` *extends* [`Signedness`](/api/type-aliases/Signedness) | Whether the value can be negative. |
| `TTotalBits` *extends* `number` | The total number of bits used to store the raw value. |
| `TFractionalBits` *extends* `number` | The number of bits to the right of the binary point. |
## Properties
### fractionalBits
```ts
readonly fractionalBits: TFractionalBits;
```
***
### kind
```ts
readonly kind: "binaryFixedPoint";
```
***
### raw
```ts
readonly raw: bigint;
```
***
### signedness
```ts
readonly signedness: TSignedness;
```
***
### totalBits
```ts
readonly totalBits: TTotalBits;
```
# BitArrayCodecConfig (/api/type-aliases/BitArrayCodecConfig)
```ts
type BitArrayCodecConfig = object;
```
Defines the configuration options for bit array codecs.
A bit array codec encodes an array of booleans into bits, packing them into bytes.
This configuration allows adjusting the bit ordering.
## See
* [getBitArrayEncoder](/api/functions/getBitArrayEncoder)
* [getBitArrayDecoder](/api/functions/getBitArrayDecoder)
* [getBitArrayCodec](/api/functions/getBitArrayCodec)
## Properties
### backward?
```ts
optional backward?: boolean;
```
Determines whether the bits should be read in reverse order.
* `false` (default): The first boolean is stored in the most significant bit (MSB-first).
* `true`: The first boolean is stored in the least significant bit (LSB-first).
#### Default Value
`false`
# BlockNotificationsApi (/api/type-aliases/BlockNotificationsApi)
```ts
type BlockNotificationsApi = object;
```
## Methods
### blockNotifications()
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards`: `false`; `transactionDetails`: `"none"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: `BlockNotificationsNotificationBlock` | `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards?`: `true`; `transactionDetails`: `"none"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithRewards`
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only signatures of transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards`: `false`; `transactionDetails`: `"signatures"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithSignatures`
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only signatures of transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards?`: `true`; `transactionDetails`: `"signatures"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithRewards` & `BlockNotificationsNotificationBlockWithSignatures`
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards`: `false`; `transactionDetails`: `"accounts"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForAccounts`\<`BlockNotificationsMaxSupportedTransactionVersion`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding?`: `BlockNotificationsEncoding`; `showRewards`: `false`; `transactionDetails`: `"accounts"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForAccounts`\<`void`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards?`: `true`; `transactionDetails`: `"accounts"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithRewards` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForAccounts`\<`BlockNotificationsMaxSupportedTransactionVersion`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding?`: `BlockNotificationsEncoding`; `showRewards?`: `true`; `transactionDetails`: `"accounts"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithRewards` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForAccounts`\<`void`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"base58"`; `maxSupportedTransactionVersion`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards`: `false`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullBase58`\<`BlockNotificationsMaxSupportedTransactionVersion`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"base58"`; `showRewards`: `false`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullBase58`\<`void`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"base58"`; `maxSupportedTransactionVersion`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards?`: `true`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithRewards` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullBase58`\<`BlockNotificationsMaxSupportedTransactionVersion`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"base58"`; `showRewards?`: `true`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithRewards` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullBase58`\<`void`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"base64"`; `maxSupportedTransactionVersion`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards`: `false`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullBase64`\<`BlockNotificationsMaxSupportedTransactionVersion`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"base64"`; `showRewards`: `false`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullBase64`\<`void`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"base64"`; `maxSupportedTransactionVersion`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards?`: `true`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithRewards` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullBase64`\<`BlockNotificationsMaxSupportedTransactionVersion`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"base64"`; `showRewards?`: `true`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithRewards` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullBase64`\<`void`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"jsonParsed"`; `maxSupportedTransactionVersion`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards`: `false`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullJsonParsed`\<`BlockNotificationsMaxSupportedTransactionVersion`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"jsonParsed"`; `showRewards`: `false`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullJsonParsed`\<`void`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"jsonParsed"`; `maxSupportedTransactionVersion`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards?`: `true`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithRewards` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullJsonParsed`\<`BlockNotificationsMaxSupportedTransactionVersion`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding`: `"jsonParsed"`; `showRewards?`: `true`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithRewards` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullJsonParsed`\<`void`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding?`: `"json"`; `maxSupportedTransactionVersion`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards`: `false`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullJson`\<`BlockNotificationsMaxSupportedTransactionVersion`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding?`: `"json"`; `showRewards`: `false`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullJson`\<`void`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding?`: `"json"`; `maxSupportedTransactionVersion`: `BlockNotificationsMaxSupportedTransactionVersion`; `showRewards?`: `true`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithRewards` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullJson`\<`BlockNotificationsMaxSupportedTransactionVersion`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
#### Call Signature
```ts
blockNotifications(filter, config?): SolanaRpcResponse>
| null;
}>>;
```
Subscribe to receive notifications anytime a new block reaches the specified level of
commitment.
The notification format is the same as seen in the GetBlockApi.getBlock RPC HTTP
method.
##### Parameters
| Parameter | Type | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter` | `BlockNotificationsFilter` | Notifications will only be produced for blocks that match this filter. Only transactions that match this filter will be included in the block. |
| `config?` | [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `commitment?`: [`Omit`](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)\<`Commitment`, `"processed"`>; `encoding?`: `BlockNotificationsEncoding`; `maxSupportedTransactionVersion?`: `BlockNotificationsMaxSupportedTransactionVersion`; `rewards?`: `boolean`; `transactionDetails?`: `BlockNotificationTransactionDetailsMode`; }> & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{ `encoding?`: `"json"`; `showRewards?`: `true`; `transactionDetails?`: `"full"`; }> | - |
##### Returns
`SolanaRpcResponse`\<`BlockNotificationsNotificationBase` & [`Readonly`](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype)\<\{
`block`: | `BlockNotificationsNotificationBlock` & `BlockNotificationsNotificationBlockWithRewards` & `BlockNotificationsNotificationBlockWithTransactions`\<`TransactionForFullJson`\<`void`>>
\| `null`;
}>>
##### See
[https://solana.com/docs/rpc/websocket/blocksubscribe](https://solana.com/docs/rpc/websocket/blocksubscribe)
# Blockhash (/api/type-aliases/Blockhash)
```ts
type Blockhash = Brand, "Blockhash">;
```
# BlockhashLifetimeConstraint (/api/type-aliases/BlockhashLifetimeConstraint)
```ts
type BlockhashLifetimeConstraint = Readonly<{
blockhash: Blockhash;
lastValidBlockHeight: bigint;
}>;
```
A constraint which, when applied to a transaction message, makes that transaction message
eligible to land on the network. The transaction message will continue to be eligible to land
until the network considers the `blockhash` to be expired.
This can happen when the network proceeds past the `lastValidBlockHeight` for which the blockhash
is considered valid, or when the network switches to a fork where that blockhash is not present.
# BooleanCodecConfig (/api/type-aliases/BooleanCodecConfig)
```ts
type BooleanCodecConfig = object;
```
Defines the configuration options for boolean codecs.
A boolean codec encodes `true` as `1` and `false` as `0`.
The `size` option allows customizing the number codec used for storage.
## See
* [getBooleanEncoder](/api/functions/getBooleanEncoder)
* [getBooleanDecoder](/api/functions/getBooleanDecoder)
* [getBooleanCodec](/api/functions/getBooleanCodec)
## Type Parameters
| Type Parameter | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| `TSize` *extends* \| [`NumberCodec`](/api/type-aliases/NumberCodec) \| [`NumberDecoder`](/api/type-aliases/NumberDecoder) \| [`NumberEncoder`](/api/type-aliases/NumberEncoder) | A number codec, encoder, or decoder used for boolean representation. |
## Properties
### size?
```ts
optional size?: TSize;
```
The number codec used to store boolean values.
* By default, booleans are stored as a `u8` (`1` for `true`, `0` for `false`).
* A custom number codec can be provided to change the storage size.
#### Default Value
`u8`
# Brand (/api/type-aliases/Brand)
```ts
type Brand = NominalType<"brand", TBrandName> & T;
```
Use this to produce a new type that satisfies the original type, but not the other way around.
That is to say, the branded type is acceptable wherever the original type is specified, but
wherever the branded type is specified, the original type will be insufficient.
You can use this to create specialized instances of strings, numbers, objects, and more which
you would like to assert are special in some way (eg. numbers that are non-negative, strings
which represent the names of foods, objects that have passed validation).
## Type Parameters
| Type Parameter | Description |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `T` | The base type to brand |
| `TBrandName` *extends* `string` | A string that identifies a particular brand. Branded types with identical names will satisfy each other so long as their base types satisfy each other. Branded types with different names will never satisfy each other. |
## Example
```ts
const unverifiedName = 'Alice';
const verifiedName = unverifiedName as Brand<'Alice', 'VerifiedName'>;
'Alice' satisfies Brand; // ERROR
'Alice' satisfies Brand<'Alice', 'VerifiedName'>; // ERROR
unverifiedName satisfies Brand; // ERROR
verifiedName satisfies Brand<'Bob', 'VerifiedName'>; // ERROR
verifiedName satisfies Brand<'Alice', 'VerifiedName'>; // OK
verifiedName satisfies Brand; // OK
```
# Callable (/api/type-aliases/Callable)
```ts
type Callable = (...args) => any;
```
## Parameters
| Parameter | Type |
| --------- | -------- |
| ...`args` | `any`\[] |
## Returns
`any`
# CanceledSingleTransactionPlanResult (/api/type-aliases/CanceledSingleTransactionPlanResult)
```ts
type CanceledSingleTransactionPlanResult = object;
```
A [SingleTransactionPlanResult](/api/type-aliases/SingleTransactionPlanResult) with a 'canceled' status.
This type represents a single transaction whose execution was canceled
before it could complete. It includes the original planned message and
a context object in which every field is optional β including
[TransactionMessage](/api/type-aliases/TransactionMessage), [Signature](/api/type-aliases/Signature), and [Transaction](/api/type-aliases/Transaction)
fields that may or may not be populated depending on how far execution
progressed before cancellation.
You may use the [canceledSingleTransactionPlanResult](/api/functions/canceledSingleTransactionPlanResult) helper to
create objects of this type.
## Example
Creating a canceled result from a transaction message.
```ts
const result = canceledSingleTransactionPlanResult(transactionMessage);
result satisfies CanceledSingleTransactionPlanResult;
```
## See
* [canceledSingleTransactionPlanResult](/api/functions/canceledSingleTransactionPlanResult)
* [isCanceledSingleTransactionPlanResult](/api/functions/isCanceledSingleTransactionPlanResult)
* [assertIsCanceledSingleTransactionPlanResult](/api/functions/assertIsCanceledSingleTransactionPlanResult)
## Type Parameters
| Type Parameter | Default type | Description |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `TContext` *extends* [`TransactionPlanResultContext`](/api/type-aliases/TransactionPlanResultContext) | [`TransactionPlanResultContextWithSignature`](/api/type-aliases/TransactionPlanResultContextWithSignature) | The type of the context object that may be passed along with the result. |
| `TTransactionMessage` *extends* [`TransactionMessage`](/api/type-aliases/TransactionMessage) & [`TransactionMessageWithFeePayer`](/api/interfaces/TransactionMessageWithFeePayer) | [`TransactionMessage`](/api/type-aliases/TransactionMessage) & [`TransactionMessageWithFeePayer`](/api/interfaces/TransactionMessageWithFeePayer) | The type of the transaction message. |
## Properties
### context
```ts
context: Readonly>;
```
***
### kind
```ts
kind: "single";
```
***
### plannedMessage
```ts
plannedMessage: TTransactionMessage;
```
***
### planType
```ts
planType: "transactionPlanResult";
```
***
### status
```ts
status: "canceled";
```
# Client (/api/type-aliases/Client)
```ts
type Client = TSelf & object;
```
A client that can be extended with plugins.
The `Client` type represents a client object that can be built up through
the application of one or more plugins. It provides a `use` method to
apply plugins, either synchronously (returning a new `Client`) or
asynchronously (returning an [AsyncClient](/api/type-aliases/AsyncClient)).
## Type Declaration
| Name | Type | Description |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------- |
| `use()` | \<`TOutput`>(`plugin`) => `TOutput` *extends* [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\ ? [`AsyncClient`](/api/type-aliases/AsyncClient)\<`U` *extends* `object` ? `U` : `never`> : `Client`\<`TOutput`> | Applies a plugin to extend or transform the client. |
## Type Parameters
| Type Parameter | Description |
| -------------------------- | --------------------------------------------------------------------- |
| `TSelf` *extends* `object` | The current shape of the client object including all applied plugins. |
# ClientPlugin (/api/type-aliases/ClientPlugin)
```ts
type ClientPlugin = (input) => TOutput;
```
Defines a plugin that transforms or extends a client with additional functionality.
For instance, plugins may add RPC capabilities, wallet integration, transaction building,
or other features necessary for interacting with the Solana blockchain.
Plugins are functions that take a client object as input and return a new client object
or a promise that resolves to a new client object. This allows for both synchronous
and asynchronous transformations and extensions of the client.
Plugins are usually applied using the `use` method on a [Client](/api/type-aliases/Client) or [AsyncClient](/api/type-aliases/AsyncClient)
instance, which [createClient](/api/functions/createClient) provides as a starting point.
## Type Parameters
| Type Parameter | Description |
| --------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| `TInput` *extends* `object` | The input client object type that this plugin accepts. |
| `TOutput` *extends* \| [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`object`> \| `object` | The output type. Either a new client object or a promise resolving to one. |
## Parameters
| Parameter | Type |
| --------- | -------- |
| `input` | `TInput` |
## Returns
`TOutput`
## Examples
**Basic RPC plugin**
Given an RPC endpoint, this plugin adds an `rpc` property to the client.
```ts
import { createClient, createSolanaRpc } from '@solana/kit';
// Define a simple RPC plugin.
function rpcPlugin(endpoint: string) {
return (client: T) => ({...client, rpc: createSolanaRpc(endpoint) });
}
// Use the plugin.
const client = createClient().use(rpcPlugin('https://api.mainnet-beta.solana.com'));
await client.rpc.getLatestBlockhash().send();
```
**Async plugin that generates a payer wallet**
The following plugin shows how to create an asynchronous plugin that generates a new keypair signer.
```ts
import { createClient, generateKeypairSigner } from '@solana/kit';
// Define a plugin that generates a new keypair signer.
function generatedPayerPlugin() {
return async (client: T) => ({...client, payer: await generateKeypairSigner() });
}
// Use the plugin.
const client = await createClient().use(generatedPayerPlugin());
console.log(client.payer.address);
```
**Plugins with input requirements**
A plugin can specify required properties on the input client. The example below requires the
client to already have a `payer` signer attached to the client in order to perform an airdrop.
```ts
import { createClient, TransactionSigner, Lamports, lamports } from '@solana/kit';
// Define a plugin that airdrops lamports to the payer set on the client.
function airdropPayerPlugin(lamports: Lamports) {
return async (client: T) => {
await myAirdropFunction(client.payer, lamports);
return client;
};
}
// Use the plugins.
const client = await createClient()
.use(generatedPayerPlugin()) // This is required before using the airdrop plugin.
.use(airdropPayerPlugin(lamports(1_000_000_000n)));
```
**Chaining plugins**
Multiple plugins β asynchronous or not β can be chained together to build up complex clients.
The example below demonstrates how to gradually build a client with multiple plugins.
Notice how, despite having multiple asynchronous plugins, we only need to `await` the final result.
This is because the `use` method on `AsyncClient` returns another `AsyncClient`, allowing for seamless chaining.
```ts
import { createClient, createSolanaRpc, createSolanaRpcSubscriptions, generateKeypairSigner } from '@solana/kit';
// Define multiple plugins.
function rpcPlugin(endpoint: string) {
return (client: T) => ({...client, rpc: createSolanaRpc(endpoint) });
}
function rpcSubscriptionsPlugin(endpoint: string) {
return (client: T) => ({...client, rpc: createSolanaRpcSubscriptions(endpoint) });
}
function generatedPayerPlugin() {
return async (client: T) => ({...client, payer: await generateKeypairSigner() });
}
function generatedAuthorityPlugin() {
return async