Full Code of anza-xyz/solana-web3.js for AI

main 5e1644db15cf cached
2013 files
10.1 MB
2.7M tokens
3271 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (10,969K chars total). Download the full file to get everything.
Repository: anza-xyz/solana-web3.js
Branch: main
Commit: 5e1644db15cf
Files: 2013
Total size: 10.1 MB

Directory structure:
gitextract_q5tmvg6z/

├── .agents/
│   └── skills/
│       ├── changesets/
│       │   ├── INJECT.md
│       │   └── SKILL.md
│       ├── shipping-git/
│       │   ├── INJECT.md
│       │   └── SKILL.md
│       ├── shipping-graphite/
│       │   ├── INJECT.md
│       │   └── SKILL.md
│       ├── ts-docblocks/
│       │   ├── INJECT.md
│       │   └── SKILL.md
│       └── ts-readme/
│           ├── INJECT.md
│           └── SKILL.md
├── .bundlemonrc.json
├── .changeset/
│   ├── bold-drinks-strive.md
│   ├── brown-candles-relax.md
│   ├── clever-spies-shout.md
│   ├── config.json
│   ├── some-views-pick.md
│   └── thin-cats-drop.md
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── 0_bug.md
│   │   ├── 1_feature.md
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   ├── label-actions.yml
│   └── workflows/
│       ├── actions/
│       │   ├── install-dependencies/
│       │   │   └── action.yml
│       │   └── setup-validator/
│       │       └── action.yml
│       ├── autolock-inactive-threads.yml
│       ├── backport.yml
│       ├── bundlesize.yml
│       ├── codeql.yml
│       ├── deploy-docs.yml
│       ├── dismiss-stale-pr-reviews.yml
│       ├── label-actions.yml
│       ├── manage-stale-threads.yml
│       ├── preview-docs.yml
│       ├── publish-packages.yml
│       ├── pull-requests.yml
│       └── update-docs-lockfile.yml
├── .gitignore
├── .npmrc
├── .prettierignore
├── .skills-inject.json
├── .vscode/
│   ├── extensions.json
│   └── settings.json
├── CLAUDE.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── docs/
│   ├── .eslintrc.json
│   ├── .gitignore
│   ├── .npmrc
│   ├── .prettierignore
│   ├── README.md
│   ├── build-api-docs.sh
│   ├── build-api-index.js
│   ├── cli.json
│   ├── content/
│   │   ├── .prettierrc
│   │   ├── docs/
│   │   │   ├── advanced-guides/
│   │   │   │   ├── codecs.mdx
│   │   │   │   ├── errors.mdx
│   │   │   │   ├── index.mdx
│   │   │   │   ├── instruction-plans.mdx
│   │   │   │   ├── keypairs.mdx
│   │   │   │   ├── kit-without-a-client.mdx
│   │   │   │   ├── meta.json
│   │   │   │   ├── offchain-messages.mdx
│   │   │   │   ├── signers.mdx
│   │   │   │   └── transactions.mdx
│   │   │   ├── getting-started.mdx
│   │   │   ├── guides/
│   │   │   │   ├── fetching-accounts.mdx
│   │   │   │   ├── index.mdx
│   │   │   │   ├── meta.json
│   │   │   │   ├── rpc-subscriptions.mdx
│   │   │   │   ├── rpc.mdx
│   │   │   │   ├── sending-multiple-transactions.mdx
│   │   │   │   ├── sending-transactions.mdx
│   │   │   │   ├── setting-up-signers.mdx
│   │   │   │   ├── testing-and-local-development.mdx
│   │   │   │   └── using-program-plugins.mdx
│   │   │   ├── index.mdx
│   │   │   ├── meta.json
│   │   │   ├── plugins/
│   │   │   │   ├── available-plugins.mdx
│   │   │   │   ├── creating-custom-plugins.mdx
│   │   │   │   ├── generating-program-plugins.mdx
│   │   │   │   ├── index.mdx
│   │   │   │   └── meta.json
│   │   │   ├── tree-shaking.tsx
│   │   │   └── upgrade-guide.mdx
│   │   ├── home/
│   │   │   ├── example-codecs.mdx
│   │   │   ├── example-rpc-subscriptions.mdx
│   │   │   ├── example-rpc.mdx
│   │   │   ├── example-signers.mdx
│   │   │   ├── example-solana-programs.mdx
│   │   │   └── example-transactions.mdx
│   │   └── recipes/
│   │       ├── airdropping-tokens.mdx
│   │       ├── creating-a-token.mdx
│   │       ├── index.mdx
│   │       ├── meta.json
│   │       └── transferring-sol.mdx
│   ├── next.config.mjs
│   ├── package.json
│   ├── postcss.config.mjs
│   ├── source.config.ts
│   ├── src/
│   │   ├── app/
│   │   │   ├── (home)/
│   │   │   │   ├── layout.tsx
│   │   │   │   ├── page/
│   │   │   │   │   ├── code.tsx
│   │   │   │   │   ├── cta.tsx
│   │   │   │   │   ├── example-context.tsx
│   │   │   │   │   ├── features.tsx
│   │   │   │   │   ├── footer.tsx
│   │   │   │   │   └── hero.tsx
│   │   │   │   └── page.tsx
│   │   │   ├── api/
│   │   │   │   ├── [[...slug]]/
│   │   │   │   │   └── page.tsx
│   │   │   │   └── layout.tsx
│   │   │   ├── docs/
│   │   │   │   ├── [[...slug]]/
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── layout.tsx
│   │   │   │   ├── navbar.tsx
│   │   │   │   └── sidebar.tsx
│   │   │   ├── global.css
│   │   │   ├── layout.config.tsx
│   │   │   ├── layout.tsx
│   │   │   ├── llms-full.txt/
│   │   │   │   └── route.ts
│   │   │   ├── llms.mdx/
│   │   │   │   ├── api/
│   │   │   │   │   └── [[...slug]]/
│   │   │   │   │       └── route.ts
│   │   │   │   ├── docs/
│   │   │   │   │   └── [[...slug]]/
│   │   │   │   │       └── route.ts
│   │   │   │   └── recipes/
│   │   │   │       └── [[...slug]]/
│   │   │   │           └── route.ts
│   │   │   ├── logo.tsx
│   │   │   ├── recipes/
│   │   │   │   ├── [[...slug]]/
│   │   │   │   │   └── page.tsx
│   │   │   │   └── layout.tsx
│   │   │   └── styles/
│   │   │       ├── brand.css
│   │   │       ├── fumadocs-overrides.css
│   │   │       └── typography.css
│   │   ├── components/
│   │   │   ├── card-tabs.tsx
│   │   │   ├── page-actions.tsx
│   │   │   └── ui/
│   │   │       ├── button.tsx
│   │   │       └── popover.tsx
│   │   └── lib/
│   │       ├── InKeepSearchDialog.tsx
│   │       ├── Overrides.tsx
│   │       ├── Spread.tsx
│   │       ├── ThemedImage.tsx
│   │       ├── cn.ts
│   │       ├── get-llm-text.ts
│   │       └── source.ts
│   └── tsconfig.json
├── eslint.config.mjs
├── examples/
│   ├── README.md
│   ├── deserialize-transaction/
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── example.ts
│   │   └── tsconfig.json
│   ├── react-app/
│   │   ├── .gitignore
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── components/
│   │   │   │   ├── AirdropButton.tsx
│   │   │   │   ├── Balance.tsx
│   │   │   │   ├── BaseSignMessageFeaturePanel.tsx
│   │   │   │   ├── ConnectWalletMenu.tsx
│   │   │   │   ├── ConnectWalletMenuItem.tsx
│   │   │   │   ├── DisconnectButton.tsx
│   │   │   │   ├── ErrorDialog.tsx
│   │   │   │   ├── FeatureNotSupportedCallout.tsx
│   │   │   │   ├── FeaturePanel.tsx
│   │   │   │   ├── Nav.tsx
│   │   │   │   ├── SignInMenu.tsx
│   │   │   │   ├── SignInMenuItem.tsx
│   │   │   │   ├── SlotIndicator.tsx
│   │   │   │   ├── SolanaPartialSignTransactionFeaturePanel.tsx
│   │   │   │   ├── SolanaSignAndSendTransactionFeaturePanel.tsx
│   │   │   │   ├── SolanaSignMessageFeaturePanel.tsx
│   │   │   │   ├── SolanaSignTransactionFeaturePanel.tsx
│   │   │   │   ├── UnconnectableWalletMenuItem.tsx
│   │   │   │   ├── WalletAccountIcon.tsx
│   │   │   │   └── WalletMenuItemContent.tsx
│   │   │   ├── context/
│   │   │   │   ├── ChainContext.tsx
│   │   │   │   ├── ChainContextProvider.tsx
│   │   │   │   ├── RpcContext.tsx
│   │   │   │   └── RpcContextProvider.tsx
│   │   │   ├── errors.tsx
│   │   │   ├── functions/
│   │   │   │   └── balance.ts
│   │   │   ├── hooks/
│   │   │   │   └── useStable.ts
│   │   │   ├── index.css
│   │   │   ├── main.tsx
│   │   │   ├── reset.css
│   │   │   ├── routes/
│   │   │   │   └── root.tsx
│   │   │   ├── signerBytes.json
│   │   │   ├── storage.ts
│   │   │   └── vite-env.d.ts
│   │   ├── tsconfig.app.json
│   │   ├── tsconfig.json
│   │   ├── tsconfig.node.json
│   │   └── vite.config.ts
│   ├── rpc-custom-api/
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── example.ts
│   │   └── tsconfig.json
│   ├── rpc-transport-throttled/
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── example.ts
│   │   └── tsconfig.json
│   ├── signers/
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── example-keypair.json
│   │   │   └── example.ts
│   │   └── tsconfig.json
│   ├── token-airdrop/
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── example.ts
│   │   └── tsconfig.json
│   ├── transfer-lamports/
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── example.ts
│   │   └── tsconfig.json
│   └── utils/
│       ├── .gitignore
│       ├── .prettierignore
│       ├── LICENSE
│       ├── createLogger.ts
│       ├── package.json
│       ├── pressAnyKeyPrompt.ts
│       ├── tsconfig.declarations.json
│       └── tsconfig.json
├── package.json
├── packages/
│   ├── accounts/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── decode-account-test.ts
│   │   │   │   ├── fetch-account-test.ts
│   │   │   │   ├── maybe-account-test.ts
│   │   │   │   └── parse-account-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── decode-account-typetest.ts
│   │   │   │   ├── fetch-account-typetest.ts
│   │   │   │   ├── maybe-account-typetest.ts
│   │   │   │   └── parse-account-typetest.ts
│   │   │   ├── account.ts
│   │   │   ├── decode-account.ts
│   │   │   ├── fetch-account.ts
│   │   │   ├── index.ts
│   │   │   ├── maybe-account.ts
│   │   │   ├── parse-account.ts
│   │   │   └── rpc-api/
│   │   │       ├── common.ts
│   │   │       ├── getAccountInfo.ts
│   │   │       ├── getMultipleAccounts.ts
│   │   │       └── index.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── addresses/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── address-test.ts
│   │   │   │   ├── coercions-test.ts
│   │   │   │   ├── curve-test.ts
│   │   │   │   ├── program-derived-address-test.ts
│   │   │   │   └── public-key-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── coercions-typetest.ts
│   │   │   ├── address.ts
│   │   │   ├── curve-internal.ts
│   │   │   ├── curve.ts
│   │   │   ├── index.ts
│   │   │   ├── program-derived-address.ts
│   │   │   ├── public-key.ts
│   │   │   └── vendor/
│   │   │       └── noble/
│   │   │           └── ed25519.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── assertions/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── crypto-test.ts
│   │   │   │   └── subtle-crypto-test.ts
│   │   │   ├── crypto.ts
│   │   │   ├── index.ts
│   │   │   └── subtle-crypto.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── build-scripts/
│   │   ├── .npmrc
│   │   ├── README.md
│   │   ├── build-time-constants.d.ts
│   │   ├── constants.ts
│   │   ├── create-github-release.ts
│   │   ├── current-linked-version.ts
│   │   ├── dev-flag.ts
│   │   ├── getBaseConfig.ts
│   │   ├── github-api.ts
│   │   ├── maybe-tag-latest.ts
│   │   ├── package.json
│   │   ├── prior-release.ts
│   │   ├── register-node-globals.cjs
│   │   ├── tag-release-manually.ts
│   │   ├── tsconfig.json
│   │   ├── tsup.config.browser.ts
│   │   ├── tsup.config.library.ts
│   │   ├── tsup.config.package.bundled_8gpidqojr8.mjs
│   │   └── tsup.config.package.ts
│   ├── codecs/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   └── index.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── codecs-core/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __benchmarks__/
│   │   │   │   └── run.ts
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── add-codec-sentinel-test.ts
│   │   │   │   ├── add-codec-size-prefix-test.ts
│   │   │   │   ├── array-buffers-test.ts
│   │   │   │   ├── bytes-test.ts
│   │   │   │   ├── codec-test.ts
│   │   │   │   ├── combine-codec.ts
│   │   │   │   ├── decoder-entire-byte-array-test.ts
│   │   │   │   ├── fix-codec-size-test.ts
│   │   │   │   ├── offset-codec-test.ts
│   │   │   │   ├── pad-codec-test.ts
│   │   │   │   ├── resize-codec-test.ts
│   │   │   │   ├── reverse-codec-test.ts
│   │   │   │   └── transform-codec-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── add-codec-sentinel-typetest.ts
│   │   │   │   ├── add-codec-size-prefix-typetest.ts
│   │   │   │   ├── array-buffers-typetest.ts
│   │   │   │   ├── bytes-typetest.ts
│   │   │   │   ├── codec-typetest.ts
│   │   │   │   ├── combine-codec-typetest.ts
│   │   │   │   ├── fix-codec-size-typetest.ts
│   │   │   │   ├── offset-codec-typetest.ts
│   │   │   │   ├── pad-codec-typetest.ts
│   │   │   │   ├── resize-codec-typetest.ts
│   │   │   │   ├── reverse-codec-typetest.ts
│   │   │   │   └── transform-codec-typetest.ts
│   │   │   ├── add-codec-sentinel.ts
│   │   │   ├── add-codec-size-prefix.ts
│   │   │   ├── array-buffers.ts
│   │   │   ├── assertions.ts
│   │   │   ├── bytes.ts
│   │   │   ├── codec.ts
│   │   │   ├── combine-codec.ts
│   │   │   ├── decoder-entire-byte-array.ts
│   │   │   ├── fix-codec-size.ts
│   │   │   ├── index.ts
│   │   │   ├── offset-codec.ts
│   │   │   ├── pad-codec.ts
│   │   │   ├── readonly-uint8array.ts
│   │   │   ├── resize-codec.ts
│   │   │   ├── reverse-codec.ts
│   │   │   └── transform-codec.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── codecs-data-structures/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── array-test.ts
│   │   │   │   ├── bit-array-test.ts
│   │   │   │   ├── boolean-test.ts
│   │   │   │   ├── bytes-test.ts
│   │   │   │   ├── constant-test.ts
│   │   │   │   ├── discriminated-union-test.ts
│   │   │   │   ├── enum-helpers-test.ts
│   │   │   │   ├── enum-test.ts
│   │   │   │   ├── hidden-prefix-test.ts
│   │   │   │   ├── hidden-suffix-test.ts
│   │   │   │   ├── literal-union-test.ts
│   │   │   │   ├── map-test.ts
│   │   │   │   ├── nullable-test.ts
│   │   │   │   ├── pattern-match-test.ts
│   │   │   │   ├── predicate-test.ts
│   │   │   │   ├── set-test.ts
│   │   │   │   ├── struct-test.ts
│   │   │   │   ├── tuple-test.ts
│   │   │   │   ├── union-test.ts
│   │   │   │   └── unit-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── array-typetest.ts
│   │   │   │   ├── bit-array-typetest.ts
│   │   │   │   ├── boolean-typetest.ts
│   │   │   │   ├── bytes-typetest.ts
│   │   │   │   ├── constant-typetest.ts
│   │   │   │   ├── discriminated-union-typetest.ts
│   │   │   │   ├── enum-typetest.ts
│   │   │   │   ├── hidden-prefix-typetest.ts
│   │   │   │   ├── hidden-suffix-typetest.ts
│   │   │   │   ├── literal-union-typetest.ts
│   │   │   │   ├── map-typetest.ts
│   │   │   │   ├── nullable-typetest.ts
│   │   │   │   ├── pattern-match-typetest.ts
│   │   │   │   ├── predicate-typetest.ts
│   │   │   │   ├── set-typetest.ts
│   │   │   │   ├── struct-typetest.ts
│   │   │   │   ├── tuple-typetest.ts
│   │   │   │   └── union-typetest.ts
│   │   │   ├── array.ts
│   │   │   ├── assertions.ts
│   │   │   ├── bit-array.ts
│   │   │   ├── boolean.ts
│   │   │   ├── bytes.ts
│   │   │   ├── constant.ts
│   │   │   ├── discriminated-union.ts
│   │   │   ├── enum-helpers.ts
│   │   │   ├── enum.ts
│   │   │   ├── hidden-prefix.ts
│   │   │   ├── hidden-suffix.ts
│   │   │   ├── index.ts
│   │   │   ├── literal-union.ts
│   │   │   ├── map.ts
│   │   │   ├── nullable.ts
│   │   │   ├── pattern-match.ts
│   │   │   ├── predicate.ts
│   │   │   ├── set.ts
│   │   │   ├── struct.ts
│   │   │   ├── tuple.ts
│   │   │   ├── union.ts
│   │   │   ├── unit.ts
│   │   │   └── utils.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── codecs-numbers/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── f32-test.ts
│   │   │   │   ├── f64-test.ts
│   │   │   │   ├── i128-test.ts
│   │   │   │   ├── i16-test.ts
│   │   │   │   ├── i32-test.ts
│   │   │   │   ├── i64-test.ts
│   │   │   │   ├── i8-test.ts
│   │   │   │   ├── short-u16-test.ts
│   │   │   │   ├── u128-test.ts
│   │   │   │   ├── u16-test.ts
│   │   │   │   ├── u32-test.ts
│   │   │   │   ├── u64-test.ts
│   │   │   │   └── u8-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── codecs-typetest.ts
│   │   │   ├── assertions.ts
│   │   │   ├── common.ts
│   │   │   ├── f32.ts
│   │   │   ├── f64.ts
│   │   │   ├── i128.ts
│   │   │   ├── i16.ts
│   │   │   ├── i32.ts
│   │   │   ├── i64.ts
│   │   │   ├── i8.ts
│   │   │   ├── index.ts
│   │   │   ├── short-u16.ts
│   │   │   ├── u128.ts
│   │   │   ├── u16.ts
│   │   │   ├── u32.ts
│   │   │   ├── u64.ts
│   │   │   ├── u8.ts
│   │   │   └── utils.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── codecs-strings/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __benchmarks__/
│   │   │   │   └── run.ts
│   │   │   ├── __tests__/
│   │   │   │   ├── base10-test.ts
│   │   │   │   ├── base16-test.ts
│   │   │   │   ├── base58-test.ts
│   │   │   │   ├── base64-test.ts
│   │   │   │   ├── baseX-reslice-test.ts
│   │   │   │   ├── string-test.ts
│   │   │   │   └── utf8-test.ts
│   │   │   ├── assertions.ts
│   │   │   ├── base10.ts
│   │   │   ├── base16.ts
│   │   │   ├── base58.ts
│   │   │   ├── base64.ts
│   │   │   ├── baseX-reslice.ts
│   │   │   ├── baseX.ts
│   │   │   ├── index.ts
│   │   │   ├── null-characters.ts
│   │   │   └── utf8.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── compat/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── address-test.ts
│   │   │   │   ├── instruction-test.ts
│   │   │   │   ├── keypair-test.ts
│   │   │   │   └── transaction-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── address-typetest.ts
│   │   │   │   ├── instruction-typetest.ts
│   │   │   │   ├── keypair-typetest.ts
│   │   │   │   └── transaction-typetest.ts
│   │   │   ├── address.ts
│   │   │   ├── index.ts
│   │   │   ├── instruction.ts
│   │   │   ├── keypair.ts
│   │   │   └── transaction.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── crypto-impl/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.browser.ts
│   │   │   └── index.node.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── tsup.config.ts
│   ├── errors/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bin/
│   │   │   └── cli.mjs
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── RPC_INTEGER_OVERFLOW-test.ts
│   │   │   │   ├── context-test.ts
│   │   │   │   ├── error-test.ts
│   │   │   │   ├── instruction-error-test.ts
│   │   │   │   ├── json-rpc-error-test.ts
│   │   │   │   ├── message-formatter-test.ts
│   │   │   │   ├── simulation-errors-test.ts
│   │   │   │   └── transaction-error-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── error-typetest.ts
│   │   │   ├── cli.ts
│   │   │   ├── codes.ts
│   │   │   ├── context.ts
│   │   │   ├── error.ts
│   │   │   ├── index.ts
│   │   │   ├── instruction-error.ts
│   │   │   ├── json-rpc-error.ts
│   │   │   ├── message-formatter.ts
│   │   │   ├── messages.ts
│   │   │   ├── rpc-enum-errors.ts
│   │   │   ├── simulation-errors.ts
│   │   │   ├── stack-trace.ts
│   │   │   └── transaction-error.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── eslint-config/
│   │   ├── .npmrc
│   │   ├── eslint.config.mjs
│   │   ├── eslint.config.react.mjs
│   │   ├── package.json
│   │   └── tsconfig.json
│   ├── event-target-impl/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.browser.ts
│   │   │   └── index.node.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── tsup.config.ts
│   ├── fast-stable-stringify/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   └── index-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── index-typetest.ts
│   │   │   └── index.ts
│   │   ├── tsconfig.declarations.json
│   │   └── tsconfig.json
│   ├── fetch-impl/
│   │   ├── .npmrc
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── __benchmarks__/
│   │   │       └── run.ts
│   │   └── tsconfig.json
│   ├── fixed-points/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── assertions-test.ts
│   │   │   │   ├── binary-arithmetics-test.ts
│   │   │   │   ├── binary-codec-test.ts
│   │   │   │   ├── binary-comparisons-test.ts
│   │   │   │   ├── binary-conversions-test.ts
│   │   │   │   ├── binary-core-test.ts
│   │   │   │   ├── binary-formatting-test.ts
│   │   │   │   ├── binary-guards-test.ts
│   │   │   │   ├── decimal-arithmetics-test.ts
│   │   │   │   ├── decimal-codec-test.ts
│   │   │   │   ├── decimal-comparisons-test.ts
│   │   │   │   ├── decimal-conversions-test.ts
│   │   │   │   ├── decimal-core-test.ts
│   │   │   │   ├── decimal-formatting-test.ts
│   │   │   │   ├── decimal-guards-test.ts
│   │   │   │   ├── parsing-test.ts
│   │   │   │   └── rounding-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── binary-arithmetics-typetest.ts
│   │   │   │   ├── binary-codec-typetest.ts
│   │   │   │   ├── binary-conversions-typetest.ts
│   │   │   │   ├── binary-core-typetest.ts
│   │   │   │   ├── binary-guards-typetest.ts
│   │   │   │   ├── decimal-arithmetics-typetest.ts
│   │   │   │   ├── decimal-codec-typetest.ts
│   │   │   │   ├── decimal-conversions-typetest.ts
│   │   │   │   ├── decimal-core-typetest.ts
│   │   │   │   └── decimal-guards-typetest.ts
│   │   │   ├── assertions.ts
│   │   │   ├── binary/
│   │   │   │   ├── arithmetics.ts
│   │   │   │   ├── codecs.ts
│   │   │   │   ├── comparisons.ts
│   │   │   │   ├── conversions.ts
│   │   │   │   ├── core.ts
│   │   │   │   ├── formatting.ts
│   │   │   │   ├── guards.ts
│   │   │   │   └── index.ts
│   │   │   ├── codecs.ts
│   │   │   ├── decimal/
│   │   │   │   ├── arithmetics.ts
│   │   │   │   ├── codecs.ts
│   │   │   │   ├── comparisons.ts
│   │   │   │   ├── conversions.ts
│   │   │   │   ├── core.ts
│   │   │   │   ├── formatting.ts
│   │   │   │   ├── guards.ts
│   │   │   │   └── index.ts
│   │   │   ├── formatting.ts
│   │   │   ├── index.ts
│   │   │   ├── parsing.ts
│   │   │   ├── rounding.ts
│   │   │   └── signedness.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── fs-impl/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.browser.ts
│   │   │   └── index.node.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── tsup.config.ts
│   ├── functional/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   └── pipe-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── pipe-typetest.ts
│   │   │   ├── index.ts
│   │   │   └── pipe.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── instruction-plans/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── append-instruction-plan-test.ts
│   │   │   │   ├── instruction-plan-input-test.ts
│   │   │   │   ├── instruction-plan-test.ts
│   │   │   │   ├── transaction-plan-errors-test.ts
│   │   │   │   ├── transaction-plan-executor-test.ts
│   │   │   │   ├── transaction-plan-result-test.ts
│   │   │   │   ├── transaction-plan-test.ts
│   │   │   │   └── transaction-planner-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── append-instruction-plan-typetest.ts
│   │   │   │   ├── instruction-plan-input-typetest.ts
│   │   │   │   ├── instruction-plan-typetest.ts
│   │   │   │   ├── transaction-plan-executor-typetest.ts
│   │   │   │   ├── transaction-plan-result-typetest.ts
│   │   │   │   ├── transaction-plan-typetest.ts
│   │   │   │   └── transaction-planner-typetest.ts
│   │   │   ├── append-instruction-plan.ts
│   │   │   ├── index.ts
│   │   │   ├── instruction-plan-input.ts
│   │   │   ├── instruction-plan.ts
│   │   │   ├── transaction-plan-errors.ts
│   │   │   ├── transaction-plan-executor.ts
│   │   │   ├── transaction-plan-result.ts
│   │   │   ├── transaction-plan.ts
│   │   │   └── transaction-planner.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── instructions/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── instruction-test.ts
│   │   │   │   └── roles-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── instruction-typetest.ts
│   │   │   ├── accounts.ts
│   │   │   ├── index.ts
│   │   │   ├── instruction.ts
│   │   │   └── roles.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── keys/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __benchmarks__/
│   │   │   │   └── run.ts
│   │   │   ├── __tests__/
│   │   │   │   ├── coercions-test.ts
│   │   │   │   ├── grind-keypair-test.ts
│   │   │   │   ├── key-pair-test.ts
│   │   │   │   ├── private-key-test.ts
│   │   │   │   ├── public-key-test.ts
│   │   │   │   ├── signatures-test.ts
│   │   │   │   ├── write-keypair-test.browser.ts
│   │   │   │   └── write-keypair-test.node.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── key-pair-typetest.ts
│   │   │   │   ├── private-key-typetest.ts
│   │   │   │   ├── public-key-typetest.ts
│   │   │   │   ├── signatures-typetest.ts
│   │   │   │   └── write-keypair-typetest.ts
│   │   │   ├── algorithm.ts
│   │   │   ├── grind-keypair.ts
│   │   │   ├── index.ts
│   │   │   ├── key-pair.ts
│   │   │   ├── private-key.ts
│   │   │   ├── public-key.ts
│   │   │   ├── signatures.ts
│   │   │   └── write-keypair.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── kit/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── airdrop-internal-test.ts
│   │   │   │   ├── compute-unit-limit-estimation-test.ts
│   │   │   │   ├── create-async-generator-with-initial-value-and-slot-tracking-test.ts
│   │   │   │   ├── create-reactive-store-with-initial-value-and-slot-tracking-test.ts
│   │   │   │   ├── decompile-transaction-message-fetching-lookup-tables-test.ts
│   │   │   │   ├── fetch-lookup-tables-test.ts
│   │   │   │   ├── get-minimum-balance-for-rent-exemption-test.ts
│   │   │   │   ├── program-client-core-subpath-export-test.node.ts
│   │   │   │   ├── send-and-confirm-durable-nonce-transaction-test.ts
│   │   │   │   └── send-transaction-internal-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── airdrop-typetest.ts
│   │   │   │   ├── decompile-transaction-message-fetching-lookup-tables-typetest.ts
│   │   │   │   ├── scenarios/
│   │   │   │   │   ├── transaction-message-decompile-modify-typetest.ts
│   │   │   │   │   └── transaction-signers-typetest.ts
│   │   │   │   ├── send-and-confirm-durable-nonce-transaction-typetest.ts
│   │   │   │   └── send-and-confirm-transaction-typetest.ts
│   │   │   ├── airdrop-internal.ts
│   │   │   ├── airdrop.ts
│   │   │   ├── compute-unit-limit-estimation.ts
│   │   │   ├── create-async-generator-with-initial-value-and-slot-tracking.ts
│   │   │   ├── create-reactive-store-with-initial-value-and-slot-tracking.ts
│   │   │   ├── decompile-transaction-message-fetching-lookup-tables.ts
│   │   │   ├── fetch-lookup-tables.ts
│   │   │   ├── get-minimum-balance-for-rent-exemption.ts
│   │   │   ├── index.ts
│   │   │   ├── program-client-core.ts
│   │   │   ├── send-and-confirm-durable-nonce-transaction.ts
│   │   │   ├── send-and-confirm-transaction.ts
│   │   │   ├── send-transaction-internal.ts
│   │   │   └── send-transaction-without-confirming.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── nominal-types/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __typetests__/
│   │   │   │   ├── brand-typetest.ts
│   │   │   │   └── nominal-type-typetest.ts
│   │   │   └── index.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── offchain-messages/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── content-test.ts
│   │   │   │   ├── envelope-codec-test.ts
│   │   │   │   ├── message-codec-test.ts
│   │   │   │   ├── message-v0-codec-test.ts
│   │   │   │   ├── message-v1-codec-test.ts
│   │   │   │   ├── preamble-test.ts
│   │   │   │   └── signatures-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── message-codec-typetest.ts
│   │   │   │   ├── message-typetest.ts
│   │   │   │   ├── message-v0-codec-typetest.ts
│   │   │   │   └── message-v1-codec-typetest.ts
│   │   │   ├── application-domain.ts
│   │   │   ├── codecs/
│   │   │   │   ├── application-domain.ts
│   │   │   │   ├── content.ts
│   │   │   │   ├── envelope.ts
│   │   │   │   ├── message-v0.ts
│   │   │   │   ├── message-v1.ts
│   │   │   │   ├── message.ts
│   │   │   │   ├── preamble-common.ts
│   │   │   │   ├── preamble-v0.ts
│   │   │   │   ├── preamble-v1.ts
│   │   │   │   ├── signatures.ts
│   │   │   │   ├── signing-domain.ts
│   │   │   │   └── version.ts
│   │   │   ├── content.ts
│   │   │   ├── envelope-common.ts
│   │   │   ├── envelope-v0.ts
│   │   │   ├── envelope-v1.ts
│   │   │   ├── envelope.ts
│   │   │   ├── index.ts
│   │   │   ├── message-v0.ts
│   │   │   ├── message-v1.ts
│   │   │   ├── message.ts
│   │   │   ├── preamble-v0.ts
│   │   │   ├── preamble-v1.ts
│   │   │   ├── signatures.ts
│   │   │   └── version.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── options/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── option-codec-test.ts
│   │   │   │   ├── option-test.ts
│   │   │   │   ├── unwrap-option-recursively-test.ts
│   │   │   │   └── unwrap-option-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── option-codec-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── option-codec.ts
│   │   │   ├── option.ts
│   │   │   ├── unwrap-option-recursively.ts
│   │   │   └── unwrap-option.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── plugin-core/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   └── client-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── client-typetest.ts
│   │   │   ├── client.ts
│   │   │   └── index.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── plugin-interfaces/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __typetests__/
│   │   │   │   ├── airdrop-typetest.ts
│   │   │   │   ├── get-minimum-balance-typetest.ts
│   │   │   │   ├── identity-typetest.ts
│   │   │   │   ├── instruction-plans-typetest.ts
│   │   │   │   ├── payer-typetest.ts
│   │   │   │   ├── rpc-typetest.ts
│   │   │   │   └── subscribe-to-typetest.ts
│   │   │   ├── airdrop.ts
│   │   │   ├── get-minimum-balance.ts
│   │   │   ├── identity.ts
│   │   │   ├── index.ts
│   │   │   ├── instruction-plans.ts
│   │   │   ├── payer.ts
│   │   │   ├── rpc.ts
│   │   │   └── subscribe-to.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── program-client-core/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── instruction-input-resolution-test.ts
│   │   │   │   ├── self-fetch-functions-test.ts
│   │   │   │   └── self-plan-and-send-functions-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── instruction-input-resolution-typetest.ts
│   │   │   │   ├── instructions-typetest.ts
│   │   │   │   ├── self-fetch-functions-typetest.ts
│   │   │   │   └── self-plan-and-send-functions-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── instruction-input-resolution.ts
│   │   │   ├── instructions.ts
│   │   │   ├── self-fetch-functions.ts
│   │   │   └── self-plan-and-send-functions.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── programs/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   └── program-error-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── program-error-typetest.ts
│   │   │   ├── index.ts
│   │   │   └── program-error.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── promises/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── abortable-test.browser.ts
│   │   │   │   ├── abortable-test.ts
│   │   │   │   └── race-test.ts
│   │   │   ├── abortable.ts
│   │   │   ├── index.ts
│   │   │   └── race.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── react/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── SelectedWalletAccountContextProvider.tsx
│   │   │   ├── __tests__/
│   │   │   │   ├── SelectedWalletAccountContextProvider-test.browser.tsx
│   │   │   │   ├── useSignAndSendTransaction-test.ts
│   │   │   │   ├── useSignIn-test.ts
│   │   │   │   ├── useSignMessage-test.ts
│   │   │   │   ├── useSignTransaction-test.ts
│   │   │   │   ├── useWalletAccountMessageSigner-test.ts
│   │   │   │   ├── useWalletAccountTransactionSendingSigner-test.ts
│   │   │   │   └── useWalletAccountTransactionSigner-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── selectedWalletAccountContextProvider-typetest.ts
│   │   │   │   ├── useSignAndSendTransaction-typetest.ts
│   │   │   │   ├── useSignIn-typetest.ts
│   │   │   │   └── useSignTransaction-typetest.ts
│   │   │   ├── chain.ts
│   │   │   ├── index.ts
│   │   │   ├── selectedWalletAccountContext.ts
│   │   │   ├── test-renderer.tsx
│   │   │   ├── useSignAndSendTransaction.ts
│   │   │   ├── useSignIn.ts
│   │   │   ├── useSignMessage.ts
│   │   │   ├── useSignTransaction.ts
│   │   │   ├── useWalletAccountMessageSigner.ts
│   │   │   ├── useWalletAccountTransactionSendingSigner.ts
│   │   │   └── useWalletAccountTransactionSigner.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── rpc-integer-overflow-error-test.ts
│   │   │   │   ├── rpc-integer-overflow-test.ts
│   │   │   │   ├── rpc-request-coalescer-test.ts
│   │   │   │   ├── rpc-request-deduplication-test.ts
│   │   │   │   └── rpc-transport-header-config-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── rpc-clusters-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── rpc-clusters.ts
│   │   │   ├── rpc-default-config.ts
│   │   │   ├── rpc-integer-overflow-error.ts
│   │   │   ├── rpc-request-coalescer.ts
│   │   │   ├── rpc-request-deduplication.ts
│   │   │   ├── rpc-transport.ts
│   │   │   └── rpc.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-api/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── get-account-info-test.ts
│   │   │   │   ├── get-balance-test.ts
│   │   │   │   ├── get-block-commitment-test.ts
│   │   │   │   ├── get-block-height.ts
│   │   │   │   ├── get-block-production-test.ts
│   │   │   │   ├── get-block-test.ts
│   │   │   │   ├── get-block-time-test.ts
│   │   │   │   ├── get-blocks-with-limit-test.ts
│   │   │   │   ├── get-cluster-nodes-test.ts
│   │   │   │   ├── get-epoch-info-test.ts
│   │   │   │   ├── get-epoch-schedule-test.ts
│   │   │   │   ├── get-fee-for-message-test.ts
│   │   │   │   ├── get-first-available-block-test.ts
│   │   │   │   ├── get-genesis-hash-test.ts
│   │   │   │   ├── get-health-test.ts
│   │   │   │   ├── get-highest-snapshot-slot-test.ts
│   │   │   │   ├── get-identity-test.ts
│   │   │   │   ├── get-inflation-governor-test.ts
│   │   │   │   ├── get-inflation-rate-test.ts
│   │   │   │   ├── get-inflation-reward-test.ts
│   │   │   │   ├── get-largest-accounts-test.ts
│   │   │   │   ├── get-latest-blockhash-test.ts
│   │   │   │   ├── get-leader-schedule-test.ts
│   │   │   │   ├── get-max-retransmit-slot-test.ts
│   │   │   │   ├── get-max-shred-insert-slot-test.ts
│   │   │   │   ├── get-minimum-balance-for-rent-exemption-test.ts
│   │   │   │   ├── get-multiple-accounts-test.ts
│   │   │   │   ├── get-program-accounts-test.ts
│   │   │   │   ├── get-recent-performance-samples-test.ts
│   │   │   │   ├── get-recent-prioritization-fees-test.ts
│   │   │   │   ├── get-signature-statuses-test.ts
│   │   │   │   ├── get-signatures-for-address-test.ts
│   │   │   │   ├── get-slot-leader-test.ts
│   │   │   │   ├── get-slot-leaders-test.ts
│   │   │   │   ├── get-slot-test.ts
│   │   │   │   ├── get-stake-minimum-delegation-test.ts
│   │   │   │   ├── get-supply-test.ts
│   │   │   │   ├── get-token-account-balance-test.ts
│   │   │   │   ├── get-token-accounts-by-delegate-test.ts
│   │   │   │   ├── get-token-accounts-by-owner-test.ts
│   │   │   │   ├── get-token-largest-accounts-test.ts
│   │   │   │   ├── get-token-supply-test.ts
│   │   │   │   ├── get-transaction-count-test.ts
│   │   │   │   ├── get-transaction-test.ts
│   │   │   │   ├── get-version-test.ts
│   │   │   │   ├── get-vote-accounts.ts
│   │   │   │   ├── is-blockhash-valid-test.ts
│   │   │   │   ├── minimum-ledger-slot-test.ts
│   │   │   │   ├── request-airdrop-test.ts
│   │   │   │   ├── send-transaction-test.ts
│   │   │   │   └── simulate-transaction-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── get-block-production-typetest.ts
│   │   │   │   ├── get-block-typetest.ts
│   │   │   │   ├── get-leader-schedule-typetest.ts
│   │   │   │   ├── get-supply-typetest.ts
│   │   │   │   ├── get-token-accounts-by-delegate-typetest.ts
│   │   │   │   ├── get-token-accounts-by-owner-typetest.ts
│   │   │   │   ├── rpc-api-typetest.ts
│   │   │   │   └── simulate-transaction-typetest.ts
│   │   │   ├── getAccountInfo.ts
│   │   │   ├── getBalance.ts
│   │   │   ├── getBlock.ts
│   │   │   ├── getBlockCommitment.ts
│   │   │   ├── getBlockHeight.ts
│   │   │   ├── getBlockProduction.ts
│   │   │   ├── getBlockTime.ts
│   │   │   ├── getBlocks.ts
│   │   │   ├── getBlocksWithLimit.ts
│   │   │   ├── getClusterNodes.ts
│   │   │   ├── getEpochInfo.ts
│   │   │   ├── getEpochSchedule.ts
│   │   │   ├── getFeeForMessage.ts
│   │   │   ├── getFirstAvailableBlock.ts
│   │   │   ├── getGenesisHash.ts
│   │   │   ├── getHealth.ts
│   │   │   ├── getHighestSnapshotSlot.ts
│   │   │   ├── getIdentity.ts
│   │   │   ├── getInflationGovernor.ts
│   │   │   ├── getInflationRate.ts
│   │   │   ├── getInflationReward.ts
│   │   │   ├── getLargestAccounts.ts
│   │   │   ├── getLatestBlockhash.ts
│   │   │   ├── getLeaderSchedule.ts
│   │   │   ├── getMaxRetransmitSlot.ts
│   │   │   ├── getMaxShredInsertSlot.ts
│   │   │   ├── getMinimumBalanceForRentExemption.ts
│   │   │   ├── getMultipleAccounts.ts
│   │   │   ├── getProgramAccounts.ts
│   │   │   ├── getRecentPerformanceSamples.ts
│   │   │   ├── getRecentPrioritizationFees.ts
│   │   │   ├── getSignatureStatuses.ts
│   │   │   ├── getSignaturesForAddress.ts
│   │   │   ├── getSlot.ts
│   │   │   ├── getSlotLeader.ts
│   │   │   ├── getSlotLeaders.ts
│   │   │   ├── getStakeMinimumDelegation.ts
│   │   │   ├── getSupply.ts
│   │   │   ├── getTokenAccountBalance.ts
│   │   │   ├── getTokenAccountsByDelegate.ts
│   │   │   ├── getTokenAccountsByOwner.ts
│   │   │   ├── getTokenLargestAccounts.ts
│   │   │   ├── getTokenSupply.ts
│   │   │   ├── getTransaction.ts
│   │   │   ├── getTransactionCount.ts
│   │   │   ├── getVersion.ts
│   │   │   ├── getVoteAccounts.ts
│   │   │   ├── index.ts
│   │   │   ├── isBlockhashValid.ts
│   │   │   ├── minimumLedgerSlot.ts
│   │   │   ├── requestAirdrop.ts
│   │   │   ├── sendTransaction.ts
│   │   │   └── simulateTransaction.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-graphql/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── account-test.ts
│   │   │   │   ├── block-tests.ts
│   │   │   │   ├── program-accounts-test.ts
│   │   │   │   └── transaction-tests.ts
│   │   │   ├── context.ts
│   │   │   ├── index.ts
│   │   │   ├── loaders/
│   │   │   │   ├── __tests__/
│   │   │   │   │   ├── account-loader-test.ts
│   │   │   │   │   ├── block-loader-test.ts
│   │   │   │   │   ├── program-accounts-loader-test.ts
│   │   │   │   │   └── transaction-loader-test.ts
│   │   │   │   ├── account.ts
│   │   │   │   ├── block.ts
│   │   │   │   ├── coalescer.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── loader.ts
│   │   │   │   ├── program-accounts.ts
│   │   │   │   └── transaction.ts
│   │   │   ├── resolvers/
│   │   │   │   ├── __tests__/
│   │   │   │   │   ├── account-resolver-test.ts
│   │   │   │   │   ├── block-inputs-test.ts
│   │   │   │   │   ├── block-resolver-test.ts
│   │   │   │   │   ├── program-accounts-resolver-test.ts
│   │   │   │   │   └── transaction-resolver-test.ts
│   │   │   │   ├── account.ts
│   │   │   │   ├── block.ts
│   │   │   │   ├── program-accounts.ts
│   │   │   │   ├── resolve-info/
│   │   │   │   │   ├── account.ts
│   │   │   │   │   ├── block.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── program-accounts.ts
│   │   │   │   │   ├── transaction.ts
│   │   │   │   │   └── visitor.ts
│   │   │   │   └── transaction.ts
│   │   │   └── schema/
│   │   │       ├── type-defs/
│   │   │       │   ├── account.ts
│   │   │       │   ├── block.ts
│   │   │       │   ├── index.ts
│   │   │       │   ├── instruction.ts
│   │   │       │   ├── root.ts
│   │   │       │   ├── transaction.ts
│   │   │       │   └── types.ts
│   │   │       └── type-resolvers/
│   │   │           ├── account.ts
│   │   │           ├── block.ts
│   │   │           ├── index.ts
│   │   │           ├── instruction.ts
│   │   │           ├── root.ts
│   │   │           ├── transaction.ts
│   │   │           └── types.ts
│   │   ├── tsconfig.declarations.json
│   │   └── tsconfig.json
│   ├── rpc-parsed-types/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __typetests__/
│   │   │   │   ├── address-lookup-table-accounts-typetest.ts
│   │   │   │   ├── bpf-upgradeable-loader-accounts-typetest.ts
│   │   │   │   ├── config-accounts-typetest.ts
│   │   │   │   ├── nonce-accounts-typetest.ts
│   │   │   │   ├── stake-accounts-typetest.ts
│   │   │   │   ├── sysvar-accounts-typetest.ts
│   │   │   │   ├── token-accounts-typetest.ts
│   │   │   │   └── vote-accounts-typetest.ts
│   │   │   ├── address-lookup-table-accounts.ts
│   │   │   ├── bpf-upgradeable-loader-accounts.ts
│   │   │   ├── config-accounts.ts
│   │   │   ├── index.ts
│   │   │   ├── nonce-accounts.ts
│   │   │   ├── rpc-parsed-type.ts
│   │   │   ├── stake-accounts.ts
│   │   │   ├── sysvar-accounts.ts
│   │   │   ├── token-accounts.ts
│   │   │   └── vote-accounts.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-spec/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── rpc-api-test.ts
│   │   │   │   ├── rpc-test.ts
│   │   │   │   └── rpc-transport-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── rpc-api-typetest.ts
│   │   │   │   ├── rpc-transport-typetest.ts
│   │   │   │   └── rpc-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── rpc-api.ts
│   │   │   ├── rpc-transport.ts
│   │   │   └── rpc.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-spec-types/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── large-json-file.json
│   │   │   │   ├── parse-json-with-bigints-test.ts
│   │   │   │   ├── rpc-message-test.ts
│   │   │   │   └── stringify-json-with-bigints-test.ts
│   │   │   ├── index.ts
│   │   │   ├── overloads.ts
│   │   │   ├── parse-json-with-bigints.ts
│   │   │   ├── rpc-message.ts
│   │   │   ├── rpc-request.ts
│   │   │   ├── rpc-response.ts
│   │   │   ├── stringify-json-with-bigints.ts
│   │   │   └── type-helpers.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-subscriptions/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── rpc-integer-overflow-error-test.ts
│   │   │   │   ├── rpc-subscriptions-autopinger-test.ts
│   │   │   │   ├── rpc-subscriptions-channel-pool-test.ts
│   │   │   │   ├── rpc-subscriptions-coalescer-test.ts
│   │   │   │   ├── rpc-subscriptions-functional-test.ts
│   │   │   │   ├── rpc-subscriptions-json-bigint-test.ts
│   │   │   │   ├── rpc-subscriptions-json-test.ts
│   │   │   │   └── rpc-subscriptions-transport-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── rpc-subscriptions-clusters-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── rpc-default-config.ts
│   │   │   ├── rpc-integer-overflow-error.ts
│   │   │   ├── rpc-subscriptions-autopinger.ts
│   │   │   ├── rpc-subscriptions-channel-pool-internal.ts
│   │   │   ├── rpc-subscriptions-channel-pool.ts
│   │   │   ├── rpc-subscriptions-channel.ts
│   │   │   ├── rpc-subscriptions-clusters.ts
│   │   │   ├── rpc-subscriptions-coalescer.ts
│   │   │   ├── rpc-subscriptions-json-bigint.ts
│   │   │   ├── rpc-subscriptions-json.ts
│   │   │   ├── rpc-subscriptions-transport.ts
│   │   │   └── rpc-subscriptions.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-subscriptions-api/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── account-notifications-test.ts
│   │   │   │   ├── block-notifications-test.ts
│   │   │   │   ├── index-test.ts
│   │   │   │   ├── logs-notifications-test.ts
│   │   │   │   ├── program-notifications-test.ts
│   │   │   │   ├── root-notifications-test.ts
│   │   │   │   ├── signature-notifications-test.ts
│   │   │   │   ├── slot-notifications-test.ts
│   │   │   │   ├── slots-updates-notifications-test.ts
│   │   │   │   └── vote-notifications-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── account-notifications-typetest.ts
│   │   │   │   ├── block-notifications-typetest.ts
│   │   │   │   ├── logs-notifications-typetest.ts
│   │   │   │   ├── program-notifications-typetest.ts
│   │   │   │   ├── root-notifications-typetest.ts
│   │   │   │   ├── rpc-subscriptions-api-typetest.ts
│   │   │   │   ├── signature-notifications-typetest.ts
│   │   │   │   ├── slot-notifications-typetest.ts
│   │   │   │   ├── slots-updates-notifications-typetest.ts
│   │   │   │   └── vote-notifications-typetest.ts
│   │   │   ├── account-notifications.ts
│   │   │   ├── block-notifications.ts
│   │   │   ├── index.ts
│   │   │   ├── logs-notifications.ts
│   │   │   ├── program-notifications.ts
│   │   │   ├── root-notifications.ts
│   │   │   ├── signature-notifications.ts
│   │   │   ├── slot-notifications.ts
│   │   │   ├── slots-updates-notifications.ts
│   │   │   └── vote-notifications.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-subscriptions-channel-websocket/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __mocks__/
│   │   │   │   └── @solana/
│   │   │   │       └── ws-impl.ts
│   │   │   ├── __tests__/
│   │   │   │   └── websocket-channel-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── websocket-channel-typetest.ts
│   │   │   ├── index.ts
│   │   │   └── websocket-channel.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-subscriptions-spec/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── rpc-subscriptions-api-test.ts
│   │   │   │   ├── rpc-subscriptions-channel-test.ts
│   │   │   │   ├── rpc-subscriptions-pubsub-plan-test.ts
│   │   │   │   └── rpc-subscriptions-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── rpc-subscriptions-api-typetest.ts
│   │   │   │   └── rpc-subscriptions-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── rpc-subscriptions-api.ts
│   │   │   ├── rpc-subscriptions-channel.ts
│   │   │   ├── rpc-subscriptions-pubsub-plan.ts
│   │   │   ├── rpc-subscriptions-request.ts
│   │   │   ├── rpc-subscriptions-transport.ts
│   │   │   └── rpc-subscriptions.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-transformers/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── request-transformer-bigint-downcast-test.ts
│   │   │   │   ├── request-transformer-default-commitment-test.ts
│   │   │   │   ├── request-transformer-integer-overflow-test.ts
│   │   │   │   ├── request-transformer-test.ts
│   │   │   │   ├── response-transformer-bigint-upcast-test.ts
│   │   │   │   ├── response-transformer-test.ts
│   │   │   │   └── response-transformer-throw-solana-error-test.ts
│   │   │   ├── index.ts
│   │   │   ├── request-transformer-bigint-downcast-internal.ts
│   │   │   ├── request-transformer-bigint-downcast.ts
│   │   │   ├── request-transformer-default-commitment-internal.ts
│   │   │   ├── request-transformer-default-commitment.ts
│   │   │   ├── request-transformer-integer-overflow-internal.ts
│   │   │   ├── request-transformer-integer-overflow.ts
│   │   │   ├── request-transformer-options-object-position-config.ts
│   │   │   ├── request-transformer.ts
│   │   │   ├── response-transformer-allowed-numeric-values.ts
│   │   │   ├── response-transformer-bigint-upcast-internal.ts
│   │   │   ├── response-transformer-bigint-upcast.ts
│   │   │   ├── response-transformer-result.ts
│   │   │   ├── response-transformer-throw-solana-error.ts
│   │   │   ├── response-transformer.ts
│   │   │   └── tree-traversal.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-transport-http/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __benchmarks__/
│   │   │   │   └── run.ts
│   │   │   ├── __tests__/
│   │   │   │   ├── http-transport-abort-test.ts
│   │   │   │   ├── http-transport-dispatcher-test.browser.ts
│   │   │   │   ├── http-transport-for-solana-rpc-test.ts
│   │   │   │   ├── http-transport-from-json-test.ts
│   │   │   │   ├── http-transport-headers-test.ts
│   │   │   │   ├── http-transport-test.ts
│   │   │   │   ├── http-transport-to-json-test.ts
│   │   │   │   └── is-solana-request-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── http-transport-typetest.ts
│   │   │   ├── http-transport-config.ts
│   │   │   ├── http-transport-for-solana-rpc.ts
│   │   │   ├── http-transport-headers.ts
│   │   │   ├── http-transport.ts
│   │   │   ├── index.ts
│   │   │   └── is-solana-request.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-types/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── blockhash-test.ts
│   │   │   │   ├── coercions-test.ts
│   │   │   │   ├── commitment-test.ts
│   │   │   │   ├── lamports-test.ts
│   │   │   │   ├── sol-test.ts
│   │   │   │   ├── stringified-bigint-test.ts
│   │   │   │   ├── stringified-number-test.ts
│   │   │   │   └── unix-timestamp-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── blockhash-typetests.ts
│   │   │   │   ├── coercions-typetest.ts
│   │   │   │   ├── encoded-bytes-typetests.ts
│   │   │   │   ├── lamports-typetest.ts
│   │   │   │   └── sol-typetest.ts
│   │   │   ├── account-filters.ts
│   │   │   ├── account-info.ts
│   │   │   ├── blockhash.ts
│   │   │   ├── cluster-url.ts
│   │   │   ├── commitment.ts
│   │   │   ├── encoded-bytes.ts
│   │   │   ├── index.ts
│   │   │   ├── lamports.ts
│   │   │   ├── rpc-api.ts
│   │   │   ├── sol.ts
│   │   │   ├── stringified-bigint.ts
│   │   │   ├── stringified-number.ts
│   │   │   ├── token-amount.ts
│   │   │   ├── token-balance.ts
│   │   │   ├── transaction-error.ts
│   │   │   ├── transaction.ts
│   │   │   ├── typed-numbers.ts
│   │   │   └── unix-timestamp.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── signers/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── account-signer-meta-test.ts
│   │   │   │   ├── add-signers-test.ts
│   │   │   │   ├── deduplicate-signers-test.ts
│   │   │   │   ├── fee-payer-signer-test.ts
│   │   │   │   ├── grind-keypair-signer-test.ts
│   │   │   │   ├── keypair-signer-test.ts
│   │   │   │   ├── message-modifying-signer-test.ts
│   │   │   │   ├── message-partial-signer-test.ts
│   │   │   │   ├── message-signer-test.ts
│   │   │   │   ├── noop-signer-test.ts
│   │   │   │   ├── offchain-message-signer-test.ts
│   │   │   │   ├── sign-offchain-message-test.ts
│   │   │   │   ├── sign-transaction-test.ts
│   │   │   │   ├── signable-message-test.ts
│   │   │   │   ├── transaction-modifying-signer-test.ts
│   │   │   │   ├── transaction-partial-signer-test.ts
│   │   │   │   ├── transaction-sending-signer-test.ts
│   │   │   │   ├── transaction-signer-test.ts
│   │   │   │   ├── transaction-with-single-sending-signer.ts
│   │   │   │   ├── write-keypair-signer-test.browser.ts
│   │   │   │   └── write-keypair-signer-test.node.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── account-signer-meta-typetest.ts
│   │   │   │   ├── add-signers-typetest.ts
│   │   │   │   ├── fee-payer-typetest.ts
│   │   │   │   ├── keypair-signer-typetest.ts
│   │   │   │   ├── message-modifying-signer-typetest.ts
│   │   │   │   ├── message-partial-signer-typetest.ts
│   │   │   │   ├── message-signer-typetest.ts
│   │   │   │   ├── offchain-message-signer-typetest.ts
│   │   │   │   ├── sign-offchain-message-typetest.ts
│   │   │   │   ├── sign-transaction-typetest.ts
│   │   │   │   ├── transaction-modifying-signer-typetest.ts
│   │   │   │   ├── transaction-partial-signer-typetest.ts
│   │   │   │   ├── transaction-sending-signer-typetest.ts
│   │   │   │   └── transaction-signer-typetest.ts
│   │   │   ├── account-signer-meta.ts
│   │   │   ├── add-signers.ts
│   │   │   ├── deduplicate-signers.ts
│   │   │   ├── fee-payer-signer.ts
│   │   │   ├── grind-keypair-signer.ts
│   │   │   ├── index.ts
│   │   │   ├── keypair-signer.ts
│   │   │   ├── message-modifying-signer.ts
│   │   │   ├── message-partial-signer.ts
│   │   │   ├── message-signer.ts
│   │   │   ├── noop-signer.ts
│   │   │   ├── offchain-message-signer.ts
│   │   │   ├── sign-offchain-message.ts
│   │   │   ├── sign-transaction.ts
│   │   │   ├── signable-message.ts
│   │   │   ├── transaction-modifying-signer.ts
│   │   │   ├── transaction-partial-signer.ts
│   │   │   ├── transaction-sending-signer.ts
│   │   │   ├── transaction-signer.ts
│   │   │   ├── transaction-with-single-sending-signer.ts
│   │   │   ├── types.ts
│   │   │   └── write-keypair-signer.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── subscribable/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── async-iterable-test.ts
│   │   │   │   ├── data-publisher-test.ts
│   │   │   │   ├── demultiplex-test.ts
│   │   │   │   ├── reactive-action-store-test.ts
│   │   │   │   └── reactive-stream-store-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── data-publisher-typetest.ts
│   │   │   │   └── event-emitter-typetest.ts
│   │   │   ├── async-iterable.ts
│   │   │   ├── data-publisher.ts
│   │   │   ├── demultiplex.ts
│   │   │   ├── event-emitter.ts
│   │   │   ├── index.ts
│   │   │   ├── reactive-action-store.ts
│   │   │   └── reactive-stream-store.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── sysvars/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── clock-test.ts
│   │   │   │   ├── epoch-rewards-test.ts
│   │   │   │   ├── epoch-schedule-test.ts
│   │   │   │   ├── last-restart-slot-test.ts
│   │   │   │   ├── recent-blockhashes-test.ts
│   │   │   │   ├── rent-test.ts
│   │   │   │   ├── slot-hashes-test.ts
│   │   │   │   ├── slot-history-test.ts
│   │   │   │   ├── stake-history-test.ts
│   │   │   │   └── sysvar-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── sysvar-typetest.ts
│   │   │   ├── clock.ts
│   │   │   ├── epoch-rewards.ts
│   │   │   ├── epoch-schedule.ts
│   │   │   ├── index.ts
│   │   │   ├── last-restart-slot.ts
│   │   │   ├── recent-blockhashes.ts
│   │   │   ├── rent.ts
│   │   │   ├── slot-hashes.ts
│   │   │   ├── slot-history.ts
│   │   │   ├── stake-history.ts
│   │   │   └── sysvar.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── test-config/
│   │   ├── .npmrc
│   │   ├── browser-environment.ts
│   │   ├── global.d.ts
│   │   ├── jest-dev.config.js
│   │   ├── jest-dev.config.ts
│   │   ├── jest-lint.config.js
│   │   ├── jest-lint.config.ts
│   │   ├── jest-prettier.config.js
│   │   ├── jest-prettier.config.ts
│   │   ├── jest-unit.config.browser.js
│   │   ├── jest-unit.config.common.js
│   │   ├── jest-unit.config.node.js
│   │   ├── package.json
│   │   ├── setup-define-version-constant.ts
│   │   ├── setup-dev-mode.ts
│   │   ├── setup-secure-context.ts
│   │   ├── setup-text-encoder.ts
│   │   ├── setup-undici-fetch.ts
│   │   ├── setup-web-buffer-global.ts
│   │   ├── setup-webcrypto.ts
│   │   ├── setup-whatwg-fetch.ts
│   │   ├── test-validator-setup.js
│   │   ├── test-validator-teardown.js
│   │   └── tsconfig.json
│   ├── test-matchers/
│   │   ├── .npmrc
│   │   ├── package.json
│   │   ├── toBeFrozenObject.ts
│   │   ├── toEqualArrayBuffer.ts
│   │   └── tsconfig.json
│   ├── text-encoding-impl/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.browser.ts
│   │   │   ├── index.native.ts
│   │   │   └── index.node.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── tsup.config.ts
│   ├── transaction-confirmation/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── confirmation-strategy-blockheight-test.ts
│   │   │   │   ├── confirmation-strategy-nonce-test.ts
│   │   │   │   ├── confirmation-strategy-racer-test.ts
│   │   │   │   ├── confirmation-strategy-signature-test.ts
│   │   │   │   ├── confirmation-strategy-timeout-test.ts
│   │   │   │   └── waiters-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── confirmation-strategy-blockheight-typetest.ts
│   │   │   │   ├── confirmation-strategy-nonce-typetest.ts
│   │   │   │   └── confirmation-strategy-recent-signature-typetest.ts
│   │   │   ├── confirmation-strategy-blockheight.ts
│   │   │   ├── confirmation-strategy-nonce.ts
│   │   │   ├── confirmation-strategy-racer.ts
│   │   │   ├── confirmation-strategy-recent-signature.ts
│   │   │   ├── confirmation-strategy-timeout.ts
│   │   │   ├── index.ts
│   │   │   └── waiters.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── transaction-messages/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── blockhash-test.ts
│   │   │   │   ├── compress-transaction-message-test.ts
│   │   │   │   ├── compute-budget-instruction-test.ts
│   │   │   │   ├── compute-unit-limit-test.ts
│   │   │   │   ├── compute-unit-price-test.ts
│   │   │   │   ├── create-transaction-message-test.ts
│   │   │   │   ├── durable-nonce-test.ts
│   │   │   │   ├── fee-payer-test.ts
│   │   │   │   ├── heap-size-test.ts
│   │   │   │   ├── instructions-test.ts
│   │   │   │   ├── loaded-accounts-data-size-limit-test.ts
│   │   │   │   ├── priority-fee-lamports-test.ts
│   │   │   │   └── v1-transaction-config-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── blockhash-typetest.ts
│   │   │   │   ├── compress-transaction-message-typetest.ts
│   │   │   │   ├── compute-unit-limit-typetest.ts
│   │   │   │   ├── compute-unit-price-typetest.ts
│   │   │   │   ├── create-transaction-message-typetest.ts
│   │   │   │   ├── durable-nonce-typetest.ts
│   │   │   │   ├── fee-payer-typetest.ts
│   │   │   │   ├── heap-size-typetest.ts
│   │   │   │   ├── instructions-typetest.ts
│   │   │   │   ├── loaded-accounts-data-size-limit-typetest.ts
│   │   │   │   ├── priority-fee-lamports-typetest.ts
│   │   │   │   ├── scenarios/
│   │   │   │   │   └── message-modifications-typetest.ts
│   │   │   │   └── transaction-config-typetest.ts
│   │   │   ├── addresses-by-lookup-table-address.ts
│   │   │   ├── blockhash.ts
│   │   │   ├── codecs/
│   │   │   │   ├── __tests__/
│   │   │   │   │   ├── message-test.ts
│   │   │   │   │   └── transaction-version-test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── legacy/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── header-test.ts
│   │   │   │   │   │   ├── instruction-test.ts
│   │   │   │   │   │   ├── lifetime-token-test.ts
│   │   │   │   │   │   └── message-test.ts
│   │   │   │   │   ├── header.ts
│   │   │   │   │   ├── instruction.ts
│   │   │   │   │   ├── lifetime-token.ts
│   │   │   │   │   └── message.ts
│   │   │   │   ├── message.ts
│   │   │   │   ├── transaction-version.ts
│   │   │   │   ├── v0/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── address-table-lookup-test.ts
│   │   │   │   │   │   └── message-test.ts
│   │   │   │   │   ├── address-table-lookup.ts
│   │   │   │   │   └── message.ts
│   │   │   │   └── v1/
│   │   │   │       ├── __tests__/
│   │   │   │       │   ├── config-test.ts
│   │   │   │       │   ├── instruction-test.ts
│   │   │   │       │   └── message-test.ts
│   │   │   │       ├── config.ts
│   │   │   │       ├── instruction.ts
│   │   │   │       └── message.ts
│   │   │   ├── compile/
│   │   │   │   ├── __tests__/
│   │   │   │   │   └── message-test.ts
│   │   │   │   ├── __typetests__/
│   │   │   │   │   └── message-typetest.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── legacy/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── accounts-test.ts
│   │   │   │   │   │   ├── header-test.ts
│   │   │   │   │   │   ├── instructions-test.ts
│   │   │   │   │   │   ├── lifetime-token-test.ts
│   │   │   │   │   │   └── message-test.ts
│   │   │   │   │   ├── accounts.ts
│   │   │   │   │   ├── header.ts
│   │   │   │   │   ├── instructions.ts
│   │   │   │   │   ├── lifetime-token.ts
│   │   │   │   │   └── message.ts
│   │   │   │   ├── message-types.ts
│   │   │   │   ├── message.ts
│   │   │   │   ├── v0/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── accounts-test.ts
│   │   │   │   │   │   ├── address-table-lookups-test.ts
│   │   │   │   │   │   ├── instructions-test.ts
│   │   │   │   │   │   ├── message-test.ts
│   │   │   │   │   │   └── static-accounts-test.ts
│   │   │   │   │   ├── accounts.ts
│   │   │   │   │   ├── address-table-lookups.ts
│   │   │   │   │   ├── instructions.ts
│   │   │   │   │   ├── message.ts
│   │   │   │   │   └── static-accounts.ts
│   │   │   │   └── v1/
│   │   │   │       ├── __tests__/
│   │   │   │       │   ├── config-test.ts
│   │   │   │       │   ├── instructions-test.ts
│   │   │   │       │   └── message-test.ts
│   │   │   │       ├── config.ts
│   │   │   │       ├── instructions.ts
│   │   │   │       └── message.ts
│   │   │   ├── compress-transaction-message.ts
│   │   │   ├── compute-budget-instruction.ts
│   │   │   ├── compute-unit-limit.ts
│   │   │   ├── compute-unit-price.ts
│   │   │   ├── create-transaction-message.ts
│   │   │   ├── decompile/
│   │   │   │   ├── __tests__/
│   │   │   │   │   └── message-test.ts
│   │   │   │   ├── __typetests__/
│   │   │   │   │   └── message-typetest.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── legacy/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── account-metas-test.ts
│   │   │   │   │   │   ├── convert-instruction-test.ts
│   │   │   │   │   │   ├── fee-payer-test.ts
│   │   │   │   │   │   ├── lifetime-constraint-test.ts
│   │   │   │   │   │   └── message-test.ts
│   │   │   │   │   ├── account-metas.ts
│   │   │   │   │   ├── convert-instruction.ts
│   │   │   │   │   ├── fee-payer.ts
│   │   │   │   │   ├── lifetime-constraint.ts
│   │   │   │   │   └── message.ts
│   │   │   │   ├── message.ts
│   │   │   │   ├── v0/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── address-lookup-metas-test.ts
│   │   │   │   │   │   └── message-test.ts
│   │   │   │   │   ├── address-lookup-metas.ts
│   │   │   │   │   └── message.ts
│   │   │   │   └── v1/
│   │   │   │       ├── __tests__/
│   │   │   │       │   ├── config-test.ts
│   │   │   │       │   ├── instructions-test.ts
│   │   │   │       │   └── message-test.ts
│   │   │   │       ├── config.ts
│   │   │   │       ├── instructions.ts
│   │   │   │       └── message.ts
│   │   │   ├── durable-nonce-instruction.ts
│   │   │   ├── durable-nonce.ts
│   │   │   ├── fee-payer.ts
│   │   │   ├── heap-size.ts
│   │   │   ├── index.ts
│   │   │   ├── instructions.ts
│   │   │   ├── lifetime.ts
│   │   │   ├── loaded-accounts-data-size-limit.ts
│   │   │   ├── priority-fee-lamports.ts
│   │   │   ├── transaction-message-size.ts
│   │   │   ├── transaction-message.ts
│   │   │   └── v1-transaction-config.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── transactions/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── compile-transaction-test.ts
│   │   │   │   ├── lifetime-test.ts
│   │   │   │   ├── signatures-test.ts
│   │   │   │   ├── transaction-message-size-test.ts
│   │   │   │   ├── transaction-size-test.ts
│   │   │   │   └── wire-transaction-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── compile-transaction-typetest.ts
│   │   │   │   ├── lifetime-typetest.ts
│   │   │   │   ├── sendable-transaction-typetest.ts
│   │   │   │   ├── signatures-typetest.ts
│   │   │   │   ├── transaction-message-size-typetest.ts
│   │   │   │   ├── transaction-size-typetest.ts
│   │   │   │   ├── transaction-typetest.ts
│   │   │   │   ├── transaction-typetests.ts
│   │   │   │   └── wire-transaction-typetests.ts
│   │   │   ├── codecs/
│   │   │   │   ├── __tests__/
│   │   │   │   │   ├── signatures-encoder-test.ts
│   │   │   │   │   └── transaction-codec-test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── signatures-encoder.ts
│   │   │   │   └── transaction-codec.ts
│   │   │   ├── compile-transaction.ts
│   │   │   ├── index.ts
│   │   │   ├── lifetime.ts
│   │   │   ├── sendable-transaction.ts
│   │   │   ├── signatures.ts
│   │   │   ├── transaction-message-size.ts
│   │   │   ├── transaction-size-limits.ts
│   │   │   ├── transaction-size.ts
│   │   │   ├── transaction.ts
│   │   │   └── wire-transaction.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── tsconfig/
│   │   ├── .npmrc
│   │   ├── README.md
│   │   ├── base.json
│   │   └── package.json
│   ├── wallet-account-signer/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── wallet-account-message-signer-test.ts
│   │   │   │   ├── wallet-account-signer-test.ts
│   │   │   │   ├── wallet-account-transaction-sending-signer-test.ts
│   │   │   │   └── wallet-account-transaction-signer-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── wallet-account-message-signer-typetest.ts
│   │   │   │   ├── wallet-account-transaction-sending-signer-typetest.ts
│   │   │   │   └── wallet-account-transaction-signer-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── wallet-account-message-signer.ts
│   │   │   ├── wallet-account-signer.ts
│   │   │   ├── wallet-account-transaction-sending-signer.ts
│   │   │   └── wallet-account-transaction-signer.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── webcrypto-ed25519-polyfill/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── install-test.ts
│   │   │   │   └── secrets-test.ts
│   │   │   ├── index.ts
│   │   │   ├── install.ts
│   │   │   └── secrets.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   └── ws-impl/
│       ├── .gitignore
│       ├── .npmrc
│       ├── .prettierignore
│       ├── LICENSE
│       ├── package.json
│       ├── src/
│       │   ├── index.browser.ts
│       │   └── index.node.ts
│       ├── tsconfig.declarations.json
│       ├── tsconfig.json
│       └── tsup.config.ts
├── patches/
│   └── jest-runner-prettier@1.0.0.patch
├── pnpm-workspace.yaml
├── scripts/
│   ├── fixtures/
│   │   ├── 4nTLDQiSTRHbngKZWPMfYnZdWTbKiNeuuPcX7yFUpSAc.json
│   │   ├── GQE2yjns7SKKuMc89tveBDpzYHwXfeuB2PGAbGaPWc6G.json
│   │   ├── address-lookup-table-account.json
│   │   ├── bpf-upgradeable-loader-program-account.json
│   │   ├── config-stake-account.json
│   │   ├── config-validator-account.json
│   │   ├── example-deserialize-transaction-address-lookup-table.json
│   │   ├── example-transfer-lamports-source-account.json
│   │   ├── gpa1.json
│   │   ├── gpa2-1.json
│   │   ├── gpa2-2.json
│   │   ├── nonce-account.json
│   │   ├── send-transaction-fee-payer-insufficient-funds.json
│   │   ├── send-transaction-fee-payer.json
│   │   ├── spl-token-22-account-mega-token.json
│   │   ├── spl-token-22-mint-account.json
│   │   ├── spl-token-22-mint-mega-token-member.json
│   │   ├── spl-token-22-mint-mega-token.json
│   │   ├── spl-token-22-mint-with-token-group-account.json
│   │   ├── spl-token-22-mint-with-token-group-member-account.json
│   │   ├── spl-token-mint-account-with-delegated.json
│   │   ├── spl-token-mint-account-with-owner.json
│   │   ├── spl-token-mint-account.json
│   │   ├── spl-token-mint-no-token-accounts.json
│   │   ├── spl-token-multisig-account.json
│   │   ├── spl-token-token-account-delegated.json
│   │   ├── spl-token-token-account-owner.json
│   │   ├── spl-token-token-account.json
│   │   ├── stake-account.json
│   │   └── vote-account.json
│   ├── get-latest-validator-release-version.sh
│   ├── setup-test-validator.sh
│   └── start-shared-test-validator.sh
├── skills-lock.json
├── tsconfig.json
├── turbo.json
├── typedoc.json
└── typedoc.plugin.mjs

================================================
FILE CONTENTS
================================================

================================================
FILE: .agents/skills/changesets/INJECT.md
================================================
---
heading: Changesets
---

- Any PR that should trigger a package release MUST include a changeset.
- Identify affected packages by mapping changed files to their nearest `package.json`.
- Choose the right bump: `patch` for fixes, `minor` for features, `major` for breaking changes.
- While a project is pre-1.0, `minor` bumps may be treated as breaking.
- ALWAYS use `npx changeset add --empty` to generate a new changeset file with a random name. NEVER create changeset files manually.
- No changeset needed for: docs-only changes, CI config, dev dependency updates, test-only changes.


================================================
FILE: .agents/skills/changesets/SKILL.md
================================================
---
name: changesets
description: Generate a changeset file with a changelog entry for package releases. Use when a PR introduces user-facing changes that should trigger a version bump.
argument-hint: "[patch|minor|major]"
allowed-tools: Bash(npx changeset add --empty)
---

# Generate Changeset

Create a new changeset file for the current project using the [changesets CLI](https://github.com/changesets/changesets), then fill it with a proper changelog entry based on recent changes.

## Key Rules

- Any PR that should trigger a package release MUST include a changeset.
- Identify affected packages by mapping changed files to their nearest `package.json`.
- Choose the right bump: `patch` for fixes, `minor` for features, `major` for breaking changes.
- While a project is pre-1.0, `minor` bumps may be treated as breaking.
- ALWAYS use `npx changeset add --empty` to generate a new changeset file with a random name. NEVER create changeset files manually.
- No changeset needed for: docs-only changes, CI config, dev dependency updates, test-only changes.
- Do NOT modify any existing changeset files.
- Only create one new changeset file per invocation.

## Guidelines

### Changeset Format

```
---
'<package-a>': patch
'<package-b>': patch
---

<concise changelog entry>
```

### Changelog Entries

- Write a concise but informative changelog entry (1-3 sentences).
- Start with a verb — e.g. "Add", "Remove", "Replace", "Fix", "Update".
- Focus on what changed from the user's perspective, not implementation details.
- Mention renamed or removed APIs explicitly.

### Breaking Changes

Add a `**BREAKING CHANGES**` section (bold paragraph, not a header) after the changelog entry when:

- The bump level is `major`, OR
- The bump level is `minor` AND the current major version is `0` (i.e. pre-1.0)

...and the changes actually introduce breaking changes.

The breaking changes section should list each breaking change with a bold title summarizing the change, followed by a brief explanation and a `diff` code block showing the before/after migration when applicable. For example:

```
Replace the `useGranularImports` boolean option with a new `importStrategy` option.

**BREAKING CHANGES**

**`useGranularImports` replaced with `importStrategy`.** The boolean option has been replaced with a string union for finer control.

\`\`\`diff
- renderVisitor('./output', { useGranularImports: true });
+ renderVisitor('./output', { importStrategy: 'granular' });
\`\`\`

**Default import behavior changed.** The default strategy is now `'preferRoot'`, which falls back to granular packages for symbols not on the root entrypoint.

\`\`\`diff
- renderVisitor('./output'); // equivalent to useGranularImports: false
+ renderVisitor('./output'); // equivalent to importStrategy: 'preferRoot'
\`\`\`
```

Not every breaking change needs a diff — use them when there's a clear before/after code change to show. For type removals or behavioral changes, a text explanation is sufficient.

## Command Process

When invoked as a command, follow these steps:

### Arguments

- `[patch|minor|major]` (optional): Override the bump level for all affected packages.

### Steps

1. **Determine the change source.** Check `git status` for uncommitted changes. If there are meaningful working tree changes, use those. Otherwise, use the latest commit(s) on the current branch (compared to the base branch from `.changeset/config.json`).
2. **Identify which packages changed.** Look at which files were modified and map them to their nearest `package.json` to determine affected packages. Ignore changes that are not relevant to a changeset — e.g. typo fixes in comments, dependency version bumps in `package.json`, changes to CI config, docs-only changes in non-doc packages, etc. Use your judgement to filter out noise.
3. **Run `npx changeset add --empty`** to generate a new changeset file with a random name.
4. **Identify the newly created file** — it will be the most recently created `.md` file in `.changeset/` (excluding `README.md`).
5. **Write the changeset file** with the proper frontmatter listing each affected package and the bump level, followed by the changelog entry.


================================================
FILE: .agents/skills/shipping-git/INJECT.md
================================================
---
heading: Shipping (Git)
---

- NEVER commit, push, create branches, or create PRs without explicit user approval.
- Before any git operation that creates or modifies a commit, present a review block containing: changeset entry (if applicable), commit title, and commit/PR description. ALWAYS wait for approval.
- Use standard `git add` and `git commit` workflows. Concise title on the first line, blank line, then description body.
- Use `gh pr create` for pull requests.
- Write commit and PR descriptions as natural flowing prose. Do NOT insert hard line breaks mid-paragraph.


================================================
FILE: .agents/skills/shipping-git/SKILL.md
================================================
---
name: shipping-git
description: Shipping workflow using standard Git and GitHub CLI. Provides guidance for committing, branching, and creating PRs.
---

# Ship Code Using Git

Guidance for shipping code using standard Git and the GitHub CLI (`gh`). This skill teaches the agent how to create commits, branches, and pull requests following conventional workflows.

## Key Rules

- NEVER commit, push, create branches, or create PRs without explicit user approval.
- Before any git operation that creates or modifies a commit, present a review block containing: changeset content (if applicable), commit title, and commit/PR description. ALWAYS wait for approval.
- Show the proposed changeset entry for review before writing the changeset file.
- Use standard `git add` and `git commit` workflows. Concise title on the first line, blank line, then description body.
- Use `gh pr create` for pull requests.
- Write commit and PR descriptions as natural flowing prose. Do NOT insert hard line breaks mid-paragraph.

## Guidelines

### Creating Commits

Follow conventional commit message format:

```sh
git add -A
git commit -m "Commit title" -m "Description body explaining what changed and why."
```

- The first `-m` sets the commit title (first line). Keep it concise and descriptive.
- The second `-m` sets the commit body. Explain what changed and why.
- Use present tense, imperative mood (e.g. "Add feature" not "Added feature").

### Creating Branches

Create a descriptive branch name before committing:

```sh
git checkout -b feature/short-description
```

Common prefixes: `feature/`, `fix/`, `refactor/`, `docs/`, `chore/`.

### Creating Pull Requests

Use the GitHub CLI to create PRs:

```sh
gh pr create --title "PR title" --body "Description explaining what changed and why."
```

- If a `.github/PULL_REQUEST_TEMPLATE.md` exists, use it as a guide for structuring the PR description. Fill in sections that are relevant and omit sections that don't apply (e.g. don't add "Fixes #" if there's no related issue).

### Pushing Changes

Push the branch and set the upstream:

```sh
git push -u origin HEAD
```

### Review Block Format

Before any git operation, present this review block and wait for approval:

1. **Changeset entry** (if applicable) — the proposed changelog entry and bump type.
2. **Commit title** — a concise title for the commit.
3. **Commit/PR description** — a short description that explains what changed and why.


================================================
FILE: .agents/skills/shipping-graphite/INJECT.md
================================================
---
heading: Shipping (Graphite)
---

- Check if [Graphite](https://graphite.dev/) is installed (`which gt`). Prefer Graphite when available; fall back to the Git shipping workflow otherwise.
- NEVER commit, push, create branches, or create PRs without explicit user approval.
- Before any git operation that creates or modifies a commit, present a review block containing: changeset entry (if applicable), commit title, and commit/PR description. ALWAYS wait for approval.
- Use `gt create -am "Title" -m "Description body"` for new PRs. The first `-m` sets the commit title; the second sets the PR description.
- Use `gt modify -a` to amend the current branch with follow-up changes (NEVER create additional commits on the same branch).
- ALWAYS escape backticks in commit messages with backslashes for shell compatibility (e.g. `"Update \`my-package\` config"`).
- Do NOT run `gt submit` after committing. Only run it when the user explicitly asks to submit or push.
- Write commit and PR descriptions as natural flowing prose. Do NOT insert hard line breaks mid-paragraph.


================================================
FILE: .agents/skills/shipping-graphite/SKILL.md
================================================
---
name: shipping-graphite
description: Shipping workflow using Graphite CLI. Provides guidance for committing, branching, and creating PRs with Graphite's single-commit-per-branch model.
---

# Ship Code Using Graphite

Guidance for shipping code using the [Graphite](https://graphite.dev/) CLI (`gt`). This skill teaches the agent how to create commits, branches, and PRs using Graphite's single-commit-per-branch model.

## Key Rules

- NEVER commit, push, create branches, or create PRs without explicit user approval.
- Before any git operation that creates or modifies a commit, present a review block containing: changeset content (if applicable), commit title, and commit/PR description. ALWAYS wait for approval.
- Show the proposed changeset entry for review before writing the changeset file.
- Use `gt create -am "Title" -m "Description body"` for new PRs. The first `-m` sets the commit title; the second sets the PR description.
- Use `gt modify -a` to amend the current branch with follow-up changes (NEVER create additional commits on the same branch).
- ALWAYS escape backticks in commit messages with backslashes for shell compatibility (e.g. `"Update \`my-package\` config"`).
- Write commit and PR descriptions as natural flowing prose. Do NOT insert hard line breaks mid-paragraph.

## Guidelines

### Creating a New PR

Use `gt create` to create a new branch with a single commit:

```sh
gt create -am "Commit title" -m "Description body explaining what changed and why."
```

- The first `-m` flag sets the commit title (first line of the commit message).
- The second `-m` flag sets the commit body, which Graphite uses as the PR description when the stack is submitted.
- Write the body as a concise flowing summary. Avoid excessive blank lines.
- If a `.github/PULL_REQUEST_TEMPLATE.md` exists, use it as a guide for structuring the PR description. Fill in sections that are relevant and omit sections that don't apply (e.g. don't add "Fixes #" if there's no related issue).

### Amending an Existing PR

When making follow-up changes to the current branch, ALWAYS amend rather than creating new commits:

```sh
gt modify -a
```

This amends the single commit on the current branch. Since Graphite uses a one-commit-per-branch model, ALWAYS use `gt modify -a` for follow-up changes on the same PR.

### Submitting PRs

Do NOT run `gt submit` (or `gt ss`) after creating or modifying branches. The `gt create` and `gt modify` steps are the end of the workflow unless the user explicitly asks to submit or push.

When the user asks to submit, first run `gt sync` to ensure the local stack is up-to-date. This will restack branches from the main branch and prompt to delete any stale (merged) branches. If `gt sync` encounters any issues or conflicts, stop immediately and report the problem to the user before proceeding — await their instructions on how to resolve it.

Only after a clean sync, run `gt submit` to create or update PRs for all branches in the current stack.

### Shell Escaping

When commit titles or descriptions contain backticks (e.g. for package names or code references), escape them with a backslash so the shell passes them through literally:

```sh
gt create -am "Align \`kit-plugins\` infrastructure" -m "This PR updates the shared config."
```

### Review Block Format

Before any git operation, present this review block and wait for approval:

1. **Changeset entry** (if applicable) — the proposed changelog entry and bump type.
2. **Commit title** — a concise title for the commit.
3. **Commit/PR description** — a short description that explains what changed and why.


================================================
FILE: .agents/skills/ts-docblocks/INJECT.md
================================================
---
heading: TypeScript Docblocks
---

- All exported functions, types, interfaces, and constants MUST have JSDoc docblocks.
- Start with `/**`, use `*` prefix for each line, end with `*/` — each on its own line.
- Begin with a clear one-to-two line summary. Add a blank line before tags.
- Include `@param`, `@typeParam`, `@return`, `@throws`, and at least one `@example` when helpful.
- Use `{@link ...}` to reference related items. Add `@see` tags at the end for related APIs.


================================================
FILE: .agents/skills/ts-docblocks/SKILL.md
================================================
---
name: ts-docblocks
description: Add missing JSDoc docblocks to exported symbols in TypeScript projects. Use when writing new exports or when code is missing documentation.
argument-hint: "[path] [--all]"
---

# Add Missing Docblocks

Scan the specified path (or entire repository if no path given) and add missing docblocks to all exported functions, classes, interfaces, types, and constants.

## Key Rules

- All exported functions, types, interfaces, and constants MUST have JSDoc docblocks.
- Start with `/**`, use `*` prefix for each line, end with `*/` — each on its own line.
- Begin with a clear one-to-two line summary. Add a blank line before tags.
- Include `@param`, `@typeParam`, `@return`, `@throws`, and at least one `@example` when helpful.
- Use `{@link ...}` to reference related items. Add `@see` tags at the end for related APIs.
- Do NOT modify real code outside of docblocks. Do NOT modify existing docblocks.

## Guidelines

### Style

Use JSDoc format with the following conventions:

- Start with `/**` on its own line.
- Use `*` prefix for each line.
- End with `*/` on its own line.
- Keep descriptions concise but complete.
- Start your sentences with a capital letter and end with a period.
- Limit your usage of em dashes but, when you do use them, use spaces on both sides.
- Begin with a clear one or two line summary (no `@summary` tag needed).
- Add a blank line after the summary if adding more details.
- Include `@param` tags for all parameters.
- Include `@typeParam` tags for all type parameters. Use `@typeParam`, not `@template`.
- Include `@return` tag briefly describing the return value.
- Add `@throws` for functions that may throw errors and list these errors.
- Include at least one `@example` section whenever usage examples would be helpful. If the file is a TypeScript file, use TypeScript syntax in examples. Try to make the examples realistic but concise and pleasant to read. They must illustrate the concepts clearly at first glance. When more than one example is preferred, use multiple `@example` tags and keep the first one as simple as possible to illustrate the basic usage. Never use `any` type in examples. Display the `import` statements required for the example to work when imports from multiple libraries are required. It is acceptable to use placeholder variable names like `myUser` or even `/* ... */` for parts that are not relevant to the example. When multiple example sections are provided, add a brief description before each code block to quickly explain what the example illustrates.
- In the rare case where more advanced documentation is also needed for the item, use the `@remarks` tag to add this extra information after any example sections. These remarks can include longer explanations and even additional code blocks if necessary.
- When an item is deprecated, include a `@deprecated` tag with a brief explanation and, if applicable, suggest an alternative.
- Use `{@link ...}` tags to reference other items in the codebase when relevant.
- Add `@see` tags at the very end when applicable to point to other related items or documentation. Use `@see {@link ...}` format when linking to other code items.

### Examples

````ts
/**
 * Creates a retry wrapper around an async function.
 *
 * Retries the given function up to `maxRetries` times with exponential
 * backoff between attempts.
 *
 * @param fn - The async function to retry.
 * @param maxRetries - Maximum number of retry attempts.
 * @param baseDelay - Base delay in milliseconds between retries.
 * @return A wrapped version of `fn` that retries on failure.
 * @throws Throws the last error if all retry attempts are exhausted.
 *
 * @example
 * ```ts
 * const fetchWithRetry = withRetry(fetchData, 3, 1000);
 * const data = await fetchWithRetry('/api/users');
 * ```
 *
 * @example
 * Custom retry configuration for flaky network calls.
 * ```ts
 * const resilientFetch = withRetry(
 *   () => fetch('https://api.example.com/data'),
 *   5,
 *   500,
 * );
 * ```
 */
export function withRetry<T>(
    fn: (...args: unknown[]) => Promise<T>,
    maxRetries: number,
    baseDelay: number,
): (...args: unknown[]) => Promise<T>;
````

````ts
/**
 * Fixes a `Uint8Array` to the specified length.
 *
 * If the array is longer than the specified length, it is truncated.
 * If the array is shorter than the specified length, it is padded with zeroes.
 *
 * @param bytes - The byte array to truncate or pad.
 * @param length - The desired length of the byte array.
 * @return The byte array truncated or padded to the desired length.
 *
 * @example
 * Truncates the byte array to the desired length.
 * ```ts
 * const bytes = new Uint8Array([0x01, 0x02, 0x03, 0x04]);
 * const fixedBytes = fixBytes(bytes, 2);
 * //    ^ [0x01, 0x02]
 * ```
 *
 * @example
 * Adds zeroes to the end of the byte array to reach the desired length.
 * ```ts
 * const bytes = new Uint8Array([0x01, 0x02]);
 * const fixedBytes = fixBytes(bytes, 4);
 * //    ^ [0x01, 0x02, 0x00, 0x00]
 * ```
 */
export const fixBytes = (
    bytes: ReadonlyUint8Array | Uint8Array,
    length: number,
): ReadonlyUint8Array | Uint8Array;
````

````ts
/**
 * A tree structure representing a set of instructions with execution constraints.
 *
 * Supports parallel execution, sequential execution, and combinations of both
 * through recursive composition of plan nodes.
 *
 * @example
 * ```ts
 * const plan: InstructionPlan = parallelPlan([
 *     sequentialPlan([instructionA, instructionB]),
 *     instructionC,
 *     instructionD,
 * ]);
 * ```
 *
 * @see {@link SingleInstructionPlan}
 * @see {@link ParallelInstructionPlan}
 * @see {@link SequentialInstructionPlan}
 */
export type InstructionPlan =
    | ParallelInstructionPlan
    | SequentialInstructionPlan
    | SingleInstructionPlan;
````

## Command Process

When invoked as a command, follow these steps:

### Arguments

- `[path]` (optional): Narrow the scan to a specific path (e.g. `src/utils` or `packages/my-lib/src`).
- `[--all]` (optional): Also scan non-exported items.

### Steps

1. If a path argument is provided, scan only that path; otherwise scan the entire repository.
2. Look for TypeScript/JavaScript files (`.ts`, `.tsx`, `.js`, `.jsx`).
3. Identify exported items without docblocks:
    - `export function`
    - `export class`
    - `export interface`
    - `export type`
    - `export const` (for constants and arrow functions)
4. If `--all` is passed, also identify non-exported items.
5. For each item missing a docblock:
    - Analyze the code to understand its purpose (this may span multiple files).
    - Examine parameters, return types, and behavior.
    - Generate an appropriate docblock following the style guide.
6. Present all changes clearly, grouped by file. Apply all changes without requiring further approval.


================================================
FILE: .agents/skills/ts-readme/INJECT.md
================================================
---
heading: TypeScript READMEs
---

- When adding a new public API, add or update the package's README.
- Structure: brief intro, installation, usage (with code snippet), deep-dive sections.
- Code snippets must be realistic, concise, and use TypeScript syntax.
- Focus on the quickest path to success. Developers should feel excited, not overwhelmed.


================================================
FILE: .agents/skills/ts-readme/SKILL.md
================================================
---
name: ts-readme
description: Guidelines for writing developer-friendly READMEs for TypeScript libraries. Use when creating a new package, changing a public API, or updating documentation.
argument-hint: "[path]"
---

# Create or Update README

Create a new README or update an existing one for a TypeScript package, library, or project.

## Key Rules

- When adding a new public API, add or update the package's README.
- Structure: brief intro, installation, usage (with code snippet), deep-dive sections.
- Code snippets must be realistic, concise, and use TypeScript syntax.
- Focus on the quickest path to success. Developers should feel excited, not overwhelmed.
- Do NOT update any real code outside of the README file itself. If you identify errors in the codebase, warn the user but do not fix them.

## Guidelines

A deep understanding of the project is necessary to create an effective README. Analyze the codebase, key features, and typical usage patterns to inform the content. If the project relies on other libraries or frameworks, consider how those influence usage and installation.

### Structure

The layout of a README will vary from project to project, but they should generally follow these guidelines.

#### 1. Intro Section

- Package/library name as the main heading.
- Badges for tests, package version, downloads, etc. (npm, GitHub, etc.).
- **Very brief summary (ELI5)** — A single sentence or short paragraph that anyone can understand at first glance.
- Only update the intro if you can meaningfully improve the summary; otherwise leave it intact.

#### 2. Installation Section

- Keep it extremely concise (1-2 lines of explanation max if necessary).
- Show the install command in a code block.

#### 3. Usage Section (Most Critical)

- This is where readers' attention lands first after the intro.
- Show the **quickest path to success** with this library.
- **Must include a code snippet** illustrating basic usage.
- Balance between brevity and clarity to create an "aha moment."
- Optional: Brief text before/after the snippet if it adds clarity.
- The code snippet should be realistic, concise, and immediately understandable.

#### 4. Deep Dive Sections

- Structure varies case-by-case based on the project.
- Document key features, concepts, or use cases.
- Each section should include **at least one code snippet**. Similar guidelines as the Usage section, that is, realistic and concise (shortest path to "aha moment").
- Organize logically (e.g. by feature, by use case, by complexity).
- Common patterns:
    - **Features**: Individual feature documentation with examples.
    - **API Reference**: Core APIs or functions.
    - **Advanced Usage**: More complex scenarios.
    - **Configuration**: Setup and customization options.
    - **Examples**: Real-world use cases.
- No need for a "Requirements" section for peer dependencies. Just mention them in the "Installation" section if necessary to get started.

### Code Snippets

- Use TypeScript syntax for TypeScript projects.
- Show realistic but concise examples.
- Include necessary imports when relevant (e.g. when importing from multiple modules).
- Use descriptive variable names (not `foo`, `bar`).
- Keep examples focused on one concept at a time when possible.
- Format for readability (proper indentation, spacing).

### Tone

- Friendly and approachable.
- Clear and direct.
- Avoid marketing speak.
- Focus on practical value.
- Use active voice.
- Assume the reader is a developer who wants to get started quickly.

### What to Avoid

- Overly long introductions or preambles.
- Walls of text without code examples.
- Complex examples in the Usage section.
- Unexplained jargon or acronyms.
- Marketing-heavy language.
- Duplicating information unnecessarily.

### Monorepo Considerations

When working in a monorepo:

- **Package READMEs**: Focus on the specific package — its API, installation, usage, and features. Include an installation note pointing to an umbrella package as an alternative if one exists.
- **Root README**: Provides an overview of the entire monorepo, links to individual package READMEs for details. Focus on the quick-start experience rather than deep-diving into each package.
- **Consistency**: When updating a package README, check other package READMEs for structural consistency (heading levels, section order, code example style).

## Command Process

When invoked as a command, follow these steps:

### Arguments

- `[path]` (optional): Path to the README file or its parent directory. Defaults to `./README.md`.

### Steps

1. Determine the target README path:
    - If a path argument is provided and ends with `.md`, use it directly.
    - If the argument is a directory path, use `<path>/README.md`.
    - If no argument is provided, use `./README.md`.

2. Check if the README exists:
    - If it exists, read it to understand the current structure.
    - If it doesn't exist, prepare to create one from scratch.

3. Analyze the project context:
    - Examine `package.json` (if exists) for package name, description, dependencies.
    - Look at the source code to understand what the library does.
    - Identify key exports, main functions, and typical usage patterns.
    - Check for existing tests or examples that show usage.
    - Research any related libraries or frameworks that influence usage.
    - If in a monorepo, examine other package READMEs to ensure consistency in style and structure.

4. Create or update the README:
    - **For existing READMEs**: Identify missing sections or areas needing improvement.
    - **For new READMEs**: Build the full structure following the guidelines.
    - Preserve the intro unless improvements are clear.
    - Ensure the Usage section has a strong, clear example.
    - Add or improve deep dive sections as needed.
    - Include realistic code snippets throughout.

5. Present the complete README for review before applying changes.


================================================
FILE: .bundlemonrc.json
================================================
{
    "baseDir": "./packages/",
    "files": [
        {
            "friendlyName": "@solana/kit production bundle",
            "path": "kit/dist/index.production.min.js"
        },
        {
            "path": "**/dist/index.*.mjs"
        }
    ],
    "includeCommitMessage": true,
    "reportOutput": ["github"]
}


================================================
FILE: .changeset/bold-drinks-strive.md
================================================
---
'@solana/rpc-spec': minor
'@solana/kit': minor
---

Add a `reactiveStore()` method to `PendingRpcRequest`. It fires the request on construction and synchronously returns a `ReactiveActionStore` that holds the request's `idle`/`running`/`success`/`error` lifecycle state. Compatible with `useSyncExternalStore`, Svelte stores, and other reactive primitives. Call `dispatch()` to re-fire the request (e.g. after an error), or `reset()` to abort the in-flight call and return to idle.

```ts
const store = rpc.getAccountInfo(address).reactiveStore();
const state = useSyncExternalStore(store.subscribe, store.getState);
if (state.status === 'error') return <ErrorMessage error={state.error} onRetry={store.dispatch} />;
if (state.status === 'running' && !state.data) return <Spinner />;
return <View data={state.data!} />;
```


================================================
FILE: .changeset/brown-candles-relax.md
================================================
---
'@solana/rpc-subscriptions-spec': minor
'@solana/kit': minor
---

Add a `reactiveStore()` method to `PendingRpcSubscriptionsRequest`. Unlike `reactive()`, this variant returns a `ReactiveStore` synchronously and supports `retry()` to reconnect after an error. `reactive()` is now `@deprecated` in favour of `reactiveStore()`.

```ts
const store = rpc.accountNotifications(address).reactiveStore({ abortSignal });
const state = useSyncExternalStore(store.subscribe, store.getUnifiedState);
if (state.status === 'error') return <ErrorMessage error={state.error} onRetry={store.retry} />;
```


================================================
FILE: .changeset/clever-spies-shout.md
================================================
---
'@solana/subscribable': minor
'@solana/errors': minor
'@solana/kit': minor
---

Add `retry()` and `getUnifiedState()` to `ReactiveStore`. The new `getUnifiedState()` returns a discriminated `{ data, error, status }` snapshot with stable identity, so stores can be passed directly to `useSyncExternalStore` without an intermediate wrapper. `getState()` and `getError()` remain on the type but are now `@deprecated` in favour of the unified snapshot.

A new `createReactiveStoreFromDataPublisherFactory` function is also introduced. It accepts a `createDataPublisher: () => Promise<DataPublisher>` factory rather than a ready-made publisher, which lets the store reconnect via `retry()` after an error. The existing `createReactiveStoreFromDataPublisher` is now `@deprecated`; calling `retry()` on a store it produced throws a new `SolanaError` with code `SOLANA_ERROR__SUBSCRIBABLE__RETRY_NOT_SUPPORTED`.

`createReactiveStoreWithInitialValueAndSlotTracking` (from `@solana/kit`) now supports `retry()`, which re-sends the RPC request and re-subscribes to the subscription with a fresh abort signal while preserving the last known slot and value.


================================================
FILE: .changeset/config.json
================================================
{
  "$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json",
  "access": "public",
  "baseBranch": "main",
  "bumpVersionsWithWorkspaceProtocolOnly": true,
  "changelog": [
    "@changesets/changelog-github",
    {
      "repo": "anza-xyz/kit"
    }
  ],
  "fixed": [["@solana/!({example-*,*-impl,build-scripts,eslint-config,test-*,tsconfig,web3.js})"]],
  "linked": [],
  "snapshot": {
    "useCalculatedVersion": true
  },
  "privatePackages": {
    "version": false,
    "tag": false
  },
  "updateInternalDependencies": "patch"
}


================================================
FILE: .changeset/some-views-pick.md
================================================
---
'@solana/subscribable': minor
'@solana/rpc-subscriptions-spec': minor
'@solana/kit': minor
'@solana/errors': minor
---

Rename `ReactiveStore<T>` to `ReactiveStreamStore<T>`. The old name remains exported as a deprecated alias and will be removed in a future major release.


================================================
FILE: .changeset/thin-cats-drop.md
================================================
---
'@solana/subscribable': minor
---

Added `createReactiveActionStore` — a framework-agnostic state machine that wraps an async function and exposes a `{ dispatch, dispatchAsync, getState, subscribe, reset }` contract compatible with `useSyncExternalStore`, Svelte stores, Vue's `shallowRef`, and similar reactive primitives. `dispatch` is synchronous and fire-and-forget (safe from UI event handlers); `dispatchAsync` returns a promise that resolves to the wrapped function's result and rejects on failure or supersede — use `isAbortError` from `@solana/promises` to filter aborts. Each call creates a fresh `AbortController` and aborts the previous one, so rapid successive dispatches only produce one final state transition — the outcome of the most recent call.


================================================
FILE: .github/ISSUE_TEMPLATE/0_bug.md
================================================
---
name: Report a Bug
about: Help us reproduce a bug you've found so that we can fix it
title: ''
labels: ['bug']
assignees: ''
---

<!-- Please fill in each section completely. Thank you! -->

## Overview

<!-- Say a few words about how you came to discover this bug -->

## Steps to reproduce

<!--
  List the steps that someone unfamiliar with your problem would
  have to take to observe this bug.

  Ideally, include a code snippet or link to a repository that
  someone can run locally to reproduce the problem.
-->

## Description of bug

<!--
  Describe what happened that you did not expect, or what did not
  happen the way you had hoped.

  Include the full text of error messages and logs, if any.
  Do not upload screenshots of error messages.
-->


================================================
FILE: .github/ISSUE_TEMPLATE/1_feature.md
================================================
---
name: Suggest a Feature
about: Propose an idea for how to make this library better.
title: ''
labels: ['enhancement']
assignees: ''
---

<!-- Please fill in each section completely. Thank you! -->

## Motivation

<!--
  Say a few words about what motivated you to propose this enhancement.
-->

## Example use case

<!--
  Demonstrate how someone might use this new feature.

  If applicable, write code or pseudocode that would produce the
  desired result if this feature existed.
-->

## Details

<!--
  Go into detail about how this new feature must behave. If you have
  ideas on how to implement it, go into them here.
-->


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
contact_links:
  - about: 'Have a question about using this software, or about Solana in general? Post it on the Solana Stack Exchange.'
    name: Ask a Question
    url: 'https://solana.stackexchange.com/questions/ask'
  - about: 'Start or join a discussion on the Solana Tech Discord.'
    name: Start a Discussion
    url: 'https://solana.com/discord'


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
#### Problem



#### Summary of Changes



Fixes #

================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
  - package-ecosystem: 'npm'
    directory: '/'
    schedule:
      interval: daily
      time: '01:00'
      timezone: America/Los_Angeles
    ignore:
      - dependency-name: '@radix-ui/react-dropdown-menu'
    groups:
      eslint:
        patterns:
          - '@eslint/*'
          - '@typescript-eslint/*'
          - 'typescript'
      solana-program-clients:
        patterns:
          - '@solana-program/*'
      react:
        patterns:
          - 'react'
          - 'react-dom'
      undici:
        patterns:
          - 'undici'
          - 'undici-types'
  - package-ecosystem: 'npm'
    directory: '/docs'
    schedule:
      interval: daily
      time: '01:00'
      timezone: America/Los_Angeles
    groups:
      eslint:
        patterns:
          - 'eslint*'
          - 'typescript'
      solana:
        patterns:
          - '@solana/*'
      solana-program-clients:
        patterns:
          - '@solana-program/*'
      react:
        patterns:
          - 'react'
          - 'react-dom'
      undici:
        patterns:
          - 'undici'
          - 'undici-types'


================================================
FILE: .github/label-actions.yml
================================================
question:
  issues:
    # Post a comment, `{issue-author}` is an optional placeholder
    comment: >
      Hi @{issue-author},


      Thanks for your question!


      We want to make sure to keep signal strong in the GitHub issue tracker &ndash; to make sure
      that it remains the best place to track issues that affect the development of the Solana
      JavaScript SDK itself.


      Questions like yours deserve a purpose-built Q&A forum. Unless there exists evidence that
      this is a bug with the Solana JavaScript SDK itself, please post your question to the Solana 
      Stack Exchange using this link: https://solana.stackexchange.com/questions/ask


      ---

      _This
      [automated message](https://github.com/anza-xyz/kit/blob/main/.github/label-actions.yml)
      is a result of having added the &lsquo;question&rsquo; tag_.

    # Close the issue
    close: true


================================================
FILE: .github/workflows/actions/install-dependencies/action.yml
================================================
name: Install Dependencies
description: Sets up Node and its package manager, then installs all dependencies

inputs:
  version:
    default: 'lts/*'
    type: string

runs:
  using: composite
  steps:
    - name: Install package manager
      uses: pnpm/action-setup@v4
      with:
        version: 10.24.0

    - name: Setup Node
      uses: actions/setup-node@v4
      with:
        cache: 'pnpm'
        node-version: ${{ inputs.version }}
        registry-url: 'https://registry.npmjs.org'

    - name: Install dependencies
      shell: bash
      run: pnpm install


================================================
FILE: .github/workflows/actions/setup-validator/action.yml
================================================
name: Install Solana Test Validator
description: Downloads and caches an install of the latest Solana Test Validator

outputs:
  pid:
    description: The process id of the running test validator
    value: ${{ steps.start-validator.outputs.pid }}

runs:
  using: composite
  steps:
    - name: Get Test Validator Latest Release
      id: get-test-validator-version
      shell: bash
      run: echo "version=$(./scripts/get-latest-validator-release-version.sh)" >> $GITHUB_OUTPUT

    - name: Cache Test Validator
      id: cache-test-validator
      uses: actions/cache@v4
      with:
        path: .agave
        key: ${{ runner.os }}-test-validator-${{ steps.get-test-validator-version.outputs.version }}

    - name: Install Test Validator
      if: steps.cache-test-validator.outputs.cache-hit != 'true'
      shell: bash
      run: ./scripts/setup-test-validator.sh

    - name: Start Test Validator
      id: start-validator
      shell: bash
      run: |
        ./scripts/start-shared-test-validator.sh &
        echo "pid=$!" >> $GITHUB_OUTPUT


================================================
FILE: .github/workflows/autolock-inactive-threads.yml
================================================
name: 'Lock inactive threads'

on:
  # Chosen to be just before London wakes up and way past San Francisco's bedtime.
  schedule:
    - cron: '0 8 * * 1-5' # This is in UTC.
  workflow_dispatch:

permissions:
  issues: write
  pull-requests: write

concurrency:
  group: lock

jobs:
  autolock-inactive-threads:
    runs-on: ubuntu-latest
    steps:
      - uses: dessant/lock-threads@1bf7ec25051fe7c00bdd17e6a7cf3d7bfb7dc771
        with:
          github-token: ${{ github.token }}
          issue-inactive-days: '7'
          issue-lock-reason: 'resolved'
          issue-comment: >
            Because there has been no activity on this issue for 7 days since it was closed, it has 
            been automatically locked. Please open a new issue if it requires a follow up.
          pr-inactive-days: '14'
          pr-lock-reason: 'resolved'
          pr-comment: >
            Because there has been no activity on this PR for 14 days since it was merged, it has 
            been automatically locked. Please open a new issue if it requires a follow up.
          process-only: 'issues, prs'


================================================
FILE: .github/workflows/backport.yml
================================================
name: Backport
on:
  pull_request_target:
    types:
      - closed
      - labeled

permissions:
  contents: write
  pull-requests: write

jobs:
  backport:
    name: Backport
    runs-on: ubuntu-latest
    # Only react to merged PRs for security reasons.
    # See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target.
    if: >
      github.event.pull_request.merged
      && (
        github.event.action == 'closed'
        || (
          github.event.action == 'labeled'
          && contains(github.event.label.name, 'backport')
        )
      )
    steps:
      - uses: tibdex/backport@9565281eda0731b1d20c4025c43339fb0a23812e
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/bundlesize.yml
================================================
name: Compare bundle size

on:
  push:
    branches:
      - main
  pull_request:
    types: [synchronize, opened, reopened]

permissions:
  contents: read

env:
  # Among other things, opts out of Turborepo telemetry
  # See https://consoledonottrack.com/
  DO_NOT_TRACK: '1'
  # Some tasks slow down considerably on GitHub Actions runners when concurrency is high
  TURBO_CONCURRENCY: 1
  # Enables Turborepo Remote Caching.
  TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
  TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
  TURBO_TEAM: ${{ vars.TURBO_TEAM }}

jobs:
  measure-bundlesize:
    permissions:
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Dependencies
        uses: ./.github/workflows/actions/install-dependencies
        with:
          version: current

      - name: Build
        run: pnpm turbo compile:js --concurrency=${TURBO_CONCURRENCY:-1}

      - name: BundleMon
        uses: lironer/bundlemon-action@cadbdd58f86faf1900725ef69d455444124b3748
        env:
          # Always compare to the main branch; prevents stacked PRs from being
          # compared to the wrong mergebase (ie. the PR beneath the current one)
          CI_TARGET_BRANCH: main


================================================
FILE: .github/workflows/codeql.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL Advanced"

on:
  push:
    branches:
      - "main"
  schedule:
    - cron: "30 13 * * 0"

jobs:
  analyze:
    name: Analyze (${{ matrix.language }})
    # Runner size impacts CodeQL analysis time. To learn more, please see:
    #   - https://gh.io/recommended-hardware-resources-for-running-codeql
    #   - https://gh.io/supported-runners-and-hardware-resources
    #   - https://gh.io/using-larger-runners (GitHub.com only)
    # Consider using larger runners or machines with greater resources for possible analysis time improvements.
    runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
    permissions:
      # required for all workflows
      security-events: write

      # required to fetch internal or private CodeQL packs
      packages: read

      # only required for workflows in private repositories
      actions: read
      contents: read

    strategy:
      fail-fast: false
      matrix:
        include:
          - language: actions
            build-mode: none
          - language: javascript-typescript
            build-mode: none
        # CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
        # Use `c-cpp` to analyze code written in C, C++ or both
        # Use 'java-kotlin' to analyze code written in Java, Kotlin or both
        # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
        # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
        # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
        # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
        # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      # Add any setup steps before running the `github/codeql-action/init` action.
      # This includes steps like installing compilers or runtimes (`actions/setup-node`
      # or others). This is typically only required for manual builds.
      # - name: Setup runtime (example)
      #   uses: actions/setup-example@v1

      # Initializes the CodeQL tools for scanning.
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v4
        with:
          languages: ${{ matrix.language }}
          build-mode: ${{ matrix.build-mode }}
          # If you wish to specify custom queries, you can do so here or in a config file.
          # By default, queries listed here will override any specified in a config file.
          # Prefix the list here with "+" to use these queries and those in the config file.

          # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
          # queries: security-extended,security-and-quality

      # If the analyze step fails for one of the languages you are analyzing with
      # "We were unable to automatically build your code", modify the matrix above
      # to set the build mode to "manual" for that language. Then modify this step
      # to build your code.
      # ℹ️ Command-line programs to run using the OS shell.
      # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
      - name: Run manual build steps
        if: matrix.build-mode == 'manual'
        shell: bash
        run: |
          echo 'If you are using a "manual" build mode for one or more of the' \
            'languages you are analyzing, replace this with the commands to build' \
            'your code, for example:'
          echo '  make bootstrap'
          echo '  make release'
          exit 1

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v4
        with:
          category: "/language:${{matrix.language}}"


================================================
FILE: .github/workflows/deploy-docs.yml
================================================
name: Deploy Documentation

on:
  workflow_dispatch:
    branches:
      - main
  push:
    branches:
      - main

permissions:
  contents: read
  pull-requests: write

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

env:
  # Among other things, opts out of Turborepo telemetry
  # See https://consoledonottrack.com/
  DO_NOT_TRACK: '1'
  NEXT_TELEMETRY_DISABLED: '1'
  VERCEL_TELEMETRY_DISABLED: '1'
  # Enables Turborepo Remote Caching.
  TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
  TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
  TURBO_TEAM: ${{ vars.TURBO_TEAM }}

jobs:
  deploy-docs:
    runs-on: ubuntu-latest
    name: Deploy Documentation
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Dependencies
        uses: ./.github/workflows/actions/install-dependencies

      - name: Install Isolated Docs Dependencies
        working-directory: ./docs/
        shell: bash
        run: pnpm install --ignore-workspace

      - name: Install Vercel CLI
        run: pnpm install -g vercel

      - name: Deploy to Vercel
        shell: bash
        env:
          VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
          VERCEL_PROJECT_ID: ${{ secrets.VERCEL_DOCS_PROJECT_ID }}
          VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
        run: |
          vercel pull --token="$VERCEL_TOKEN" --yes --environment=production
          vercel build --token="$VERCEL_TOKEN" --prod
          vercel deploy --token="$VERCEL_TOKEN" --archive=tgz --prebuilt --prod

      - name: Synchronize InKeep Search Index
        uses: inkeep/pr-commenter-action@84ccc7c74b72f628ec7e2b572e0cb7afd5898594 # v10
        env:
          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
        with:
          apiKey: ${{secrets.INKEEP_SEARCH_MANAGEMENT_API_KEY}}
          sourceId: '${{vars.INKEEP_SEARCH_SOURCE_ID}}'


================================================
FILE: .github/workflows/dismiss-stale-pr-reviews.yml
================================================
name: Dismiss Stale PR Reviews

on:
  pull_request_target:
    types: [opened, synchronize, reopened]

permissions:
  actions: read
  contents: read
  pull-requests: write

jobs:
  dismiss-stale-approvals:
    runs-on: ubuntu-latest
    steps:
      - name: Dismiss Stale PR Reviews
        if: ${{ !contains('OWNER,MEMBER,COLLABORATOR', github.event.pull_request.author_association) }}
        uses: withgraphite/dismiss-stale-approvals@15571275d9bf7410e51244e259cd8f9f554879c8
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/label-actions.yml
================================================
name: 'Issue Label Actions'

on:
  issues:
    types: [labeled, unlabeled]

permissions:
  contents: read
  issues: write

jobs:
  label:
    runs-on: ubuntu-latest
    steps:
      - uses: dessant/label-actions@102faf474a544be75fbaf4df54e73d3c515a0e65


================================================
FILE: .github/workflows/manage-stale-threads.yml
================================================
name: 'Manage stale issues and PRs'
on:
  # Chosen to be just before London wakes up and way past San Francisco's bedtime.
  schedule:
    - cron: '0 8 * * 1-5' # This is in UTC.
  # Do a dry-run (debug-only: true) whenever this workflow itself is changed.
  pull_request:
    paths:
      - .github/workflows/manage-stale-threads.yml
    types:
      - opened
      - synchronize

permissions:
  issues: write
  pull-requests: write

jobs:
  manage-stale-threads:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/stale@v6
        with:
          ascending: true # Spend API operations budget on older, more-likely-to-get-closed issues first
          close-issue-message: '' # Leave no comment when closing
          close-pr-message: '' # Leave no comment when closing
          days-before-issue-stale: 365
          days-before-pr-stale: 14
          days-before-close: 7
          debug-only: ${{ github.event_name == 'pull_request' }} # Dry-run when true.
          exempt-all-milestones: true # Milestones can sometimes last a month, so exempt issues attached to a milestone.
          exempt-issue-labels: blocked,do-not-close,feature-gate,security
          exempt-pr-labels: blocked,do-not-close,feature-gate,security
          # No actual changes get made in debug-only mode, so we can raise the operations ceiling.
          operations-per-run: ${{ github.event_name == 'pull_request' && 1000 || 900}}
          stale-issue-label: stale
          stale-issue-message: '' # Leave no comment when marking as stale
          stale-pr-label: stale
          stale-pr-message: '' # Leave no comment when marking as stale


================================================
FILE: .github/workflows/preview-docs.yml
================================================
name: Preview Documentation

on:
  pull_request:
  merge_group:

permissions:
  contents: read

env:
  # Among other things, opts out of Turborepo telemetry
  # See https://consoledonottrack.com/
  DO_NOT_TRACK: '1'
  NEXT_TELEMETRY_DISABLED: '1'
  VERCEL_TELEMETRY_DISABLED: '1'
  # Some tasks slow down considerably on GitHub Actions runners when concurrency is high
  TURBO_CONCURRENCY: 1
  # Enables Turborepo Remote Caching.
  TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
  TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
  TURBO_TEAM: ${{ vars.TURBO_TEAM }}

jobs:
  preview-docs:
    permissions:
      pull-requests: write
    runs-on: ubuntu-latest
    name: Build Documentation Preview
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Dependencies
        uses: ./.github/workflows/actions/install-dependencies

      - name: Install Isolated Docs Dependencies
        working-directory: ./docs/
        shell: bash
        run: pnpm install --ignore-workspace

      - name: Install Vercel CLI
        run: pnpm install -g vercel

      - name: Deploy to Vercel
        if: github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]'
        shell: bash
        id: vercel_deploy
        env:
          BRANCH_NAME: ${{ github.head_ref }}
          PR_NUMBER: ${{ github.event.pull_request.number }}
          VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
          VERCEL_PROJECT_ID: ${{ secrets.VERCEL_DOCS_PROJECT_ID }}
          VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
        run: |
          vercel pull --token="$VERCEL_TOKEN" --yes --environment=preview
          vercel build --token="$VERCEL_TOKEN" --target=preview
          DEPLOY_OUTPUT=$(vercel deploy --token="$VERCEL_TOKEN" --archive=tgz --env GITHUB_PR_NUMBER="$PR_NUMBER" --env GITHUB_PR_BRANCH="$BRANCH_NAME" --prebuilt --target=preview 2>&1)
          DEPLOY_EXIT_CODE=$?
          if [ $DEPLOY_EXIT_CODE -ne 0 ]; then
            echo "Vercel deploy failed:"
            echo "$DEPLOY_OUTPUT"
            exit $DEPLOY_EXIT_CODE
          fi
          DEPLOY_URL=$(echo "$DEPLOY_OUTPUT" | grep -o 'https://[a-zA-Z0-9.-]*\.vercel\.app' | tail -1)
          echo "preview_url=$DEPLOY_URL" >> $GITHUB_OUTPUT

      - name: Comment on PR with Preview URL
        if: steps.vercel_deploy.outcome == 'success'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PR_NUMBER: ${{ github.event.pull_request.number }}
          PREVIEW_URL: '${{ steps.vercel_deploy.outputs.preview_url }}'
        run: |
          gh pr comment $PR_NUMBER --body "Documentation Preview: $PREVIEW_URL" --create-if-none --edit-last


================================================
FILE: .github/workflows/publish-packages.yml
================================================
name: Publish Packages (or Tag Release Manually upon manual dispatch)

on:
  workflow_dispatch:
    branches:
      - main
      - backport/**
    inputs:
      version:
        description: 'Version'
        required: true
        type: string
      tag:
        description: 'Tag name'
        required: true
        type: string
  push:
    branches:
      - main
      - backport/**

permissions:
  contents: read

env:
  # Among other things, opts out of Turborepo telemetry
  # See https://consoledonottrack.com/
  DO_NOT_TRACK: '1'
  # Enables Turborepo Remote Caching.
  TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
  TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
  TURBO_TEAM: ${{ vars.TURBO_TEAM }}

jobs:
  build-and-publish-to-npm:
    permissions:
      contents: write
      id-token: write
      pull-requests: write
    runs-on: ubuntu-latest
    if: github.event_name == 'push'
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Dependencies
        uses: ./.github/workflows/actions/install-dependencies

      - name: Setup Solana Test Validator
        id: start-test-validator
        uses: ./.github/workflows/actions/setup-validator

      - name: Build And Test (bypass cache)
        run: pnpm build --force

      - name: Create Changesets Pull Request or Publish to NPM
        id: changesets
        uses: changesets/action@e0145edc7d9d8679003495b11f87bd8ef63c0cba # v1.5.3
        with:
          publish: pnpm changeset:publish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PUBLISH_TAG: latest
          # Some tasks slow down considerably on GitHub Actions runners when concurrency is high
          TURBO_CONCURRENCY: 1

      - name: Create GitHub Release
        if: steps.changesets.outputs.published == 'true'
        run: |
          cd ./packages/build-scripts/
          ./create-github-release.ts
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Stop Test Validator
        if: always() && steps.start-test-validator.outcome == 'success'
        run: kill ${{ steps.start-test-validator.outputs.pid }}

  build-and-publish-snapshots-to-npm:
    permissions:
      id-token: write
      pull-requests: write
    runs-on: ubuntu-latest
    if: github.event_name == 'push' && github.ref == 'refs/heads/main'
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Dependencies
        uses: ./.github/workflows/actions/install-dependencies

      - name: Setup Solana Test Validator
        id: start-test-validator
        uses: ./.github/workflows/actions/setup-validator

      - name: Run Build Step
        run: pnpm build

      - name: Publish Canary Releases
        run: |
          if [ -n "$(find .changeset -name '*.md')" ]; then
            pnpm changeset version --snapshot canary
            pnpm changeset:publish
          else
            echo "No changesets found, skipping canary publish"
          fi
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PUBLISH_TAG: canary

      - name: Stop Test Validator
        if: always() && steps.start-test-validator.outcome == 'success'
        run: kill ${{ steps.start-test-validator.outputs.pid }}

  validate-version-exists:
    permissions:
      contents: read
    runs-on: ubuntu-latest
    if: github.event_name == 'workflow_dispatch'
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Dependencies
        uses: ./.github/workflows/actions/install-dependencies

      - name: Validate that a package at the given version has already been published
        run: |
          echo '${{ github.event.inputs.version }}' | grep -E "^([0-9]+\.){0,2}[0-9]+$" > /dev/null || echo 'Version must be of the form X.Y.Z'
          pnpm view '@solana/kit@${{ github.event.inputs.version }}'

  tag-release-manually:
    permissions:
      contents: write
      id-token: write
    needs: validate-version-exists
    runs-on: ubuntu-latest
    if: github.event_name == 'workflow_dispatch'
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Dependencies
        uses: ./.github/workflows/actions/install-dependencies

      - name: Tag Release Manually
        run: ./packages/build-scripts/tag-release-manually.ts --version '${{ github.event.inputs.version }}' --tag '${{ github.event.inputs.tag }}'


================================================
FILE: .github/workflows/pull-requests.yml
================================================
name: Pull requests

on:
  pull_request:
  merge_group:

permissions:
  contents: read

env:
  # Among other things, opts out of Turborepo telemetry
  # See https://consoledonottrack.com/
  DO_NOT_TRACK: '1'
  # Some tasks slow down considerably on GitHub Actions runners when concurrency is high
  TURBO_CONCURRENCY: 1
  # Enables Turborepo Remote Caching.
  TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
  TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
  TURBO_TEAM: ${{ vars.TURBO_TEAM }}

jobs:
  # Needed for grouping check-web3 strategies into one check
  all-web3-checks:
    runs-on: ubuntu-latest
    needs: build-and-test
    steps:
      - run: echo "Done"

  build-and-test:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node:
          - 'current'
          - 'lts/*'

    name: Build & Test on Node ${{ matrix.node }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Dependencies
        uses: ./.github/workflows/actions/install-dependencies
        with:
          version: ${{ matrix.node }}

      - name: Setup Solana Test Validator
        id: start-test-validator
        uses: ./.github/workflows/actions/setup-validator

      - name: Build & Test
        run: pnpm build # Don't add --concurrency here; it's already baked in

      - name: Stop Test Validator
        if: always() && steps.start-test-validator.outcome == 'success'
        run: kill ${{ steps.start-test-validator.outputs.pid }}

  dependabot:
    runs-on: ubuntu-latest
    if: github.event_name == 'pull_request' && github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'anza-xyz/kit'
    needs: [build-and-test]
    permissions:
      contents: write
      pull-requests: write
    steps:
      - name: Auto-approve the PR
        run: gh pr review --approve "$PR_URL"
        env:
          PR_URL: ${{ github.event.pull_request.html_url }}
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: Enable auto-merge
        run: gh pr merge --auto --squash "$PR_URL"
        env:
          PR_URL: ${{ github.event.pull_request.html_url }}
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/update-docs-lockfile.yml
================================================
name: Update Docs Lockfile

on:
  pull_request_target:
    paths:
      - 'docs/package.json'

permissions:
  contents: write

jobs:
  update-lockfile:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
    if: github.event.pull_request.user.login == 'dependabot[bot]'
    steps:
      - uses: actions/create-github-app-token@v2
        id: app-token
        with:
          app-id: ${{ vars.APP_ID }}
          private-key: ${{ secrets.PRIVATE_KEY }}

      - name: Set git config
        run: |
          git config --global user.email "github-actions@github.com"
          git config --global user.name "github-actions"
          git config --global url."https://x-access-token:${GITHUB_TOKEN}@github.com/".insteadOf https://github.com/
        env:
          GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}

      - name: Checkout PR branch
        uses: actions/checkout@v6
        with:
          token: ${{ steps.app-token.outputs.token }}
          ref: ${{ github.event.pull_request.head.ref }}
          persist-credentials: false

      - name: Install Dependencies
        uses: ./.github/workflows/actions/install-dependencies

      - name: Update Docs Lockfile
        working-directory: ./docs/
        run: pnpm install --ignore-workspace --no-frozen-lockfile --ignore-scripts

      - name: Commit and Push
        run: |
          git add docs/pnpm-lock.yaml
          if git diff --cached --quiet; then
            echo "No lockfile changes to commit"
          else
            git commit -m "Update docs lockfile"
            git push
          fi


================================================
FILE: .gitignore
================================================
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
node_modules
.pnp
.pnp.js

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# turbo
.turbo

# Sapling SCM
.sl

# `solana-test-validator`
.agave/
test-ledger/

# ignore JetBrains IDE
.idea


================================================
FILE: .npmrc
================================================
auto-install-peers=true
engine-strict=true
workspaces-update=false

================================================
FILE: .prettierignore
================================================
.changeset/
.github/**.md

# These are autogenerated, so leave them alone
**/CHANGELOG.md

declarations/
dist/
doc/
lib/
!docs/src/lib

pnpm-lock.yaml
pnpm-workspace.yaml


================================================
FILE: .skills-inject.json
================================================
{
  "targets": [
    "CLAUDE.md"
  ],
  "skillsDirs": [
    ".agents/skills",
    ".claude/skills"
  ]
}


================================================
FILE: .vscode/extensions.json
================================================
{
    "recommendations": [
        "esbenp.prettier-vscode"
    ]
}

================================================
FILE: .vscode/settings.json
================================================
{
    "editor.defaultFormatter": "esbenp.prettier-vscode"
}


================================================
FILE: CLAUDE.md
================================================
# Agent Instructions

## Project Overview

Kit (`@solana/kit`) is the official JavaScript SDK for building Solana applications, maintained by Anza. The official documentation lives at https://solanakit.com (docs at `/docs`, API reference at `/api`). The GitHub repo is `anza-xyz/kit`.

This is a pnpm monorepo with ~57 packages under `packages/`, orchestrated by Turborepo. The main `@solana/kit` package is a facade that re-exports ~20 workspace packages (accounts, addresses, codecs, errors, keys, rpc, signers, transactions, etc.) and adds its own convenience helpers like `sendAndConfirmTransaction`, `airdrop`, and `fetchLookupTables`.

The documentation website supports an `.mdx` suffix on any page (e.g. `https://solanakit.com/docs/concepts/transactions.mdx`) which returns a cleaner markdown representation suitable for LLM consumption. Use this when you need to look up Kit APIs or concepts.

There is also a companion [`anza-xyz/kit-plugins`](https://github.com/anza-xyz/kit-plugins) monorepo that builds an abstraction layer on top of Kit by offering composable plugins and ready-to-use clients (which are essentially curated sets of plugins). The plugin system relies on the `@solana/plugin-core` and `@solana/plugin-interfaces` packages defined in this repo. Additionally, `@solana/program-client-core` (re-exported from `@solana/kit/program-client-core`) provides the helpers used by the [Codama JS renderer](https://github.com/codama-idl/renderers-js) to generate Kit-compatible program clients.

## Getting Started

```shell
pnpm install                                   # Install dependencies
pnpm test:setup                                # Install the Agave test validator (first time only)
./scripts/start-shared-test-validator.sh       # Start shared test validator (needed for some tests)
pnpm build                                     # Build + test all packages
```

For single-package development:

```shell
cd packages/<name>
pnpm turbo compile:js compile:typedefs         # Compile the package and its dependencies
pnpm dev                                       # Run tests in watch mode
```

## Architecture

The packages form a layered dependency graph. `@solana/errors` is the foundational leaf package with no internal dependencies — nearly every other package depends on it. Core encoding lives in `@solana/codecs-core`, `@solana/codecs-numbers`, `@solana/codecs-strings`, and `@solana/codecs-data-structures`, unified by the `@solana/codecs` facade. `@solana/keys` and `@solana/addresses` build on these codecs and `@solana/nominal-types`. Higher-level packages like `@solana/transactions`, `@solana/rpc`, and `@solana/signers` compose these primitives. `@solana/kit` sits at the top as the consumer-facing umbrella.

Four private "impl" packages (`@solana/crypto-impl`, `@solana/text-encoding-impl`, `@solana/ws-impl`, `@solana/event-target-impl`) provide platform-specific implementations and are **inlined at build time** by tsup — they are never published to npm.

## Build System

- **JS compilation**: tsup (esbuild) via configs in `packages/build-scripts/`.
- **Type declarations**: tsc with per-package `tsconfig.declarations.json`.
- **Build artifacts per package**: Node CJS + ESM, Browser CJS + ESM, React Native ESM. `@solana/kit` additionally produces IIFE bundles (minified production + development with sourcemaps).
- **Platform constants** (set at build time): `__BROWSER__`, `__NODEJS__`, `__REACTNATIVE__`, `__VERSION__`. These are mutually exclusive booleans enabling platform-specific code paths to be tree-shaken.
- **`__DEV__`**: In IIFE builds, statically `true`/`false`. In library builds, replaced with `process.env.NODE_ENV !== 'production'` by the DevFlagPlugin, deferring the decision to the consumer's bundler.

## Testing

- **Framework**: Jest v30 with `@swc/jest` for TypeScript transformation.
- **Shared config**: `packages/test-config/` (`@solana/test-config`).
- **File naming**: `*-test.ts` (runs in both environments), `*-test.node.ts` (Node only), `*-test.browser.ts` (browser/jsdom only). Tests live in `src/__tests__/`.
- **Type tests**: `src/__typetests__/` directories contain compile-time type tests using `satisfies` and `@ts-expect-error`.
- **Lint/prettier**: Also run through Jest runners (`jest-runner-eslint`, `jest-runner-prettier`).
- **Commands**: `pnpm test` runs all unit tests. `pnpm lint` runs lint checks. `pnpm style:fix` auto-fixes formatting.
- **`expect.assertions`**: Only use `expect.assertions(n)` in **async** tests (where you need to guarantee the expected number of assertions ran). Synchronous tests do not need it.
- **Flushing async state**: When a test needs to wait for queued microtasks or promise chains to settle, prefer `jest.useFakeTimers()` + `await jest.runAllTimersAsync()` over hand-rolled `flushMicrotasks` helpers that `await Promise.resolve()` in a loop. The loop count is fragile and breaks as soon as an extra `.then` is introduced. When enabling fake timers in a scoped `beforeEach` (i.e. not at the top of the file), pair it with an `afterEach(() => { jest.useRealTimers(); })` so subsequent describes don't inherit fake timers.
- **Placeholder mocks**: When a test mock must satisfy an interface but a particular method shouldn't be called in that test, make the stub throw/reject rather than using a bare `jest.fn()` that silently returns `undefined`. For sync methods use `jest.fn().mockImplementation(() => { throw new Error('not implemented'); })`; for async methods use `jest.fn().mockRejectedValue(new Error('not implemented'))`. An accidental call then fails the test loudly instead of producing `undefined` and a confusing downstream assertion error.

## Error System

All errors use the `SolanaError` class from `@solana/errors`. Key rules:

- Error codes are numeric constants in `packages/errors/src/codes.ts`, named `SOLANA_ERROR__<DOMAIN>__<DESCRIPTION>` (double-underscore separated).
- Each domain reserves a dedicated numeric range. Never reuse, remove, or reorder error codes.
- Human-readable messages live in `packages/errors/src/messages.ts` with `$key` context interpolation.
- In production builds, messages are stripped. Use `npx @solana/errors decode -- <code>` to decode them.
- To add a new error: add the constant to `codes.ts`, add it to the `SolanaErrorCode` union, optionally define context in `context.ts`, and add the message to `messages.ts`.

## Coding Conventions

- **TypeScript strict mode**, ESM-first.
- **Branded/nominal types**: `@solana/nominal-types` provides `Brand<T, Name>` for types like `Address`, `Signature`, `Lamports` — these are branded primitives, not classes.
- **Functional composition**: Use `pipe()` from `@solana/functional` to compose operations on transaction messages and other data structures.
- **Platform-specific code**: Use `__BROWSER__`, `__NODEJS__`, `__REACTNATIVE__` guards. The build system will tree-shake unused branches.
- **Dev-only code**: Guard with `__DEV__` (e.g. verbose error messages, debug assertions).
- **Formatting**: ESLint via `@solana/eslint-config-solana`, Prettier via `@solana/prettier-config-solana`. Run `pnpm style:fix` to auto-fix.
- **All publishable packages share a fixed version** (currently in lockstep).
- **Deferred promises**: Use `Promise.withResolvers<T>()` instead of hand-rolling a `new Promise((resolve, reject) => ...)` with captured externals. Do not reintroduce a `deferred()` helper — `Promise.withResolvers` already returns `{ promise, resolve, reject }`.

## Changesets & Releases

- Use `npx changeset add --empty` to generate changeset files — never create them manually.
- `patch` for fixes, `minor` for features, `major` for breaking changes (while pre-1.0, `minor` may be treated as breaking).
- No changeset needed for docs-only changes, CI config, dev dependency updates, or test-only changes.
- All publishable packages are version-locked via the `fixed` config in `.changeset/config.json`.

## CI

- **PRs**: Build + test on Node `current` and `lts/*`.
- **Bundle size**: Monitored via BundleMon on every PR.
- **Publishing**: On merge to `main`, changesets action creates a "Version Packages" PR or publishes to npm. Canary snapshots are published on every push to `main`.

<!-- skills-inject:start -->

## Skill Instructions

The following instructions come from installed skills (autogenerated, do not edit manually) and should always be followed.

### Changesets

- Any PR that should trigger a package release MUST include a changeset.
- Identify affected packages by mapping changed files to their nearest `package.json`.
- Choose the right bump: `patch` for fixes, `minor` for features, `major` for breaking changes.
- While a project is pre-1.0, `minor` bumps may be treated as breaking.
- ALWAYS use `npx changeset add --empty` to generate a new changeset file with a random name. NEVER create changeset files manually.
- No changeset needed for: docs-only changes, CI config, dev dependency updates, test-only changes.

### Shipping (Git)

- NEVER commit, push, create branches, or create PRs without explicit user approval.
- Before any git operation that creates or modifies a commit, present a review block containing: changeset entry (if applicable), commit title, and commit/PR description. ALWAYS wait for approval.
- Use standard `git add` and `git commit` workflows. Concise title on the first line, blank line, then description body.
- Use `gh pr create` for pull requests.
- Write commit and PR descriptions as natural flowing prose. Do NOT insert hard line breaks mid-paragraph.

### Shipping (Graphite)

- Check if [Graphite](https://graphite.dev/) is installed (`which gt`). Prefer Graphite when available; fall back to the Git shipping workflow otherwise.
- NEVER commit, push, create branches, or create PRs without explicit user approval.
- Before any git operation that creates or modifies a commit, present a review block containing: changeset entry (if applicable), commit title, and commit/PR description. ALWAYS wait for approval.
- Use `gt create -am "Title" -m "Description body"` for new PRs. The first `-m` sets the commit title; the second sets the PR description.
- Use `gt modify -a` to amend the current branch with follow-up changes (NEVER create additional commits on the same branch).
- ALWAYS escape backticks in commit messages with backslashes for shell compatibility (e.g. `"Update \`my-package\` config"`).
- Do NOT run `gt submit` after committing. Only run it when the user explicitly asks to submit or push.
- Write commit and PR descriptions as natural flowing prose. Do NOT insert hard line breaks mid-paragraph.

### TypeScript Docblocks

- All exported functions, types, interfaces, and constants MUST have JSDoc docblocks.
- Start with `/**`, use `*` prefix for each line, end with `*/` — each on its own line.
- Begin with a clear one-to-two line summary. Add a blank line before tags.
- Include `@param`, `@typeParam`, `@return`, `@throws`, and at least one `@example` when helpful.
- Use `{@link ...}` to reference related items. Add `@see` tags at the end for related APIs.

### TypeScript READMEs

- When adding a new public API, add or update the package's README.
- Structure: brief intro, installation, usage (with code snippet), deep-dive sections.
- Code snippets must be realistic, concise, and use TypeScript syntax.
- Focus on the quickest path to success. Developers should feel excited, not overwhelmed.

<!-- skills-inject:end -->


================================================
FILE: CONTRIBUTING.md
================================================
Kit is developed in public and we encourage and appreciate contributions.

## Getting Started

1. Install dependencies: `pnpm install`
2. The first time you build Kit, you will need to install the Agave test validator, which is used for some tests. `pnpm test:setup`
3. Start a test validator before running tests. `./scripts/start-shared-test-validator.sh`
4. Build + test all packages: `pnpm build`

## Development Environment

Kit is developed as a monorepo using [pnpm](https://pnpm.io/) and [turborepo](https://turborepo.com/).

Often your changes will only apply to a single package. You can run tests for a single package and watch for changes:

```shell
cd packages/accounts
pnpm turbo compile:js compile:typedefs
pnpm dev
```

## A Note on AI-Generated Code

We are supportive of using AI tools to _assist_ your development process (e.g., for boilerplate, optimization suggestions, or debugging).

However, we do not accept "vibe-coded" or purely AI-generated contributions. You must be able to explain, test, and take full ownership of every line of code you submit.

A good rule of thumb is not to use AI to write the PR description. This tends to be less clear and harder to review.

**Pull requests containing code that the author clearly does not understand will be rejected.** You are the developer, not the prompt engineer. All code must be intentional and understood.


================================================
FILE: LICENSE
================================================
Copyright (c) 2023 Solana Labs, Inc

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: README.md
================================================
[![npm][npm-image]][npm-url]
[![npm-downloads][npm-downloads-image]][npm-url]
<br />
[![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]

[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[code-style-prettier-url]: https://github.com/prettier/prettier
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/kit?style=flat
[npm-image]: https://img.shields.io/npm/v/@solana/kit?style=flat
[npm-url]: https://www.npmjs.com/package/@solana/kit

# Kit

This is the JavaScript SDK for building Solana apps for Node, web, and React Native.

> [!NOTE]
> Did you expect to find `@solana/web3.js` here? You're in the right place! We have renamed the 2.x line of `@solana/web3.js` to `@solana/kit`.
>
> The code for the 1.x line of `@solana/web3.js` can be found [here](https://github.com/solana-labs/solana-web3.js/tree/maintenance/v1.x) and the documentation [here](https://solana-foundation.github.io/solana-web3.js/).

# Installation

For use in a Node.js or web application:

```shell
npm install --save @solana/kit
```

For use in a browser, without a build system:

```html
<!-- Development (debug mode, unminified) -->
<script src="https://unpkg.com/@solana/kit/dist/index.development.js"></script>

<!-- Production (minified) -->
<script src="https://unpkg.com/@solana/kit/dist/index.production.min.js"></script>
```

# Quick Start

To get a feel for the API, run and modify the live examples in the `examples/` directory. There, you will find a series of single-purpose Node scripts that demonstrate a specific feature or use case. You will also find a React application that you can run in a browser, that demonstrates being able to create, sign, and send transactions using browser wallets.

For a fully baked intro, see: [Getting started with Solana kit](https://www.solanakit.com/docs/getting-started)

# What's New in Kit

Kit is a response to many of the pain points you have communicated to us when developing Solana applications with web3.js.

## Tree-Shakability

The object-oriented design of the web3.js (1.x) API prevents optimizing compilers from being able to ‘tree-shake’ unused code from your production builds. No matter how much of the web3.js API you use in your application, you have until now been forced to package all of it.

Read more about tree-shaking here:

- [Mozilla Developer Docs: Tree Shaking](https://developer.mozilla.org/en-US/docs/Glossary/Tree_shaking)
- [WebPack Docs: Tree Shaking](https://webpack.js.org/guides/tree-shaking/)
- [Web.Dev Blog Article: Reduce JavaScript Payloads with Tree Shaking](https://web.dev/articles/reduce-javascript-payloads-with-tree-shaking)

One example of an API that can’t be tree-shaken is the `Connection` class. It has dozens of methods, but because it’s a _class_ you have no choice but to include every method in your application’s final bundle, no matter how many you _actually_ use.

Needlessly large JavaScript bundles can cause issues with deployments to cloud compute providers like Cloudflare or AWS Lambda. They also impact webapp startup performance because of longer download and JavaScript parse times.

Kit is fully tree-shakable and will remain so, enforced by build-time checks. Optimizing compilers can now eliminate those parts of the library that your application does not use.

Kit is comprised of several smaller, modular packages under the `@solana` organization, including:

- `@solana/accounts`: For fetching and decoding accounts
- `@solana/codecs`: For composing data (de)serializers from a set of primitives or building custom ones
- `@solana/errors`: For identifying and refining coded errors thrown in the `@solana` namespace
- `@solana/rpc`: For sending RPC requests
- `@solana/rpc-subscriptions`: For subscribing to RPC notifications
- `@solana/signers`: For building message and/or transaction signer objects
- `@solana/sysvars`: For fetching and decoding sysvar accounts
- `@solana/transaction-messages`: For building and transforming Solana transaction message objects
- `@solana/transactions`: For compiling and signing transactions for submission to the network
- And many more!

Some of these packages are themselves composed of smaller packages. For instance, `@solana/rpc` is composed of `@solana/rpc-spec` (for core JSON RPC specification types), `@solana/rpc-api` (for the Solana-specific RPC methods), `@solana/rpc-transport-http` (for the default HTTP transport) and so on.

Developers can use the default configurations within the main library (`@solana/kit`) or import any of its subpackages where customization-through-composition is desired.

## Composable Internals

Depending on your use case and your tolerance for certain application behaviours, you may wish to configure your application to make a different set of tradeoffs than another developer. The web3.js (1.x) API imposed a rigid set of common-case defaults on _all_ developers, some of which were impossible to change.

The inability to customize web3.js up until now has been a source of frustration:

- The Mango team wanted to customize the transaction confirmation strategy, but all of that functionality is hidden away behind `confirmTransaction` – a static method of `Connection`. [Here’s the code for `confirmTransaction` on GitHub](https://github.com/solana-labs/solana-web3.js/blob/69a8ad25ef09f9e6d5bff1ffa8428d9be0bd32ac/packages/library-legacy/src/connection.ts#L3734).
- Solana developer ‘mPaella’ [wanted us to add a feature in the RPC](https://github.com/solana-labs/solana-web3.js/issues/1143#issuecomment-1435927152) that would failover to a set of backup URLs in case the primary one failed.
- Solana developer ‘epicfaace’ wanted first-class support for automatic time-windowed batching in the RPC transport. [Here’s their pull request](https://github.com/solana-labs/solana/pull/23628).
- Multiple folks have expressed the need for custom retry logic for failed requests or transactions. [Here’s a pull request from ‘dafyddd’](https://github.com/solana-labs/solana/pull/11811) and [another from ‘abrkn’](https://github.com/solana-labs/solana-web3.js/issues/1041) attempting to modify retry logic to suit their individual use cases.

Kit exposes far more of its internals, particularly where communication with an RPC is concerned, and allows willing developers the ability to compose new implementations from the default ones that manifest a nearly limitless array of customizations.

The individual modules that make up Kit are assembled in a **default** configuration reminiscent of the legacy library as part of the npm package `@solana/kit`, but those who wish to assemble them in different configurations may do so.

Generic types are offered in numerous places, allowing you to specify new functionality, to make extensions to each API via composition and supertypes, and to encourage you to create higher-level opinionated abstractions of your own.

In fact, we expect you to do so, and to open source some of those for use by others with similar needs.

## Modern JavaScript; Zero-Dependency

The advance of modern JavaScript features presents an opportunity to developers of crypto applications, such as the ability to use native Ed25519 keys and to express large values as native `bigint`.

The Web Incubator Community Group has advocated for the addition of Ed25519 support to the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API), and support has already landed in _most_ modern JavaScript runtimes.

Engine support for `bigint` values has also become commonplace. The older `number` primitive in JavaScript has a maximum value of 2^53 - 1, whereas Rust’s `u64` can represent values up to 2^64.

Kit eliminates userspace implementations of Ed25519 cryptography, large number polyfills, and more, in favour of custom implementations or the use of native JavaScript features, reducing the size of the library. It has no third-party dependencies.

## Functional Architecture

The object oriented, class-based architecture of web3.js (1.x) causes unnecessary bundle bloat. Your application has no choice but to bundle _all_ of the functionality and dependencies of a class no matter how many methods you actually use at runtime.

Class-based architecture also presents unique risks to developers who trigger the dual-package hazard. This describes a situation you can find yourself in if you build for both CommonJS and ES modules. It arises when two copies of the same class are present in the dependency tree, causing checks like `instanceof` to fail. This introduces aggravating and difficult to debug problems.

Read more about dual-package hazard:

- [NodeJS: Dual Package Hazard](https://nodejs.org/api/packages.html#dual-package-hazard)

Kit implements no classes (with the notable exception of the `SolanaError` class) and implements the thinnest possible interfaces at function boundaries.

## Statistics

Consider these statistical comparisons between Kit and the legacy web3.js 1.x.

|                                                                                                        | 1.x (Legacy) | Kit        | +/- % |
| ------------------------------------------------------------------------------------------------------ | ------------ | ---------- | ----- |
| Total minified size of library                                                                         | 81 KB        | 57.5 KB    | -29%  |
| Total minified size of library (when runtime supports Ed25519)                                         | 81 KB        | 53 KB      | -33%  |
| Bundled size of a web application that executes a transfer of lamports                                 | 111 KB       | 23.9 KB    | -78%  |
| Bundled size of a web application that executes a transfer of lamports (when runtime supports Ed25519) | 111 KB       | 18.2 KB    | -83%  |
| Performance of key generation, signing, and verifying signatures (Brave with Experimental API flag)    | 700 ops/s    | 7000 ops/s | +900% |
| First-load size for Solana Explorer                                                                    | 311 KB       | 228 KB     | -26%  |

The re-engineered library achieves these speedups and reductions in bundle size in large part through use of modern JavaScript APIs.

To validate our work, we replaced the legacy 1.x library with Kit on the homepage of the Solana Explorer. Total first-load bundle size dropped by 26% without removing a single feature. [Here’s an X thread](https://twitter.com/callum_codes/status/1679124485218226176) by Callum McIntyre if you would like to dig deeper.

# A Tour of the Kit API

Here’s an overview of how to use the new library to interact with the RPC, configure network transports, work with Ed25519 keys, and to serialize data.

## RPC

Kit ships with an implementation of the [JSON RPC specification](https://www.jsonrpc.org/specification) and a type spec for the [Solana JSON RPC](https://solana.com/docs/rpc).

The main package responsible for managing communication with an RPC is `@solana/rpc`. However, this package makes use of more granular packages to break down the RPC logic into smaller pieces. Namely, these packages are:

- `@solana/rpc`: Contains all logic related to sending Solana RPC calls.
- `@solana/rpc-api`: Describes all Solana RPC methods using types.
- `@solana/rpc-transport-http`: Provides a concrete implementation of an RPC transport using HTTP requests.
- `@solana/rpc-spec`: Defines the JSON RPC spec for sending RPC requests.
- `@solana/rpc-spec-types`: Shared JSON RPC specifications types and helpers that are used by both `@solana/rpc` and `@solana/rpc-subscriptions` (described in the next section).
- `@solana/rpc-types`: Shared Solana RPC types and helpers that are used by both `@solana/rpc` and `@solana/rpc-subscriptions`.

The main `@solana/kit` package re-exports the `@solana/rpc` package so, going forward, we will import RPC types and functions from the library directly.

### RPC Calls

You can use the `createSolanaRpc` function by providing the URL of a Solana JSON RPC server. This will create a default client for interacting with the Solana JSON RPC API.

```ts
import { createSolanaRpc } from '@solana/kit';

// Create an RPC client.
const rpc = createSolanaRpc('http://127.0.0.1:8899');
//    ^? Rpc<SolanaRpcApi>

// Send a request.
const slot = await rpc.getSlot().send();
```

### Custom RPC Transports

The `createSolanaRpc` function communicates with the RPC server using a default HTTP transport that should satisfy most use cases. You can provide your own transport or wrap an existing one to communicate with RPC servers in any way you see fit. In the example below, we explicitly create a transport and use it to create a new RPC client via the `createSolanaRpcFromTransport` function.

```ts
import { createSolanaRpcFromTransport, createDefaultRpcTransport } from '@solana/kit';

// Create an HTTP transport or any custom transport of your choice.
const transport = createDefaultRpcTransport({ url: 'https://api.devnet.solana.com' });

// Create an RPC client using that transport.
const rpc = createSolanaRpcFromTransport(transport);
//    ^? Rpc<SolanaRpcApi>

// Send a request.
const slot = await rpc.getSlot().send();
```

A custom transport can implement specialized functionality such as coordinating multiple transports, implementing retries, and more. Let's take a look at some concrete examples.

#### Round Robin

A ‘round robin’ transport is one that distributes requests to a list of endpoints in sequence.

```ts
import { createDefaultRpcTransport, createSolanaRpcFromTransport, type RpcTransport } from '@solana/kit';

// Create an HTTP transport for each RPC server.
const transports = [
    createDefaultRpcTransport({ url: 'https://mainnet-beta.my-server-1.com' }),
    createDefaultRpcTransport({ url: 'https://mainnet-beta.my-server-2.com' }),
    createDefaultRpcTransport({ url: 'https://mainnet-beta.my-server-3.com' }),
];

// Set up the round-robin transport.
let nextTransport = 0;
async function roundRobinTransport<TResponse>(...args: Parameters<RpcTransport>): Promise<TResponse> {
    const transport = transports[nextTransport];
    nextTransport = (nextTransport + 1) % transports.length;
    return await transport(...args);
}

// Create an RPC client using the round-robin transport.
const rpc = createSolanaRpcFromTransport(roundRobinTransport);
```

#### Sharding

A sharding transport is a kind of distributing transport that sends requests to a particular server based on something about the request itself. Here’s an example that sends requests to different servers depending on the name of the method:

```ts
import { createDefaultRpcTransport, createSolanaRpcFromTransport, type RpcTransport } from '@solana/kit';

// Create multiple transports.
const transportA = createDefaultRpcTransport({ url: 'https://mainnet-beta.my-server-1.com' });
const transportB = createDefaultRpcTransport({ url: 'https://mainnet-beta.my-server-2.com' });
const transportC = createDefaultRpcTransport({ url: 'https://mainnet-beta.my-server-3.com' });
const transportD = createDefaultRpcTransport({ url: 'https://mainnet-beta.my-server-4.com' });

// Function to determine which shard to use based on the request method.
function selectShard(method: string): RpcTransport {
    switch (method) {
        case 'getAccountInfo':
        case 'getBalance':
            return transportA;
        case 'getLatestBlockhash':
        case 'getTransaction':
            return transportB;
        case 'sendTransaction':
            return transportC;
        default:
            return transportD;
    }
}

// Create a transport that selects the correct transport given the request method name.
async function shardingTransport<TResponse>(...args: Parameters<RpcTransport>): Promise<TResponse> {
    const payload = args[0].payload as { method: string };
    const selectedTransport = selectShard(payload.method);
    return (await selectedTransport(...args)) as TResponse;
}

// Create an RPC client using the sharding transport.
const rpc = createSolanaRpcFromTransport(shardingTransport);
```

#### Retry

A custom transport is a good place to implement global retry logic for every request:

```ts
import { createDefaultRpcTransport, createSolanaRpcFromTransport, type RpcTransport } from '@solana/kit';

// Set the maximum number of attempts to retry a request.
const MAX_ATTEMPTS = 4;

// Create the default transport.
const defaultTransport = createDefaultRpcTransport({ url: 'https://mainnet-beta.my-server-1.com' });

// Sleep function to wait for a given number of milliseconds.
function sleep(ms: number): Promise<void> {
    return new Promise(resolve => setTimeout(resolve, ms));
}

// Calculate the delay for a given attempt.
function calculateRetryDelay(attempt: number): number {
    // Exponential backoff with a maximum of 1.5 seconds.
    return Math.min(100 * Math.pow(2, attempt), 1500);
}

// A retrying transport that will retry up to MAX_ATTEMPTS times before failing.
async function retryingTransport<TResponse>(...args: Parameters<RpcTransport>): Promise<TResponse> {
    let requestError;
    for (let attempts = 0; attempts < MAX_ATTEMPTS; attempts++) {
        try {
            return await defaultTransport(...args);
        } catch (err) {
            requestError = err;
            // Only sleep if we have more attempts remaining.
            if (attempts < MAX_ATTEMPTS - 1) {
                const retryDelay = calculateRetryDelay(attempts);
                await sleep(retryDelay);
            }
        }
    }
    throw requestError;
}

// Create the RPC client using the retrying transport.
const rpc = createSolanaRpcFromTransport(retryingTransport);
```

#### Failover

Support for handling network failures can be implemented in the transport itself. Here’s an example of some failover logic integrated into a transport:

```ts
import { createDefaultRpcTransport, createSolanaRpcFromTransport, type RpcTransport } from '@solana/kit';

// List of RPC endpoints for failover.
const rpcEndpoints = [
    'https://mainnet-beta.my-server-1.com',
    'https://mainnet-beta.my-server-2.com',
    'https://mainnet-beta.my-server-3.com',
    'https://mainnet-beta.my-server-3.com',
];

// Create an array of transports from the endpoints.
const transports = rpcEndpoints.map(url => createDefaultRpcTransport({ url }));

// A failover transport that switches to the next transport on failure.
async function failoverTransport<TResponse>(...args: Parameters<RpcTransport>): Promise<TResponse> {
    let lastError;
    for (const transport of transports) {
        try {
            return await transport(...args);
        } catch (err) {
            lastError = err;
            console.warn(`Transport failed: ${err}. Trying next transport...`);
        }
    }
    // If all transports fail, throw the last error.
    throw lastError;
}

// Create the RPC client using the failover transport.
const rpc = createSolanaRpcFromTransport(failoverTransport);
```

### Augmenting/Constraining the RPC API

Using the `createSolanaRpc` or `createSolanaRpcFromTransport` methods, we always get the same API that includes the Solana RPC API methods. Since the RPC API is described using types only, it is possible to augment those types to add your own methods.

When constraining the API scope, keep in mind that types don’t affect bundle size. You may still like to constrain the type-spec for a variety of reasons, including reducing TypeScript noise.

#### Constraining by Cluster

If you're using a specific cluster, you may wrap your RPC URL inside a helper function like `mainnet` or `devnet` to inject that information into the RPC type system.

```ts
import { createSolanaRpc, mainnet, devnet } from '@solana/kit';

const mainnetRpc = createSolanaRpc(mainnet('https://api.mainnet-beta.solana.com'));
//    ^? RpcMainnet<SolanaRpcApiMainnet>

const devnetRpc = createSolanaRpc(devnet('https://api.devnet.solana.com'));
//    ^? RpcDevnet<SolanaRpcApiDevnet>
```

In the example above, `devnetRpc.requestAirdrop(..)` will work, but `mainnetRpc.requestAirdrop(..)` will raise a TypeScript error since `requestAirdrop` is not a valid method of the mainnet cluster.

#### Cherry-Picking API Methods

You can constrain the API’s type-spec even further so you are left only with the methods you need. The simplest way to do this is to cast the created RPC client to a type that only includes the required methods.

```ts
import { createSolanaRpc, type Rpc, type GetAccountInfoApi, type GetMultipleAccountsApi } from '@solana/kit';

const rpc = createSolanaRpc('http://127.0.0.1:8899') as Rpc<GetAccountInfoApi & GetMultipleAccountsApi>;
```

Alternatively, you can explicitly create the RPC API using the `createSolanaRpcApi` function. You will need to create your own transport and bind the two together using the `createRpc` function.

```ts
import {
    createDefaultRpcTransport,
    createRpc,
    createSolanaRpcApi,
    DEFAULT_RPC_CONFIG,
    type GetAccountInfoApi,
    type GetMultipleAccountsApi,
} from '@solana/kit';

const api = createSolanaRpcApi<GetAccountInfoApi & GetMultipleAccountsApi>(DEFAULT_RPC_CONFIG);
const transport = createDefaultRpcTransport({ url: 'http://127.0.0.1:8899' });

const rpc = createRpc({ api, transport });
```

Note that the `createSolanaRpcApi` function is a wrapper on top of the `createJsonRpcApi` function which adds some Solana-specific transformers such as setting a default commitment on all methods or throwing an error when an integer overflow is detected.

#### Creating Your Own API Methods

The new library’s RPC specification supports an _infinite_ number of JSON-RPC methods with **zero increase** in bundle size.

This means the library can support future additions to the official [Solana JSON RPC](https://docs.solana.com/api), or [custom RPC methods](https://docs.helius.dev/compression-and-das-api/digital-asset-standard-das-api/get-asset) defined by some RPC provider.

Here’s an example of how a developer at might build a custom RPC type-spec for an RPC provider's implementation of the Metaplex Digital Asset Standard's `getAsset` method:

```ts
// Define the method's response payload.
type GetAssetApiResponse = Readonly<{
    interface: DasApiAssetInterface;
    id: Address;
    content: Readonly<{
        files?: readonly {
            mime?: string;
            uri?: string;
            [key: string]: unknown;
        }[];
        json_uri: string;
        links?: readonly {
            [key: string]: unknown;
        }[];
        metadata: DasApiMetadata;
    }>;
    /* ...etc... */
}>;

// Set up a type spec for the request method.
type GetAssetApi = {
    // Define the method's name, parameters and response type
    getAsset(args: { id: Address }): GetAssetApiResponse;
};

// Export the type spec for downstream users.
export type MetaplexDASApi = GetAssetApi;
```

Here’s how a developer might use it:

```ts
import { createDefaultRpcTransport, createRpc, createJsonRpcApi } from '@solana/kit';

// Create the custom API.
const api = createJsonRpcApi<MetaplexDASApi>();

// Set up an HTTP transport to a server that supports the custom API.
const transport = createDefaultRpcTransport({
    url: 'https://mainnet.helius-rpc.com/?api-key=<api_key>',
});

// Create the RPC client.
const metaplexDASRpc = createRpc({ api, transport });
//    ^? Rpc<MetaplexDASApi>
```

As long as a particular JSON RPC method adheres to the [official JSON RPC specification](https://www.jsonrpc.org/specification), it will be supported by Kit.

### Aborting RPC Requests

RPC requests are now abortable with modern `AbortControllers`. When calling an RPC method such as `getSlot`, it will return a `PendingRpcRequest` proxy object that contains a `send` method to send the request to the server.

```ts
const pendingRequest: PendingRpcRequest<Slot> = rpc.getSlot();

const slot: Slot = await pendingRequest.send();
```

The arguments of the `getSlot` method are reserved for the request payload, but the `send` method is where additional arguments such as an `AbortSignal` can be accepted in the context of the request.

Aborting RPC requests can be useful for a variety of things such as setting a timeout on a request or cancelling a request when a user navigates away from a page.

```ts
import { createSolanaRpc } from '@solana/kit';

const rpc = createSolanaRpc('http://127.0.0.1:8900');

// Create a new AbortController.
const abortController = new AbortController();

// Abort the request when the user navigates away from the current page.
function onUserNavigateAway() {
    abortController.abort();
}

// The request will be aborted if and only if the user navigates away from the page.
const slot = await rpc.getSlot().send({ abortSignal: abortController.signal });
```

Read more about `AbortController` here:

- [Mozilla Developer Docs: `AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController)
- [Mozilla Developer Docs: `AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal)
- [JavaScript.info: Fetch: Abort](https://javascript.info/fetch-abort)

## RPC Subscriptions

Subscriptions in the legacy library do not allow custom retry logic and do not allow you to recover from potentially missed messages. The new version does away with silent retries, surfaces transport errors to your application, and gives you the opportunity to recover from gap events.

The main package responsible for managing communication with RPC subscriptions is `@solana/rpc-subscriptions`. However, similarly to `@solana/rpc`, this package also makes use of more granular packages. These packages are:

- `@solana/rpc-subscriptions`: Contains all logic related to subscribing to Solana RPC notifications.
- `@solana/rpc-subscriptions-api`: Describes all Solana RPC subscriptions using types.
- `@solana/rpc-subscriptions-channel-websocket`: Provides a concrete implementation of an RPC Subscriptions channel using WebSockets.
- `@solana/rpc-subscriptions-spec`: Defines the JSON RPC spec for subscribing to RPC notifications.
- `@solana/rpc-spec-types`: Shared JSON RPC specifications types and helpers that are used by both `@solana/rpc` and `@solana/rpc-subscriptions`.
- `@solana/rpc-types`: Shared Solana RPC types and helpers that are used by both `@solana/rpc` and `@solana/rpc-subscriptions`.

Since the main `@solana/kit` library also re-exports the `@solana/rpc-subscriptions` package we will import RPC Subscriptions types and functions directly from the main library going forward.

### Getting Started with RPC Subscriptions

To get started with RPC Subscriptions, you may use the `createSolanaRpcSubscriptions` function by providing the WebSocket URL of a Solana JSON RPC server. This will create a default client for interacting with Solana RPC Subscriptions.

```ts
import { createSolanaRpcSubscriptions } from '@solana/kit';

// Create an RPC Subscriptions client.
const rpcSubscriptions = createSolanaRpcSubscriptions('ws://127.0.0.1:8900');
//    ^? RpcSubscriptions<SolanaRpcSubscriptionsApi>
```

### Subscriptions as `AsyncIterators`

The new subscriptions API vends subscription notifications as an `AsyncIterator`. The `AsyncIterator` conforms to the [async iterator protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols), which allows developers to consume messages using a `for await...of` loop.

Here’s an example of working with a subscription in the new library:

```ts
import { address, createSolanaRpcSubscriptions, createDefaultRpcSubscriptionsTransport } from '@solana/kit';

// Create the RPC Subscriptions client.
const rpcSubscriptions = createSolanaRpcSubscriptions('ws://127.0.0.1:8900');

// Set up an abort controller.
const abortController = new AbortController();

// Subscribe to account notifications.
const accountNotifications = await rpcSubscriptions
    .accountNotifications(address('AxZfZWeqztBCL37Mkjkd4b8Hf6J13WCcfozrBY6vZzv3'), { commitment: 'confirmed' })
    .subscribe({ abortSignal: abortController.signal });

try {
    // Consume messages.
    for await (const notification of accountNotifications) {
        console.log('New balance', notification.value.lamports);
    }
} catch (e) {
    // The subscription went down.
    // Retry it and then recover from potentially having missed
    // a balance update, here (eg. by making a `getBalance()` call).
}
```

You can read more about `AsyncIterator` at the following links:

- [Mozilla Developer Docs: `AsyncIterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncIterator)
- [Luciano Mammino (Blog): JavaScript Async Iterators](https://www.nodejsdesignpatterns.com/blog/javascript-async-iterators/)

### Aborting RPC Subscriptions

Similarly to RPC calls, applications can terminate active subscriptions using an `AbortController` attribute on the `subscribe` method. In fact, this parameter is _required_ for subscriptions to encourage you to clean up subscriptions that your application no longer needs.

Let's take a look at some concrete examples that demonstrate how to abort subscriptions.

#### Subscription Timeout

Here's an example of an `AbortController` used to abort a subscription after a 5-second timeout:

```ts
import { createSolanaRpcSubscriptions } from '@solana/kit';

const rpcSubscriptions = createSolanaRpcSubscriptions('ws://127.0.0.1:8900');

// Subscribe for slot notifications using an AbortSignal that times out after 5 seconds.
const slotNotifications = await rpcSubscriptions
    .slotNotifications()
    .subscribe({ abortSignal: AbortSignal.timeout(5000) });

// Log slot notifications.
for await (const notification of slotNotifications) {
    console.log('Slot notification', notification);
}

console.log('Done.');
```

Read more about `AbortController` at the following links:

- [Mozilla Developer Docs: `AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController)
- [Mozilla Developer Docs: `AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal)
- [JavaScript.info: Fetch: Abort](https://javascript.info/fetch-abort)

#### Cancelling Subscriptions

It is also possible to abort a subscription inside the `for await...of` loop. This enables us to cancel a subscription based on some condition, such as a change in the state of an account. For instance, the following example cancels a subscription when the owner of an account changes:

```ts
// Subscribe to account notifications.
const accountNotifications = await rpc
    .accountNotifications(address('AxZfZWeqztBCL37Mkjkd4b8Hf6J13WCcfozrBY6vZzv3'), { commitment: 'confirmed' })
    .subscribe({ abortSignal });

// Consume messages.
let previousOwner = null;
for await (const notification of accountNotifications) {
    const {
        value: { owner },
    } = notification;
    // Check the owner to see if it has changed
    if (previousOwner && owner !== previousOwner) {
        // If so, abort the subscription
        abortController.abort();
    } else {
        console.log(notification);
    }
    previousOwner = owner;
}
```

### Failed vs. Aborted Subscriptions

It is important to note that a subscription failure behaves differently from a subscription abort. A subscription failure occurs when the subscription goes down and will throw an error that can be intercepted in a `try/catch`. However, an aborted subscription will not throw an error, but will instead exit the `for await...of` loop.

```ts
try {
    for await (const notification of notifications) {
        // Consume messages.
    }
    // [ABORTED] Reaching this line means the subscription was aborted — i.e. unsubscribed.
} catch (e) {
    // [FAILED] Reaching this line means the subscription went down.
    // Retry it, then recover from potential missed messages.
} finally {
    // [ABORTED or FAILED] Whether the subscription failed or was aborted, you can run cleanup code here.
}
```

### Message Gap Recovery

One of the most crucial aspects of any subscription API is managing potential missed messages. Missing messages, such as account state updates, could be catastrophic for an application. That’s why the new library provides native support for recovering missed messages using the `AsyncIterator`.

When a connection fails unexpectedly, any messages you miss while disconnected can result in your UI falling behind or becoming corrupt. Because subscription failure is now made explicit in the new API, you can implement ‘catch-up’ logic after re-establishing the subscription.

Here’s an example of such logic:

```ts
try {
    for await (const notif of accountNotifications) {
        updateAccountBalance(notif.lamports);
    }
} catch (e) {
    // The subscription failed.
    // First, re-establish the subscription.
    await setupAccountBalanceSubscription(address);
    // Then make a one-shot request to 'catch up' on any missed balance changes.
    const { value: lamports } = await rpc.getBalance(address).send();
    updateAccountBalance(lamports);
}
```

### Using Custom RPC Subscriptions Transports

The `createSolanaRpcSubscriptions` function communicates with the RPC server using a default `WebSocket` channel that should satisfy most use cases. However, you may here as well provide your own channel creator or decorate existing ones to communicate with RPC servers in any way you see fit. In the example below, we supply a custom `WebSocket` channel creator and use it to create a new RPC Subscriptions client via the `createSolanaRpcSubscriptionsFromTransport` function.

```ts
import { createDefaultRpcSubscriptionsTransport, createSolanaRpcSubscriptionsFromTransport } from '@solana/kit';

// Create a transport with a custom channel creator of your choice.
const transport = createDefaultRpcSubscriptionsTransport({
    createChannel({ abortSignal }) {
        return createWebSocketChannel({
            maxSubscriptionsPerChannel: 100,
            minChannels: 25,
            sendBufferHighWatermark: 32_768,
            signal: abortSignal,
            url: 'ws://127.0.0.1:8900',
        });
    },
});

// Create an RPC client using that transport.
const rpcSubscriptions = createSolanaRpcSubscriptionsFromTransport(transport);
//    ^? RpcSubscriptions<SolanaRpcSubscriptionsApi>
```

### Augmenting/Constraining the RPC Subscriptions API

Using the `createSolanaRpcSubscriptions` or `createSolanaRpcSubscriptionsFromTransport` functions, we always get the same RPC Subscriptions API, including all Solana RPC stable subscriptions. However, since the RPC Subscriptions API is described using types only, it is possible to constrain the API to a specific set of subscriptions or even add your own custom subscriptions.

#### Constraining by Cluster

If you're using a specific cluster, you may wrap your RPC URL inside a helper function like `mainnet` or `devnet` to inject that information into the RPC type system.

```ts
import { createSolanaRpcSubscriptions, mainnet, devnet } from '@solana/kit';

const mainnetRpc = createSolanaRpcSubscriptions(mainnet('https://api.mainnet-beta.solana.com'));
//    ^? RpcSubscriptionsMainnet<SolanaRpcSubscriptionsApi>

const devnetRpc = createSolanaRpcSubscriptions(devnet('https://api.devnet.solana.com'));
//    ^? RpcSubscriptionsDevnet<SolanaRpcSubscriptionsApi>
```

#### Including Unstable Subscriptions

If your app needs access to [unstable RPC Subscriptions](https://solana.com/docs/rpc/websocket/blocksubscribe) — e.g. `BlockNotificationsApi` or `SlotsUpdatesNotificationsApi` — and your RPC server supports them, you may use the `createSolanaRpcSubscriptions_UNSTABLE` and `createSolanaRpcSubscriptionsFromTransport_UNSTABLE` functions to create an RPC Subscriptions client that includes those subscriptions.

```ts
import {
    createDefaultSolanaRpcSubscriptionsChannelCreator,
    createDefaultRpcSubscriptionsTransport,
    createSolanaRpcSubscriptions_UNSTABLE,
    createSolanaRpcSubscriptionsFromTransport_UNSTABLE,
} from '@solana/kit';

// Using the default WebSocket channel.
const rpcSubscriptions = createSolanaRpcSubscriptions_UNSTABLE('ws://127.0.0.1:8900');
//    ^? RpcSubscriptions<SolanaRpcSubscriptionsApi & SolanaRpcSubscriptionsApiUnstable>

// Using a custom transport.
const transport = createDefaultRpcSubscriptionsTransport({
    createChannel: createDefaultSolanaRpcSubscriptionsChannelCreator({
        url: 'ws://127.0.0.1:8900',
    }),
});
const rpcSubscriptions = createSolanaRpcSubscriptionsFromTransport_UNSTABLE(transport);
//    ^? RpcSubscriptions<SolanaRpcSubscriptionsApi & SolanaRpcSubscriptionsApiUnstable>
```

#### Cherry-Picking API Methods

You may constrain the scope of the Subscription API even further so you are left only with the subscriptions you need. The simplest way to do this is to cast the created RPC client to a type that only includes the methods you need.

```ts
import {
    createSolanaRpcSubscriptions,
    type RpcSubscriptions,
    type AccountNotificationsApi,
    type SlotNotificationsApi,
} from '@solana/kit';

const rpc = createSolanaRpcSubscriptions('ws://127.0.0.1:8900') as RpcSubscriptions<
    AccountNotificationsApi & SlotNotificationsApi
>;
```

Alternatively, you may explicitly create the RPC Subscriptions API using the `createSolanaRpcSubscriptionsApi` function. You will then need to create your own transport explicitly and bind the two together using the `createSubscriptionRpc` function.

```ts
import {
    createDefaultSolanaRpcSubscriptionsChannelCreator,
    createDefaultRpcSubscriptionsTransport,
    createSubscriptionRpc,
    createSolanaRpcSubscriptionsApi,
    DEFAULT_RPC_CONFIG,
    type AccountNotificationsApi,
    type SlotNotificationsApi,
} from '@solana/kit';

const api = createSolanaRpcSubscriptionsApi<AccountNotificationsApi & SlotNotificationsApi>(DEFAULT_RPC_CONFIG);
const transport = createDefaultRpcSubscriptionsTransport({
    createChannel: createDefaultSolanaRpcSubscriptionsChannelCreator({
        url: 'ws://127.0.0.1:8900',
    }),
});
const rpcSubscriptions = createSubscriptionRpc({ api, transport });
```

Note that the `createSolanaRpcSubscriptionsApi` function is a wrapper on top of the `createRpcSubscriptionsApi` function which adds some Solana-specific transformers such as setting a default commitment on all methods or throwing an error when an integer overflow is detected.

## Keys

The new library takes a brand-new approach to Solana key pairs and addresses, which will feel quite different from the classes `PublicKey` and `Keypair` from version 1.x.

### Web Crypto API

All key operations now use the native Ed25519 implementation in JavaScript’s Web Crypto API.

The API itself is designed to be a more reliably secure way to manage highly sensitive secret key information, but **developers should still use extreme caution when dealing with secret key bytes in their applications**.

One thing to note is that many operations from Web Crypto – such as importing, generating, signing, and verifying are now **asynchronous**.

Here’s an example of generating a `CryptoKeyPair` using the Web Crypto API and signing a message:

```ts
import { generateKeyPair, signBytes, verifySignature } from '@solana/kit';

const keyPair: CryptoKeyPair = await generateKeyPair();

const message = new Uint8Array(8).fill(0);

const signedMessage = await signBytes(keyPair.privateKey, message);
//    ^? Signature

const verified = await verifySignature(keyPair.publicKey, signedMessage, message);
```

### Web Crypto Polyfill

Wherever Ed25519 is not supported, we offer a polyfill for Web Crypto’s Ed25519 API.

This polyfill can be found at `@solana/webcrypto-ed25519-polyfill` and mimics the functionality of the Web Crypto API for Ed25519 key pairs using the same userspace implementation we used in web3.js 1.x. It does not polyfill other algorithms.

Determine if your target runtime supports Ed25519, and install the polyfill if it does not:

```ts
import { install } from '@solana/webcrypto-ed25519-polyfill';
import { generateKeyPair, signBytes, verifySignature } from '@solana/kit';

install();
const keyPair: CryptoKeyPair = await generateKeyPair();

/* Remaining logic */
```

You can see where Ed25519 is currently supported in [this GitHub issue](https://github.com/WICG/webcrypto-secure-curves/issues/20) on the Web Crypto repository. Consider sniffing the user-agent when deciding whether or not to deliver the polyfill to browsers.

Operations on `CryptoKey` objects using the Web Crypto API _or_ the polyfill are mostly handled by the `@solana/keys` package.

### String Addresses

All addresses are now JavaScript strings. They are represented by the opaque type `Address`, which describes exactly what a Solana address actually is.

Consequently, that means no more `PublicKey`.

Here’s what they look like in development:

```ts
import { Address, address, getAddressFromPublicKey, generateKeyPair } from '@solana/kit';

// Coerce a string to an `Address`
const myOtherAddress = address('AxZfZWeqztBCL37Mkjkd4b8Hf6J13WCcfozrBY6vZzv3');

// Typecast it instead
const myAddress =
    'AxZfZWeqztBCL37Mkjkd4b8Hf6J13WCcfozrBY6vZzv3' as Address<'AxZfZWeqztBCL37Mkjkd4b8Hf6J13WCcfozrBY6vZzv3'>;

// From CryptoKey
const keyPair = await generateKeyPair();
const myPublicKeyAsAddress = await getAddressFromPublicKey(keyPair.publicKey);
```

Some tooling for working with base58-encoded addresses can be found in the `@solana/addresses` package.

## Transactions

### Creating Transaction Messages

Like many other familiar aspects of the 1.0 library, transactions have received a makeover.

For starters, all transaction messages are now version-aware, so there’s no longer a need to juggle two different types (eg. `Transaction` vs. `VersionedTransaction`).

Address lookups are now completely described inside transaction message instructions, so you don’t have to materialize `addressTableLookups` anymore.

Here’s a simple example of creating a transaction message &ndash; notice how its type is refined at each step of the process:

```ts
import {
    address,
    createTransactionMessage,
    setTransactionMessageFeePayer,
    setTransactionMessageLifetimeUsingBlockhash,
    Blockhash,
} from '@solana/kit';

const recentBlockhash = {
    blockhash: '4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY' as Blockhash,
    lastValidBlockHeight: 196055492n,
};
const feePayer = address('AxZfZWeqztBCL37Mkjkd4b8Hf6J13WCcfozrBY6vZzv3');

// Create a new transaction message
const transactionMessage = createTransactionMessage({ version: 0 });
//    ^? V0TransactionMessage

// Set the fee payer
const transactionMessageWithFeePayer = setTransactionMessageFeePayer(feePayer, transactionMessage);
//    ^? V0TransactionMessage & TransactionMessageWithFeePayer

const transactionMessageWithFeePayerAndLifetime = setTransactionMessageLifetimeUsingBlockhash(
    // ^? V0TransactionMessage & TransactionMessageWithFeePayer & TransactionMessageWithBlockhashLifetime
    recentBlockhash,
    transactionMessageWithFeePayer,
);
```

As you can see, each time a transaction message is modified, the type reflects its new shape. If you add a fee payer, you’ll get a type representing a transaction message with a fee payer, and so on.

Transaction message objects are also **frozen by these functions** to prevent them from being mutated in place.

### Signing Transaction Messages

The `signTransaction(..)` function will raise a type error if your transaction message is not already equipped with a fee payer and a lifetime. This helps you catch errors at author-time instead of runtime.

```ts
const feePayer = await generateKeyPair();
const feePayerAddress = await getAddressFromPublicKey(feePayer.publicKey);

const transactionMessage = createTransactionMessage({ version: 'legacy' });
const transactionMessageWithFeePayer = setTransactionMessageFeePayer(feePayerAddress, transactionMessage);

// Attempting to sign the transaction message without a lifetime will throw a type error
const signedTransaction = await signTransaction([signer], transactionMessageWithFeePayer);
// => "Property 'lifetimeConstraint' is missing in type"
```

### Calibrating a Transaction Message's Compute Unit Budget

Correctly budgeting a compute unit limit for your transaction message can increase the probability that your transaction will be accepted for processing. If you don't declare a compute unit limit on your transaction, validators will assume an upper limit of 200K compute units (CU) per instruction.

Since validators have an incentive to pack as many transactions into each block as possible, they may choose to include transactions that they know will fit into the remaining compute budget for the current block over transactions that might not. For this reason, you should set a compute unit limit on each of your transaction messages, whenever possible.

Use these utilities to estimate the actual compute unit cost of a given transaction message and set it on the message.

```ts
import { createSolanaRpc, estimateComputeUnitLimitFactory, setTransactionMessageComputeUnitLimit } from '@solana/kit';

// Create an estimator function.
const rpc = createSolanaRpc('http://127.0.0.1:8899');
const estimateComputeUnitLimit = estimateComputeUnitLimitFactory({ rpc });

// Create your transaction message.
const transactionMessage = pipe(
    createTransactionMessage({ version: 'legacy' }),
    /* ... */
);

// Request an estimate of the actual compute units this message will consume.
const computeUnitsEstimate = await estimateComputeUnitLimit(transactionMessage);

// Set the transaction message's compute unit budget.
const transactionMessageWithComputeUnitLimit = setTransactionMessageComputeUnitLimit(
    computeUnitsEstimate,
    transactionMessage,
);
```

> [!NOTE]
> For legacy and v0 transactions, if the transaction message does not already have a `SetComputeUnitLimit` instruction, the estimator will add one before simulation. This ensures that the compute unit consumption of the instruction itself is included in the estimate.

Alternatively, use `estimateAndSetComputeUnitLimitFactory` to estimate and set the compute unit limit in a single step. Pair it with `fillTransactionMessageProvisoryComputeUnitLimit` during transaction construction to reserve space for the limit that will later be estimated.

```ts
import {
    estimateAndSetComputeUnitLimitFactory,
    estimateComputeUnitLimitFactory,
    fillTransactionMessageProvisoryComputeUnitLimit,
} from '@solana/kit';

// During construction, reserve space for the compute unit limit.
const messageWithProvisoryLimit = fillTransactionMessageProvisoryComputeUnitLimit(transactionMessage);

// Later, estimate and replace the provisory limit.
const estimator = estimateComputeUnitLimitFactory({ rpc });
const estimateAndSet = estimateAndSetComputeUnitLimitFactory(estimator);
const updatedMessage = await estimateAndSet(messageWithProvisoryLimit);
```

> [!WARNING]
> The compute unit estimate is just that &ndash; an estimate. The compute unit consumption of the actual transaction might be higher or lower than what was observed in simulation. Unless you are confident that your particular transaction message will consume the same or fewer compute units as was estimated, you might like to augment the estimate by either a fixed number of CUs or a multiplier.

> [!NOTE]
> If you are preparing an _unsigned_ transaction, destined to be signed and submitted to the network by a wallet, you might like to leave it up to the wallet to determine the compute unit limit. Consider that the wallet might have a more global view of how many compute units certain types of transactions consume, and might be able to make better estimates of an appropriate compute unit budget.

### Helpers For Building Transaction Messages

Building transaction messages in this manner might feel different from what you’re used to. Also, we certainly wouldn’t want you to have to bind transformed transaction messages to a new variable at each step, so we have released a functional programming library dubbed `@solana/functional` that lets you build transaction messages in **pipelines**. Here’s how it can be used:

```ts
import { pipe } from '@solana/functional';
import {
    address,
    createTransactionMessage,
    setTransactionMessageFeePayer,
    setTransactionMessageLifetimeUsingBlockhash,
    Blockhash,
} from '@solana/kit';

// Use `pipe(..)` to create a pipeline of transaction message transformation operations
const transactionMessage = pipe(
    createTransactionMessage({ version: 0 }),
    tx => setTransactionMessageFeePayer(feePayer, tx),
    tx => setTransactionMessageLifetimeUsingBlockhash(recentBlockhash, tx),
);
```

Note that `pipe(..)` is general-purpose, so it can be used to pipeline any functional transforms.

## Codecs

We have taken steps to make it easier to write data (de)serializers, especially as they pertain to Rust datatypes and byte buffers.

Solana’s codecs libraries are broken up into modular components so you only need to import the ones you need. They are:

- `@solana/codecs-core`: The core codecs library for working with codecs serializers and creating custom ones
- `@solana/codecs-numbers`: Used for serialization of numbers (little-endian and big-endian bytes, etc.)
- `@solana/codecs-strings`: Used for serialization of strings
- `@solana/codecs-data-structures`: Codecs and serializers for structs
- `@solana/options`: Designed to build codecs and serializers for types that mimic Rust’s enums, which can include embedded data within their variants such as values, tuples, and structs

These packages are included in the main `@solana/kit` library but you may also import them from `@solana/codecs` if you only need the codecs.

Here’s an example of encoding and decoding a custom struct with some strings and numbers:

```ts
import { addCodecSizePrefix } from '@solana/codecs-core';
import { getStructCodec } from '@solana/codecs-data-structures';
import { getU32Codec, getU64Codec, getU8Codec } from '@solana/codecs-numbers';
import { getUtf8Codec } from '@solana/codecs-strings';

// Equivalent in Rust:
// struct {
//     amount: u64,
//     decimals: u8,
//     name: String,
// }
const structCodec = getStructCodec([
    ['amount', getU64Codec()],
    ['decimals', getU8Codec()],
    ['name', addCodecSizePrefix(getUtf8Codec(), getU32Codec())],
]);

const myToken = {
    amount: 1000000000000000n, // `bigint` or `number` is supported
    decimals: 2,
    name: 'My Token',
};

const myEncodedToken: Uint8Array = structCodec.encode(myToken);
const myDecodedToken = structCodec.decode(myEncodedToken);

myDecodedToken satisfies {
    amount: bigint;
    decimals: number;
    name: string;
};
```

You may only need to encode or decode data, but not both. Importing one or the other allows your optimizing compiler to tree-shake the other implementation away:

```ts
import { Codec, combineCodec, Decoder, Encoder, addDecoderSizePrefix, addEncoderSizePrefix } from '@solana/codecs-core';
import { getStructDecoder, getStructEncoder } from '@solana/codecs-data-structures';
import {
    getU8Decoder,
    getU8Encoder,
    getU32Decoder,
    getU32Encoder,
    getU64Decoder,
    getU64Encoder,
} from '@solana/codecs-numbers';
import { getUtf8Decoder, getUtf8Encoder } from '@solana/codecs-strings';

export type MyToken = {
    amount: bigint;
    decimals: number;
    name: string;
};

export type MyTokenArgs = {
    amount: number | bigint;
    decimals: number;
    name: string;
};

export const getMyTokenEncoder = (): Encoder<MyTokenArgs> =>
    getStructEncoder([
        ['amount', getU64Encoder()],
        ['decimals', getU8Encoder()],
        ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
    ]);

export const getMyTokenDecoder = (): Decoder<MyToken> =>
    getStructDecoder([
        ['amount', getU64Decoder()],
        ['decimals', getU8Decoder()],
        ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
    ]);

export const getMyTokenCodec = (): Codec<MyTokenArgs, MyToken> =>
    combineCodec(getMyTokenEncoder(), getMyTokenDecoder());
```

You can read more about codecs in [the official Codec documentation](https://github.com/anza-xyz/kit/blob/main/packages/codecs/README.md).

## Type-Safety

The new library makes use of some advanced TypeScript features, including generic types, conditional types, `Parameters<..>`, `ReturnType<..>` and more.

We’ve described the RPC API in detail so that TypeScript can determine the _exact_ type of the result you will receive from the server given a particular input. Change the type of the input, and you will see the return type reflect that change.

### RPC Types

The RPC methods – both HTTP and subscriptions – are built with multiple overloads and conditional types. The expected HTTP response payload or subscription message format will be reflected in the return type of the function you’re working with when you provide the inputs in your code.

Here’s an example of this in action:

```ts
// Provide one set of parameters, get a certain type
// These parameters resolve to return type:
// {
//     blockhash: Blockhash;
//     blockHeight: bigint;
//     blockTime: UnixTimestamp;
//     parentSlot: bigint;
//     previousBlockhash: Blockhash;
// }
const blockResponse = await rpc
    .getBlock(0n, {
        rewards: false,
        transactionDetails: 'none',
    })
    .send();

// Switch `rewards` to `true`, get `rewards` in the return type
// {
//     /* ... Previous response */
//     rewards: Reward[];
// }
const blockWithRewardsResponse = await rpc
    .getBlock(0n, {
        rewards: true,
        transactionDetails: 'none',
    })
    .send();

// Switch `transactionDetails` to `full`, get `transactions` in the return type
// {
//     /* ... Previous response */
//     transactions: TransactionResponse[];
// }
const blockWithRewardsAndTransactionsResponse = await rpc
    .getBlock(0n, {
        rewards: true,
        transactionDetails: 'full',
    })
    .send();
```

### Catching Compile-Time Bugs with TypeScript

As previously mentioned, the type coverage in Kit allows developers to catch common bugs at compile time, rather than runtime.

In the example below, a transaction message is created and then attempted to be signed without setting the fee payer. This would result in a runtime error from the RPC, but instead you will see a type error from TypeScript as you type:

```ts
const transactionMessage = pipe(createTransactionMessage({ version: 0 }), tx =>
    setTransactionMessageLifetimeUsingBlockhash(recentBlockhash, tx),
);
const signedTransaction = await signTransaction([keyPair], transactionMessage); // ERROR: Property 'feePayer' is missing in type
```

Consider another example where a developer is attempting to send a transaction that has not been fully signed. Again, the TypeScript compiler will throw a type error:

```ts
const transactionMessage = pipe(
    createTransactionMessage({ version: 0 }),
    tx => setTransactionMessageFeePayer(feePayerAddress, tx),
    tx => setTransactionMessageLifetimeUsingBlockhash(recentBlockhash, tx),
);

const signedTransaction = await signTransaction([], transactionMessage);

// Asserts the transaction is a `FullySignedTransaction`
// Throws an error if any signatures are missing!
assertIsFullySignedTransaction(signedTransaction);

await sendAndConfirmTransaction(signedTransaction);
```

Are you building a nonce transaction and forgot to make `AdvanceNonce` the first instruction? That’s a type error:

```ts
const feePayer = await generateKeyPair();
const feePayerAddress = await getAddressFromPublicKey(feePayer.publicKey);

const notNonceTransactionMessage = pipe(createTransactionMessage({ version: 0 }), tx =>
    setTransactionMessageFeePayer(feePayerAddress, tx),
);

notNonceTransactionMessage satisfies TransactionMessageWithDurableNonceLifetime;
// => Property 'lifetimeConstraint' is missing in type

const nonceConfig = {
    nonce: 'nonce' as Nonce,
    nonceAccountAddress: address('5tLU66bxQ35so2bReGcyf3GfMMAAauZdNA1N4uRnKQu4'),
    nonceAuthorityAddress: address('GDhj8paPg8woUzp9n8fj7eAMocN5P7Ej3A7T9F5gotTX'),
};

const stillNotNonceTransactionMessage = {
    lifetimeConstraint: nonceConfig,
    ...notNonceTransactionMessage,
};

stillNotNonceTransactionMessage satisfies TransactionMessageWithDurableNonceLifetime;
// => 'readonly Instruction<string>[]' is not assignable to type 'readonly [AdvanceNonceAccountInstruction<string, string>, ...Instruction<string>[]]'

const validNonceTransactionMessage = pipe(
    createTransactionMessage({ version: 0 }),
    tx => setTransactionMessageFeePayer(feePayerAddress, tx),
    tx => setTransactionMessageLifetimeUsingDurableNonce(nonceConfig, tx), // Adds the instruction!
);

validNonceTransactionMessage satisfies TransactionMessageWithDurableNonceLifetime; // OK
```

The library’s type-checking can even catch you using lamports instead of SOL for a value:

```ts
const airdropAmount = 1n; // SOL
const signature = rpc.requestAirdrop(myAddress, airdropAmount).send();
```

It will force you to cast the numerical value for your airdrop (or transfer, etc.) amount using `lamports()`, which should be a good reminder!

```ts
const airdropAmount = lamports(1000000000n);
const signature = rpc.requestAirdrop(myAddress, airdropAmount).send();
```

## Compatibility Layer

You will have noticed by now that Kit is a complete and total breaking change from the web3.js 1.x line. We want to provide you with a strategy for interacting with web3.js 1.x APIs while building your application using Kit. You need a tool for converting between web3.js 1.x and Kit data types.

The `@solana/compat` library allows for interoperability between functions and class objects from the legacy library - such as `VersionedTransaction`, `PublicKey`, and `Keypair` - and functions and types of the new library - such as `Address`, `Transaction`, and `CryptoKeyPair`.

Here’s how you can use `@solana/compat` to convert from a legacy `PublicKey` to an `Address`:

```ts
import { fromLegacyPublicKey } from '@solana/compat';

const publicKey = new PublicKey('B3piXWBQLLRuk56XG5VihxR4oe2PSsDM8nTF6s1DeVF5');
const address: Address = fromLegacyPublicKey(publicKey);
```

Here’s how to convert from a legacy `Keypair` to a `CryptoKeyPair`:

```ts
import { fromLegacyKeypair } from '@solana/compat';

const keypairLegacy = Keypair.generate();
const cryptoKeyPair: CryptoKeyPair = fromLegacyKeypair(keypair);
```

Here’s how to convert legacy transaction objects to the new library’s transaction types:

```ts
// Note that you can only convert `VersionedTransaction` objects
const modernTransaction = fromVersionedTransaction(classicTransaction);
```

To see more conversions supported by `@solana/compat`, you can check out the package’s [README on GitHub](https://github.com/anza-xyz/kit/blob/main/packages/compat/README.md).

## Program Clients

Writing JavaScript clients for on-chain programs has been done manually up until now. Without an IDL for some of the native programs, this process has been necessarily manual and has resulted in clients that lag behind the actual capabilities of the programs themselves.

We think that program clients should be _generated_ rather than written. Developers should be able to write Rust programs, compile the program code, and generate all of the JavaScript client-side code to interact with the program.

We use [Codama](https://github.com/codama-idl/codama) to represent Solana programs and generate clients for them. This includes a JavaScript client compatible with this library. For instance, here is how you’d construct a transaction message composed of instructions from three different core programs.

```ts
import { appendTransactionMessageInstructions, createTransactionMessage, pipe } from '@solana/kit';
import { getAddMemoInstruction } from '@solana-program/memo';
import { getSetComputeUnitLimitInstruction } from '@solana-program/compute-budget';
import { getTransferSolInstruction } from '@solana-program/system';

const instructions = [
    getSetComputeUnitLimitInstruction({ units: 600_000 }),
    getTransferSolInstruction({ source, destination, amount: 1_000_000_000 }),
    getAddMemoInstruction({ memo: "I'm transferring some SOL!" }),
];

// Creates a V0 transaction message with 3 instructions inside.
const transactionMessage = pipe(createTransactionMessage({ version: 0 }), tx =>
    appendTransactionMessageInstructions(instructions, tx),
);
```

As you can see, each program now generates its own library allowing you to cherry-pick your dependencies.

Note that asynchronous versions may be available for some instructions which allows them to resolve more inputs on your behalf — such as PDA derivation. For instance, the `CreateLookupTable` instruction offers an asynchronous builder that derives the `address` account and the `bump` argument for us.

```ts
const rpc = createSolanaRpc('http://127.0.0.1:8899');
const [authority, recentSlot] = await Promise.all([
    generateKeyPairSigner(),
    rpc.getSlot({ commitment: 'finalized' }).send(),
]);

const instruction = await getCreateLookupTableInstructionAsync({
    authority,
    recentSlot,
});
```

Alternatively, you may use the synchronous builder if you already have all the required inputs at hand.

```ts
const [address, bump] = await findAddressLookupTablePda({
    authority: authority.address,
    recentSlot,
});

const instruction = getCreateLookupTableInstruction({
    address,
    authority,
    bump,
    recentSlot,
});
```

On top of instruction builders, these clients offer a variety of utilities such as:

- Instruction codecs — e.g. `getTransferSolInstructionDataCodec`.
- Account types — e.g. `AddressLookupTable`.
- Account codecs — e.g. `getAddressLookupTableAccountDataCodec`.
- Account helpers — e.g. `fetchAddressLookupTable`.
- PDA helpers — e.g. `findAddressLookupTablePda`, `fetchAddressLookupTableFromSeeds`.
- Defined types and their codecs — e.g. `NonceState`, `getNonceStateCodec`.
- Program helpers — e.g. `SYSTEM_PROGRAM_ADDRESS`, `SystemAccount` enum, `identifySystemInstruction`.
- And much more!

Here’s another example that fetches an `AddressLookupTable` PDA from its seeds.

```ts
const account = await fetchAddressLookupTableFromSeeds(rpc, {
    authority: authority.address,
    recentSlot,
});

account.address; // Address
account.lamports; // Lamports
account.data.addresses; // Address[]
account.data.authority; // Some<Address>
account.data.deactivationSlot; // Slot
account.data.lastExtendedSlot; // Slot
account.data.lastExtendedSlotStartIndex; // number
```

### How Does This Work?

All of this code is 100% auto-generated by Codama from a tree of standardized nodes that represent our programs. It contains obvious nodes such as `AccountNode` but also more specified nodes such as `ConditionalValueNode` that allows us to resolve account or argument default values conditionally.

Codama allows us to hydrate our tree of nodes from IDLs which are typically generated by program frameworks such as [Anchor](https://github.com/coral-xyz/anchor) or [Shank](https://github.com/metaplex-foundation/shank). Additionally, visitors can be used on our nodes to expand the knowledge of our programs since the IDL itself doesn’t yet contain that level of information. Finally, special visitors called ‘renderers’ visit our tree to generate clients such as this JavaScript client.

Currently, there is one other renderer that generates Rust clients but this is only the beginning. In the future, you can expect renderers for auto-generated Python clients, documentation, CLIs, etc.

## Create Solana Program

We believe the whole ecosystem could benefit from generated program clients. That’s why we introduced a new NPM binary that allows you to create your Solana program — and generate clients for it — in no time. Simply run the following and follow the prompts to get started.

```sh
pnpm create solana-program
```

This [`create-solana-program`](https://github.com/solana-program/create-solana-program) installer will create a new repository including:

- An example program using the framework of your choice (Anchor coming soon).
- Generated clients for any of the selected clients.
- A set of scripts that allows you to:
    - Start a local validator including all programs and accounts you depend on.
    - Build, lint and test your programs.
    - Generate IDLs from your programs.
    - Generate clients from the generated IDLs.
    - Build and test each of your clients.
- GitHub Actions pipelines to test your program, test your clients, and even manually publish new packages or crates for your clients. (Coming soon).

When selecting the JavaScript client, you will get a fully generated library compatible with Kit much like the `@solana-program` packages showcased above.

## GraphQL

Though not directly related to web3.js, we wanted to hijack your attention to show you something else that we’re working on, of particular interest to frontend developers. It’s a new API for interacting with the RPC: a GraphQL API.

The `@solana/rpc-graphql` package can be used to make GraphQL queries to Solana RPC endpoints, using the same transports described above (including any customizations).

Here’s an example of retrieving account data with GraphQL:

```ts
const source = `
    query myQuery($address: String!) {
        account(address: $address) {
            dataBase58: data(encoding: BASE_58)
            dataBase64: data(encoding: BASE_64)
            lamports
        }
    }
`;

const variableValues = {
    address: 'AyGCwnwxQMCqaU4ixReHt8h5W4dwmxU7eM3BEQBdWVca',
};

const result = await rpcGraphQL.query(source, variableValues);

expect(result).toMatchObject({
    data: {
        account: {
            dataBase58: '2Uw1bpnsXxu3e',
            dataBase64: 'dGVzdCBkYXRh',
            lamports: 10290815n,
        },
    },
});
```

Using GraphQL allows developers to only specify which fields they _actually_ need, and do away with the rest of the response.

However, GraphQL is also extremely powerful for **nesting queries**, which can be particularly useful if you want to, say, get the **sum** of every lamports balance of every **owner of the owner** of each token account, while discarding any mint accounts.

```ts
const source = `
    query getLamportsOfOwnersOfOwnersOfTokenAccounts {
        programAccounts(programAddress: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA") {
            ... on TokenAccount {
                owner {
                    ownerProgram {
                        lamports
                    }
                }
            }
        }
    }
`;

const result = await rpcGraphQL.query(source);

const sumOfAllLamportsOfOwnersOfOwnersOfTokenAccounts = result
    .map(o => o.account.owner.ownerProgram.lamports)
    .reduce((acc, lamports) => acc + lamports, 0);
```

The new GraphQL package supports this same style of nested querying on transactions and blocks.

```ts
const source = `
    query myQuery($signature: String!, $commitment: Commitment) {
        transaction(signature: $signature, commitment: $commitment) {
            message {
                instructions {
                    ... on CreateAccountInstruction {
                        lamports
                        programId
                        space
                    }
                }
            }
        }
    }
`;

const variableValues = {
    signature: '63zkpxATgAwXRGFQZPDESTw2m4uZQ99sX338ibgKtTcgG6v34E3MSS3zckCwJHrimS71cvei6h1Bn1K1De53BNWC',
    commitment: 'confirmed',
};

const result = await rpcGraphQL.query(source, variableValues);

expect(result).toMatchObject({
    data: {
        transaction: {
            message: {
                instructions: expect.arrayContaining([
                    {
                        lamports: expect.any(BigInt),
                        programId: '11111111111111111111111111111111',
                        space: expect.any(BigInt),
                    },
                ]),
            },
        },
    },
});
```

See more in the package’s [README on GitHub](https://github.com/anza-xyz/kit/tree/main/packages/rpc-graphql).

## Development

You can see all development of this library and associated GraphQL tooling in the Kit repository on GitHub.

- https://github.com/anza-xyz/kit

You can follow along with program client generator development in the `@solana-program` org and the `@codama-idl/codama` repository.

- https://github.com/solana-program/
- https://github.com/codama-idl/codama

Solana Labs develops these tools in public, as open source. We encourage any and all developers who would like to work on these tools to contribute to the codebase.

## Thank you

We’re grateful that you have read this far. If you are interested in migrating an existing application to Kit to take advantage of some of the benefits we’ve demonstrated, we want to give you some direct support. Reach out to [@steveluscher](https://t.me/steveluscher/) on Telegram to start a conversation.


================================================
FILE: SECURITY.md
================================================
# Security Policy

1. [Reporting security problems](#reporting)
2. [Incident Response Process](#process)

<a name="reporting"></a>

## Reporting security problems in the Solana JavaScript SDK

**DO NOT CREATE A GITHUB ISSUE** to report a security problem.

Instead please use this [Report a Vulnerability](https://github.com/anza-xyz/kit/security/advisories/new) link. Provide a helpful title, detailed description of the vulnerability and an exploit proof-of-concept. Speculative submissions without proof-of-concept will be closed with no further consideration.

If you haven't done so already, please **enable two-factor auth** in your GitHub account.

--

If you do not receive a response in the advisory, send an email to security@anza.xyz with the full URL of the advisory you have created. DO NOT include attachments or provide detail sufficient for exploitation regarding the security issue in this email. **Only provide such details in the advisory**.

If you do not receive a response from security@anza.xyz please follow up with the team directly. You can do this in the `#js` channel of the [Solana Tech discord server](https://solana.com/discord), by pinging the `Anza` role in the channel and referencing the fact that you submitted a security problem.

<a name="process"></a>

## Incident Response Process

In case an incident is discovered or reported, the following process will be followed to contain, respond and remediate:

### 1. Accept the new report

In response to a newly reported security problem, a member of the `anza-xyz/core-contributors` group will accept the report to turn it into a draft advisory. The `anza-xyz/security-incident-response` group should be added to the draft security advisory, and create a private fork of the repository (grey button towards the bottom of the page) if necessary.

If the advisory is the result of an audit finding, follow the same process as above but add the auditor's github user(s) and begin the title with "[Audit]".

If the report is out of scope, a member of the `anza-xyz/core-contributors` group will comment as such and then close the report.

### 2. Triage

Within the draft security advisory, discuss and determine the severity of the issue. If necessary, members of the `anza-xyz/security-incident-response` group may add other github users to the advisory to assist. If it is determined that this is not a critical issue then the advisory should be closed and if more follow-up is required a normal Solana public github issue should be created.

### 3. Prepare Fixes

Prepare a fix for the issue and push them to `main` in the private repository associated with the draft security advisory. There is no CI available in the private repository so you must build from source and manually verify fixes. Code review from the reporter is ideal, as well as from multiple members of the core development team.

### 4. Ship the patch

Once the fix is accepted, a member of the anza-xyz/security-incident-response group should prepare a patch using [`pnpm patch`](https://pnpm.io/cli/patch), [`yarn patch`](https://yarnpkg.com/cli/patch), and [`patch-package`](https://www.npmjs.com/package/patch-package) for developers still using `npm`. Post the patch to an unlisted [GitHub Gist](https://gist.github.com) and disseminate patch instructions privately to as many vulnerable applications as possible.

### 5. Public Disclosure and Release

Once the fix has been deployed to as large an affected application set as practical, the patches from the security advisory may be merged into the main source repository. A new official release should be shipped, and old affected releases deprecated on NPM using the `npm deprecate` command.


================================================
FILE: docs/.eslintrc.json
================================================
{
    "extends": ["next/core-web-vitals", "next/typescript"]
}


================================================
FILE: docs/.gitignore
================================================
# deps
/node_modules

# generated content
.contentlayer
.content-collections
.source

# test & build
/coverage
/.next/
/out/
/build
*.tsbuildinfo

# misc
.DS_Store
*.pem
/.pnp
.pnp.js
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# others
.env*.local
.vercel
next-env.d.ts


================================================
FILE: docs/.npmrc
================================================
enable-pre-post-scripts = true


================================================
FILE: docs/.prettierignore
================================================
pnpm-lock.yaml
content/api/

================================================
FILE: docs/README.md
================================================
# Kit documentation

Documentation website for Kit, built with [Fumadocs](https://github.com/fuma-nama/fumadocs).

## Install dependencies

Install using the `--ignore-workspace` flag to ensure the dependencies of the documentation website are separate from the library dependencies.

```bash
pnpm install --ignore-workspace
```

## Download necessary environment variables (employees only)

```bash
pnpm vercel link -p kit-docs -S anza-tech --yes
pnpm vercel env pull --environment=development
```

## Run development server

```bash
pnpm dev
```

Open http://localhost:3000 with your browser to see the result.

## Learn more

To learn more about Next.js and Fumadocs, take a look at the following
resources:

- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js
  features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
- [Fumadocs](https://fumadocs.vercel.app) - learn about Fumadocs


================================================
FILE: docs/build-api-docs.sh
================================================
#!/usr/bin/env bash
set -euo pipefail

cd ..
pnpm turbo compile:docs --output-logs=hash-only

# Move generated docs.
echo "➡️ Moving generated TypeDoc files to docs/content/api..."
API_DIR="$(pwd)/docs/content/api"
find $API_DIR -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} +
mkdir -p "$API_DIR"

for DOC_PATH in packages/*/.docs; do
    (cd "$DOC_PATH" && find . -type f ! -name "index.mdx" | while read -r file; do
        mkdir -p "$API_DIR/$(dirname "$file")"
        cp "$file" "$API_DIR/$file"
    done)
done

# Generate API index.
echo "📝 Generating API index page from TypeDoc JSON..."
node docs/build-api-index.js

# Regenerate .source to pick up the new index.mdx
echo "♻️  Regenerating .source files..."
cd docs
pnpm fumadocs-mdx


================================================
FILE: docs/build-api-index.js
================================================
#!/usr/bin/env node

/**
 * Generate API index page using TypeDoc JSON output
 * This script uses TypeDoc's JSON output to get detailed reflection data
 */

const fs = require('node:fs/promises');
const path = require('node:path');
const { execFile } = require('node:child_process');
const { promisify } = require('node:util');

const execFileAsync = promisify(execFile);

async function exists(path) {
    try {
        await fs.access(path);
        return true;
    } catch {
        return false;
    }
}

const ROOT_DIR = path.join(__dirname, '..');
const PACKAGES_DIR = path.join(ROOT_DIR, 'packages');
const OUTPUT_FILE = path.join(ROOT_DIR, 'docs', 'content', 'api', 'index.mdx');

// TypeDoc reflection kinds (from TypeDoc source)
const ReflectionKind = {
    Project: 1,
    Module: 2,
    Namespace: 4,
    Enum: 8,
    EnumMember: 16,
    Variable: 32,
    Function: 64,
    Class: 128,
    Interface: 256,
    Constructor: 512,
    Property: 1024,
    Method: 2048,
    CallSignature: 4096,
    IndexSignature: 8192,
    ConstructorSignature: 16384,
    Parameter: 32768,
    TypeLiteral: 65536,
    TypeParameter: 131072,
    Accessor: 262144,
    GetSignature: 524288,
    SetSignature: 1048576,
    ObjectLiteral: 2097152,
    TypeAlias: 4194304,
    Reference: 8388608,
};

const API_GROUP_ORDER = ['Classes', 'Enums', 'Types', 'Functions', 'Variables'];
const REFLECTION_KIND_DATA = {
    [ReflectionKind.Class]: { group: 'Classes', path: 'classes' },
    [ReflectionKind.Interface]: { group: 'Types', path: 'interfaces' },
    [ReflectionKind.ObjectLiteral]: { group: 'Types', path: 'type-aliases' },
    [ReflectionKind.TypeAlias]: { group: 'Types', path: 'type-aliases' },
    [ReflectionKind.Function]: { group: 'Functions', path: 'functions' },
    [ReflectionKind.Enum]: { group: 'Enums', path: 'enumerations' },
    [ReflectionKind.Variable]: { group: 'Variables', path: 'variables' },
};

async function findPackageInfos() {
    const packages = [];
    const packageDirs = await fs.readdir(PACKAGES_DIR);

    for (const packageName of packageDirs) {
        const packagePath = path.join(PACKAGES_DIR, packageName);
        const packageJsonPath = path.join(packagePath, 'package.json');
        const srcPath = path.join(packagePath, 'src');
        const indexPath = path.join(srcPath, 'index.ts');
        const typedocConfigPath = path.join(packagePath, 'typedoc.json');

        // Skip packages without source, package.json, or typedoc config.
        const artifactsExistence = await Promise.all([
            exists(packageJsonPath),
            exists(srcPath),
            exists(indexPath),
            exists(typedocConfigPath),
        ]);
        if (artifactsExistence.includes(false)) {
            continue;
        }

        const pkg = JSON.parse(await fs.readFile(packageJsonPath, 'utf8'));
        packages.push({ name: pkg.name, path: packagePath });
    }

    return packages.sort((a, b) => a.name.localeCompare(b.name));
}

async function generateTypeDocJSON(packageInfo) {
    const { path: packagePath, name } = packageInfo;
    const jsonOutputPath = path.join(packagePath, 'typedoc-output.json');

    try {
        // Generate JSON output only (suppress regular output).
        await execFileAsync(
            './node_modules/typedoc/bin/typedoc',
            [
                '--json',
                jsonOutputPath,
                '--tsconfig',
                path.join(packagePath, 'tsconfig.json'),
                '--out',
                '/dev/null',
                '--excludePrivate',
                '--excludeProtected',
                '--excludeInternal',
                path.join(packagePath, 'src', 'index.ts'),
            ],
            { cwd: ROOT_DIR },
        );

        if (!(await exists(jsonOutputPath))) {
            console.warn(`⚠️  No JSON output generated for ${name}`);
            return null;
        }

        const typeDocJSON = JSON.parse(await fs.readFile(jsonOutputPath, 'utf8'));

        // Clean up the temp JSON file
        await fs.unlink(jsonOutputPath);

        return typeDocJSON;
    } catch (error) {
        console.error(`❌ Failed to generate JSON for ${name}:`, error.message);
        return null;
    }
}

function processTypeDocJSON(packageInfo, typeDocJSON) {
    const exports = [];
    const dependencies = new Set([]);

    if (!typeDocJSON || !typeDocJSON.children) {
        return { ...packageInfo, dependencies, exports };
    }

    function processChildren(children) {
        for (const child of children) {
            // Only include relevant kinds in the exports.
            if (REFLECTION_KIND_DATA[child.kind]) {
                const fromPackage = typeDocJSON.symbolIdMap[child.id]?.packageName || typeDocJSON.packageName;
                const isDependency = fromPackage !== typeDocJSON.packageName;
                if (isDependency) {
                    dependencies.add(fromPackage);
                } else {
                    exports.push({ name: child.name, kind: child.kind });
                }
            }

            // Recursively process nested children.
            if (child.children) {
                processChildren(child.children);
            }
        }
    }

    processChildren(typeDocJSON.children);
    return { ...packageInfo, dependencies, exports };
}

function generateIndexContent(packages) {
    const totalPackages = packages.length;

    let content = `---
title: API Reference
description: Explore packages, functions, types, and more
---

Welcome to the Solana Kit API Reference! It covers a total of **${totalPackages} 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

`;

    // Sort packages by name but with `@solana/kit` first.
    const sortedPackages = packages.sort((a, b) => {
        if (a.name === '@solana/kit') return -1;
        if (b.name === '@solana/kit') return 1;
        return a.name.localeCompare(b.name);
    });

    // Generate entries for each package alphabetically.
    for (const package of sortedPackages) {
        content += `### \`${package.name}\`\n\n`;

        // List exported dependencies.
        if (package.dependencies.size > 0) {
            const dependencies = [...package.dependencies].sort((a, b) => a.localeCompare(b));
            const title = `Packages (${dependencies.length})`;
            content += `${wrapApiGroupTitle(title)}\n\n`;

            const links = dependencies.map(dependency => `[${dependency}](#${dependency.replace(/(@|\/)/g, '')})`);
            content += `${wrapLinks(links, dependencies)}\n\n`;
        }

        // Sort exports into type groups.
        const apiGroups = Object.fromEntries(API_GROUP_ORDER.map(group => [group, { title: group, items: [] }]));
        for (const item of package.exports) {
            if (item.kind && REFLECTION_KIND_DATA[item.kind]) {
                const data = REFLECTION_KIND_DATA[item.kind];
                if (apiGroups[data.group]) {
                    apiGroups[data.group].items.push({ ...item, path: data.path });
                }
            }
        }

        // Generate sections for each type.
        for (const group of Object.values(apiGroups)) {
            if (group.items.length > 0) {
                const title = `${group.title} (${group.items.length})`;
                content += `${wrapApiGroupTitle(title)}\n\n`;

                // List items with links.
                const links = group.items
                    .sort((a, b) => a.name.localeCompare(b.name))
                    .map(item => `[${item.name}](/api/${item.path}/${item.name})`);

                // Wrap links in columns when possible.
                const names = group.items.map(item => item.name);
                content += `${wrapLinks(links, names)}\n\n`;
            }
        }
    }

    content += `<Callout title="Note">
    This documentation is automatically generated from the source code using TypeDoc.
</Callout>`;

    return content;
}

function wrapApiGroupTitle(content) {
    return `<p className="text-xs tracking-wider uppercase mt-8 -mb-2 text-linen-500 dark:text-linen-400">${content}</p>`;
}

function wrapLinks(links, names) {
    const maxNameLength = Math.max(...names.map(name => name.length));
    let linkWrapper = content => content;
    if (maxNameLength <= 30) {
        linkWrapper = content => `<div className="*:columns-[12rem] *:gap-8">\n\n${content}\n\n</div>`;
    } else if (maxNameLength <= 60) {
        linkWrapper = content => `<div className="*:columns-[20rem] *:gap-8">\n\n${content}\n\n</div>`;
    }

    return linkWrapper(links.join(' \\\n'));
}

// Main execution
async function main() {
    const packageInfos = await findPackageInfos();

    const packages = [];
    await Promise.all(
        packageInfos.map(async packageInfo => {
            const typeDocJSON = await generateTypeDocJSON(packageInfo);
            const package = await processTypeDocJSON(packageInfo, typeDocJSON);
            packages.push(package);
        }),
    );

    const content = generateIndexContent(packages);
    await fs.writeFile(OUTPUT_FILE, content, 'utf8');

    console.log('✅ API index generated successfully!');
    console.log(`├─ Packages: ${packages.length}`);
    console.log(`└─ Output: ${OUTPUT_FILE}`);
}

if (require.main === module) {
    main().catch(console.error);
}


================================================
FILE: docs/cli.json
================================================
{
  "$schema": "node_modules/@fumadocs/cli/dist/schema/src.json",
  "aliases": {
    "uiDir": "./components/ui",
    "componentsDir": "./components",
    "blockDir": "./components",
    "cssDir": "./styles",
    "libDir": "./lib"
  },
  "baseDir": "src",
  "uiLibrary": "radix-ui",
  "commands": {}
}

================================================
FILE: docs/content/.prettierrc
================================================
{
    "$schema": "https://json.schemastore.org/prettierrc",
    "tabWidth": 4,
    "singleQuote": true,
    "printWidth": 100
}


================================================
FILE: docs/content/docs/advanced-guides/codecs.mdx
================================================
---
title: Codecs
description: Encode and decode anything
---

## Introduction

Kit includes a powerful serialisation system called Codecs. Whether you're working with account data, instruction arguments, or custom binary layouts, Codecs give you the tools to transform structured data into bytes — and back again.

Codecs are composable, type-safe, and environment-agnostic. They are designed to provide a flexible and consistent foundation for handling binary data across the Solana stack.

## Installation

Codecs are **included within the `@solana/kit` library** but you may also install them using their standalone package.

```package-install
@solana/codecs
```

Note that the `@solana/codecs` package itself is composed of several smaller packages, each providing a different set of codec helpers. Here's the list of all packages containing codecs, should you need to install them individually:

| Package                                                                                          | Description                                                                        |
| ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------- |
| [`@solana/kit`](https://www.npmjs.com/package/@solana/kit)                                       | Includes `@solana/codecs`.                                                         |
| [`@solana/codecs`](https://www.npmjs.com/package/@solana/codecs)                                 | Includes all codecs packages below.                                                |
| [`@solana/codecs-core`](https://www.npmjs.com/package/@solana/codecs-core)                       | Core types and utilities for building codecs.                                      |
| [`@solana/codecs-numbers`](https://www.npmjs.com/package/@solana/codecs-numbers)                 | Codecs for numbers of various sizes and characteristics.                           |
| [`@solana/codecs-strings`](https://www.npmjs.com/package/@solana/codecs-strings)                 | Codecs for strings of various encodings and size strategies.                       |
| [`@solana/codecs-data-structures`](https://www.npmjs.com/package/@solana/codecs-data-structures) | Codecs for a variety of data structures such as objects, enums, arrays, maps, etc. |
| [`@solana/options`](https://www.npmjs.com/package/@solana/options)                               | Codecs for Rust-like `Options` in JavaScript.                                      |

## What is a Codec?

A Codec is an object that knows how to encode a any type into a `Uint8Array` and how to decode a `Uint8Array` back into that value.

No matter which serialization strategy we use, Codecs abstract away its implementation and offer a simple encode and decode interface. They are also highly composable, allowing us to build complex data structures from simple building blocks.

Here's a quick example that encodes and decodes a simple `Person` type.

```ts twoslash
import {
    Codec,
    addCodecSizePrefix,
    getUtf8Codec,
    getU32Codec,
    getStructCodec,
    ReadonlyUint8Array,
} from '@solana/kit';
// ---cut-before---
// Use composable codecs to build complex data structures.
type Person = { name: string; age: number };
const getPersonCodec = (): Codec<Person> =>
    getStructCodec([
        ['name', addCodecSizePrefix(getUtf8Codec(), getU32Codec())],
        ['age', getU32Codec()],
    ]);

// Use your own codecs to encode and decode data.
const personCodec = getPersonCodec();
const encodedPerson = personCodec.encode({ name: 'John', age: 42 });
const decodedPerson = personCodec.decode(encodedPerson);
```

## Composing codecs

The easiest way to create your own codecs is to compose the [various codecs](#available-codecs) at your disposal.

For instance, consider the following codecs available:

- `getStructCodec`: Creates a codec for objects with named fields.
- `getU32Codec`: Creates a codec for unsigned 32-bit integers.
- `getUtf8Codec`: Creates a codec for UTF-8 strings.
- `addCodecSizePrefix`: Creates a codec that prefixes the encoded data with its length.
- `getBooleanCodec`: Creates a codec for booleans using a single byte.

By combining them together we can create a custom codec for the following `Person` type.

```ts twoslash
import {
    Codec,
    addCodecSizePrefix,
    getUtf8Codec,
    getU32Codec,
    getStructCodec,
    getBooleanCodec,
} from '@solana/kit';
// ---cut-before---
type Person = {
    name: string;
    age: number;
    verified: boolean;
};

const getPersonCodec = (): Codec<Person> =>
    getStructCodec([
        ['name', addCodecSizePrefix(getUtf8Codec(), getU32Codec())],
        ['age', getU32Codec()],
        ['verified', getBooleanCodec()],
    ]);
```

This function returns a `Codec` object which contains both an `encode` and `decode` function that can be used to convert a `Person` type to and from a `Uint8Array`.

```ts twoslash
import {
    Codec,
    addCodecSizePrefix,
    getUtf8Codec,
    getU32Codec,
    getStructCodec,
    getBooleanCodec,
} from '@solana/kit';
type Person = { name: string; age: number; verified: boolean };
const getPersonCodec = (): Codec<Person> =>
    getStructCodec([
        ['name', addCodecSizePrefix(getUtf8Codec(), getU32Codec())],
        ['age', getU32Codec()],
        ['verified', getBooleanCodec()],
    ]);
// ---cut-before---
const personCodec = getPersonCodec();
const bytes = personCodec.encode({ name: 'John', age: 42, verified: true });
const person = personCodec.decode(bytes);
```

There is a significant library of composable codecs at your disposal, enabling you to compose complex types. Check out the [available codecs](#available-codecs) section for more information. If you need a custom codec that cannot be composed from existing ones, you can always create your own as we will see in the ["Creating custom codecs"](#creating-custom-codecs) section below.

## Separate encoders and decoders

Whilst Codecs can both encode and decode, it is possible to only focus on encoding or decoding data, enabling the unused logic to be tree-shaken. For instance, here's our previous example using Encoders only to encode a `Person` type.

```ts twoslash
import {
    Encoder,
    addEncoderSizePrefix,
    getUtf8Encoder,
    getU32Encoder,
    getStructEncoder,
    getBooleanEncoder,
} from '@solana/kit';
type Person = { name: string; age: number; verified: boolean };
// ---cut-before---
const getPersonEncoder = (): Encoder<Person> =>
    getStructEncoder([
        ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
        ['age', getU32Encoder()],
        ['verified', getBooleanEncoder()],
    ]);

const bytes = getPersonEncoder().encode({ name: 'John', age: 42, verified: true });
```

The same can be done for decoding the `Person` type by using Decoders like so.

```ts twoslash
import {
    Decoder,
    addDecoderSizePrefix,
    getUtf8Decoder,
    getU32Decoder,
    getStructDecoder,
    getBooleanDecoder,
} from '@solana/kit';
type Person = { name: string; age: number; verified: boolean };
const bytes = null as unknown as Uint8Array;
// ---cut-before---
const getPersonDecoder = (): Decoder<Person> =>
    getStructDecoder([
        ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
        ['age', getU32Decoder()],
        ['verified', getBooleanDecoder()],
    ]);

const person = getPersonDecoder().decode(bytes);
```

## Combining encoders and decoders

Separating Codecs into Encoders and Decoders is particularly good practice for library maintainers as it allows their users to tree-shake any of the encoders and/or decoders they don't need. However, we may still want to offer a codec helper for users who need both for convenience.

That's why this library offers a `combineCodec` helper that creates a `Codec` instance from a matching `Encoder` and `Decoder`.

```ts twoslash
import { Codec, Encoder, Decoder, combineCodec } from '@solana/kit';
type Person = { name: string; age: number; verified: boolean };
const getPersonEncoder = null as unknown as () => Encoder<Person>;
const getPersonDecoder = null as unknown as () => Decoder<Person>;
// ---cut-before---
const getPersonCodec = (): Codec<Person> => combineCodec(getPersonEncoder(), getPersonDecoder());
```

This means library maintainers can offer Encoders, Decoders and Codecs for all their types whilst staying efficient and tree-shakeable. In summary, we recommend the following pattern when creating codecs for library types.

```ts
type MyType = /* ... */;
const getMyTypeEncoder = (): Encoder<MyType> => { /* ... */ };
const getMyTypeDecoder = (): Decoder<MyType> => { /* ... */ };
const getMyTypeCodec = (): Codec<MyType> => combineCodec(
    getMyTypeEncoder(),
    getMyTypeDecoder(),
);
```

## Different `From` and `To` types

When creating codecs, the encoded type is allowed to be looser than the decoded type. A good example of that is the u64 number codec:

```ts twoslash
import { Codec, getU64Codec } from '@solana/kit';
// ---cut-before---
const u64Codec: Codec<number | bigint, bigint> = getU64Codec();
```

As you can see, the first type parameter is looser since it accepts numbers or big integers, whereas the second type parameter only accepts big integers. That's because when _encoding_ a u64 number, you may provide either a `bigint` or a `number` for convenience. However, when you decode a u64 number, you will always get a `bigint` because not all u64 values can fit in a JavaScript `number` type.

```ts twoslash
import { getU64Codec } from '@solana/kit';
const u64Codec = getU64Codec();
// ---cut-before---
const bytes = u64Codec.encode(42);
const value = u64Codec.decode(bytes); // BigInt(42)
```

This relationship between the type we encode “From” and decode “To” can be generalized in TypeScript as `To extends From`.

Here's another example using an object with default values. You can read more about the [transformCodec](#transform-codec) helper below.

```ts twoslash
import {
    Codec,
    Encoder,
    Decoder,
    transformEncoder,
    getStructEncoder,
    getStructDecoder,
    addEncoderSizePrefix,
    addDecoderSizePrefix,
    getUtf8Encoder,
    getUtf8Decoder,
    getU32Encoder,
    getU32Decoder,
    combineCodec,
} from '@solana/kit';
// ---cut-before---
type Person = { name: string; age: number };
type PersonInput = { name: string; age?: number };

const getPersonEncoder = (): Encoder<PersonInput> =>
    transformEncoder(
        getStructEncoder([
            ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
            ['age', getU32Encoder()],
        ]),
        (input) => ({ ...input, age: input.age ?? 42 }),
    );

const getPersonDecoder = (): Decoder<Person> =>
    getStructDecoder([
        ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
        ['age', getU32Decoder()],
    ]);

const getPersonCodec = (): Codec<PersonInput, Person> =>
    combineCodec(getPersonEncoder(), getPersonDecoder());
```

## Fixed-size and variable-size codecs

It is also worth noting that Codecs can either be of fixed size or variable size.

`FixedSizeCodecs` have a `fixedSize` number attribute that tells us exactly how big their encoded data is in bytes.

```ts twoslash
import { FixedSizeCodec, getU32Codec } from '@solana/kit';
// ---cut-before---
const myCodec = getU32Codec();
myCodec satisfies FixedSizeCodec<number>;
myCodec.fixedSize; // 4 bytes.
```

On the other hand, `VariableSizeCodecs` do not know the size of their encoded data in advance. Instead, they will grab that information either from the provided encoded data or from the value to encode. For the former, we can simply access the length of the `Uint8Array`. For the latter, it provides a `getSizeFromValue` that tells us the encoded byte size of the provided value.

```ts twoslash
import { VariableSizeCodec, getUtf8Codec, getU32Codec, addCodecSizePrefix } from '@solana/kit';
// ---cut-before---
const myCodec = addCodecSizePrefix(getUtf8Codec(), getU32Codec());
myCodec satisfies VariableSizeCodec<string>;
myCodec.getSizeFromValue('hello world'); // 4 + 11 bytes.
```

Also note that, if the `VariableSizeCodec` is bounded by a maximum size, it can be provided as a `maxSize` number attribute.

The following type guards are available to identify and/or assert the size of codecs: `isFixedSize`, `isVariableSize`, `assertIsFixedSize` and `assertIsVariableSize`.

Finally, note that the same is true for `Encoders` and `Decoders`.

- A `FixedSizeEncoder` has a `fixedSize` number attribute.
- A `VariableSizeEncoder` has a `getSizeFromValue` function and an optional `maxSize` number attribute.
- A `FixedSizeDecoder` has a `fixedSize` number attribute.
- A `VariableSizeDecoder` has an optional `maxSize` number attribute.

## Creating custom codecs

If composing codecs isn't enough for you, you may implement your own codec logic by using the `createCodec` function. This function requires an object with a `read` and a `write` function telling us how to read from and write to an existing byte array.

The `read` function accepts the `bytes` to decode from and the `offset` at each we should start reading. It returns an array with two items:

- The first item should be the decoded value.
- The second item should be the next offset to read from.

```ts twoslash
import { createCodec, Offset } from '@solana/kit';
const write = null as unknown as Parameters<typeof createCodec<number>>[0]['write'];
const fixedSize = null as unknown as 1;
// ---cut-before---
createCodec({
    read(bytes, offset) {
        const value = bytes[offset];
        return [value, offset + 1];
    },
    write,
    fixedSize,
});
```

Reciprocally, the `write` function accepts the `value` to encode, the array of `bytes` to write the encoded value to and the `offset` at which it should be written. It should encode the given value, insert it in the byte array, and provide the next offset to write to as the return value.

```ts twoslash
import { createCodec } from '@solana/kit';
const read = null as unknown as Parameters<typeof createCodec<number>>[0]['read'];
const fixedSize = null as unknown as 1;
// ---cut-before---
createCodec({
    write(value: number, bytes, offset) {
        bytes.set([value], offset);
        return offset + 1;
    },
    read,
    fixedSize,
});
```

Additionally, we must specify the size of the codec. If we are defining a `FixedSizeCodec`, we must simply provide the `fixedSize` number attribute. For `VariableSizeCodecs`, we must provide the `getSizeFromValue` function as described in the previous section.

```ts twoslash
import { createCodec } from '@solana/kit';
type Config = Parameters<typeof createCodec<string>>[0];
const read = null as unknown as Config['read'];
const write = null as unknown as Config['write'];
// ---cut-before---
// FixedSizeCodec.
createCodec({
    fixedSize: 1,
    read,
    write,
});

// VariableSizeCodec.
createCodec({
    getSizeFromValue: (value: string) => value.length,
    read,
    write,
});
```

Here's a concrete example of a custom codec that encodes any unsigned integer in a single byte. Since a single byte can only store integers from 0 to 255, if any other integer is provided it will take its modulo 256 to ensure it fits in a single byte. Because it always requires a single byte, that codec is a `FixedSizeCodec` of size `1`.

```ts twoslash
import { createCodec } from '@solana/kit';

const getModuloU8Codec = () =>
    createCodec<number>({
        fixedSize: 1,
        read(bytes, offset) {
            const value = bytes[offset];
            return [value, offset + 1];
        },
        write(value, bytes, offset) {
            bytes.set([value % 256], offset);
            return offset + 1;
        },
    });
```

Note that, it is also possible to create custom encoders and decoders separately by using the `createEncoder` and `createDecoder` functions respectively and then use the `combineCodec` function on them just like we were doing with composed codecs.

This approach is recommended to library maintainers as it allows their users to tree-shake any of the encoders and/or decoders they don't need.

Here's our previous modulo u8 example but split into separate `Encoder`, `Decoder` and `Codec` instances.

```ts twoslash
import { createEncoder, createDecoder, combineCodec } from '@solana/kit';

const getModuloU8Encoder = () =>
    createEncoder<number>({
        fixedSize: 1,
        write(value, bytes, offset) {
            bytes.set([value % 256], offset);
            return offset + 1;
        },
    });

const getModuloU8Decoder = () =>
    createDecoder<number>({
        fixedSize: 1,
        read(bytes, offset) {
            const value = bytes[offset];
            return [value, offset + 1];
        },
    });

const getModuloU8Codec = () => combineCodec(getModuloU8Encoder(), getModuloU8Decoder());
```

Here's another example returning a `VariableSizeCodec`. This one transforms a simple string composed of characters from `a` to `z` to a buffer of numbers from `1` to `26` where `0` bytes are spaces.

```ts twoslash
import { createEncoder, createDecoder, combineCodec } from '@solana/kit';

const alphabet = ' abcdefghijklmnopqrstuvwxyz';

const getCipherEncoder = () =>
    createEncoder<string>({
        getSizeFromValue: (value) => value.length,
        write(value, bytes, offset) {
            const bytesToAdd = [...value].map((char) => alphabet.indexOf(char));
            bytes.set(bytesToAdd, offset);
            return offset + bytesToAdd.length;
        },
    });

const getCipherDecoder = () =>
    createDecoder<string>({
        read(bytes, offset) {
            const value = [...bytes.slice(offset)].map((byte) => alphabet.charAt(byte)).join('');
            return [value, bytes.length];
        },
    });

const getCipherCodec = () => combineCodec(getCipherEncoder(), getCipherDecoder());
```

## Available codecs

### Core utilities

<div className="*:columns-[12rem] *:gap-8">

[addCodecSentinel](#add-codec-sentinel) \
[addCodecSizePrefix](#add-codec-size-prefix) \
[containsBytes](#contains-bytes) \
[fixBytes](#fix-bytes) \
[fixCodecSize](#fix-codec-size) \
[mergeBytes](#merge-bytes) \
[offsetCodec](#offset-codec) \
[padBytes](#pad-bytes) \
[padLeftCodec](#pad-left-codec) \
[padRightCodec](#pad-right-codec) \
[resizeCodec](#resize-codec) \
[reverseCodec](#reverse-codec) \
[transformCodec](#transform-codec)

</div>

### Numbers

<div className="*:columns-[12rem] *:gap-8">

[getI8Codec](#get-i8-codec) \
[getI16Codec](#get-i16-codec) \
[getI32Codec](#get-i32-codec) \
[getI64Codec](#get-i64-codec) \
[getI128Codec](#get-i128-codec) \
[getF32Codec](#get-f32-codec) \
[getF64Codec](#get-f64-codec) \
[getShortU16Codec](#get-short-u16-codec) \
[getU8Codec](#get-u8-codec) \
[getU16Codec](#get-u16-codec) \
[getU32Codec](#get-u32-codec) \
[getU64Codec](#get-u64-codec) \
[getU128Codec](#get-u128-codec)

</div>

### Strings

<div className="*:columns-[12rem] *:gap-8">

[getBase10Codec](#get-base10-codec) \
[getBase16Codec](#get-base16-codec) \
[getBase58Codec](#get-base58-codec) \
[getBase64Codec](#get-base64-codec) \
[getBaseXCodec](#get-baseX-codec) \
[getBaseXResliceCodec](#get-baseX-reslice-codec) \
[getUtf8Codec](#get-utf8-codec)

</div>

### Data structures

<div className="*:columns-[12rem] *:gap-8">

[getArrayCodec](#get-array-codec) \
[getBitArrayCodec](#get-bit-array-codec) \
[getBooleanCodec](#get-boolean-codec) \
[getBytesCodec](#get-bytes-codec) \
[getConstantCodec](#get-constant-codec) \
[getDiscriminatedUnionCodec](#get-discriminated-union-codec) \
[getEnumCodec](#get-enum-codec) \
[getHiddenPrefixCodec](#get-hidden-prefix-codec) \
[getHiddenSuffixCodec](#get-hidden-suffix-codec) \
[getLiteralUnionCodec](#get-literal-union-codec) \
[getMapCodec](#get-map-codec) \
[getNullableCodec](#get-nullable-codec) \
[getOptionCodec](#get-option-codec) \
[getPatternMatchCodec](#get-pattern-match-codec) \
[getPredicateCodec](#get-predicate-codec) \
[getSetCodec](#get-set-codec) \
[getStructCodec](#get-struct-codec) \
[getTupleCodec](#get-tuple-codec) \
[getUnionCodec](#get-union-codec) \
[getUnitCodec](#get-unit-codec)

</div>

## Core utilities listing [!toc]

### addCodecSentinel [!toc] [#add-codec-sentinel]

One way of delimiting the size of a codec is to use sentinels. The `addCodecSentinel` function allows us to add a sentinel to the end of the encoded data and to read until that sentinel is found when decoding. It accepts any codec and a `Uint8Array` sentinel responsible for delimiting the encoded data.

```ts twoslash
import { addCodecSentinel, getUtf8Codec } from '@solana/kit';
// ---cut-before---
const codec = addCodecSentinel(getUtf8Codec(), new Uint8Array([255, 255]));
codec.encode('hello');
// 0x68656c6c6fffff
//   |        └-- Our sentinel.
//   └-- Our encoded string.
```

Note that the sentinel _must not_ be present in the encoded data and _must_ be present in the decoded data for this to work. If this is not the case, dedicated errors will be thrown.

```ts twoslash
import { addCodecSentinel, getUtf8Codec } from '@solana/kit';
// ---cut-before---
const sentinel = new Uint8Array([108, 108]); // 'll'
const codec = addCodecSentinel(getUtf8Codec(), sentinel);

codec.encode('hello'); // Throws: sentinel is in encoded data.
codec.decode(new Uint8Array([1, 2, 3])); // Throws: sentinel missing in decoded data.
```

Separate `addEncoderSentinel` and `addDecoderSentinel` functions are also available.

```ts twoslash
import {
    addEncoderSentinel,
    addDecoderSentinel,
    getUtf8Encoder,
    getUtf8Decoder,
} from '@solana/kit';
const sentinel = null as unknown as Uint8Array;
// ---cut-before---
const bytes = addEncoderSentinel(getUtf8Encoder(), sentinel).encode('hello');
const value = addDecoderSentinel(getUtf8Decoder(), sentinel).decode(bytes);
```

### addCodecSizePrefix [!toc] [#add-codec-size-prefix]

The `addCodecSizePrefix` function allows us to store the byte size of any codec as a number prefix, enabling us to contain variable-size codecs to their actual size.

When encoding, the size of the encoded data is stored before the encoded data itself. When decoding, the size is read first to know how many bytes to read next.

For example, say we want to represent a variable-size base-58 string using a `u32` size prefix. Here's how we can use the `addCodecSizePrefix` function to achieve that.

```ts twoslash
import { addCodecSizePrefix, getBase58Codec, getU32Codec } from '@solana/kit';
// ---cut-before---
const getU32Base58Codec = () => addCodecSizePrefix(getBase58Codec(), getU32Codec());

getU32Base58Codec().encode('hello world');
// 0x0b00000068656c6c6f20776f726c64
//   |       └-- Our encoded base-58 string.
//   └-- Our encoded u32 size prefix.
```

You may also use the `addEncoderSizePrefix` and `addDecoderSizePrefix` functions to separate your codec logic like so:

```ts twoslash
import {
    addEncoderSizePrefix,
    addDecoderSizePrefix,
    getBase58Encoder,
    getBase58Decoder,
    getU32Encoder,
    getU32Decoder,
    combineCodec,
} from '@solana/kit';
// ---cut-before---
const getU32Base58Encoder = () => addEncoderSizePrefix(getBase58Encoder(), getU32Encoder());
const getU32Base58Decoder = () => addDecoderSizePrefix(getBase58Decoder(), getU32Decoder());
const getU32Base58Codec = () => combineCodec(getU32Base58Encoder(), getU32Base58Decoder());
```

### containsBytes [!toc] [#contains-bytes]

Checks if a `Uint8Array` contains another `Uint8Array` at a given offset.

```ts twoslash
import { containsBytes } from '@solana/kit';
// ---cut-before---
containsBytes(new Uint8Array([1, 2, 3, 4]), new Uint8Array([2, 3]), 1); // true
containsBytes(new Uint8Array([1, 2, 3, 4]), new Uint8Array([2, 3]), 2); // false
```

### fixBytes [!toc] [#fix-bytes]

Pads or truncates a `Uint8Array` so it has the specified length.

```ts twoslash
import { fixBytes } from '@solana/kit';
// ---cut-before---
fixBytes(new Uint8Array([1, 2]), 4); // Uint8Array([1, 2, 0, 0])
fixBytes(new Uint8Array([1, 2, 3, 4]), 2); // Uint8Array([1, 2])
```

### fixCodecSize [!toc] [#fix-codec-size]

The `fixCodecSize` function allows us to bind the size of a given codec to the given fixed size.

For instance, say we wanted to represent a base-58 string that uses exactly 32 bytes when decoded. Here's how we can use the `fixCodecSize` helper to achieve that.

```ts twoslash
import { fixCodecSize, getBase58Codec } from '@solana/kit';
// ---cut-before---
const get32BytesBase58Codec = () => fixCodecSize(getBase58Codec(), 32);
```

You may also use the `fixEncoderSize` and `fixDecoderSize` functions to separate your codec logic like so:

```ts twoslash
import {
    fixEncoderSize,
    fixDecoderSize,
    getBase58Encoder,
    getBase58Decoder,
    combineCodec,
} from '@solana/kit';
// ---cut-before---
const get32BytesBase58Encoder = () => fixEncoderSize(getBase58Encoder(), 32);
const get32BytesBase58Decoder = () => fixDecoderSize(getBase58Decoder(), 32);
const get32BytesBase58Codec = () =>
    combineCodec(get32BytesBase58Encoder(), get32BytesBase58Decoder());
```

### mergeBytes [!toc] [#merge-bytes]

Concatenates an array of `Uint8Arrays` into a single `Uint8Array`.

```ts twoslash
import { mergeBytes } from '@solana/kit';
// ---cut-before---
const bytes1 = new Uint8Array([0x01, 0x02]);
const bytes2 = new Uint8Array([]);
const bytes3 = new Uint8Array([0x03, 0x04]);
const bytes = mergeBytes([bytes1, bytes2, bytes3]);
//    ^ [0x01, 0x02, 0x03, 0x04]
```

### offsetCodec [!toc] [#offset-codec]

The `offsetCodec` function is a powerful codec primitive that allows us to move the offset of a given codec forward or backwards. It accepts one or two functions that takes the current offset and returns a new offset.

To understand how this works, let's take the following `biggerU32Codec` example which encodes a `u32` number inside an 8-byte buffer by using the [resizeCodec](#resize-codec) helper.

```ts twoslash
import { resizeCodec, getU32Codec } from '@solana/kit';
// ---cut-before---
const biggerU32Codec = resizeCodec(getU32Codec(), (size) => size + 4);
biggerU32Codec.encode(0xffffffff);
// 0xffffffff00000000
//   |       └-- Empty buffer space caused by the resizeCodec function.
//   └-- Our encoded u32 number.
```

Now, let's say we want to move the offset of that codec 2 bytes forward so that the encoded number sits in the middle of the buffer. To achieve, this we can use the `offsetCodec` helper and provide a `preOffset` function that moves the "pre-offset" of the codec 2 bytes forward.

```ts twoslash
import { offsetCodec, resizeCodec, getU32Codec } from '@solana/kit';
const biggerU32Codec = resizeCodec(getU32Codec(), (size) => size + 4);
// ---cut-before---
const u32InTheMiddleCodec = offsetCodec(biggerU32Codec, {
    preOffset: ({ preOffset }) => preOffset + 2,
});
u32InTheMiddleCodec.encode(0xffffffff);
// 0x0000ffffffff0000
//       └-- Our encoded u32 number is now in the middle of the buffer.
```

We refer to this offset as the "pre-offset" because, once the inner codec is encoded or decoded, an additional offset will be returned which we refer to as the "post-offset". That "post-offset" is important as, unless we are reaching the end of our codec, it will be used by any further codecs to continue encoding or decoding data.

By default, that "post-offset" is simply the addition of the "pre-offset" and the size of the encoded or decoded inner data.

```ts twoslash
import { offsetCodec, resizeCodec, getU32Codec } from '@solana/kit';
const biggerU32Codec = resizeCodec(getU32Codec(), (size) => size + 4);
// ---cut-before---
const u32InTheMiddleCodec = offsetCodec(biggerU32Codec, {
    preOffset: ({ preOffset }) => preOffset + 2,
});
u32InTheMiddleCodec.encode(0xffffffff);
// 0x0000ffffffff0000
//   |   |       └-- Post-offset.
//   |   └-- New pre-offset: The original pre-offset + 2.
//   └-- Pre-offset: The original pre-offset before we adjusted it.
```

However, you may also provide a `postOffset` function to adjust the "post-offset". For instance, let's push the "post-offset" 2 bytes forward as well such that any further codecs will start doing their job at the end of our 8-byte `u32` number.

```ts twoslash
import { offsetCodec, resizeCodec, getU32Codec } from '@solana/kit';
const biggerU32Codec = resizeCodec(getU32Codec(), (size) => size + 4);
// ---cut-before---
const u32InTheMiddleCodec = offsetCodec(biggerU32Codec, {
    preOffset: ({ preOffset }) => preOffset + 2,
    postOffset: ({ postOffset }) => postOffset + 2,
});
u32InTheMiddleCodec.encode(0xffffffff);
// 0x0000ffffffff0000
//   |   |       |   └-- New post-offset: The original post-offset + 2.
//   |   |       └-- Post-offset: The original post-offset before we adjusted it.
//   |   └-- New pre-offset: The original pre-offset + 2.
//   └-- Pre-offset: The original pre-offset before we adjusted it.
```

Both the `preOffset` and `postOffset` functions offer the following attributes:

- `bytes`: The entire byte array being encoded or decoded.
- `preOffset`: The original and unaltered pre-offset.
- `wrapBytes`: A helper function that wraps the given offset around the byte array length. E.g. `wrapBytes(-1)` will refer to the last byte of the byte array.

Additionally, the post-offset function also provides the following attributes:

- `newPreOffset`: The new pre-offset after the pre-offset function has been applied.
- `postOffset`: The original and unaltered post-offset.

Note that you may also decide to ignore these attributes to achieve absolute offsets. However, relative offsets are usually recommended as they won't break your codecs when composed with other codecs.

```ts twoslash
import { offsetCodec, resizeCodec, getU32Codec } from '@solana/kit';
const biggerU32Codec = resizeCodec(getU32Codec(), (size) => size + 4);
// ---cut-before---
const u32InTheMiddleCodec = offsetCodec(biggerU32Codec, {
    preOffset: () => 2,
    postOffset: () => 8,
});
u32InTheMiddleCodec.encode(0xffffffff);
// 0x0000ffffffff0000
```

Also note that any negative offset or offset that exceeds the size of the byte array will throw a `SolanaError` of code `SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE`.

```ts twoslash
import { offsetCodec, resizeCodec, getU32Codec } from '@solana/kit';
const biggerU32Codec = resizeCodec(getU32Codec(), (size) => size + 4);
// ---cut-before---
const u32InTheEndCodec = offsetCodec(biggerU32Codec, { preOffset: () => -4 });
u32InTheEndCodec.encode(0xffffffff);
// throws new SolanaError(SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE)
```

To avoid this, you may use the `wrapBytes` function to wrap the offset around the byte array length. For instance, here's how we can use the `wrapBytes` function to move the pre-offset 4 bytes from the end of the byte array.

```ts twoslash
import { offsetCodec, resizeCodec, getU32Codec } from '@solana/kit';
const biggerU32Codec = resizeCodec(getU32Codec(), (size) => size + 4);
// ---cut-before---
const u32InTheEndCodec = offsetCodec(biggerU32Codec, {
    preOffset: ({ wrapBytes }) => wrapBytes(-4),
});
u32InTheEndCodec.encode(0xffffffff);
// 0x00000000ffffffff
```

As you can see, the `offsetCodec` helper allows you to jump all over the place with your codecs. This non-linear approach to encoding and decoding data allows you to achieve complex serialization strategies that would otherwise be impossible.

The `offsetEncoder` and `offsetDecoder` functions can also be used to split your codec logic into tree-shakeable functions.

```ts twoslash
import {
    offsetEncoder,
    resizeEncoder,
    getU32Encoder,
    offsetDecoder,
    resizeDecoder,
    getU32Decoder,
    combineCodec,
} from '@solana/kit';
const biggerU32Encoder = resizeEncoder(getU32Encoder(), (size) => size + 4);
const biggerU32Decoder = resizeDecoder(getU32Decoder(), (size) => size + 4);
// ---cut-before---
const getU32InTheMiddleEncoder = () =>
    offsetEncoder(biggerU32Encoder, { preOffset: ({ preOffset }) => preOffset + 2 });
const getU32InTheMiddleDecoder = () =>
    offsetDecoder(biggerU32Decoder, { preOffset: ({ preOffset }) => preOffset + 2 });
const getU32InTheMiddleCodec = () =>
    combineCodec(getU32InTheMiddleEncoder(), getU32InTheMiddleDecoder());
```

### padBytes [!toc] [#pad-bytes]

Pads a `Uint8Array` with zeroes (to the right) to the specified length.

```ts twoslash
import { padBytes } from '@solana/kit';
// ---cut-before---
padBytes(new Uint8Array([1, 2]), 4); // Uint8Array([1, 2, 0, 0])
padBytes(new Uint8Array([1, 2, 3, 4]), 2); // Uint8Array([1, 2, 3, 4])
```

### padLeftCodec [!toc] [#pad-left-codec]

The `padLeftCodec` helper can be used to add padding to the left of a given codec. It accepts an `offset` number that tells us how big the padding should be.

```ts twoslash
import { padLeftCodec, getU16Codec } from '@solana/kit';
// ---cut-before---
const leftPaddedCodec = padLeftCodec(getU16Codec(), 4);
leftPaddedCodec.encode(0xffff);
// 0x00000000ffff
//   |       └
Download .txt
gitextract_q5tmvg6z/

├── .agents/
│   └── skills/
│       ├── changesets/
│       │   ├── INJECT.md
│       │   └── SKILL.md
│       ├── shipping-git/
│       │   ├── INJECT.md
│       │   └── SKILL.md
│       ├── shipping-graphite/
│       │   ├── INJECT.md
│       │   └── SKILL.md
│       ├── ts-docblocks/
│       │   ├── INJECT.md
│       │   └── SKILL.md
│       └── ts-readme/
│           ├── INJECT.md
│           └── SKILL.md
├── .bundlemonrc.json
├── .changeset/
│   ├── bold-drinks-strive.md
│   ├── brown-candles-relax.md
│   ├── clever-spies-shout.md
│   ├── config.json
│   ├── some-views-pick.md
│   └── thin-cats-drop.md
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── 0_bug.md
│   │   ├── 1_feature.md
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   ├── label-actions.yml
│   └── workflows/
│       ├── actions/
│       │   ├── install-dependencies/
│       │   │   └── action.yml
│       │   └── setup-validator/
│       │       └── action.yml
│       ├── autolock-inactive-threads.yml
│       ├── backport.yml
│       ├── bundlesize.yml
│       ├── codeql.yml
│       ├── deploy-docs.yml
│       ├── dismiss-stale-pr-reviews.yml
│       ├── label-actions.yml
│       ├── manage-stale-threads.yml
│       ├── preview-docs.yml
│       ├── publish-packages.yml
│       ├── pull-requests.yml
│       └── update-docs-lockfile.yml
├── .gitignore
├── .npmrc
├── .prettierignore
├── .skills-inject.json
├── .vscode/
│   ├── extensions.json
│   └── settings.json
├── CLAUDE.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── docs/
│   ├── .eslintrc.json
│   ├── .gitignore
│   ├── .npmrc
│   ├── .prettierignore
│   ├── README.md
│   ├── build-api-docs.sh
│   ├── build-api-index.js
│   ├── cli.json
│   ├── content/
│   │   ├── .prettierrc
│   │   ├── docs/
│   │   │   ├── advanced-guides/
│   │   │   │   ├── codecs.mdx
│   │   │   │   ├── errors.mdx
│   │   │   │   ├── index.mdx
│   │   │   │   ├── instruction-plans.mdx
│   │   │   │   ├── keypairs.mdx
│   │   │   │   ├── kit-without-a-client.mdx
│   │   │   │   ├── meta.json
│   │   │   │   ├── offchain-messages.mdx
│   │   │   │   ├── signers.mdx
│   │   │   │   └── transactions.mdx
│   │   │   ├── getting-started.mdx
│   │   │   ├── guides/
│   │   │   │   ├── fetching-accounts.mdx
│   │   │   │   ├── index.mdx
│   │   │   │   ├── meta.json
│   │   │   │   ├── rpc-subscriptions.mdx
│   │   │   │   ├── rpc.mdx
│   │   │   │   ├── sending-multiple-transactions.mdx
│   │   │   │   ├── sending-transactions.mdx
│   │   │   │   ├── setting-up-signers.mdx
│   │   │   │   ├── testing-and-local-development.mdx
│   │   │   │   └── using-program-plugins.mdx
│   │   │   ├── index.mdx
│   │   │   ├── meta.json
│   │   │   ├── plugins/
│   │   │   │   ├── available-plugins.mdx
│   │   │   │   ├── creating-custom-plugins.mdx
│   │   │   │   ├── generating-program-plugins.mdx
│   │   │   │   ├── index.mdx
│   │   │   │   └── meta.json
│   │   │   ├── tree-shaking.tsx
│   │   │   └── upgrade-guide.mdx
│   │   ├── home/
│   │   │   ├── example-codecs.mdx
│   │   │   ├── example-rpc-subscriptions.mdx
│   │   │   ├── example-rpc.mdx
│   │   │   ├── example-signers.mdx
│   │   │   ├── example-solana-programs.mdx
│   │   │   └── example-transactions.mdx
│   │   └── recipes/
│   │       ├── airdropping-tokens.mdx
│   │       ├── creating-a-token.mdx
│   │       ├── index.mdx
│   │       ├── meta.json
│   │       └── transferring-sol.mdx
│   ├── next.config.mjs
│   ├── package.json
│   ├── postcss.config.mjs
│   ├── source.config.ts
│   ├── src/
│   │   ├── app/
│   │   │   ├── (home)/
│   │   │   │   ├── layout.tsx
│   │   │   │   ├── page/
│   │   │   │   │   ├── code.tsx
│   │   │   │   │   ├── cta.tsx
│   │   │   │   │   ├── example-context.tsx
│   │   │   │   │   ├── features.tsx
│   │   │   │   │   ├── footer.tsx
│   │   │   │   │   └── hero.tsx
│   │   │   │   └── page.tsx
│   │   │   ├── api/
│   │   │   │   ├── [[...slug]]/
│   │   │   │   │   └── page.tsx
│   │   │   │   └── layout.tsx
│   │   │   ├── docs/
│   │   │   │   ├── [[...slug]]/
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── layout.tsx
│   │   │   │   ├── navbar.tsx
│   │   │   │   └── sidebar.tsx
│   │   │   ├── global.css
│   │   │   ├── layout.config.tsx
│   │   │   ├── layout.tsx
│   │   │   ├── llms-full.txt/
│   │   │   │   └── route.ts
│   │   │   ├── llms.mdx/
│   │   │   │   ├── api/
│   │   │   │   │   └── [[...slug]]/
│   │   │   │   │       └── route.ts
│   │   │   │   ├── docs/
│   │   │   │   │   └── [[...slug]]/
│   │   │   │   │       └── route.ts
│   │   │   │   └── recipes/
│   │   │   │       └── [[...slug]]/
│   │   │   │           └── route.ts
│   │   │   ├── logo.tsx
│   │   │   ├── recipes/
│   │   │   │   ├── [[...slug]]/
│   │   │   │   │   └── page.tsx
│   │   │   │   └── layout.tsx
│   │   │   └── styles/
│   │   │       ├── brand.css
│   │   │       ├── fumadocs-overrides.css
│   │   │       └── typography.css
│   │   ├── components/
│   │   │   ├── card-tabs.tsx
│   │   │   ├── page-actions.tsx
│   │   │   └── ui/
│   │   │       ├── button.tsx
│   │   │       └── popover.tsx
│   │   └── lib/
│   │       ├── InKeepSearchDialog.tsx
│   │       ├── Overrides.tsx
│   │       ├── Spread.tsx
│   │       ├── ThemedImage.tsx
│   │       ├── cn.ts
│   │       ├── get-llm-text.ts
│   │       └── source.ts
│   └── tsconfig.json
├── eslint.config.mjs
├── examples/
│   ├── README.md
│   ├── deserialize-transaction/
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── example.ts
│   │   └── tsconfig.json
│   ├── react-app/
│   │   ├── .gitignore
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── components/
│   │   │   │   ├── AirdropButton.tsx
│   │   │   │   ├── Balance.tsx
│   │   │   │   ├── BaseSignMessageFeaturePanel.tsx
│   │   │   │   ├── ConnectWalletMenu.tsx
│   │   │   │   ├── ConnectWalletMenuItem.tsx
│   │   │   │   ├── DisconnectButton.tsx
│   │   │   │   ├── ErrorDialog.tsx
│   │   │   │   ├── FeatureNotSupportedCallout.tsx
│   │   │   │   ├── FeaturePanel.tsx
│   │   │   │   ├── Nav.tsx
│   │   │   │   ├── SignInMenu.tsx
│   │   │   │   ├── SignInMenuItem.tsx
│   │   │   │   ├── SlotIndicator.tsx
│   │   │   │   ├── SolanaPartialSignTransactionFeaturePanel.tsx
│   │   │   │   ├── SolanaSignAndSendTransactionFeaturePanel.tsx
│   │   │   │   ├── SolanaSignMessageFeaturePanel.tsx
│   │   │   │   ├── SolanaSignTransactionFeaturePanel.tsx
│   │   │   │   ├── UnconnectableWalletMenuItem.tsx
│   │   │   │   ├── WalletAccountIcon.tsx
│   │   │   │   └── WalletMenuItemContent.tsx
│   │   │   ├── context/
│   │   │   │   ├── ChainContext.tsx
│   │   │   │   ├── ChainContextProvider.tsx
│   │   │   │   ├── RpcContext.tsx
│   │   │   │   └── RpcContextProvider.tsx
│   │   │   ├── errors.tsx
│   │   │   ├── functions/
│   │   │   │   └── balance.ts
│   │   │   ├── hooks/
│   │   │   │   └── useStable.ts
│   │   │   ├── index.css
│   │   │   ├── main.tsx
│   │   │   ├── reset.css
│   │   │   ├── routes/
│   │   │   │   └── root.tsx
│   │   │   ├── signerBytes.json
│   │   │   ├── storage.ts
│   │   │   └── vite-env.d.ts
│   │   ├── tsconfig.app.json
│   │   ├── tsconfig.json
│   │   ├── tsconfig.node.json
│   │   └── vite.config.ts
│   ├── rpc-custom-api/
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── example.ts
│   │   └── tsconfig.json
│   ├── rpc-transport-throttled/
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── example.ts
│   │   └── tsconfig.json
│   ├── signers/
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── example-keypair.json
│   │   │   └── example.ts
│   │   └── tsconfig.json
│   ├── token-airdrop/
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── example.ts
│   │   └── tsconfig.json
│   ├── transfer-lamports/
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── example.ts
│   │   └── tsconfig.json
│   └── utils/
│       ├── .gitignore
│       ├── .prettierignore
│       ├── LICENSE
│       ├── createLogger.ts
│       ├── package.json
│       ├── pressAnyKeyPrompt.ts
│       ├── tsconfig.declarations.json
│       └── tsconfig.json
├── package.json
├── packages/
│   ├── accounts/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── decode-account-test.ts
│   │   │   │   ├── fetch-account-test.ts
│   │   │   │   ├── maybe-account-test.ts
│   │   │   │   └── parse-account-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── decode-account-typetest.ts
│   │   │   │   ├── fetch-account-typetest.ts
│   │   │   │   ├── maybe-account-typetest.ts
│   │   │   │   └── parse-account-typetest.ts
│   │   │   ├── account.ts
│   │   │   ├── decode-account.ts
│   │   │   ├── fetch-account.ts
│   │   │   ├── index.ts
│   │   │   ├── maybe-account.ts
│   │   │   ├── parse-account.ts
│   │   │   └── rpc-api/
│   │   │       ├── common.ts
│   │   │       ├── getAccountInfo.ts
│   │   │       ├── getMultipleAccounts.ts
│   │   │       └── index.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── addresses/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── address-test.ts
│   │   │   │   ├── coercions-test.ts
│   │   │   │   ├── curve-test.ts
│   │   │   │   ├── program-derived-address-test.ts
│   │   │   │   └── public-key-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── coercions-typetest.ts
│   │   │   ├── address.ts
│   │   │   ├── curve-internal.ts
│   │   │   ├── curve.ts
│   │   │   ├── index.ts
│   │   │   ├── program-derived-address.ts
│   │   │   ├── public-key.ts
│   │   │   └── vendor/
│   │   │       └── noble/
│   │   │           └── ed25519.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── assertions/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── crypto-test.ts
│   │   │   │   └── subtle-crypto-test.ts
│   │   │   ├── crypto.ts
│   │   │   ├── index.ts
│   │   │   └── subtle-crypto.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── build-scripts/
│   │   ├── .npmrc
│   │   ├── README.md
│   │   ├── build-time-constants.d.ts
│   │   ├── constants.ts
│   │   ├── create-github-release.ts
│   │   ├── current-linked-version.ts
│   │   ├── dev-flag.ts
│   │   ├── getBaseConfig.ts
│   │   ├── github-api.ts
│   │   ├── maybe-tag-latest.ts
│   │   ├── package.json
│   │   ├── prior-release.ts
│   │   ├── register-node-globals.cjs
│   │   ├── tag-release-manually.ts
│   │   ├── tsconfig.json
│   │   ├── tsup.config.browser.ts
│   │   ├── tsup.config.library.ts
│   │   ├── tsup.config.package.bundled_8gpidqojr8.mjs
│   │   └── tsup.config.package.ts
│   ├── codecs/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   └── index.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── codecs-core/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __benchmarks__/
│   │   │   │   └── run.ts
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── add-codec-sentinel-test.ts
│   │   │   │   ├── add-codec-size-prefix-test.ts
│   │   │   │   ├── array-buffers-test.ts
│   │   │   │   ├── bytes-test.ts
│   │   │   │   ├── codec-test.ts
│   │   │   │   ├── combine-codec.ts
│   │   │   │   ├── decoder-entire-byte-array-test.ts
│   │   │   │   ├── fix-codec-size-test.ts
│   │   │   │   ├── offset-codec-test.ts
│   │   │   │   ├── pad-codec-test.ts
│   │   │   │   ├── resize-codec-test.ts
│   │   │   │   ├── reverse-codec-test.ts
│   │   │   │   └── transform-codec-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── add-codec-sentinel-typetest.ts
│   │   │   │   ├── add-codec-size-prefix-typetest.ts
│   │   │   │   ├── array-buffers-typetest.ts
│   │   │   │   ├── bytes-typetest.ts
│   │   │   │   ├── codec-typetest.ts
│   │   │   │   ├── combine-codec-typetest.ts
│   │   │   │   ├── fix-codec-size-typetest.ts
│   │   │   │   ├── offset-codec-typetest.ts
│   │   │   │   ├── pad-codec-typetest.ts
│   │   │   │   ├── resize-codec-typetest.ts
│   │   │   │   ├── reverse-codec-typetest.ts
│   │   │   │   └── transform-codec-typetest.ts
│   │   │   ├── add-codec-sentinel.ts
│   │   │   ├── add-codec-size-prefix.ts
│   │   │   ├── array-buffers.ts
│   │   │   ├── assertions.ts
│   │   │   ├── bytes.ts
│   │   │   ├── codec.ts
│   │   │   ├── combine-codec.ts
│   │   │   ├── decoder-entire-byte-array.ts
│   │   │   ├── fix-codec-size.ts
│   │   │   ├── index.ts
│   │   │   ├── offset-codec.ts
│   │   │   ├── pad-codec.ts
│   │   │   ├── readonly-uint8array.ts
│   │   │   ├── resize-codec.ts
│   │   │   ├── reverse-codec.ts
│   │   │   └── transform-codec.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── codecs-data-structures/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── array-test.ts
│   │   │   │   ├── bit-array-test.ts
│   │   │   │   ├── boolean-test.ts
│   │   │   │   ├── bytes-test.ts
│   │   │   │   ├── constant-test.ts
│   │   │   │   ├── discriminated-union-test.ts
│   │   │   │   ├── enum-helpers-test.ts
│   │   │   │   ├── enum-test.ts
│   │   │   │   ├── hidden-prefix-test.ts
│   │   │   │   ├── hidden-suffix-test.ts
│   │   │   │   ├── literal-union-test.ts
│   │   │   │   ├── map-test.ts
│   │   │   │   ├── nullable-test.ts
│   │   │   │   ├── pattern-match-test.ts
│   │   │   │   ├── predicate-test.ts
│   │   │   │   ├── set-test.ts
│   │   │   │   ├── struct-test.ts
│   │   │   │   ├── tuple-test.ts
│   │   │   │   ├── union-test.ts
│   │   │   │   └── unit-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── array-typetest.ts
│   │   │   │   ├── bit-array-typetest.ts
│   │   │   │   ├── boolean-typetest.ts
│   │   │   │   ├── bytes-typetest.ts
│   │   │   │   ├── constant-typetest.ts
│   │   │   │   ├── discriminated-union-typetest.ts
│   │   │   │   ├── enum-typetest.ts
│   │   │   │   ├── hidden-prefix-typetest.ts
│   │   │   │   ├── hidden-suffix-typetest.ts
│   │   │   │   ├── literal-union-typetest.ts
│   │   │   │   ├── map-typetest.ts
│   │   │   │   ├── nullable-typetest.ts
│   │   │   │   ├── pattern-match-typetest.ts
│   │   │   │   ├── predicate-typetest.ts
│   │   │   │   ├── set-typetest.ts
│   │   │   │   ├── struct-typetest.ts
│   │   │   │   ├── tuple-typetest.ts
│   │   │   │   └── union-typetest.ts
│   │   │   ├── array.ts
│   │   │   ├── assertions.ts
│   │   │   ├── bit-array.ts
│   │   │   ├── boolean.ts
│   │   │   ├── bytes.ts
│   │   │   ├── constant.ts
│   │   │   ├── discriminated-union.ts
│   │   │   ├── enum-helpers.ts
│   │   │   ├── enum.ts
│   │   │   ├── hidden-prefix.ts
│   │   │   ├── hidden-suffix.ts
│   │   │   ├── index.ts
│   │   │   ├── literal-union.ts
│   │   │   ├── map.ts
│   │   │   ├── nullable.ts
│   │   │   ├── pattern-match.ts
│   │   │   ├── predicate.ts
│   │   │   ├── set.ts
│   │   │   ├── struct.ts
│   │   │   ├── tuple.ts
│   │   │   ├── union.ts
│   │   │   ├── unit.ts
│   │   │   └── utils.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── codecs-numbers/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── f32-test.ts
│   │   │   │   ├── f64-test.ts
│   │   │   │   ├── i128-test.ts
│   │   │   │   ├── i16-test.ts
│   │   │   │   ├── i32-test.ts
│   │   │   │   ├── i64-test.ts
│   │   │   │   ├── i8-test.ts
│   │   │   │   ├── short-u16-test.ts
│   │   │   │   ├── u128-test.ts
│   │   │   │   ├── u16-test.ts
│   │   │   │   ├── u32-test.ts
│   │   │   │   ├── u64-test.ts
│   │   │   │   └── u8-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── codecs-typetest.ts
│   │   │   ├── assertions.ts
│   │   │   ├── common.ts
│   │   │   ├── f32.ts
│   │   │   ├── f64.ts
│   │   │   ├── i128.ts
│   │   │   ├── i16.ts
│   │   │   ├── i32.ts
│   │   │   ├── i64.ts
│   │   │   ├── i8.ts
│   │   │   ├── index.ts
│   │   │   ├── short-u16.ts
│   │   │   ├── u128.ts
│   │   │   ├── u16.ts
│   │   │   ├── u32.ts
│   │   │   ├── u64.ts
│   │   │   ├── u8.ts
│   │   │   └── utils.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── codecs-strings/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __benchmarks__/
│   │   │   │   └── run.ts
│   │   │   ├── __tests__/
│   │   │   │   ├── base10-test.ts
│   │   │   │   ├── base16-test.ts
│   │   │   │   ├── base58-test.ts
│   │   │   │   ├── base64-test.ts
│   │   │   │   ├── baseX-reslice-test.ts
│   │   │   │   ├── string-test.ts
│   │   │   │   └── utf8-test.ts
│   │   │   ├── assertions.ts
│   │   │   ├── base10.ts
│   │   │   ├── base16.ts
│   │   │   ├── base58.ts
│   │   │   ├── base64.ts
│   │   │   ├── baseX-reslice.ts
│   │   │   ├── baseX.ts
│   │   │   ├── index.ts
│   │   │   ├── null-characters.ts
│   │   │   └── utf8.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── compat/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── address-test.ts
│   │   │   │   ├── instruction-test.ts
│   │   │   │   ├── keypair-test.ts
│   │   │   │   └── transaction-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── address-typetest.ts
│   │   │   │   ├── instruction-typetest.ts
│   │   │   │   ├── keypair-typetest.ts
│   │   │   │   └── transaction-typetest.ts
│   │   │   ├── address.ts
│   │   │   ├── index.ts
│   │   │   ├── instruction.ts
│   │   │   ├── keypair.ts
│   │   │   └── transaction.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── crypto-impl/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.browser.ts
│   │   │   └── index.node.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── tsup.config.ts
│   ├── errors/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bin/
│   │   │   └── cli.mjs
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── RPC_INTEGER_OVERFLOW-test.ts
│   │   │   │   ├── context-test.ts
│   │   │   │   ├── error-test.ts
│   │   │   │   ├── instruction-error-test.ts
│   │   │   │   ├── json-rpc-error-test.ts
│   │   │   │   ├── message-formatter-test.ts
│   │   │   │   ├── simulation-errors-test.ts
│   │   │   │   └── transaction-error-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── error-typetest.ts
│   │   │   ├── cli.ts
│   │   │   ├── codes.ts
│   │   │   ├── context.ts
│   │   │   ├── error.ts
│   │   │   ├── index.ts
│   │   │   ├── instruction-error.ts
│   │   │   ├── json-rpc-error.ts
│   │   │   ├── message-formatter.ts
│   │   │   ├── messages.ts
│   │   │   ├── rpc-enum-errors.ts
│   │   │   ├── simulation-errors.ts
│   │   │   ├── stack-trace.ts
│   │   │   └── transaction-error.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── eslint-config/
│   │   ├── .npmrc
│   │   ├── eslint.config.mjs
│   │   ├── eslint.config.react.mjs
│   │   ├── package.json
│   │   └── tsconfig.json
│   ├── event-target-impl/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.browser.ts
│   │   │   └── index.node.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── tsup.config.ts
│   ├── fast-stable-stringify/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   └── index-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── index-typetest.ts
│   │   │   └── index.ts
│   │   ├── tsconfig.declarations.json
│   │   └── tsconfig.json
│   ├── fetch-impl/
│   │   ├── .npmrc
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── __benchmarks__/
│   │   │       └── run.ts
│   │   └── tsconfig.json
│   ├── fixed-points/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── assertions-test.ts
│   │   │   │   ├── binary-arithmetics-test.ts
│   │   │   │   ├── binary-codec-test.ts
│   │   │   │   ├── binary-comparisons-test.ts
│   │   │   │   ├── binary-conversions-test.ts
│   │   │   │   ├── binary-core-test.ts
│   │   │   │   ├── binary-formatting-test.ts
│   │   │   │   ├── binary-guards-test.ts
│   │   │   │   ├── decimal-arithmetics-test.ts
│   │   │   │   ├── decimal-codec-test.ts
│   │   │   │   ├── decimal-comparisons-test.ts
│   │   │   │   ├── decimal-conversions-test.ts
│   │   │   │   ├── decimal-core-test.ts
│   │   │   │   ├── decimal-formatting-test.ts
│   │   │   │   ├── decimal-guards-test.ts
│   │   │   │   ├── parsing-test.ts
│   │   │   │   └── rounding-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── binary-arithmetics-typetest.ts
│   │   │   │   ├── binary-codec-typetest.ts
│   │   │   │   ├── binary-conversions-typetest.ts
│   │   │   │   ├── binary-core-typetest.ts
│   │   │   │   ├── binary-guards-typetest.ts
│   │   │   │   ├── decimal-arithmetics-typetest.ts
│   │   │   │   ├── decimal-codec-typetest.ts
│   │   │   │   ├── decimal-conversions-typetest.ts
│   │   │   │   ├── decimal-core-typetest.ts
│   │   │   │   └── decimal-guards-typetest.ts
│   │   │   ├── assertions.ts
│   │   │   ├── binary/
│   │   │   │   ├── arithmetics.ts
│   │   │   │   ├── codecs.ts
│   │   │   │   ├── comparisons.ts
│   │   │   │   ├── conversions.ts
│   │   │   │   ├── core.ts
│   │   │   │   ├── formatting.ts
│   │   │   │   ├── guards.ts
│   │   │   │   └── index.ts
│   │   │   ├── codecs.ts
│   │   │   ├── decimal/
│   │   │   │   ├── arithmetics.ts
│   │   │   │   ├── codecs.ts
│   │   │   │   ├── comparisons.ts
│   │   │   │   ├── conversions.ts
│   │   │   │   ├── core.ts
│   │   │   │   ├── formatting.ts
│   │   │   │   ├── guards.ts
│   │   │   │   └── index.ts
│   │   │   ├── formatting.ts
│   │   │   ├── index.ts
│   │   │   ├── parsing.ts
│   │   │   ├── rounding.ts
│   │   │   └── signedness.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── fs-impl/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.browser.ts
│   │   │   └── index.node.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── tsup.config.ts
│   ├── functional/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   └── pipe-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── pipe-typetest.ts
│   │   │   ├── index.ts
│   │   │   └── pipe.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── instruction-plans/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── append-instruction-plan-test.ts
│   │   │   │   ├── instruction-plan-input-test.ts
│   │   │   │   ├── instruction-plan-test.ts
│   │   │   │   ├── transaction-plan-errors-test.ts
│   │   │   │   ├── transaction-plan-executor-test.ts
│   │   │   │   ├── transaction-plan-result-test.ts
│   │   │   │   ├── transaction-plan-test.ts
│   │   │   │   └── transaction-planner-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── append-instruction-plan-typetest.ts
│   │   │   │   ├── instruction-plan-input-typetest.ts
│   │   │   │   ├── instruction-plan-typetest.ts
│   │   │   │   ├── transaction-plan-executor-typetest.ts
│   │   │   │   ├── transaction-plan-result-typetest.ts
│   │   │   │   ├── transaction-plan-typetest.ts
│   │   │   │   └── transaction-planner-typetest.ts
│   │   │   ├── append-instruction-plan.ts
│   │   │   ├── index.ts
│   │   │   ├── instruction-plan-input.ts
│   │   │   ├── instruction-plan.ts
│   │   │   ├── transaction-plan-errors.ts
│   │   │   ├── transaction-plan-executor.ts
│   │   │   ├── transaction-plan-result.ts
│   │   │   ├── transaction-plan.ts
│   │   │   └── transaction-planner.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── instructions/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── instruction-test.ts
│   │   │   │   └── roles-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── instruction-typetest.ts
│   │   │   ├── accounts.ts
│   │   │   ├── index.ts
│   │   │   ├── instruction.ts
│   │   │   └── roles.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── keys/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __benchmarks__/
│   │   │   │   └── run.ts
│   │   │   ├── __tests__/
│   │   │   │   ├── coercions-test.ts
│   │   │   │   ├── grind-keypair-test.ts
│   │   │   │   ├── key-pair-test.ts
│   │   │   │   ├── private-key-test.ts
│   │   │   │   ├── public-key-test.ts
│   │   │   │   ├── signatures-test.ts
│   │   │   │   ├── write-keypair-test.browser.ts
│   │   │   │   └── write-keypair-test.node.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── key-pair-typetest.ts
│   │   │   │   ├── private-key-typetest.ts
│   │   │   │   ├── public-key-typetest.ts
│   │   │   │   ├── signatures-typetest.ts
│   │   │   │   └── write-keypair-typetest.ts
│   │   │   ├── algorithm.ts
│   │   │   ├── grind-keypair.ts
│   │   │   ├── index.ts
│   │   │   ├── key-pair.ts
│   │   │   ├── private-key.ts
│   │   │   ├── public-key.ts
│   │   │   ├── signatures.ts
│   │   │   └── write-keypair.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── kit/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── airdrop-internal-test.ts
│   │   │   │   ├── compute-unit-limit-estimation-test.ts
│   │   │   │   ├── create-async-generator-with-initial-value-and-slot-tracking-test.ts
│   │   │   │   ├── create-reactive-store-with-initial-value-and-slot-tracking-test.ts
│   │   │   │   ├── decompile-transaction-message-fetching-lookup-tables-test.ts
│   │   │   │   ├── fetch-lookup-tables-test.ts
│   │   │   │   ├── get-minimum-balance-for-rent-exemption-test.ts
│   │   │   │   ├── program-client-core-subpath-export-test.node.ts
│   │   │   │   ├── send-and-confirm-durable-nonce-transaction-test.ts
│   │   │   │   └── send-transaction-internal-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── airdrop-typetest.ts
│   │   │   │   ├── decompile-transaction-message-fetching-lookup-tables-typetest.ts
│   │   │   │   ├── scenarios/
│   │   │   │   │   ├── transaction-message-decompile-modify-typetest.ts
│   │   │   │   │   └── transaction-signers-typetest.ts
│   │   │   │   ├── send-and-confirm-durable-nonce-transaction-typetest.ts
│   │   │   │   └── send-and-confirm-transaction-typetest.ts
│   │   │   ├── airdrop-internal.ts
│   │   │   ├── airdrop.ts
│   │   │   ├── compute-unit-limit-estimation.ts
│   │   │   ├── create-async-generator-with-initial-value-and-slot-tracking.ts
│   │   │   ├── create-reactive-store-with-initial-value-and-slot-tracking.ts
│   │   │   ├── decompile-transaction-message-fetching-lookup-tables.ts
│   │   │   ├── fetch-lookup-tables.ts
│   │   │   ├── get-minimum-balance-for-rent-exemption.ts
│   │   │   ├── index.ts
│   │   │   ├── program-client-core.ts
│   │   │   ├── send-and-confirm-durable-nonce-transaction.ts
│   │   │   ├── send-and-confirm-transaction.ts
│   │   │   ├── send-transaction-internal.ts
│   │   │   └── send-transaction-without-confirming.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── nominal-types/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __typetests__/
│   │   │   │   ├── brand-typetest.ts
│   │   │   │   └── nominal-type-typetest.ts
│   │   │   └── index.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── offchain-messages/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── content-test.ts
│   │   │   │   ├── envelope-codec-test.ts
│   │   │   │   ├── message-codec-test.ts
│   │   │   │   ├── message-v0-codec-test.ts
│   │   │   │   ├── message-v1-codec-test.ts
│   │   │   │   ├── preamble-test.ts
│   │   │   │   └── signatures-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── message-codec-typetest.ts
│   │   │   │   ├── message-typetest.ts
│   │   │   │   ├── message-v0-codec-typetest.ts
│   │   │   │   └── message-v1-codec-typetest.ts
│   │   │   ├── application-domain.ts
│   │   │   ├── codecs/
│   │   │   │   ├── application-domain.ts
│   │   │   │   ├── content.ts
│   │   │   │   ├── envelope.ts
│   │   │   │   ├── message-v0.ts
│   │   │   │   ├── message-v1.ts
│   │   │   │   ├── message.ts
│   │   │   │   ├── preamble-common.ts
│   │   │   │   ├── preamble-v0.ts
│   │   │   │   ├── preamble-v1.ts
│   │   │   │   ├── signatures.ts
│   │   │   │   ├── signing-domain.ts
│   │   │   │   └── version.ts
│   │   │   ├── content.ts
│   │   │   ├── envelope-common.ts
│   │   │   ├── envelope-v0.ts
│   │   │   ├── envelope-v1.ts
│   │   │   ├── envelope.ts
│   │   │   ├── index.ts
│   │   │   ├── message-v0.ts
│   │   │   ├── message-v1.ts
│   │   │   ├── message.ts
│   │   │   ├── preamble-v0.ts
│   │   │   ├── preamble-v1.ts
│   │   │   ├── signatures.ts
│   │   │   └── version.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── options/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── option-codec-test.ts
│   │   │   │   ├── option-test.ts
│   │   │   │   ├── unwrap-option-recursively-test.ts
│   │   │   │   └── unwrap-option-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── option-codec-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── option-codec.ts
│   │   │   ├── option.ts
│   │   │   ├── unwrap-option-recursively.ts
│   │   │   └── unwrap-option.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── plugin-core/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   └── client-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── client-typetest.ts
│   │   │   ├── client.ts
│   │   │   └── index.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── plugin-interfaces/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __typetests__/
│   │   │   │   ├── airdrop-typetest.ts
│   │   │   │   ├── get-minimum-balance-typetest.ts
│   │   │   │   ├── identity-typetest.ts
│   │   │   │   ├── instruction-plans-typetest.ts
│   │   │   │   ├── payer-typetest.ts
│   │   │   │   ├── rpc-typetest.ts
│   │   │   │   └── subscribe-to-typetest.ts
│   │   │   ├── airdrop.ts
│   │   │   ├── get-minimum-balance.ts
│   │   │   ├── identity.ts
│   │   │   ├── index.ts
│   │   │   ├── instruction-plans.ts
│   │   │   ├── payer.ts
│   │   │   ├── rpc.ts
│   │   │   └── subscribe-to.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── program-client-core/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── instruction-input-resolution-test.ts
│   │   │   │   ├── self-fetch-functions-test.ts
│   │   │   │   └── self-plan-and-send-functions-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── instruction-input-resolution-typetest.ts
│   │   │   │   ├── instructions-typetest.ts
│   │   │   │   ├── self-fetch-functions-typetest.ts
│   │   │   │   └── self-plan-and-send-functions-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── instruction-input-resolution.ts
│   │   │   ├── instructions.ts
│   │   │   ├── self-fetch-functions.ts
│   │   │   └── self-plan-and-send-functions.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── programs/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   └── program-error-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── program-error-typetest.ts
│   │   │   ├── index.ts
│   │   │   └── program-error.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── promises/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── abortable-test.browser.ts
│   │   │   │   ├── abortable-test.ts
│   │   │   │   └── race-test.ts
│   │   │   ├── abortable.ts
│   │   │   ├── index.ts
│   │   │   └── race.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── react/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── SelectedWalletAccountContextProvider.tsx
│   │   │   ├── __tests__/
│   │   │   │   ├── SelectedWalletAccountContextProvider-test.browser.tsx
│   │   │   │   ├── useSignAndSendTransaction-test.ts
│   │   │   │   ├── useSignIn-test.ts
│   │   │   │   ├── useSignMessage-test.ts
│   │   │   │   ├── useSignTransaction-test.ts
│   │   │   │   ├── useWalletAccountMessageSigner-test.ts
│   │   │   │   ├── useWalletAccountTransactionSendingSigner-test.ts
│   │   │   │   └── useWalletAccountTransactionSigner-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── selectedWalletAccountContextProvider-typetest.ts
│   │   │   │   ├── useSignAndSendTransaction-typetest.ts
│   │   │   │   ├── useSignIn-typetest.ts
│   │   │   │   └── useSignTransaction-typetest.ts
│   │   │   ├── chain.ts
│   │   │   ├── index.ts
│   │   │   ├── selectedWalletAccountContext.ts
│   │   │   ├── test-renderer.tsx
│   │   │   ├── useSignAndSendTransaction.ts
│   │   │   ├── useSignIn.ts
│   │   │   ├── useSignMessage.ts
│   │   │   ├── useSignTransaction.ts
│   │   │   ├── useWalletAccountMessageSigner.ts
│   │   │   ├── useWalletAccountTransactionSendingSigner.ts
│   │   │   └── useWalletAccountTransactionSigner.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── rpc-integer-overflow-error-test.ts
│   │   │   │   ├── rpc-integer-overflow-test.ts
│   │   │   │   ├── rpc-request-coalescer-test.ts
│   │   │   │   ├── rpc-request-deduplication-test.ts
│   │   │   │   └── rpc-transport-header-config-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── rpc-clusters-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── rpc-clusters.ts
│   │   │   ├── rpc-default-config.ts
│   │   │   ├── rpc-integer-overflow-error.ts
│   │   │   ├── rpc-request-coalescer.ts
│   │   │   ├── rpc-request-deduplication.ts
│   │   │   ├── rpc-transport.ts
│   │   │   └── rpc.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-api/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── get-account-info-test.ts
│   │   │   │   ├── get-balance-test.ts
│   │   │   │   ├── get-block-commitment-test.ts
│   │   │   │   ├── get-block-height.ts
│   │   │   │   ├── get-block-production-test.ts
│   │   │   │   ├── get-block-test.ts
│   │   │   │   ├── get-block-time-test.ts
│   │   │   │   ├── get-blocks-with-limit-test.ts
│   │   │   │   ├── get-cluster-nodes-test.ts
│   │   │   │   ├── get-epoch-info-test.ts
│   │   │   │   ├── get-epoch-schedule-test.ts
│   │   │   │   ├── get-fee-for-message-test.ts
│   │   │   │   ├── get-first-available-block-test.ts
│   │   │   │   ├── get-genesis-hash-test.ts
│   │   │   │   ├── get-health-test.ts
│   │   │   │   ├── get-highest-snapshot-slot-test.ts
│   │   │   │   ├── get-identity-test.ts
│   │   │   │   ├── get-inflation-governor-test.ts
│   │   │   │   ├── get-inflation-rate-test.ts
│   │   │   │   ├── get-inflation-reward-test.ts
│   │   │   │   ├── get-largest-accounts-test.ts
│   │   │   │   ├── get-latest-blockhash-test.ts
│   │   │   │   ├── get-leader-schedule-test.ts
│   │   │   │   ├── get-max-retransmit-slot-test.ts
│   │   │   │   ├── get-max-shred-insert-slot-test.ts
│   │   │   │   ├── get-minimum-balance-for-rent-exemption-test.ts
│   │   │   │   ├── get-multiple-accounts-test.ts
│   │   │   │   ├── get-program-accounts-test.ts
│   │   │   │   ├── get-recent-performance-samples-test.ts
│   │   │   │   ├── get-recent-prioritization-fees-test.ts
│   │   │   │   ├── get-signature-statuses-test.ts
│   │   │   │   ├── get-signatures-for-address-test.ts
│   │   │   │   ├── get-slot-leader-test.ts
│   │   │   │   ├── get-slot-leaders-test.ts
│   │   │   │   ├── get-slot-test.ts
│   │   │   │   ├── get-stake-minimum-delegation-test.ts
│   │   │   │   ├── get-supply-test.ts
│   │   │   │   ├── get-token-account-balance-test.ts
│   │   │   │   ├── get-token-accounts-by-delegate-test.ts
│   │   │   │   ├── get-token-accounts-by-owner-test.ts
│   │   │   │   ├── get-token-largest-accounts-test.ts
│   │   │   │   ├── get-token-supply-test.ts
│   │   │   │   ├── get-transaction-count-test.ts
│   │   │   │   ├── get-transaction-test.ts
│   │   │   │   ├── get-version-test.ts
│   │   │   │   ├── get-vote-accounts.ts
│   │   │   │   ├── is-blockhash-valid-test.ts
│   │   │   │   ├── minimum-ledger-slot-test.ts
│   │   │   │   ├── request-airdrop-test.ts
│   │   │   │   ├── send-transaction-test.ts
│   │   │   │   └── simulate-transaction-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── get-block-production-typetest.ts
│   │   │   │   ├── get-block-typetest.ts
│   │   │   │   ├── get-leader-schedule-typetest.ts
│   │   │   │   ├── get-supply-typetest.ts
│   │   │   │   ├── get-token-accounts-by-delegate-typetest.ts
│   │   │   │   ├── get-token-accounts-by-owner-typetest.ts
│   │   │   │   ├── rpc-api-typetest.ts
│   │   │   │   └── simulate-transaction-typetest.ts
│   │   │   ├── getAccountInfo.ts
│   │   │   ├── getBalance.ts
│   │   │   ├── getBlock.ts
│   │   │   ├── getBlockCommitment.ts
│   │   │   ├── getBlockHeight.ts
│   │   │   ├── getBlockProduction.ts
│   │   │   ├── getBlockTime.ts
│   │   │   ├── getBlocks.ts
│   │   │   ├── getBlocksWithLimit.ts
│   │   │   ├── getClusterNodes.ts
│   │   │   ├── getEpochInfo.ts
│   │   │   ├── getEpochSchedule.ts
│   │   │   ├── getFeeForMessage.ts
│   │   │   ├── getFirstAvailableBlock.ts
│   │   │   ├── getGenesisHash.ts
│   │   │   ├── getHealth.ts
│   │   │   ├── getHighestSnapshotSlot.ts
│   │   │   ├── getIdentity.ts
│   │   │   ├── getInflationGovernor.ts
│   │   │   ├── getInflationRate.ts
│   │   │   ├── getInflationReward.ts
│   │   │   ├── getLargestAccounts.ts
│   │   │   ├── getLatestBlockhash.ts
│   │   │   ├── getLeaderSchedule.ts
│   │   │   ├── getMaxRetransmitSlot.ts
│   │   │   ├── getMaxShredInsertSlot.ts
│   │   │   ├── getMinimumBalanceForRentExemption.ts
│   │   │   ├── getMultipleAccounts.ts
│   │   │   ├── getProgramAccounts.ts
│   │   │   ├── getRecentPerformanceSamples.ts
│   │   │   ├── getRecentPrioritizationFees.ts
│   │   │   ├── getSignatureStatuses.ts
│   │   │   ├── getSignaturesForAddress.ts
│   │   │   ├── getSlot.ts
│   │   │   ├── getSlotLeader.ts
│   │   │   ├── getSlotLeaders.ts
│   │   │   ├── getStakeMinimumDelegation.ts
│   │   │   ├── getSupply.ts
│   │   │   ├── getTokenAccountBalance.ts
│   │   │   ├── getTokenAccountsByDelegate.ts
│   │   │   ├── getTokenAccountsByOwner.ts
│   │   │   ├── getTokenLargestAccounts.ts
│   │   │   ├── getTokenSupply.ts
│   │   │   ├── getTransaction.ts
│   │   │   ├── getTransactionCount.ts
│   │   │   ├── getVersion.ts
│   │   │   ├── getVoteAccounts.ts
│   │   │   ├── index.ts
│   │   │   ├── isBlockhashValid.ts
│   │   │   ├── minimumLedgerSlot.ts
│   │   │   ├── requestAirdrop.ts
│   │   │   ├── sendTransaction.ts
│   │   │   └── simulateTransaction.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-graphql/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── account-test.ts
│   │   │   │   ├── block-tests.ts
│   │   │   │   ├── program-accounts-test.ts
│   │   │   │   └── transaction-tests.ts
│   │   │   ├── context.ts
│   │   │   ├── index.ts
│   │   │   ├── loaders/
│   │   │   │   ├── __tests__/
│   │   │   │   │   ├── account-loader-test.ts
│   │   │   │   │   ├── block-loader-test.ts
│   │   │   │   │   ├── program-accounts-loader-test.ts
│   │   │   │   │   └── transaction-loader-test.ts
│   │   │   │   ├── account.ts
│   │   │   │   ├── block.ts
│   │   │   │   ├── coalescer.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── loader.ts
│   │   │   │   ├── program-accounts.ts
│   │   │   │   └── transaction.ts
│   │   │   ├── resolvers/
│   │   │   │   ├── __tests__/
│   │   │   │   │   ├── account-resolver-test.ts
│   │   │   │   │   ├── block-inputs-test.ts
│   │   │   │   │   ├── block-resolver-test.ts
│   │   │   │   │   ├── program-accounts-resolver-test.ts
│   │   │   │   │   └── transaction-resolver-test.ts
│   │   │   │   ├── account.ts
│   │   │   │   ├── block.ts
│   │   │   │   ├── program-accounts.ts
│   │   │   │   ├── resolve-info/
│   │   │   │   │   ├── account.ts
│   │   │   │   │   ├── block.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── program-accounts.ts
│   │   │   │   │   ├── transaction.ts
│   │   │   │   │   └── visitor.ts
│   │   │   │   └── transaction.ts
│   │   │   └── schema/
│   │   │       ├── type-defs/
│   │   │       │   ├── account.ts
│   │   │       │   ├── block.ts
│   │   │       │   ├── index.ts
│   │   │       │   ├── instruction.ts
│   │   │       │   ├── root.ts
│   │   │       │   ├── transaction.ts
│   │   │       │   └── types.ts
│   │   │       └── type-resolvers/
│   │   │           ├── account.ts
│   │   │           ├── block.ts
│   │   │           ├── index.ts
│   │   │           ├── instruction.ts
│   │   │           ├── root.ts
│   │   │           ├── transaction.ts
│   │   │           └── types.ts
│   │   ├── tsconfig.declarations.json
│   │   └── tsconfig.json
│   ├── rpc-parsed-types/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __typetests__/
│   │   │   │   ├── address-lookup-table-accounts-typetest.ts
│   │   │   │   ├── bpf-upgradeable-loader-accounts-typetest.ts
│   │   │   │   ├── config-accounts-typetest.ts
│   │   │   │   ├── nonce-accounts-typetest.ts
│   │   │   │   ├── stake-accounts-typetest.ts
│   │   │   │   ├── sysvar-accounts-typetest.ts
│   │   │   │   ├── token-accounts-typetest.ts
│   │   │   │   └── vote-accounts-typetest.ts
│   │   │   ├── address-lookup-table-accounts.ts
│   │   │   ├── bpf-upgradeable-loader-accounts.ts
│   │   │   ├── config-accounts.ts
│   │   │   ├── index.ts
│   │   │   ├── nonce-accounts.ts
│   │   │   ├── rpc-parsed-type.ts
│   │   │   ├── stake-accounts.ts
│   │   │   ├── sysvar-accounts.ts
│   │   │   ├── token-accounts.ts
│   │   │   └── vote-accounts.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-spec/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── rpc-api-test.ts
│   │   │   │   ├── rpc-test.ts
│   │   │   │   └── rpc-transport-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── rpc-api-typetest.ts
│   │   │   │   ├── rpc-transport-typetest.ts
│   │   │   │   └── rpc-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── rpc-api.ts
│   │   │   ├── rpc-transport.ts
│   │   │   └── rpc.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-spec-types/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── large-json-file.json
│   │   │   │   ├── parse-json-with-bigints-test.ts
│   │   │   │   ├── rpc-message-test.ts
│   │   │   │   └── stringify-json-with-bigints-test.ts
│   │   │   ├── index.ts
│   │   │   ├── overloads.ts
│   │   │   ├── parse-json-with-bigints.ts
│   │   │   ├── rpc-message.ts
│   │   │   ├── rpc-request.ts
│   │   │   ├── rpc-response.ts
│   │   │   ├── stringify-json-with-bigints.ts
│   │   │   └── type-helpers.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-subscriptions/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── rpc-integer-overflow-error-test.ts
│   │   │   │   ├── rpc-subscriptions-autopinger-test.ts
│   │   │   │   ├── rpc-subscriptions-channel-pool-test.ts
│   │   │   │   ├── rpc-subscriptions-coalescer-test.ts
│   │   │   │   ├── rpc-subscriptions-functional-test.ts
│   │   │   │   ├── rpc-subscriptions-json-bigint-test.ts
│   │   │   │   ├── rpc-subscriptions-json-test.ts
│   │   │   │   └── rpc-subscriptions-transport-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── rpc-subscriptions-clusters-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── rpc-default-config.ts
│   │   │   ├── rpc-integer-overflow-error.ts
│   │   │   ├── rpc-subscriptions-autopinger.ts
│   │   │   ├── rpc-subscriptions-channel-pool-internal.ts
│   │   │   ├── rpc-subscriptions-channel-pool.ts
│   │   │   ├── rpc-subscriptions-channel.ts
│   │   │   ├── rpc-subscriptions-clusters.ts
│   │   │   ├── rpc-subscriptions-coalescer.ts
│   │   │   ├── rpc-subscriptions-json-bigint.ts
│   │   │   ├── rpc-subscriptions-json.ts
│   │   │   ├── rpc-subscriptions-transport.ts
│   │   │   └── rpc-subscriptions.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-subscriptions-api/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── account-notifications-test.ts
│   │   │   │   ├── block-notifications-test.ts
│   │   │   │   ├── index-test.ts
│   │   │   │   ├── logs-notifications-test.ts
│   │   │   │   ├── program-notifications-test.ts
│   │   │   │   ├── root-notifications-test.ts
│   │   │   │   ├── signature-notifications-test.ts
│   │   │   │   ├── slot-notifications-test.ts
│   │   │   │   ├── slots-updates-notifications-test.ts
│   │   │   │   └── vote-notifications-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── account-notifications-typetest.ts
│   │   │   │   ├── block-notifications-typetest.ts
│   │   │   │   ├── logs-notifications-typetest.ts
│   │   │   │   ├── program-notifications-typetest.ts
│   │   │   │   ├── root-notifications-typetest.ts
│   │   │   │   ├── rpc-subscriptions-api-typetest.ts
│   │   │   │   ├── signature-notifications-typetest.ts
│   │   │   │   ├── slot-notifications-typetest.ts
│   │   │   │   ├── slots-updates-notifications-typetest.ts
│   │   │   │   └── vote-notifications-typetest.ts
│   │   │   ├── account-notifications.ts
│   │   │   ├── block-notifications.ts
│   │   │   ├── index.ts
│   │   │   ├── logs-notifications.ts
│   │   │   ├── program-notifications.ts
│   │   │   ├── root-notifications.ts
│   │   │   ├── signature-notifications.ts
│   │   │   ├── slot-notifications.ts
│   │   │   ├── slots-updates-notifications.ts
│   │   │   └── vote-notifications.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-subscriptions-channel-websocket/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __mocks__/
│   │   │   │   └── @solana/
│   │   │   │       └── ws-impl.ts
│   │   │   ├── __tests__/
│   │   │   │   └── websocket-channel-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── websocket-channel-typetest.ts
│   │   │   ├── index.ts
│   │   │   └── websocket-channel.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-subscriptions-spec/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── rpc-subscriptions-api-test.ts
│   │   │   │   ├── rpc-subscriptions-channel-test.ts
│   │   │   │   ├── rpc-subscriptions-pubsub-plan-test.ts
│   │   │   │   └── rpc-subscriptions-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── rpc-subscriptions-api-typetest.ts
│   │   │   │   └── rpc-subscriptions-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── rpc-subscriptions-api.ts
│   │   │   ├── rpc-subscriptions-channel.ts
│   │   │   ├── rpc-subscriptions-pubsub-plan.ts
│   │   │   ├── rpc-subscriptions-request.ts
│   │   │   ├── rpc-subscriptions-transport.ts
│   │   │   └── rpc-subscriptions.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-transformers/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── request-transformer-bigint-downcast-test.ts
│   │   │   │   ├── request-transformer-default-commitment-test.ts
│   │   │   │   ├── request-transformer-integer-overflow-test.ts
│   │   │   │   ├── request-transformer-test.ts
│   │   │   │   ├── response-transformer-bigint-upcast-test.ts
│   │   │   │   ├── response-transformer-test.ts
│   │   │   │   └── response-transformer-throw-solana-error-test.ts
│   │   │   ├── index.ts
│   │   │   ├── request-transformer-bigint-downcast-internal.ts
│   │   │   ├── request-transformer-bigint-downcast.ts
│   │   │   ├── request-transformer-default-commitment-internal.ts
│   │   │   ├── request-transformer-default-commitment.ts
│   │   │   ├── request-transformer-integer-overflow-internal.ts
│   │   │   ├── request-transformer-integer-overflow.ts
│   │   │   ├── request-transformer-options-object-position-config.ts
│   │   │   ├── request-transformer.ts
│   │   │   ├── response-transformer-allowed-numeric-values.ts
│   │   │   ├── response-transformer-bigint-upcast-internal.ts
│   │   │   ├── response-transformer-bigint-upcast.ts
│   │   │   ├── response-transformer-result.ts
│   │   │   ├── response-transformer-throw-solana-error.ts
│   │   │   ├── response-transformer.ts
│   │   │   └── tree-traversal.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-transport-http/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __benchmarks__/
│   │   │   │   └── run.ts
│   │   │   ├── __tests__/
│   │   │   │   ├── http-transport-abort-test.ts
│   │   │   │   ├── http-transport-dispatcher-test.browser.ts
│   │   │   │   ├── http-transport-for-solana-rpc-test.ts
│   │   │   │   ├── http-transport-from-json-test.ts
│   │   │   │   ├── http-transport-headers-test.ts
│   │   │   │   ├── http-transport-test.ts
│   │   │   │   ├── http-transport-to-json-test.ts
│   │   │   │   └── is-solana-request-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── http-transport-typetest.ts
│   │   │   ├── http-transport-config.ts
│   │   │   ├── http-transport-for-solana-rpc.ts
│   │   │   ├── http-transport-headers.ts
│   │   │   ├── http-transport.ts
│   │   │   ├── index.ts
│   │   │   └── is-solana-request.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── rpc-types/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── blockhash-test.ts
│   │   │   │   ├── coercions-test.ts
│   │   │   │   ├── commitment-test.ts
│   │   │   │   ├── lamports-test.ts
│   │   │   │   ├── sol-test.ts
│   │   │   │   ├── stringified-bigint-test.ts
│   │   │   │   ├── stringified-number-test.ts
│   │   │   │   └── unix-timestamp-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── blockhash-typetests.ts
│   │   │   │   ├── coercions-typetest.ts
│   │   │   │   ├── encoded-bytes-typetests.ts
│   │   │   │   ├── lamports-typetest.ts
│   │   │   │   └── sol-typetest.ts
│   │   │   ├── account-filters.ts
│   │   │   ├── account-info.ts
│   │   │   ├── blockhash.ts
│   │   │   ├── cluster-url.ts
│   │   │   ├── commitment.ts
│   │   │   ├── encoded-bytes.ts
│   │   │   ├── index.ts
│   │   │   ├── lamports.ts
│   │   │   ├── rpc-api.ts
│   │   │   ├── sol.ts
│   │   │   ├── stringified-bigint.ts
│   │   │   ├── stringified-number.ts
│   │   │   ├── token-amount.ts
│   │   │   ├── token-balance.ts
│   │   │   ├── transaction-error.ts
│   │   │   ├── transaction.ts
│   │   │   ├── typed-numbers.ts
│   │   │   └── unix-timestamp.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── signers/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── account-signer-meta-test.ts
│   │   │   │   ├── add-signers-test.ts
│   │   │   │   ├── deduplicate-signers-test.ts
│   │   │   │   ├── fee-payer-signer-test.ts
│   │   │   │   ├── grind-keypair-signer-test.ts
│   │   │   │   ├── keypair-signer-test.ts
│   │   │   │   ├── message-modifying-signer-test.ts
│   │   │   │   ├── message-partial-signer-test.ts
│   │   │   │   ├── message-signer-test.ts
│   │   │   │   ├── noop-signer-test.ts
│   │   │   │   ├── offchain-message-signer-test.ts
│   │   │   │   ├── sign-offchain-message-test.ts
│   │   │   │   ├── sign-transaction-test.ts
│   │   │   │   ├── signable-message-test.ts
│   │   │   │   ├── transaction-modifying-signer-test.ts
│   │   │   │   ├── transaction-partial-signer-test.ts
│   │   │   │   ├── transaction-sending-signer-test.ts
│   │   │   │   ├── transaction-signer-test.ts
│   │   │   │   ├── transaction-with-single-sending-signer.ts
│   │   │   │   ├── write-keypair-signer-test.browser.ts
│   │   │   │   └── write-keypair-signer-test.node.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── account-signer-meta-typetest.ts
│   │   │   │   ├── add-signers-typetest.ts
│   │   │   │   ├── fee-payer-typetest.ts
│   │   │   │   ├── keypair-signer-typetest.ts
│   │   │   │   ├── message-modifying-signer-typetest.ts
│   │   │   │   ├── message-partial-signer-typetest.ts
│   │   │   │   ├── message-signer-typetest.ts
│   │   │   │   ├── offchain-message-signer-typetest.ts
│   │   │   │   ├── sign-offchain-message-typetest.ts
│   │   │   │   ├── sign-transaction-typetest.ts
│   │   │   │   ├── transaction-modifying-signer-typetest.ts
│   │   │   │   ├── transaction-partial-signer-typetest.ts
│   │   │   │   ├── transaction-sending-signer-typetest.ts
│   │   │   │   └── transaction-signer-typetest.ts
│   │   │   ├── account-signer-meta.ts
│   │   │   ├── add-signers.ts
│   │   │   ├── deduplicate-signers.ts
│   │   │   ├── fee-payer-signer.ts
│   │   │   ├── grind-keypair-signer.ts
│   │   │   ├── index.ts
│   │   │   ├── keypair-signer.ts
│   │   │   ├── message-modifying-signer.ts
│   │   │   ├── message-partial-signer.ts
│   │   │   ├── message-signer.ts
│   │   │   ├── noop-signer.ts
│   │   │   ├── offchain-message-signer.ts
│   │   │   ├── sign-offchain-message.ts
│   │   │   ├── sign-transaction.ts
│   │   │   ├── signable-message.ts
│   │   │   ├── transaction-modifying-signer.ts
│   │   │   ├── transaction-partial-signer.ts
│   │   │   ├── transaction-sending-signer.ts
│   │   │   ├── transaction-signer.ts
│   │   │   ├── transaction-with-single-sending-signer.ts
│   │   │   ├── types.ts
│   │   │   └── write-keypair-signer.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── subscribable/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── async-iterable-test.ts
│   │   │   │   ├── data-publisher-test.ts
│   │   │   │   ├── demultiplex-test.ts
│   │   │   │   ├── reactive-action-store-test.ts
│   │   │   │   └── reactive-stream-store-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── data-publisher-typetest.ts
│   │   │   │   └── event-emitter-typetest.ts
│   │   │   ├── async-iterable.ts
│   │   │   ├── data-publisher.ts
│   │   │   ├── demultiplex.ts
│   │   │   ├── event-emitter.ts
│   │   │   ├── index.ts
│   │   │   ├── reactive-action-store.ts
│   │   │   └── reactive-stream-store.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── sysvars/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── __setup__.ts
│   │   │   │   ├── clock-test.ts
│   │   │   │   ├── epoch-rewards-test.ts
│   │   │   │   ├── epoch-schedule-test.ts
│   │   │   │   ├── last-restart-slot-test.ts
│   │   │   │   ├── recent-blockhashes-test.ts
│   │   │   │   ├── rent-test.ts
│   │   │   │   ├── slot-hashes-test.ts
│   │   │   │   ├── slot-history-test.ts
│   │   │   │   ├── stake-history-test.ts
│   │   │   │   └── sysvar-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   └── sysvar-typetest.ts
│   │   │   ├── clock.ts
│   │   │   ├── epoch-rewards.ts
│   │   │   ├── epoch-schedule.ts
│   │   │   ├── index.ts
│   │   │   ├── last-restart-slot.ts
│   │   │   ├── recent-blockhashes.ts
│   │   │   ├── rent.ts
│   │   │   ├── slot-hashes.ts
│   │   │   ├── slot-history.ts
│   │   │   ├── stake-history.ts
│   │   │   └── sysvar.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── test-config/
│   │   ├── .npmrc
│   │   ├── browser-environment.ts
│   │   ├── global.d.ts
│   │   ├── jest-dev.config.js
│   │   ├── jest-dev.config.ts
│   │   ├── jest-lint.config.js
│   │   ├── jest-lint.config.ts
│   │   ├── jest-prettier.config.js
│   │   ├── jest-prettier.config.ts
│   │   ├── jest-unit.config.browser.js
│   │   ├── jest-unit.config.common.js
│   │   ├── jest-unit.config.node.js
│   │   ├── package.json
│   │   ├── setup-define-version-constant.ts
│   │   ├── setup-dev-mode.ts
│   │   ├── setup-secure-context.ts
│   │   ├── setup-text-encoder.ts
│   │   ├── setup-undici-fetch.ts
│   │   ├── setup-web-buffer-global.ts
│   │   ├── setup-webcrypto.ts
│   │   ├── setup-whatwg-fetch.ts
│   │   ├── test-validator-setup.js
│   │   ├── test-validator-teardown.js
│   │   └── tsconfig.json
│   ├── test-matchers/
│   │   ├── .npmrc
│   │   ├── package.json
│   │   ├── toBeFrozenObject.ts
│   │   ├── toEqualArrayBuffer.ts
│   │   └── tsconfig.json
│   ├── text-encoding-impl/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.browser.ts
│   │   │   ├── index.native.ts
│   │   │   └── index.node.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── tsup.config.ts
│   ├── transaction-confirmation/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── confirmation-strategy-blockheight-test.ts
│   │   │   │   ├── confirmation-strategy-nonce-test.ts
│   │   │   │   ├── confirmation-strategy-racer-test.ts
│   │   │   │   ├── confirmation-strategy-signature-test.ts
│   │   │   │   ├── confirmation-strategy-timeout-test.ts
│   │   │   │   └── waiters-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── confirmation-strategy-blockheight-typetest.ts
│   │   │   │   ├── confirmation-strategy-nonce-typetest.ts
│   │   │   │   └── confirmation-strategy-recent-signature-typetest.ts
│   │   │   ├── confirmation-strategy-blockheight.ts
│   │   │   ├── confirmation-strategy-nonce.ts
│   │   │   ├── confirmation-strategy-racer.ts
│   │   │   ├── confirmation-strategy-recent-signature.ts
│   │   │   ├── confirmation-strategy-timeout.ts
│   │   │   ├── index.ts
│   │   │   └── waiters.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── transaction-messages/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── blockhash-test.ts
│   │   │   │   ├── compress-transaction-message-test.ts
│   │   │   │   ├── compute-budget-instruction-test.ts
│   │   │   │   ├── compute-unit-limit-test.ts
│   │   │   │   ├── compute-unit-price-test.ts
│   │   │   │   ├── create-transaction-message-test.ts
│   │   │   │   ├── durable-nonce-test.ts
│   │   │   │   ├── fee-payer-test.ts
│   │   │   │   ├── heap-size-test.ts
│   │   │   │   ├── instructions-test.ts
│   │   │   │   ├── loaded-accounts-data-size-limit-test.ts
│   │   │   │   ├── priority-fee-lamports-test.ts
│   │   │   │   └── v1-transaction-config-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── blockhash-typetest.ts
│   │   │   │   ├── compress-transaction-message-typetest.ts
│   │   │   │   ├── compute-unit-limit-typetest.ts
│   │   │   │   ├── compute-unit-price-typetest.ts
│   │   │   │   ├── create-transaction-message-typetest.ts
│   │   │   │   ├── durable-nonce-typetest.ts
│   │   │   │   ├── fee-payer-typetest.ts
│   │   │   │   ├── heap-size-typetest.ts
│   │   │   │   ├── instructions-typetest.ts
│   │   │   │   ├── loaded-accounts-data-size-limit-typetest.ts
│   │   │   │   ├── priority-fee-lamports-typetest.ts
│   │   │   │   ├── scenarios/
│   │   │   │   │   └── message-modifications-typetest.ts
│   │   │   │   └── transaction-config-typetest.ts
│   │   │   ├── addresses-by-lookup-table-address.ts
│   │   │   ├── blockhash.ts
│   │   │   ├── codecs/
│   │   │   │   ├── __tests__/
│   │   │   │   │   ├── message-test.ts
│   │   │   │   │   └── transaction-version-test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── legacy/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── header-test.ts
│   │   │   │   │   │   ├── instruction-test.ts
│   │   │   │   │   │   ├── lifetime-token-test.ts
│   │   │   │   │   │   └── message-test.ts
│   │   │   │   │   ├── header.ts
│   │   │   │   │   ├── instruction.ts
│   │   │   │   │   ├── lifetime-token.ts
│   │   │   │   │   └── message.ts
│   │   │   │   ├── message.ts
│   │   │   │   ├── transaction-version.ts
│   │   │   │   ├── v0/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── address-table-lookup-test.ts
│   │   │   │   │   │   └── message-test.ts
│   │   │   │   │   ├── address-table-lookup.ts
│   │   │   │   │   └── message.ts
│   │   │   │   └── v1/
│   │   │   │       ├── __tests__/
│   │   │   │       │   ├── config-test.ts
│   │   │   │       │   ├── instruction-test.ts
│   │   │   │       │   └── message-test.ts
│   │   │   │       ├── config.ts
│   │   │   │       ├── instruction.ts
│   │   │   │       └── message.ts
│   │   │   ├── compile/
│   │   │   │   ├── __tests__/
│   │   │   │   │   └── message-test.ts
│   │   │   │   ├── __typetests__/
│   │   │   │   │   └── message-typetest.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── legacy/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── accounts-test.ts
│   │   │   │   │   │   ├── header-test.ts
│   │   │   │   │   │   ├── instructions-test.ts
│   │   │   │   │   │   ├── lifetime-token-test.ts
│   │   │   │   │   │   └── message-test.ts
│   │   │   │   │   ├── accounts.ts
│   │   │   │   │   ├── header.ts
│   │   │   │   │   ├── instructions.ts
│   │   │   │   │   ├── lifetime-token.ts
│   │   │   │   │   └── message.ts
│   │   │   │   ├── message-types.ts
│   │   │   │   ├── message.ts
│   │   │   │   ├── v0/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── accounts-test.ts
│   │   │   │   │   │   ├── address-table-lookups-test.ts
│   │   │   │   │   │   ├── instructions-test.ts
│   │   │   │   │   │   ├── message-test.ts
│   │   │   │   │   │   └── static-accounts-test.ts
│   │   │   │   │   ├── accounts.ts
│   │   │   │   │   ├── address-table-lookups.ts
│   │   │   │   │   ├── instructions.ts
│   │   │   │   │   ├── message.ts
│   │   │   │   │   └── static-accounts.ts
│   │   │   │   └── v1/
│   │   │   │       ├── __tests__/
│   │   │   │       │   ├── config-test.ts
│   │   │   │       │   ├── instructions-test.ts
│   │   │   │       │   └── message-test.ts
│   │   │   │       ├── config.ts
│   │   │   │       ├── instructions.ts
│   │   │   │       └── message.ts
│   │   │   ├── compress-transaction-message.ts
│   │   │   ├── compute-budget-instruction.ts
│   │   │   ├── compute-unit-limit.ts
│   │   │   ├── compute-unit-price.ts
│   │   │   ├── create-transaction-message.ts
│   │   │   ├── decompile/
│   │   │   │   ├── __tests__/
│   │   │   │   │   └── message-test.ts
│   │   │   │   ├── __typetests__/
│   │   │   │   │   └── message-typetest.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── legacy/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── account-metas-test.ts
│   │   │   │   │   │   ├── convert-instruction-test.ts
│   │   │   │   │   │   ├── fee-payer-test.ts
│   │   │   │   │   │   ├── lifetime-constraint-test.ts
│   │   │   │   │   │   └── message-test.ts
│   │   │   │   │   ├── account-metas.ts
│   │   │   │   │   ├── convert-instruction.ts
│   │   │   │   │   ├── fee-payer.ts
│   │   │   │   │   ├── lifetime-constraint.ts
│   │   │   │   │   └── message.ts
│   │   │   │   ├── message.ts
│   │   │   │   ├── v0/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── address-lookup-metas-test.ts
│   │   │   │   │   │   └── message-test.ts
│   │   │   │   │   ├── address-lookup-metas.ts
│   │   │   │   │   └── message.ts
│   │   │   │   └── v1/
│   │   │   │       ├── __tests__/
│   │   │   │       │   ├── config-test.ts
│   │   │   │       │   ├── instructions-test.ts
│   │   │   │       │   └── message-test.ts
│   │   │   │       ├── config.ts
│   │   │   │       ├── instructions.ts
│   │   │   │       └── message.ts
│   │   │   ├── durable-nonce-instruction.ts
│   │   │   ├── durable-nonce.ts
│   │   │   ├── fee-payer.ts
│   │   │   ├── heap-size.ts
│   │   │   ├── index.ts
│   │   │   ├── instructions.ts
│   │   │   ├── lifetime.ts
│   │   │   ├── loaded-accounts-data-size-limit.ts
│   │   │   ├── priority-fee-lamports.ts
│   │   │   ├── transaction-message-size.ts
│   │   │   ├── transaction-message.ts
│   │   │   └── v1-transaction-config.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── transactions/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── compile-transaction-test.ts
│   │   │   │   ├── lifetime-test.ts
│   │   │   │   ├── signatures-test.ts
│   │   │   │   ├── transaction-message-size-test.ts
│   │   │   │   ├── transaction-size-test.ts
│   │   │   │   └── wire-transaction-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── compile-transaction-typetest.ts
│   │   │   │   ├── lifetime-typetest.ts
│   │   │   │   ├── sendable-transaction-typetest.ts
│   │   │   │   ├── signatures-typetest.ts
│   │   │   │   ├── transaction-message-size-typetest.ts
│   │   │   │   ├── transaction-size-typetest.ts
│   │   │   │   ├── transaction-typetest.ts
│   │   │   │   ├── transaction-typetests.ts
│   │   │   │   └── wire-transaction-typetests.ts
│   │   │   ├── codecs/
│   │   │   │   ├── __tests__/
│   │   │   │   │   ├── signatures-encoder-test.ts
│   │   │   │   │   └── transaction-codec-test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── signatures-encoder.ts
│   │   │   │   └── transaction-codec.ts
│   │   │   ├── compile-transaction.ts
│   │   │   ├── index.ts
│   │   │   ├── lifetime.ts
│   │   │   ├── sendable-transaction.ts
│   │   │   ├── signatures.ts
│   │   │   ├── transaction-message-size.ts
│   │   │   ├── transaction-size-limits.ts
│   │   │   ├── transaction-size.ts
│   │   │   ├── transaction.ts
│   │   │   └── wire-transaction.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── tsconfig/
│   │   ├── .npmrc
│   │   ├── README.md
│   │   ├── base.json
│   │   └── package.json
│   ├── wallet-account-signer/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── wallet-account-message-signer-test.ts
│   │   │   │   ├── wallet-account-signer-test.ts
│   │   │   │   ├── wallet-account-transaction-sending-signer-test.ts
│   │   │   │   └── wallet-account-transaction-signer-test.ts
│   │   │   ├── __typetests__/
│   │   │   │   ├── wallet-account-message-signer-typetest.ts
│   │   │   │   ├── wallet-account-transaction-sending-signer-typetest.ts
│   │   │   │   └── wallet-account-transaction-signer-typetest.ts
│   │   │   ├── index.ts
│   │   │   ├── wallet-account-message-signer.ts
│   │   │   ├── wallet-account-signer.ts
│   │   │   ├── wallet-account-transaction-sending-signer.ts
│   │   │   └── wallet-account-transaction-signer.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   ├── webcrypto-ed25519-polyfill/
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .prettierignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .npmignore
│   │   │   ├── __tests__/
│   │   │   │   ├── install-test.ts
│   │   │   │   └── secrets-test.ts
│   │   │   ├── index.ts
│   │   │   ├── install.ts
│   │   │   └── secrets.ts
│   │   ├── tsconfig.declarations.json
│   │   ├── tsconfig.json
│   │   └── typedoc.json
│   └── ws-impl/
│       ├── .gitignore
│       ├── .npmrc
│       ├── .prettierignore
│       ├── LICENSE
│       ├── package.json
│       ├── src/
│       │   ├── index.browser.ts
│       │   └── index.node.ts
│       ├── tsconfig.declarations.json
│       ├── tsconfig.json
│       └── tsup.config.ts
├── patches/
│   └── jest-runner-prettier@1.0.0.patch
├── pnpm-workspace.yaml
├── scripts/
│   ├── fixtures/
│   │   ├── 4nTLDQiSTRHbngKZWPMfYnZdWTbKiNeuuPcX7yFUpSAc.json
│   │   ├── GQE2yjns7SKKuMc89tveBDpzYHwXfeuB2PGAbGaPWc6G.json
│   │   ├── address-lookup-table-account.json
│   │   ├── bpf-upgradeable-loader-program-account.json
│   │   ├── config-stake-account.json
│   │   ├── config-validator-account.json
│   │   ├── example-deserialize-transaction-address-lookup-table.json
│   │   ├── example-transfer-lamports-source-account.json
│   │   ├── gpa1.json
│   │   ├── gpa2-1.json
│   │   ├── gpa2-2.json
│   │   ├── nonce-account.json
│   │   ├── send-transaction-fee-payer-insufficient-funds.json
│   │   ├── send-transaction-fee-payer.json
│   │   ├── spl-token-22-account-mega-token.json
│   │   ├── spl-token-22-mint-account.json
│   │   ├── spl-token-22-mint-mega-token-member.json
│   │   ├── spl-token-22-mint-mega-token.json
│   │   ├── spl-token-22-mint-with-token-group-account.json
│   │   ├── spl-token-22-mint-with-token-group-member-account.json
│   │   ├── spl-token-mint-account-with-delegated.json
│   │   ├── spl-token-mint-account-with-owner.json
│   │   ├── spl-token-mint-account.json
│   │   ├── spl-token-mint-no-token-accounts.json
│   │   ├── spl-token-multisig-account.json
│   │   ├── spl-token-token-account-delegated.json
│   │   ├── spl-token-token-account-owner.json
│   │   ├── spl-token-token-account.json
│   │   ├── stake-account.json
│   │   └── vote-account.json
│   ├── get-latest-validator-release-version.sh
│   ├── setup-test-validator.sh
│   └── start-shared-test-validator.sh
├── skills-lock.json
├── tsconfig.json
├── turbo.json
├── typedoc.json
└── typedoc.plugin.mjs
Download .txt
Showing preview only (383K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3271 symbols across 798 files)

FILE: docs/build-api-index.js
  function exists (line 15) | async function exists(path) {
  constant ROOT_DIR (line 24) | const ROOT_DIR = path.join(__dirname, '..');
  constant PACKAGES_DIR (line 25) | const PACKAGES_DIR = path.join(ROOT_DIR, 'packages');
  constant OUTPUT_FILE (line 26) | const OUTPUT_FILE = path.join(ROOT_DIR, 'docs', 'content', 'api', 'index...
  constant API_GROUP_ORDER (line 56) | const API_GROUP_ORDER = ['Classes', 'Enums', 'Types', 'Functions', 'Vari...
  constant REFLECTION_KIND_DATA (line 57) | const REFLECTION_KIND_DATA = {
  function findPackageInfos (line 67) | async function findPackageInfos() {
  function generateTypeDocJSON (line 96) | async function generateTypeDocJSON(packageInfo) {
  function processTypeDocJSON (line 136) | function processTypeDocJSON(packageInfo, typeDocJSON) {
  function generateIndexContent (line 168) | function generateIndexContent(packages) {
  function wrapApiGroupTitle (line 245) | function wrapApiGroupTitle(content) {
  function wrapLinks (line 249) | function wrapLinks(links, names) {
  function main (line 262) | async function main() {

FILE: docs/content/docs/tree-shaking.tsx
  function TreeShaking (line 3) | function TreeShaking() {

FILE: docs/src/app/(home)/layout.tsx
  function Layout (line 5) | function Layout({ children }: { children: ReactNode }) {

FILE: docs/src/app/(home)/page.tsx
  function getExamples (line 12) | function getExamples(): Record<string, React.ReactElement> {
  function HomePage (line 24) | function HomePage() {

FILE: docs/src/app/(home)/page/code.tsx
  type Props (line 7) | type Props = Readonly<{
  function CodeSection (line 11) | function CodeSection({ examples }: Props) {

FILE: docs/src/app/(home)/page/cta.tsx
  function CtaSection (line 6) | function CtaSection() {

FILE: docs/src/app/(home)/page/example-context.tsx
  constant EXAMPLES (line 5) | const EXAMPLES = ['rpc', 'codecs', 'signers', 'transactions', 'rpc-subsc...
  constant TIMER_INTERVAL (line 6) | const TIMER_INTERVAL = 8000;
  type ExampleKey (line 8) | type ExampleKey = (typeof EXAMPLES)[number];
  function ExampleProvider (line 24) | function ExampleProvider({

FILE: docs/src/app/(home)/page/features.tsx
  type Feature (line 22) | type Feature = {
  function FeaturesSection (line 96) | function FeaturesSection() {

FILE: docs/src/app/(home)/page/footer.tsx
  function FooterSection (line 6) | function FooterSection() {

FILE: docs/src/app/(home)/page/hero.tsx
  function HeroSection (line 6) | function HeroSection() {

FILE: docs/src/app/api/[[...slug]]/page.tsx
  function Page (line 7) | async function Page(props: { params: Promise<{ slug?: string[] }> }) {
  function generateStaticParams (line 32) | async function generateStaticParams() {
  function generateMetadata (line 36) | async function generateMetadata(props: { params: Promise<{ slug?: string...

FILE: docs/src/app/api/layout.tsx
  function Layout (line 8) | function Layout({ children }: { children: ReactNode }) {

FILE: docs/src/app/docs/[[...slug]]/page.tsx
  function Page (line 9) | async function Page(props: { params: Promise<{ slug?: string[] }> }) {
  function generateStaticParams (line 46) | async function generateStaticParams() {
  function generateMetadata (line 50) | async function generateMetadata(props: { params: Promise<{ slug?: string...

FILE: docs/src/app/docs/layout.tsx
  function Layout (line 8) | function Layout({ children }: { children: ReactNode }) {

FILE: docs/src/app/docs/navbar.tsx
  function Navbar (line 10) | function Navbar({

FILE: docs/src/app/docs/sidebar.tsx
  function Sidebar (line 24) | function Sidebar({

FILE: docs/src/app/layout.tsx
  function Layout (line 7) | function Layout({ children }: { children: ReactNode }) {

FILE: docs/src/app/llms-full.txt/route.ts
  function GET (line 7) | async function GET() {

FILE: docs/src/app/llms.mdx/api/[[...slug]]/route.ts
  function GET (line 7) | async function GET(_req: Request, { params }: RouteContext<'/llms.mdx/ap...
  function generateStaticParams (line 19) | function generateStaticParams() {

FILE: docs/src/app/llms.mdx/docs/[[...slug]]/route.ts
  function GET (line 7) | async function GET(_req: Request, { params }: RouteContext<'/llms.mdx/do...
  function generateStaticParams (line 19) | function generateStaticParams() {

FILE: docs/src/app/llms.mdx/recipes/[[...slug]]/route.ts
  function GET (line 7) | async function GET(_req: Request, { params }: RouteContext<'/llms.mdx/re...
  function generateStaticParams (line 19) | function generateStaticParams() {

FILE: docs/src/app/logo.tsx
  function LogoWithSolana (line 3) | function LogoWithSolana({
  function Logo (line 62) | function Logo({ className }: React.ComponentProps<'svg'>) {

FILE: docs/src/app/recipes/[[...slug]]/page.tsx
  function Page (line 9) | async function Page(props: { params: Promise<{ slug?: string[] }> }) {
  function generateStaticParams (line 46) | async function generateStaticParams() {
  function generateMetadata (line 50) | async function generateMetadata(props: { params: Promise<{ slug?: string...

FILE: docs/src/app/recipes/layout.tsx
  function Layout (line 8) | function Layout({ children }: { children: ReactNode }) {

FILE: docs/src/components/card-tabs.tsx
  type CardDefinition (line 15) | interface CardDefinition {
  type CardTabsProps (line 21) | interface CardTabsProps {
  function toValue (line 28) | function toValue(title: string): string {
  function CardTabs (line 43) | function CardTabs({ cards, groupId, persist = false, children }: CardTab...
  function CardTab (line 122) | function CardTab({ children }: { children: ReactNode }) {

FILE: docs/src/components/page-actions.tsx
  function LLMCopyButton (line 12) | function LLMCopyButton({
  function ViewOptions (line 65) | function ViewOptions({

FILE: docs/src/components/ui/button.tsx
  type ButtonProps (line 29) | type ButtonProps = VariantProps<typeof buttonVariants>;

FILE: docs/src/lib/InKeepSearchDialog.tsx
  constant AI_ASSISTANT_NAME (line 11) | const AI_ASSISTANT_NAME = 'Kit';
  function InKeepSearchDialog (line 13) | function InKeepSearchDialog(props: SharedProps) {

FILE: docs/src/lib/Spread.tsx
  function Spread (line 3) | function Spread({ children }: { children: ReactNode }) {

FILE: docs/src/lib/ThemedImage.tsx
  function ThemedImage (line 4) | function ThemedImage({

FILE: docs/src/lib/get-llm-text.ts
  function getLLMText (line 4) | async function getLLMText(page: InferPageType<typeof apiSource | typeof ...

FILE: examples/deserialize-transaction/src/example.ts
  constant LOOKUP_TABLE_ADDRESS (line 49) | const LOOKUP_TABLE_ADDRESS = 'DUbh3qSh4Vvxa52LGtCBCcuvAEMh62FLNkupnsBjhr...
  constant SOURCE_ACCOUNT_SIGNER (line 77) | const SOURCE_ACCOUNT_SIGNER = await createKeyPairSignerFromBytes(
  constant DESTINATION_ADDRESS (line 91) | const DESTINATION_ADDRESS = 'F1Vc6AGoxXLwGB7QV8f4So3C5d8SXEk3KKGHxKGEJ8q...
  constant FEE_PAYER_ADDRESS (line 98) | const FEE_PAYER_ADDRESS = '9xaf9RQvmr47tcKZ2y8KdpcSn6KyymGU6PZAFC9AKjPd'...

FILE: examples/react-app/src/components/AirdropButton.tsx
  function AirdropButton (line 9) | function AirdropButton({ address }: { address: Address }) {

FILE: examples/react-app/src/components/Balance.tsx
  type Props (line 14) | type Props = Readonly<{
  function Balance (line 20) | function Balance({ account }: Props) {

FILE: examples/react-app/src/components/BaseSignMessageFeaturePanel.tsx
  type Props (line 10) | type Props = Readonly<{
  function BaseSignMessageFeaturePanel (line 14) | function BaseSignMessageFeaturePanel({ signMessage }: Props) {

FILE: examples/react-app/src/components/ConnectWalletMenu.tsx
  type Props (line 15) | type Props = Readonly<{
  function ConnectWalletMenu (line 19) | function ConnectWalletMenu({ children }: Props) {

FILE: examples/react-app/src/components/ConnectWalletMenuItem.tsx
  type Props (line 9) | type Props = Readonly<{
  function ConnectWalletMenuItem (line 16) | function ConnectWalletMenuItem({ onAccountSelect, onDisconnect, onError,...

FILE: examples/react-app/src/components/DisconnectButton.tsx
  type Props (line 9) | type Props = Readonly<{
  function DisconnectButton (line 13) | function DisconnectButton({

FILE: examples/react-app/src/components/ErrorDialog.tsx
  type Props (line 6) | type Props = Readonly<{
  function ErrorDialog (line 12) | function ErrorDialog({ error, onClose, title }: Props) {

FILE: examples/react-app/src/components/FeatureNotSupportedCallout.tsx
  type Props (line 8) | interface Props extends Callout.RootProps, FallbackProps {}
  function FeatureNotSupportedCallout (line 10) | function FeatureNotSupportedCallout({

FILE: examples/react-app/src/components/FeaturePanel.tsx
  type Props (line 4) | type Props = Readonly<{
  function FeaturePanel (line 9) | function FeaturePanel({ children, label }: Props) {

FILE: examples/react-app/src/components/Nav.tsx
  function Nav (line 8) | function Nav() {

FILE: examples/react-app/src/components/SignInMenu.tsx
  type Props (line 13) | type Props = Readonly<{
  function SignInMenu (line 17) | function SignInMenu({ children }: Props) {

FILE: examples/react-app/src/components/SignInMenuItem.tsx
  type Props (line 8) | type Props = Readonly<{
  function SignInMenuItem (line 14) | function SignInMenuItem({ onSignIn, onError, wallet }: Props) {

FILE: examples/react-app/src/components/SlotIndicator.tsx
  type SlotNotification (line 7) | type SlotNotification = Readonly<{
  type ReactiveStore (line 13) | type ReactiveStore<T> = {
  function createNoopStore (line 19) | function createNoopStore(error?: unknown): ReactiveStore<SlotNotificatio...
  function SlotIndicator (line 29) | function SlotIndicator() {

FILE: examples/react-app/src/components/SolanaPartialSignTransactionFeaturePanel.tsx
  type Props (line 43) | type Props = Readonly<{
  function solStringToLamports (line 47) | function solStringToLamports(solQuantityString: string) {
  type SignTransactionState (line 59) | type SignTransactionState =
  function mockApiRequest (line 75) | async function mockApiRequest(serializedTransaction: ReadonlyUint8Array)...
  function SolanaPartialSignTransactionFeaturePanel (line 82) | function SolanaPartialSignTransactionFeaturePanel({ account }: Props) {

FILE: examples/react-app/src/components/SolanaSignAndSendTransactionFeaturePanel.tsx
  type Props (line 26) | type Props = Readonly<{
  function solStringToLamports (line 30) | function solStringToLamports(solQuantityString: string) {
  function SolanaSignAndSendTransactionFeaturePanel (line 42) | function SolanaSignAndSendTransactionFeaturePanel({ account }: Props) {

FILE: examples/react-app/src/components/SolanaSignMessageFeaturePanel.tsx
  type Props (line 9) | type Props = Readonly<{
  function SolanaSignMessageFeaturePanel (line 13) | function SolanaSignMessageFeaturePanel({ account }: Props) {

FILE: examples/react-app/src/components/SolanaSignTransactionFeaturePanel.tsx
  type Props (line 33) | type Props = Readonly<{
  function solStringToLamports (line 37) | function solStringToLamports(solQuantityString: string) {
  type SignTransactionState (line 49) | type SignTransactionState =
  function SolanaSignTransactionFeaturePanel (line 65) | function SolanaSignTransactionFeaturePanel({ account }: Props) {

FILE: examples/react-app/src/components/UnconnectableWalletMenuItem.tsx
  type Props (line 9) | type Props = Readonly<{
  function UnconnectableWalletMenuItem (line 14) | function UnconnectableWalletMenuItem({ error, wallet }: Props) {

FILE: examples/react-app/src/components/WalletAccountIcon.tsx
  type Props (line 5) | type Props = React.ComponentProps<'img'> &
  function WalletAccountIcon (line 10) | function WalletAccountIcon({ account, ...imgProps }: Props) {

FILE: examples/react-app/src/components/WalletMenuItemContent.tsx
  type Props (line 5) | type Props = Readonly<{
  function WalletMenuItemContent (line 11) | function WalletMenuItemContent({ children, loading, wallet }: Props) {

FILE: examples/react-app/src/context/ChainContext.tsx
  type ChainContext (line 5) | type ChainContext = Readonly<{
  constant DEFAULT_CHAIN_CONFIG (line 14) | const DEFAULT_CHAIN_CONFIG = Object.freeze({

FILE: examples/react-app/src/context/ChainContextProvider.tsx
  constant STORAGE_KEY (line 6) | const STORAGE_KEY = 'solana-example-react-app:selected-chain';
  function ChainContextProvider (line 8) | function ChainContextProvider({ children }: { children: React.ReactNode ...

FILE: examples/react-app/src/context/RpcContextProvider.tsx
  type Props (line 7) | type Props = Readonly<{
  function RpcContextProvider (line 11) | function RpcContextProvider({ children }: Props) {

FILE: examples/react-app/src/errors.tsx
  constant NO_ERROR (line 11) | const NO_ERROR = Symbol();
  function getErrorMessage (line 13) | function getErrorMessage(err: unknown, fallbackMessage: React.ReactNode)...

FILE: examples/react-app/src/functions/balance.ts
  function balanceSubscribe (line 20) | function balanceSubscribe(

FILE: examples/react-app/src/hooks/useStable.ts
  constant UNRESOLVED (line 4) | const UNRESOLVED = Symbol();
  function useStable (line 6) | function useStable<T>(getValue: () => T): T {

FILE: examples/react-app/src/main.tsx
  constant STORAGE_KEY (line 15) | const STORAGE_KEY = 'solana-wallet-standard-example-react:selected-walle...

FILE: examples/react-app/src/routes/root.tsx
  function Root (line 18) | function Root() {

FILE: examples/react-app/src/storage.ts
  function guard (line 17) | function guard<TArgs extends unknown[], TReturn, TFallbackReturn>(

FILE: examples/react-app/vite.config.ts
  function replaceProcessEnv (line 4) | function replaceProcessEnv(mode: string): Plugin {

FILE: examples/rpc-custom-api/src/example.ts
  type AssetMetadata (line 30) | type AssetMetadata = Readonly<{
  type TritonGetAssetApi (line 35) | type TritonGetAssetApi = {
  method defineProperty (line 54) | defineProperty() {
  method deleteProperty (line 57) | deleteProperty() {
  method get (line 60) | get(target, p, receiver): (address: Address) => RpcPlan<AssetMetadata> {

FILE: examples/rpc-transport-throttled/src/example.ts
  constant MAX_RPS (line 24) | const MAX_RPS = 2;
  type QueuedRequest (line 31) | type QueuedRequest<TClusterUrl extends ClusterUrl> = Readonly<{
  function getThrottledTransport (line 37) | function getThrottledTransport<TClusterUrl extends ClusterUrl>(

FILE: examples/signers/src/example.ts
  function getTransferSolTransactionMessage (line 51) | function getTransferSolTransactionMessage(signer: TransactionSigner) {
  function signMessage (line 78) | async function signMessage(signer: MessagePartialSigner, message: string) {
  function signTransaction (line 91) | async function signTransaction(
  function signTransactionWithSigners (line 112) | async function signTransactionWithSigners(

FILE: examples/token-airdrop/src/example.ts
  constant SOURCE_ACCOUNT_SIGNER (line 45) | const SOURCE_ACCOUNT_SIGNER = await createKeyPairSignerFromBytes(
  method createTransactionMessage (line 100) | createTransactionMessage() {
  function estimateWithMultiplier (line 150) | async function estimateWithMultiplier(...args: Parameters<typeof estimat...
  method executeTransactionMessage (line 171) | async executeTransactionMessage(context, message, config) {

FILE: examples/transfer-lamports/src/example.ts
  constant SOURCE_ACCOUNT_SIGNER (line 41) | const SOURCE_ACCOUNT_SIGNER = await createKeyPairSignerFromBytes(
  constant DESTINATION_ACCOUNT_ADDRESS (line 59) | const DESTINATION_ACCOUNT_ADDRESS = address('GdG9JHTSWBChvf6dfBATEYCZbDw...

FILE: examples/utils/createLogger.ts
  constant BASE_OPTIONS (line 6) | const BASE_OPTIONS = {
  function ensureFatalLogger (line 22) | function ensureFatalLogger(logger: Logger<never>) {
  function createLoggerWithName (line 33) | function createLoggerWithName(name: string, stream: DestinationStream) {
  function createLogger (line 43) | function createLogger(name: string) {
  function createLoggerWithTimestamp (line 49) | function createLoggerWithTimestamp(name: string) {

FILE: packages/accounts/src/__tests__/__setup__.ts
  type Base64RpcAccount (line 14) | type Base64RpcAccount = AccountInfoBase & AccountInfoWithBase64EncodedData;
  type Base58RpcAccount (line 15) | type Base58RpcAccount = AccountInfoBase & (AccountInfoWithBase58Bytes | ...
  type JsonParsedRpcAccount (line 16) | type JsonParsedRpcAccount = AccountInfoBase & { readonly data: JsonParse...
  function getMockRpc (line 18) | function getMockRpc(
  function getMockDecoder (line 42) | function getMockDecoder<T>(mockValue: T): Decoder<T> {

FILE: packages/accounts/src/__tests__/decode-account-test.ts
  type MockData (line 85) | type MockData = { foo: 42 };
  type MockData (line 135) | type MockData = { foo: 42 };

FILE: packages/accounts/src/__tests__/fetch-account-test.ts
  type MyData (line 114) | type MyData = { mint: Address; owner: Address };
  type MyData (line 150) | type MyData = { mint: Address; owner: Address };
  type MyData (line 288) | type MyData = { mint: Address; owner: Address };

FILE: packages/accounts/src/__tests__/parse-account-test.ts
  type MyData (line 208) | type MyData = { mint: Address; owner: Address };
  type MyData (line 257) | type MyData = { blockhash: string; feeCalculator: { lamportsPerSignature...
  type MyData (line 294) | type MyData = { mint: Address };
  type MyData (line 326) | type MyData = { mint: Address };
  type MyData (line 354) | type MyData = { mint: Address };
  type MyData (line 423) | type MyData = { blockhash: string; feeCalculator: { lamportsPerSignature...
  type MyData (line 480) | type MyData = { mint: Address; owner: Address };

FILE: packages/accounts/src/__typetests__/decode-account-typetest.ts
  type MockData (line 8) | type MockData = { foo: 42 };
  type MockDataDecoder (line 9) | type MockDataDecoder = Decoder<MockData>;

FILE: packages/accounts/src/__typetests__/fetch-account-typetest.ts
  type MockData (line 26) | type MockData = { foo: 42 };
  type MockData (line 58) | type MockData = { foo: 42 };
  type OtherMockData (line 59) | type OtherMockData = { bar: 42 };

FILE: packages/accounts/src/__typetests__/maybe-account-typetest.ts
  type MockData (line 6) | type MockData = { foo: 42 };

FILE: packages/accounts/src/__typetests__/parse-account-typetest.ts
  type MyData (line 9) | type MyData = { mint: Address; token: Address };

FILE: packages/accounts/src/account.ts
  constant BASE_ACCOUNT_SIZE (line 13) | const BASE_ACCOUNT_SIZE = 128;
  type BaseAccount (line 31) | type BaseAccount = {
  type Account (line 73) | type Account<TData extends Uint8Array | object, TAddress extends string ...
  type EncodedAccount (line 98) | type EncodedAccount<TAddress extends string = string> = Account<Readonly...

FILE: packages/accounts/src/decode-account.ts
  function decodeAccount (line 42) | function decodeAccount<TData extends object, TAddress extends string = s...
  function accountExists (line 58) | function accountExists<TData extends object>(account: Account<TData> | M...
  function assertAccountDecoded (line 101) | function assertAccountDecoded<TData extends object, TAddress extends str...
  function assertAccountsDecoded (line 136) | function assertAccountsDecoded<TData extends object, TAddress extends st...

FILE: packages/accounts/src/fetch-account.ts
  type FetchAccountConfig (line 14) | type FetchAccountConfig = {
  function fetchEncodedAccount (line 54) | async function fetchEncodedAccount<TAddress extends string = string>(
  function fetchJsonParsedAccount (line 89) | async function fetchJsonParsedAccount<TData extends object, TAddress ext...
  type FetchAccountsConfig (line 111) | type FetchAccountsConfig = {
  function fetchEncodedAccounts (line 156) | async function fetchEncodedAccounts<
  function fetchJsonParsedAccounts (line 194) | async function fetchJsonParsedAccounts<

FILE: packages/accounts/src/maybe-account.ts
  type MaybeAccount (line 39) | type MaybeAccount<TData extends Uint8Array | object, TAddress extends st...
  type MaybeEncodedAccount (line 70) | type MaybeEncodedAccount<TAddress extends string = string> = MaybeAccoun...
  function assertAccountExists (line 90) | function assertAccountExists<TData extends Uint8Array | object, TAddress...
  function assertAccountsExist (line 118) | function assertAccountsExist<TData extends Uint8Array | object, TAddress...

FILE: packages/accounts/src/parse-account.ts
  type Base64EncodedRpcAccount (line 14) | type Base64EncodedRpcAccount = AccountInfoBase & AccountInfoWithBase64En...
  function parseBase64RpcAccount (line 37) | function parseBase64RpcAccount<TAddress extends string = string>(
  type Base58EncodedRpcAccount (line 46) | type Base58EncodedRpcAccount = AccountInfoBase & (AccountInfoWithBase58B...
  function parseBase58RpcAccount (line 69) | function parseBase58RpcAccount<TAddress extends string = string>(
  type JsonParsedRpcAccount (line 78) | type JsonParsedRpcAccount = AccountInfoBase & { readonly data: JsonParse...
  type ParsedAccountMeta (line 79) | type ParsedAccountMeta = { program: string; type?: string };
  type JsonParsedAccountData (line 80) | type JsonParsedAccountData<TData extends object> = TData & { parsedAccou...
  function parseJsonRpcAccount (line 104) | function parseJsonRpcAccount<TData extends object, TAddress extends stri...
  function parseBaseAccount (line 121) | function parseBaseAccount(rpcAccount: AccountInfoBase): BaseAccount {

FILE: packages/accounts/src/rpc-api/common.ts
  type JsonParsedDataResponse (line 1) | type JsonParsedDataResponse<TData = object> = Readonly<{

FILE: packages/accounts/src/rpc-api/getAccountInfo.ts
  type GetAccountInfoApiResponseBase (line 15) | type GetAccountInfoApiResponseBase = SolanaRpcResponse<AccountInfoBase |...
  type NestInRpcResponseOrNull (line 17) | type NestInRpcResponseOrNull<T> = Readonly<{
  type GetAccountInfoApiCommonConfig (line 21) | type GetAccountInfoApiCommonConfig = Readonly<{
  type GetAccountInfoApiSliceableCommonConfig (line 53) | type GetAccountInfoApiSliceableCommonConfig = Readonly<{
  type GetAccountInfoApi (line 64) | type GetAccountInfoApi = {

FILE: packages/accounts/src/rpc-api/getMultipleAccounts.ts
  type GetMultipleAccountsApiResponseBase (line 14) | type GetMultipleAccountsApiResponseBase = AccountInfoBase | null;
  type GetMultipleAccountsApiCommonConfig (line 16) | type GetMultipleAccountsApiCommonConfig = Readonly<{
  type GetMultipleAccountsApiSliceableCommonConfig (line 48) | type GetMultipleAccountsApiSliceableCommonConfig = Readonly<{
  type GetMultipleAccountsApi (line 59) | type GetMultipleAccountsApi = {

FILE: packages/addresses/src/__tests__/curve-test.ts
  constant OFF_CURVE_KEY_BYTES (line 11) | const OFF_CURVE_KEY_BYTES = [
  constant ON_CURVE_KEY_BYTES (line 22) | const ON_CURVE_KEY_BYTES = [
  constant ON_CURVE_ADDRESSES (line 33) | const ON_CURVE_ADDRESSES = [
  constant OFF_CURVE_ADDRESSES (line 40) | const OFF_CURVE_ADDRESSES = [

FILE: packages/addresses/src/__tests__/public-key-test.ts
  constant MOCK_PUBLIC_KEY_BYTES (line 5) | const MOCK_PUBLIC_KEY_BYTES = new Uint8Array([

FILE: packages/addresses/src/address.ts
  type Address (line 27) | type Address<TAddress extends string = string> = Brand<EncodedString<TAd...
  function getMemoizedBase58Encoder (line 32) | function getMemoizedBase58Encoder(): Encoder<string> {
  function getMemoizedBase58Decoder (line 37) | function getMemoizedBase58Decoder(): Decoder<string> {
  function isAddress (line 60) | function isAddress(putativeAddress: string): putativeAddress is Address<...
  function assertIsAddress (line 104) | function assertIsAddress(putativeAddress: string): asserts putativeAddre...
  function address (line 150) | function address<TAddress extends string = string>(putativeAddress: TAdd...
  function getAddressEncoder (line 173) | function getAddressEncoder(): FixedSizeEncoder<Address, 32> {
  function getAddressDecoder (line 197) | function getAddressDecoder(): FixedSizeDecoder<Address, 32> {
  function getAddressCodec (line 207) | function getAddressCodec(): FixedSizeCodec<Address, Address, 32> {
  function getAddressComparator (line 211) | function getAddressComparator(): (x: string, y: string) => number {

FILE: packages/addresses/src/curve-internal.ts
  function byteToHex (line 5) | function byteToHex(byte: number): string {
  function decompressPointBytes (line 14) | function decompressPointBytes(bytes: ReadonlyUint8Array): bigint {
  function compressedPointBytesAreOnCurve (line 20) | function compressedPointBytesAreOnCurve(bytes: ReadonlyUint8Array): bool...

FILE: packages/addresses/src/curve.ts
  type OffCurveAddress (line 14) | type OffCurveAddress<TAddress extends string = string> = AffinePoint<Add...
  function isOffCurveAddress (line 33) | function isOffCurveAddress<TAddress extends Address>(
  function assertIsOffCurveAddress (line 68) | function assertIsOffCurveAddress<TAddress extends Address>(
  function offCurveAddress (line 80) | function offCurveAddress<TAddress extends Address>(

FILE: packages/addresses/src/program-derived-address.ts
  type ProgramDerivedAddress (line 28) | type ProgramDerivedAddress<TAddress extends string = string> = Readonly<
  type ProgramDerivedAddressBump (line 36) | type ProgramDerivedAddressBump = Brand<number, 'ProgramDerivedAddressBum...
  function isProgramDerivedAddress (line 44) | function isProgramDerivedAddress<TAddress extends string = string>(
  function assertIsProgramDerivedAddress (line 64) | function assertIsProgramDerivedAddress<TAddress extends string = string>(
  type ProgramDerivedAddressInput (line 80) | type ProgramDerivedAddressInput = Readonly<{
  type SeedInput (line 85) | type SeedInput = Readonly<{
  type Seed (line 91) | type Seed = ReadonlyUint8Array | string;
  constant MAX_SEED_LENGTH (line 93) | const MAX_SEED_LENGTH = 32;
  constant MAX_SEEDS (line 94) | const MAX_SEEDS = 16;
  constant PDA_MARKER_BYTES (line 95) | const PDA_MARKER_BYTES = [
  function createProgramDerivedAddress (line 100) | async function createProgramDerivedAddress({ programAddress, seeds }: Pr...
  function getProgramDerivedAddress (line 156) | async function getProgramDerivedAddress({
  function createAddressWithSeed (line 196) | async function createAddressWithSeed({ baseAddress, programAddress, seed...

FILE: packages/addresses/src/public-key.ts
  function getAddressFromPublicKey (line 16) | async function getAddressFromPublicKey(publicKey: CryptoKey): Promise<Ad...
  function getPublicKeyFromAddress (line 35) | async function getPublicKeyFromAddress(address: Address) {

FILE: packages/addresses/src/vendor/noble/ed25519.ts
  constant RM1 (line 28) | const RM1 = 196811613767075059568070793049885420154460665159238901627440...
  function mod (line 31) | function mod(a: bigint): bigint {
  function pow2 (line 35) | function pow2(x: bigint, power: bigint): bigint {
  function pow_2_252_3 (line 44) | function pow_2_252_3(x: bigint): bigint {
  function uvRatio (line 60) | function uvRatio(u: bigint, v: bigint): bigint | null {
  function pointIsOnCurve (line 81) | function pointIsOnCurve(y: bigint, lastByte: number): boolean {

FILE: packages/assertions/src/crypto.ts
  function assertPRNGIsAvailable (line 7) | function assertPRNGIsAvailable() {

FILE: packages/assertions/src/subtle-crypto.ts
  function assertIsSecureContext (line 12) | function assertIsSecureContext() {
  function isEd25519CurveSupported (line 19) | async function isEd25519CurveSupported(subtle: SubtleCrypto): Promise<bo...
  function assertDigestCapabilityIsAvailable (line 43) | function assertDigestCapabilityIsAvailable() {
  function assertKeyGenerationIsAvailable (line 54) | async function assertKeyGenerationIsAvailable() {
  function assertKeyExporterIsAvailable (line 68) | function assertKeyExporterIsAvailable() {
  function assertSigningCapabilityIsAvailable (line 79) | function assertSigningCapabilityIsAvailable() {
  function assertVerificationCapabilityIsAvailable (line 89) | function assertVerificationCapabilityIsAvailable() {

FILE: packages/build-scripts/constants.ts
  constant ORG_NAME (line 1) | const ORG_NAME = 'anza-xyz';
  constant REPO_NAME (line 2) | const REPO_NAME = 'kit';
  constant SEMVER_REGEX (line 3) | const SEMVER_REGEX = /^0*(\d+)\.0*(\d+)\.0*(\d+)$/;

FILE: packages/build-scripts/create-github-release.ts
  type Level (line 19) | type Level = string;
  type PackageName (line 20) | type PackageName = string;
  type ReleaseNotesTextContent (line 21) | type ReleaseNotesTextContent = string;
  function isDefined (line 23) | function isDefined<T>(value: T | null | undefined): value is NonNullable...
  type Token (line 38) | type Token = ReturnType<typeof markdown.parse>['children'][number];

FILE: packages/build-scripts/current-linked-version.ts
  function getCurrentLinkedVersion (line 3) | async function getCurrentLinkedVersion() {

FILE: packages/build-scripts/dev-flag.ts
  type Loader (line 5) | type Loader = NonNullable<
  type Plugin (line 8) | type Plugin = NonNullable<Options['esbuildPlugins']>[number];
  function replaceDev (line 10) | function replaceDev(source: string): string {
  method setup (line 31) | setup(build) {

FILE: packages/build-scripts/getBaseConfig.ts
  type Platform (line 8) | type Platform =
  constant BROWSERSLIST_TARGETS (line 14) | const BROWSERSLIST_TARGETS = browsersListToEsBuild();
  function getBaseConfig (line 16) | function getBaseConfig(platform: Platform, formats: Format[], _options: ...

FILE: packages/build-scripts/github-api.ts
  constant GITHUB_TOKEN (line 8) | const GITHUB_TOKEN = config.token ?? (process.env.GH_TOKEN || process.en...
  function getGitHubApi (line 17) | function getGitHubApi(): Octokit {

FILE: packages/build-scripts/prior-release.ts
  function cmpVersions (line 7) | function cmpVersions(a: string, b: string): number {
  function getPriorRelease (line 24) | async function getPriorRelease(version: string): Promise<{

FILE: packages/build-scripts/tsup.config.package.bundled_8gpidqojr8.mjs
  function replaceDev (line 11) | function replaceDev(source) {
  method setup (line 31) | setup(build) {
  function getBaseConfig (line 46) | function getBaseConfig(platform, formats, _options) {

FILE: packages/codecs-core/src/__benchmarks__/run.ts
  method read (line 17) | read(bytes, offset) {
  method write (line 20) | write(value, bytes, offset) {
  function randomizeBytes (line 27) | function randomizeBytes() {

FILE: packages/codecs-core/src/__tests__/__setup__.ts
  method read (line 7) | read(bytes, offset) {
  method write (line 11) | write(value: string, bytes, offset) {
  type GetMockCodecConfig (line 19) | type GetMockCodecConfig = {
  type GetMockCodecReturnType (line 26) | type GetMockCodecReturnType = Codec<unknown> & {
  function getMockCodec (line 36) | function getMockCodec(config: GetMockCodecConfig = {}): GetMockCodecRetu...
  function expectNewPreOffset (line 45) | function expectNewPreOffset(
  function expectNewPostOffset (line 58) | function expectNewPostOffset(codec: FixedSizeCodec<unknown>, preOffset: ...

FILE: packages/codecs-core/src/__tests__/fix-codec-size-test.ts
  method read (line 80) | read(bytes, offset = 0): [number, number] {

FILE: packages/codecs-core/src/__tests__/transform-codec-test.ts
  type Wrap (line 62) | type Wrap<T> = { value: T };
  type Strict (line 75) | type Strict = { discriminator: number; label: string };
  type Loose (line 95) | type Loose = { discriminator?: number; label: string };

FILE: packages/codecs-core/src/__typetests__/offset-codec-typetest.ts
  type BrandedEncoder (line 14) | type BrandedEncoder = Encoder<42> & { readonly __brand: unique symbol };
  type BrandedDecoder (line 15) | type BrandedDecoder = Decoder<42> & { readonly __brand: unique symbol };
  type BrandedCodec (line 16) | type BrandedCodec = Codec<42> & { readonly __brand: unique symbol };

FILE: packages/codecs-core/src/__typetests__/pad-codec-typetest.ts
  type BrandedEncoder (line 21) | type BrandedEncoder = Encoder<42> & { readonly __brand: unique symbol };
  type BrandedDecoder (line 22) | type BrandedDecoder = Decoder<42> & { readonly __brand: unique symbol };
  type BrandedCodec (line 23) | type BrandedCodec = Codec<42> & { readonly __brand: unique symbol };

FILE: packages/codecs-core/src/__typetests__/resize-codec-typetest.ts
  type NumberToArray (line 14) | type NumberToArray<N extends number, T extends unknown[] = []> = T['leng...
  type Increment (line 17) | type Increment<N extends number> = [...NumberToArray<N>, unknown]['lengt...
  type BrandedEncoder (line 21) | type BrandedEncoder = Encoder<42> & { readonly __brand: unique symbol };
  type BrandedDecoder (line 41) | type BrandedDecoder = Decoder<42> & { readonly __brand: unique symbol };
  type BrandedCodec (line 61) | type BrandedCodec = Codec<42> & { readonly __brand: unique symbol };

FILE: packages/codecs-core/src/add-codec-sentinel.ts
  function addEncoderSentinel (line 43) | function addEncoderSentinel<TFrom>(encoder: Encoder<TFrom>, sentinel: Re...
  function addDecoderSentinel (line 91) | function addDecoderSentinel<TTo>(decoder: Decoder<TTo>, sentinel: Readon...
  function addCodecSentinel (line 170) | function addCodecSentinel<TFrom, TTo extends TFrom>(
  function findSentinelIndex (line 177) | function findSentinelIndex(bytes: ReadonlyUint8Array, sentinel: Readonly...
  function hexBytes (line 184) | function hexBytes(bytes: ReadonlyUint8Array): string {

FILE: packages/codecs-core/src/add-codec-size-prefix.ts
  type NumberEncoder (line 19) | type NumberEncoder = Encoder<bigint | number> | Encoder<number>;
  type FixedSizeNumberEncoder (line 20) | type FixedSizeNumberEncoder<TSize extends number = number> =
  type NumberDecoder (line 23) | type NumberDecoder = Decoder<bigint> | Decoder<number>;
  type FixedSizeNumberDecoder (line 24) | type FixedSizeNumberDecoder<TSize extends number = number> =
  type NumberCodec (line 27) | type NumberCodec = Codec<bigint | number, bigint> | Codec<number>;
  type FixedSizeNumberCodec (line 28) | type FixedSizeNumberCodec<TSize extends number = number> =
  function addEncoderSizePrefix (line 46) | function addEncoderSizePrefix<TFrom>(encoder: Encoder<TFrom>, prefix: Nu...
  function addDecoderSizePrefix (line 89) | function addDecoderSizePrefix<TTo>(decoder: Decoder<TTo>, prefix: Number...
  function addCodecSizePrefix (line 156) | function addCodecSizePrefix<TFrom, TTo extends TFrom>(

FILE: packages/codecs-core/src/array-buffers.ts
  function toArrayBuffer (line 10) | function toArrayBuffer(bytes: ReadonlyUint8Array | Uint8Array, offset?: ...

FILE: packages/codecs-core/src/assertions.ts
  function assertByteArrayIsNotEmptyForCodec (line 28) | function assertByteArrayIsNotEmptyForCodec(
  function assertByteArrayHasEnoughBytesForCodec (line 61) | function assertByteArrayHasEnoughBytesForCodec(
  function assertByteArrayOffsetIsNotOutOfRange (line 95) | function assertByteArrayOffsetIsNotOutOfRange(codecDescription: string, ...

FILE: packages/codecs-core/src/bytes.ts
  function padBytes (line 63) | function padBytes(bytes: ReadonlyUint8Array, length: number): ReadonlyUi...
  function containsBytes (line 121) | function containsBytes(
  function bytesEqual (line 146) | function bytesEqual(bytes1: ReadonlyUint8Array | Uint8Array, bytes2: Rea...

FILE: packages/codecs-core/src/codec.ts
  type Offset (line 12) | type Offset = number;
  type BaseEncoder (line 25) | type BaseEncoder<TFrom> = {
  type FixedSizeEncoder (line 54) | type FixedSizeEncoder<TFrom, TSize extends number = number> = BaseEncode...
  type VariableSizeEncoder (line 77) | type VariableSizeEncoder<TFrom> = BaseEncoder<TFrom> & {
  type Encoder (line 135) | type Encoder<TFrom> = FixedSizeEncoder<TFrom> | VariableSizeEncoder<TFrom>;
  type BaseDecoder (line 148) | type BaseDecoder<TTo> = {
  type FixedSizeDecoder (line 177) | type FixedSizeDecoder<TTo, TSize extends number = number> = BaseDecoder<...
  type VariableSizeDecoder (line 199) | type VariableSizeDecoder<TTo> = BaseDecoder<TTo> & {
  type Decoder (line 255) | type Decoder<TTo> = FixedSizeDecoder<TTo> | VariableSizeDecoder<TTo>;
  type FixedSizeCodec (line 278) | type FixedSizeCodec<TFrom, TTo extends TFrom = TFrom, TSize extends numb...
  type VariableSizeCodec (line 304) | type VariableSizeCodec<TFrom, TTo extends TFrom = TFrom> = VariableSizeD...
  type Codec (line 371) | type Codec<TFrom, TTo extends TFrom = TFrom> = FixedSizeCodec<TFrom, TTo...
  function getEncodedSize (line 392) | function getEncodedSize<TFrom>(
  function createEncoder (line 490) | function createEncoder<TFrom>(
  function createDecoder (line 593) | function createDecoder<TTo>(
  function createCodec (line 718) | function createCodec<TFrom, TTo extends TFrom = TFrom>(
  function isFixedSize (line 780) | function isFixedSize(codec: { fixedSize: number } | { maxSize?: number }...
  function assertIsFixedSize (line 827) | function assertIsFixedSize(
  function isVariableSize (line 873) | function isVariableSize(codec: { fixedSize: number } | { maxSize?: numbe...
  function assertIsVariableSize (line 919) | function assertIsVariableSize(

FILE: packages/codecs-core/src/combine-codec.ts
  function combineCodec (line 103) | function combineCodec<TFrom, TTo extends TFrom>(

FILE: packages/codecs-core/src/decoder-entire-byte-array.ts
  function createDecoderThatConsumesEntireByteArray (line 31) | function createDecoderThatConsumesEntireByteArray<T>(decoder: Decoder<T>...

FILE: packages/codecs-core/src/fix-codec-size.ts
  function fixEncoderSize (line 47) | function fixEncoderSize<TFrom, TSize extends number>(
  function fixDecoderSize (line 95) | function fixDecoderSize<TTo, TSize extends number>(
  function fixCodecSize (line 165) | function fixCodecSize<TFrom, TTo extends TFrom, TSize extends number>(

FILE: packages/codecs-core/src/offset-codec.ts
  type AnyEncoder (line 7) | type AnyEncoder = Encoder<any>;
  type AnyDecoder (line 9) | type AnyDecoder = Decoder<any>;
  type AnyCodec (line 11) | type AnyCodec = Codec<any>;
  type OffsetConfig (line 52) | type OffsetConfig = {
  type PreOffsetFunctionScope (line 87) | type PreOffsetFunctionScope = {
  type PreOffsetFunction (line 120) | type PreOffsetFunction = (scope: PreOffsetFunctionScope) => Offset;
  type PostOffsetFunction (line 154) | type PostOffsetFunction = (
  function offsetEncoder (line 217) | function offsetEncoder<TEncoder extends AnyEncoder>(encoder: TEncoder, c...
  function offsetDecoder (line 288) | function offsetDecoder<TDecoder extends AnyDecoder>(decoder: TDecoder, c...
  function offsetCodec (line 371) | function offsetCodec<TCodec extends AnyCodec>(codec: TCodec, config: Off...
  function modulo (line 376) | function modulo(dividend: number, divisor: number) {

FILE: packages/codecs-core/src/pad-codec.ts
  type AnyEncoder (line 7) | type AnyEncoder = Encoder<any>;
  type AnyDecoder (line 9) | type AnyDecoder = Decoder<any>;
  type AnyCodec (line 11) | type AnyCodec = Codec<any>;
  function padLeftEncoder (line 34) | function padLeftEncoder<TEncoder extends AnyEncoder>(encoder: TEncoder, ...
  function padRightEncoder (line 62) | function padRightEncoder<TEncoder extends AnyEncoder>(encoder: TEncoder,...
  function padLeftDecoder (line 90) | function padLeftDecoder<TDecoder extends AnyDecoder>(decoder: TDecoder, ...
  function padRightDecoder (line 118) | function padRightDecoder<TDecoder extends AnyDecoder>(decoder: TDecoder,...
  function padLeftCodec (line 158) | function padLeftCodec<TCodec extends AnyCodec>(codec: TCodec, offset: Of...
  function padRightCodec (line 195) | function padRightCodec<TCodec extends AnyCodec>(codec: TCodec, offset: O...

FILE: packages/codecs-core/src/readonly-uint8array.ts
  type ReadonlyUint8Array (line 14) | interface ReadonlyUint8Array<TArrayBuffer extends ArrayBufferLike = Arra...
  type TypedArrayMutableProperties (line 21) | type TypedArrayMutableProperties = 'copyWithin' | 'fill' | 'reverse' | '...

FILE: packages/codecs-core/src/resize-codec.ts
  type AnyEncoder (line 17) | type AnyEncoder = Encoder<any>;
  type AnyDecoder (line 19) | type AnyDecoder = Decoder<any>;
  type AnyCodec (line 21) | type AnyCodec = Codec<any>;
  function resizeEncoder (line 67) | function resizeEncoder<TEncoder extends AnyEncoder>(
  function resizeDecoder (line 140) | function resizeDecoder<TDecoder extends AnyDecoder>(
  function resizeCodec (line 207) | function resizeCodec<TCodec extends AnyCodec>(codec: TCodec, resize: (si...

FILE: packages/codecs-core/src/reverse-codec.ts
  function copySourceToTargetInReverse (line 12) | function copySourceToTargetInReverse(
  function reverseEncoder (line 56) | function reverseEncoder<TFrom, TSize extends number>(
  function reverseDecoder (line 101) | function reverseDecoder<TTo, TSize extends number>(
  function reverseCodec (line 155) | function reverseCodec<TFrom, TTo extends TFrom, TSize extends number>(

FILE: packages/codecs-core/src/transform-codec.ts
  function transformEncoder (line 57) | function transformEncoder<TOldFrom, TNewFrom>(
  function transformDecoder (line 108) | function transformDecoder<TOldTo, TNewTo>(
  function transformCodec (line 199) | function transformCodec<TOldFrom, TNewFrom, TOldTo extends TOldFrom, TNe...

FILE: packages/codecs-data-structures/src/__tests__/discriminated-union-test.ts
  type WebEvent (line 39) | type WebEvent =
  type Event (line 169) | enum Event {

FILE: packages/codecs-data-structures/src/__tests__/enum-helpers-test.ts
  type Feedback (line 10) | enum Feedback {
  type Prime (line 24) | enum Prime {
  type FortyTwo (line 39) | enum FortyTwo {
  type Direction (line 54) | enum Direction {
  type Hybrid (line 70) | enum Hybrid {
  type Numbers (line 92) | enum Numbers {
  type Numbers (line 104) | enum Numbers {
  type CrossedValues (line 116) | enum CrossedValues {
  type Duplicates (line 126) | enum Duplicates {
  type Duplicates (line 136) | enum Duplicates {
  type Numbers (line 148) | enum Numbers {
  type Numbers (line 160) | enum Numbers {
  type Numbers (line 170) | enum Numbers {
  type Numbers (line 186) | enum Numbers {

FILE: packages/codecs-data-structures/src/__tests__/enum-test.ts
  type Feedback (line 14) | enum Feedback {
  type Numbers (line 94) | enum Numbers {
  type Numbers (line 186) | enum Numbers {
  type Duplicates (line 278) | enum Duplicates {
  type Duplicates (line 324) | enum Duplicates {
  type Direction (line 369) | enum Direction {
  type Hybrid (line 465) | enum Hybrid {

FILE: packages/codecs-data-structures/src/__tests__/pattern-match-test.ts
  method read (line 40) | read() {
  method read (line 48) | read() {
  method read (line 56) | read() {

FILE: packages/codecs-data-structures/src/__tests__/predicate-test.ts
  method read (line 26) | read() {
  method read (line 34) | read() {

FILE: packages/codecs-data-structures/src/__typetests__/discriminated-union-typetest.ts
  type Event (line 43) | const enum Event {
  type Event (line 104) | const enum Event {
  type Event (line 165) | const enum Event {

FILE: packages/codecs-data-structures/src/__typetests__/enum-typetest.ts
  type Feedback (line 13) | enum Feedback {
  type FeedbackInput (line 17) | type FeedbackInput = Feedback | keyof typeof Feedback;
  type Direction (line 19) | enum Direction {
  type DirectionInput (line 25) | type DirectionInput = Direction | keyof typeof Direction;

FILE: packages/codecs-data-structures/src/array.ts
  type ArrayLikeCodecSize (line 32) | type ArrayLikeCodecSize<TPrefix extends NumberCodec | NumberDecoder | Nu...
  type ArrayCodecConfig (line 42) | type ArrayCodecConfig<TPrefix extends NumberCodec | NumberDecoder | Numb...
  function getArrayEncoder (line 98) | function getArrayEncoder<TFrom>(
  function getArrayDecoder (line 171) | function getArrayDecoder<TTo>(item: Decoder<TTo>, config: ArrayCodecConf...
  function getArrayCodec (line 289) | function getArrayCodec<TFrom, TTo extends TFrom = TFrom>(
  function computeArrayLikeCodecSize (line 296) | function computeArrayLikeCodecSize(size: number | object | 'remainder', ...

FILE: packages/codecs-data-structures/src/assertions.ts
  function assertValidNumberOfItemsForCodec (line 4) | function assertValidNumberOfItemsForCodec(

FILE: packages/codecs-data-structures/src/bit-array.ts
  type BitArrayCodecConfig (line 21) | type BitArrayCodecConfig = {
  function getBitArrayEncoder (line 61) | function getBitArrayEncoder<TSize extends number>(
  function getBitArrayDecoder (line 119) | function getBitArrayDecoder<TSize extends number>(
  function getBitArrayCodec (line 198) | function getBitArrayCodec<TSize extends number>(

FILE: packages/codecs-data-structures/src/boolean.ts
  type BooleanCodecConfig (line 38) | type BooleanCodecConfig<TSize extends NumberCodec | NumberDecoder | Numb...
  function getBooleanEncoder (line 77) | function getBooleanEncoder(config: BooleanCodecConfig<NumberEncoder> = {...
  function getBooleanDecoder (line 108) | function getBooleanDecoder(config: BooleanCodecConfig<NumberDecoder> = {...
  function getBooleanCodec (line 161) | function getBooleanCodec(config: BooleanCodecConfig<NumberCodec> = {}): ...

FILE: packages/codecs-data-structures/src/bytes.ts
  function getBytesEncoder (line 36) | function getBytesEncoder(): VariableSizeEncoder<ReadonlyUint8Array | Uin...
  function getBytesDecoder (line 71) | function getBytesDecoder(): VariableSizeDecoder<ReadonlyUint8Array> {
  function getBytesCodec (line 113) | function getBytesCodec(): VariableSizeCodec<ReadonlyUint8Array | Uint8Ar...

FILE: packages/codecs-data-structures/src/constant.ts
  function getConstantEncoder (line 39) | function getConstantEncoder<TConstant extends ReadonlyUint8Array>(
  function getConstantDecoder (line 75) | function getConstantDecoder<TConstant extends ReadonlyUint8Array>(
  function getConstantCodec (line 131) | function getConstantCodec<TConstant extends ReadonlyUint8Array>(

FILE: packages/codecs-data-structures/src/discriminated-union.ts
  type DiscriminatedUnion (line 37) | type DiscriminatedUnion<
  type GetDiscriminatedUnionVariant (line 62) | type GetDiscriminatedUnionVariant<
  type GetDiscriminatedUnionVariantContent (line 86) | type GetDiscriminatedUnionVariantContent<
  type DiscriminatedUnionCodecConfig (line 100) | type DiscriminatedUnionCodecConfig<
  type DiscriminatorValue (line 116) | type DiscriminatorValue = bigint | boolean | number | string | null | un...
  type Variants (line 117) | type Variants<T> = readonly (readonly [DiscriminatorValue, T])[];
  type ArrayIndices (line 118) | type ArrayIndices<T extends readonly unknown[]> = Exclude<Partial<T>['le...
  type GetEncoderTypeFromVariants (line 120) | type GetEncoderTypeFromVariants<
  type GetDecoderTypeFromVariants (line 131) | type GetDecoderTypeFromVariants<
  type UnionEncoder (line 142) | type UnionEncoder<TVariants extends Variants<Encoder<unknown>>, TDiscrim...
  type UnionDecoder (line 147) | type UnionDecoder<TVariants extends Variants<Decoder<unknown>>, TDiscrim...
  type UnionCodec (line 152) | type UnionCodec<TVariants extends Variants<Codec<unknown, unknown>>, TDi...
  function getDiscriminatedUnionEncoder (line 206) | function getDiscriminatedUnionEncoder<
  function getDiscriminatedUnionDecoder (line 262) | function getDiscriminatedUnionDecoder<
  function getDiscriminatedUnionCodec (line 354) | function getDiscriminatedUnionCodec<
  function getVariantDiscriminator (line 372) | function getVariantDiscriminator<const TVariants extends Variants<Decode...

FILE: packages/codecs-data-structures/src/enum-helpers.ts
  type EnumLookupObject (line 9) | type EnumLookupObject = { [key: string]: number | string };
  type GetEnumFrom (line 20) | type GetEnumFrom<TEnum extends EnumLookupObject> = TEnum[keyof TEnum] | ...
  type GetEnumTo (line 31) | type GetEnumTo<TEnum extends EnumLookupObject> = TEnum[keyof TEnum];
  function getEnumStats (line 33) | function getEnumStats(constructor: EnumLookupObject) {
  function getEnumIndexFromVariant (line 48) | function getEnumIndexFromVariant({
  function getEnumIndexFromDiscriminator (line 62) | function getEnumIndexFromDiscriminator({
  function findLastIndex (line 79) | function findLastIndex<T>(array: Array<T>, predicate: (value: T, index: ...
  function formatNumericalValues (line 87) | function formatNumericalValues(values: number[]): string {

FILE: packages/codecs-data-structures/src/enum.ts
  type EnumCodecConfig (line 53) | type EnumCodecConfig<TDiscriminator extends NumberCodec | NumberDecoder ...
  function getEnumEncoder (line 109) | function getEnumEncoder<TEnum extends EnumLookupObject>(
  function getEnumDecoder (line 175) | function getEnumDecoder<TEnum extends EnumLookupObject>(
  function getEnumCodec (line 304) | function getEnumCodec<TEnum extends EnumLookupObject>(

FILE: packages/codecs-data-structures/src/hidden-prefix.ts
  function getHiddenPrefixEncoder (line 57) | function getHiddenPrefixEncoder<TFrom>(
  function getHiddenPrefixDecoder (line 103) | function getHiddenPrefixDecoder<TTo>(
  function getHiddenPrefixCodec (line 175) | function getHiddenPrefixCodec<TFrom, TTo extends TFrom>(

FILE: packages/codecs-data-structures/src/hidden-suffix.ts
  function getHiddenSuffixEncoder (line 57) | function getHiddenSuffixEncoder<TFrom>(
  function getHiddenSuffixDecoder (line 103) | function getHiddenSuffixDecoder<TTo>(
  function getHiddenSuffixCodec (line 175) | function getHiddenSuffixCodec<TFrom, TTo extends TFrom>(

FILE: packages/codecs-data-structures/src/literal-union.ts
  type LiteralUnionCodecConfig (line 40) | type LiteralUnionCodecConfig<TDiscriminator = NumberCodec | NumberDecode...
  type Variant (line 48) | type Variant = bigint | boolean | number | string | null | undefined;
  type GetTypeFromVariants (line 49) | type GetTypeFromVariants<TVariants extends readonly Variant[]> = TVarian...
  function getLiteralUnionEncoder (line 89) | function getLiteralUnionEncoder<const TVariants extends readonly Variant...
  function getLiteralUnionDecoder (line 144) | function getLiteralUnionDecoder<const TVariants extends readonly Variant...
  function getLiteralUnionCodec (line 244) | function getLiteralUnionCodec<const TVariants extends readonly Variant[]>(

FILE: packages/codecs-data-structures/src/map.ts
  type MapCodecConfig (line 32) | type MapCodecConfig<TPrefix extends NumberCodec | NumberDecoder | Number...
  function getMapEncoder (line 87) | function getMapEncoder<TFromKey, TFromValue>(
  function getMapDecoder (line 142) | function getMapDecoder<TToKey, TToValue>(
  function getMapCodec (line 274) | function getMapCodec<

FILE: packages/codecs-data-structures/src/nullable.ts
  type NullableCodecConfig (line 51) | type NullableCodecConfig<TPrefix extends NumberCodec | NumberDecoder | N...
  function getNullableEncoder (line 119) | function getNullableEncoder<TFrom>(
  function getNullableDecoder (line 195) | function getNullableDecoder<TTo>(
  function getNullableCodec (line 347) | function getNullableCodec<TFrom, TTo extends TFrom = TFrom>(

FILE: packages/codecs-data-structures/src/pattern-match.ts
  type PatternMatchEncoderEntry (line 22) | type PatternMatchEncoderEntry<TNarrowed, TFrom = TNarrowed> = TNarrowed ...
  type FixedSizePatternMatchEncoderEntry (line 29) | type FixedSizePatternMatchEncoderEntry<
  type VariableSizePatternMatchEncoderEntry (line 40) | type VariableSizePatternMatchEncoderEntry<TNarrowed, TFrom = TNarrowed> ...
  function getPatternMatchEncoder (line 102) | function getPatternMatchEncoder<TFrom>(patterns: PatternMatchEncoderEntr...
  function getPatternMatchDecoder (line 161) | function getPatternMatchDecoder<TTo>(
  type PatternMatchCodecEntry (line 178) | type PatternMatchCodecEntry<TNarrowedFrom, TFrom = TNarrowedFrom, TTo = ...
  type FixedSizePatternMatchCodecEntry (line 190) | type FixedSizePatternMatchCodecEntry<
  type VariableSizePatternMatchCodecEntry (line 211) | type VariableSizePatternMatchCodecEntry<
  function getPatternMatchCodec (line 303) | function getPatternMatchCodec<TFrom, TTo extends TFrom = TFrom>(

FILE: packages/codecs-data-structures/src/predicate.ts
  function getPredicateEncoder (line 70) | function getPredicateEncoder<TFrom>(
  function getPredicateDecoder (line 130) | function getPredicateDecoder<TTo>(
  function getPredicateCodec (line 203) | function getPredicateCodec<TFrom, TTo extends TFrom>(

FILE: packages/codecs-data-structures/src/set.ts
  type SetCodecConfig (line 31) | type SetCodecConfig<TPrefix extends NumberCodec | NumberDecoder | Number...
  function getSetEncoder (line 77) | function getSetEncoder<TFrom>(
  function getSetDecoder (line 120) | function getSetDecoder<TTo>(item: Decoder<TTo>, config: SetCodecConfig<N...
  function getSetCodec (line 201) | function getSetCodec<TFrom, TTo extends TFrom = TFrom>(

FILE: packages/codecs-data-structures/src/struct.ts
  type Fields (line 30) | type Fields<T> = readonly (readonly [string, T])[];
  type ArrayIndices (line 32) | type ArrayIndices<T extends readonly unknown[]> = Exclude<Partial<T>['le...
  type GetEncoderTypeFromFields (line 41) | type GetEncoderTypeFromFields<TFields extends Fields<Encoder<any>>> = Dr...
  type GetDecoderTypeFromFields (line 52) | type GetDecoderTypeFromFields<TFields extends Fields<Decoder<any>>> = Dr...
  function getStructEncoder (line 91) | function getStructEncoder<const TFields extends Fields<Encoder<any>>>(
  function getStructDecoder (line 153) | function getStructDecoder<const TFields extends Fields<Decoder<any>>>(
  function getStructCodec (line 232) | function getStructCodec<const TFields extends Fields<Codec<any>>>(

FILE: packages/codecs-data-structures/src/tuple.ts
  type GetEncoderTypeFromItems (line 29) | type GetEncoderTypeFromItems<TItems extends readonly Encoder<any>[]> = D...
  type GetDecoderTypeFromItems (line 40) | type GetDecoderTypeFromItems<TItems extends readonly Decoder<any>[]> = D...
  type TupleCodecConfig (line 47) | type TupleCodecConfig = {
  function getTupleEncoder (line 89) | function getTupleEncoder<const TItems extends readonly Encoder<any>[]>(
  function getTupleDecoder (line 147) | function getTupleDecoder<const TItems extends readonly Decoder<any>[]>(
  function getTupleCodec (line 220) | function getTupleCodec<const TItems extends readonly Codec<any>[]>(

FILE: packages/codecs-data-structures/src/union.ts
  type GetEncoderTypeFromVariants (line 28) | type GetEncoderTypeFromVariants<TVariants extends readonly Encoder<any>[...
  type GetDecoderTypeFromVariants (line 39) | type GetDecoderTypeFromVariants<TVariants extends readonly Decoder<any>[...
  type UnionEncoder (line 43) | type UnionEncoder<TVariants extends readonly Encoder<unknown>[]> = TVari...
  type UnionDecoder (line 47) | type UnionDecoder<TVariants extends readonly Decoder<unknown>[]> = TVari...
  type UnionCodec (line 51) | type UnionCodec<TVariants extends readonly Codec<unknown>[]> = TVariants...
  function getUnionEncoder (line 97) | function getUnionEncoder<const TVariants extends readonly Encoder<any>[]>(
  function getUnionDecoder (line 157) | function getUnionDecoder<const TVariants extends readonly Decoder<any>[]>(
  function getUnionCodec (line 224) | function getUnionCodec<const TVariants extends readonly Codec<any>[]>(
  function assertValidVariantIndex (line 237) | function assertValidVariantIndex(variants: readonly unknown[], index: nu...
  function getUnionFixedSize (line 247) | function getUnionFixedSize<const TVariants extends readonly (Decoder<any...
  function getUnionMaxSize (line 255) | function getUnionMaxSize<const TVariants extends readonly (Decoder<any> ...

FILE: packages/codecs-data-structures/src/unit.ts
  function getUnitEncoder (line 30) | function getUnitEncoder(): FixedSizeEncoder<void, 0> {
  function getUnitDecoder (line 56) | function getUnitDecoder(): FixedSizeDecoder<void, 0> {
  function getUnitCodec (line 109) | function getUnitCodec(): FixedSizeCodec<void, void, 0> {

FILE: packages/codecs-data-structures/src/utils.ts
  type DrainOuterGeneric (line 13) | type DrainOuterGeneric<T> = [T] extends [unknown] ? T : never;
  function maxCodecSizes (line 15) | function maxCodecSizes(sizes: (number | null)[]): number | null {
  function sumCodecSizes (line 22) | function sumCodecSizes(sizes: (number | null)[]): number | null {
  function getFixedSize (line 26) | function getFixedSize(codec: { fixedSize: number } | { maxSize?: number ...
  function getMaxSize (line 30) | function getMaxSize(codec: { fixedSize: number } | { maxSize?: number })...

FILE: packages/codecs-numbers/src/__tests__/__setup__.ts
  type RangeErrorValues (line 27) | type RangeErrorValues = {
  method read (line 51) | read(bytes, offset) {
  method write (line 55) | write(value: string, bytes, offset) {

FILE: packages/codecs-numbers/src/__tests__/f32-test.ts
  constant APPROX_PI (line 5) | const APPROX_PI = 3.1415927410125732;

FILE: packages/codecs-numbers/src/__tests__/f64-test.ts
  constant APPROX_PI (line 5) | const APPROX_PI = 3.141592653589793;

FILE: packages/codecs-numbers/src/__tests__/i128-test.ts
  constant MIN (line 5) | const MIN = -BigInt('0x7fffffffffffffffffffffffffffffff') - 1n;
  constant MAX (line 6) | const MAX = BigInt('0x7fffffffffffffffffffffffffffffff');

FILE: packages/codecs-numbers/src/__tests__/i16-test.ts
  constant MIN (line 5) | const MIN = -Number('0x7fff') - 1;
  constant MAX (line 6) | const MAX = Number('0x7fff');

FILE: packages/codecs-numbers/src/__tests__/i32-test.ts
  constant MIN (line 5) | const MIN = -Number('0x7fffffff') - 1;
  constant MAX (line 6) | const MAX = Number('0x7fffffff');

FILE: packages/codecs-numbers/src/__tests__/i64-test.ts
  constant MIN (line 5) | const MIN = -BigInt('0x7fffffffffffffff') - 1n;
  constant MAX (line 6) | const MAX = BigInt('0x7fffffffffffffff');

FILE: packages/codecs-numbers/src/__tests__/i8-test.ts
  constant MIN (line 4) | const MIN = -Number('0x7f') - 1;
  constant MAX (line 5) | const MAX = Number('0x7f');

FILE: packages/codecs-numbers/src/__tests__/short-u16-test.ts
  constant MIN (line 4) | const MIN = 0;
  constant MAX (line 5) | const MAX = 65535;

FILE: packages/codecs-numbers/src/__tests__/u128-test.ts
  constant MIN (line 5) | const MIN = 0n;
  constant MAX (line 6) | const MAX = BigInt('0xffffffffffffffffffffffffffffffff');
  constant HALF (line 7) | const HALF = BigInt('0xffffffffffffffff');

FILE: packages/codecs-numbers/src/__tests__/u16-test.ts
  constant MIN (line 5) | const MIN = 0;
  constant MAX (line 6) | const MAX = Number('0xffff');
  constant HALF (line 7) | const HALF = Number('0xff');

FILE: packages/codecs-numbers/src/__tests__/u32-test.ts
  constant MIN (line 5) | const MIN = 0;
  constant MAX (line 6) | const MAX = Number('0xffffffff');
  constant HALF (line 7) | const HALF = Number('0xffff');

FILE: packages/codecs-numbers/src/__tests__/u64-test.ts
  constant MIN (line 5) | const MIN = 0n;
  constant MAX (line 6) | const MAX = BigInt('0xffffffffffffffff');
  constant HALF (line 7) | const HALF = BigInt('0xffffffff');

FILE: packages/codecs-numbers/src/__tests__/u8-test.ts
  constant MIN (line 4) | const MIN = 0;
  constant MAX (line 5) | const MAX = Number('0xff');

FILE: packages/codecs-numbers/src/assertions.ts
  function assertNumberIsBetweenForCodec (line 28) | function assertNumberIsBetweenForCodec(

FILE: packages/codecs-numbers/src/common.ts
  type NumberEncoder (line 10) | type NumberEncoder = Encoder<bigint | number>;
  type FixedSizeNumberEncoder (line 21) | type FixedSizeNumberEncoder<TSize extends number = number> = FixedSizeEn...
  type NumberDecoder (line 30) | type NumberDecoder = Decoder<bigint> | Decoder<number>;
  type FixedSizeNumberDecoder (line 41) | type FixedSizeNumberDecoder<TSize extends number = number> =
  type NumberCodec (line 53) | type NumberCodec = Codec<bigint | number, bigint> | Codec<bigint | numbe...
  type FixedSizeNumberCodec (line 66) | type FixedSizeNumberCodec<TSize extends number = number> =
  type NumberCodecConfig (line 76) | type NumberCodecConfig = {
  type Endian (line 91) | enum Endian {

FILE: packages/codecs-numbers/src/utils.ts
  type NumberFactorySharedInput (line 15) | type NumberFactorySharedInput<TSize extends number> = {
  type NumberFactoryEncoderInput (line 21) | type NumberFactoryEncoderInput<TFrom, TSize extends number> = NumberFact...
  type NumberFactoryDecoderInput (line 26) | type NumberFactoryDecoderInput<TTo, TSize extends number> = NumberFactor...
  function isLittleEndian (line 30) | function isLittleEndian(config?: NumberCodecConfig): boolean {
  function numberEncoderFactory (line 34) | function numberEncoderFactory<TFrom extends bigint | number, TSize exten...
  function numberDecoderFactory (line 51) | function numberDecoderFactory<TTo extends bigint | number, TSize extends...

FILE: packages/codecs-strings/src/__benchmarks__/run.ts
  function randomizeBytes (line 18) | function randomizeBytes() {
  method beforeEach (line 39) | beforeEach() {
  method beforeEach (line 51) | beforeEach() {

FILE: packages/codecs-strings/src/assertions.ts
  function assertValidBaseString (line 23) | function assertValidBaseString(alphabet: string, testValue: string, give...

FILE: packages/codecs-strings/src/base16.ts
  type HexC (line 11) | const enum HexC {
  constant INVALID_STRING_ERROR_BASE_CONFIG (line 20) | const INVALID_STRING_ERROR_BASE_CONFIG = {
  function charCodeToBase16 (line 25) | function charCodeToBase16(char: number) {
  method write (line 53) | write(value: string, bytes, offset) {
  method read (line 109) | read(bytes, offset) {

FILE: packages/codecs-strings/src/base64.ts
  method write (line 52) | write(value: string, bytes, offset) {
  method write (line 73) | write(value: string, bytes, offset) {
  method read (line 106) | read(bytes, offset = 0) {

FILE: packages/codecs-strings/src/baseX-reslice.ts
  method write (line 38) | write(value: string, bytes, offset) {
  method read (line 73) | read(rawBytes, offset = 0): [string, number] {
  function reslice (line 130) | function reslice(input: number[], inputBits: number, outputBits: number,...

FILE: packages/codecs-strings/src/baseX.ts
  method write (line 42) | write(value: string, bytes, offset) {
  method read (line 94) | read(rawBytes, offset): [string, number] {
  function partitionLeadingZeroes (line 163) | function partitionLeadingZeroes(
  function getBigIntFromBaseX (line 171) | function getBigIntFromBaseX(value: string, alphabet: string): bigint {
  function getBaseXFromBigInt (line 181) | function getBaseXFromBigInt(value: bigint, alphabet: string): string {

FILE: packages/codecs-strings/src/utf8.ts
  method read (line 66) | read(bytes, offset) {

FILE: packages/compat/src/__tests__/instruction-test.ts
  function toLegacyByteArrayAppropriateForPlatform (line 10) | function toLegacyByteArrayAppropriateForPlatform<TArrayBuffer extends Ar...

FILE: packages/compat/src/__tests__/transaction-test.ts
  method serialize (line 16) | serialize() {
  method serialize (line 34) | serialize() {
  method serialize (line 53) | serialize() {
  method serialize (line 74) | serialize() {
  method serialize (line 97) | serialize() {
  method serialize (line 124) | serialize() {
  method serialize (line 153) | serialize() {
  method serialize (line 180) | serialize() {

FILE: packages/compat/src/address.ts
  function fromLegacyPublicKey (line 16) | function fromLegacyPublicKey<TAddress extends string>(publicKey: PublicK...

FILE: packages/compat/src/instruction.ts
  function fromLegacyTransactionInstruction (line 19) | function fromLegacyTransactionInstruction(legacyInstruction: Transaction...
  function determineRole (line 35) | function determineRole(isSigner: boolean, isWritable: boolean): AccountR...

FILE: packages/compat/src/keypair.ts
  function fromLegacyKeypair (line 16) | async function fromLegacyKeypair(keypair: Keypair, extractable?: boolean...

FILE: packages/compat/src/transaction.ts
  function convertSignatures (line 7) | function convertSignatures(transaction: VersionedTransaction, staticAcco...
  function fromVersionedTransaction (line 34) | function fromVersionedTransaction(transaction: VersionedTransaction): Tr...

FILE: packages/crypto-impl/tsup.config.ts
  method outExtension (line 9) | outExtension({ format }) {

FILE: packages/errors/src/__tests__/context-test.ts
  function getTestContext (line 3) | async function getTestContext() {
  constant EXPECTED_URL_ENCODED_CONTEXT (line 26) | const EXPECTED_URL_ENCODED_CONTEXT =

FILE: packages/errors/src/__tests__/instruction-error-test.ts
  constant EXPECTED_ERROR_CODES (line 10) | const EXPECTED_ERROR_CODES = [

FILE: packages/errors/src/__tests__/message-formatter-test.ts
  method SolanaErrorMessages (line 8) | get SolanaErrorMessages() {

FILE: packages/errors/src/cli.ts
  function run (line 58) | function run(argv: readonly string[]) {

FILE: packages/errors/src/codes.ts
  constant SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED (line 28) | const SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED = 1;
  constant SOLANA_ERROR__INVALID_NONCE (line 29) | const SOLANA_ERROR__INVALID_NONCE = 2;
  constant SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND (line 30) | const SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND = 3;
  constant SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE (line 31) | const SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE = 4;
  constant SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH (line 32) | const SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH = 5;
  constant SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE (line 33) | const SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE = 6;
  constant SOLANA_ERROR__MALFORMED_BIGINT_STRING (line 34) | const SOLANA_ERROR__MALFORMED_BIGINT_STRING = 7;
  constant SOLANA_ERROR__MALFORMED_NUMBER_STRING (line 35) | const SOLANA_ERROR__MALFORMED_NUMBER_STRING = 8;
  constant SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE (line 36) | const SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE = 9;
  constant SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR (line 37) | const SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR = 10;
  constant SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION (line 38) | const SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION = 11;
  constant SOLANA_ERROR__FAILED_TO_SEND_TRANSACTIONS (line 39) | const SOLANA_ERROR__FAILED_TO_SEND_TRANSACTIONS = 12;
  constant SOLANA_ERROR__JSON_RPC__PARSE_ERROR (line 44) | const SOLANA_ERROR__JSON_RPC__PARSE_ERROR = -32700;
  constant SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR (line 45) | const SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR = -32603;
  constant SOLANA_ERROR__JSON_RPC__INVALID_PARAMS (line 46) | const SOLANA_ERROR__JSON_RPC__INVALID_PARAMS = -32602;
  constant SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND (line 47) | const SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND = -32601;
  constant SOLANA_ERROR__JSON_RPC__INVALID_REQUEST (line 48) | const SOLANA_ERROR__JSON_RPC__INVALID_REQUEST = -32600;
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_UNREACHABLE (line 49) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_UNREACHABLE...
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_NOT_EPOCH_BOUNDARY (line 50) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_NOT_EPOCH_BOUNDARY = -32...
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_EPOCH_REWARDS_PERIOD_ACTIVE (line 51) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_EPOCH_REWARDS_PERIOD_ACTIVE =...
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED (line 52) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED ...
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION (line 53) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSI...
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET (line 54) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YE...
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH (line 55) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MIS...
  constant SOLANA_ERROR__JSON_RPC__SCAN_ERROR (line 56) | const SOLANA_ERROR__JSON_RPC__SCAN_ERROR = -32012;
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE (line 57) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAIL...
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX (line 58) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_I...
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED (line 59) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPE...
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT (line 60) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT = -32008;
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED (line 61) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED = -32007;
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE (line 62) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFI...
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY (line 63) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY = -32005;
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE (line 64) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE = -32004;
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE (line 65) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFIC...
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE (line 66) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FA...
  constant SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP (line 67) | const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP = -32001;
  constant SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH (line 71) | const SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH = 2800000;
  constant SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE (line 72) | const SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE = 2800001;
  constant SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS (line 73) | const SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS = 2800002;
  constant SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY (line 74) | const SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY = 2800003;
  constant SOLANA_ERROR__ADDRESSES__MALFORMED_PDA (line 75) | const SOLANA_ERROR__ADDRESSES__MALFORMED_PDA = 2800004;
  constant SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE (line 76) | const SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE = 2800005;
  constant SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED (line 77) | const SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED = 2800006;
  constant SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED (line 78) | const SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED = 2800007;
  constant SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE (line 79) | const SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE = 2800008;
  constant SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED (line 80) | const SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED = 280...
  constant SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER (line 81) | const SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER = 2800010;
  constant SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS (line 82) | const SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS = 2800011;
  constant SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND (line 86) | const SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND = 3230000;
  constant SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND (line 87) | const SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND = 32300001;
  constant SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT (line 88) | const SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT = 3230002;
  constant SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT (line 89) | const SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT = 3230003;
  constant SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED (line 90) | const SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED = 3230...
  constant SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT (line 94) | const SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT = 3610...
  constant SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED (line 95) | const SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED = 3610001;
  constant SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED (line 96) | const SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED = 361...
  constant SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED (line 97) | const SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED = 3610003;
  constant SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED (line 98) | const SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED = 361...
  constant SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED (line 99) | const SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED = 3610005;
  constant SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED (line 100) | const SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED = 3610006;
  constant SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY (line 101) | const SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY = 3...
  constant SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED (line 105) | const SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED = 3611000;
  constant SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH (line 109) | const SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH = 3704000;
  constant SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH (line 110) | const SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH = 3704001;
  constant SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH (line 111) | const SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH = 3704002;
  constant SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE (line 112) | const SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE = 3704003;
  constant SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY (line 113) | const SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY = 3704004;
  constant SOLANA_ERROR__KEYS__INVALID_BASE58_IN_GRIND_REGEX (line 114) | const SOLANA_ERROR__KEYS__INVALID_BASE58_IN_GRIND_REGEX = 3704005;
  constant SOLANA_ERROR__KEYS__WRITE_KEY_PAIR_UNSUPPORTED_ENVIRONMENT (line 115) | const SOLANA_ERROR__KEYS__WRITE_KEY_PAIR_UNSUPPORTED_ENVIRONMENT = 3704006;
  constant SOLANA_ERROR__FS__UNSUPPORTED_ENVIRONMENT (line 119) | const SOLANA_ERROR__FS__UNSUPPORTED_ENVIRONMENT = 3712000;
  constant SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS (line 123) | const SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS = 4128000;
  constant SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA (line 124) | const SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA = 4128001;
  constant SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH (line 125) | const SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH = 4128002;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN (line 130) | const SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN = 4615000;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR (line 131) | const SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR = 4615001;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT (line 132) | const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT = 4615002;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA (line 133) | const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA = 4615003;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA (line 134) | const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA = 4615004;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL (line 135) | const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL = 4615005;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS (line 136) | const SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS = 4615006;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID (line 137) | const SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID = 4615007;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE (line 138) | const SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE = 4615...
  constant SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED (line 139) | const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED = 461...
  constant SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT (line 140) | const SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT = 4615010;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION (line 141) | const SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION = 4615011;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID (line 142) | const SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID = 4615012;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND (line 143) | const SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND = ...
  constant SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED (line 144) | const SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED = ...
  constant SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE (line 145) | const SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE = 4615015;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED (line 146) | const SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED = 4615016;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX (line 147) | const SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX = 4615017;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED (line 148) | const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED = 4615018;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED (line 149) | const SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED = 4615019;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS (line 150) | const SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS = 4615020;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED (line 151) | const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED = 4615021;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE (line 152) | const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE = 4615022;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED (line 153) | const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED = 4615023;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING (line 154) | const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = 4615...
  constant SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC (line 155) | const SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC = 4...
  constant SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM (line 156) | const SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM = 4615026;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR (line 157) | const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR = 4615027;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED (line 158) | const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED = 4615028;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE (line 159) | const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE = 4615029;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT (line 160) | const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMP...
  constant SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID (line 161) | const SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID = 4615031;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH (line 162) | const SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH = 4615032;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT (line 163) | const SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT = 4615033;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED (line 164) | const SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED = 4615034;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED (line 165) | const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED = 4615035;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS (line 166) | const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS = 4615036;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC (line 167) | const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC = 4615037;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED (line 168) | const SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED = 4...
  constant SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION (line 169) | const SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION = 4615039;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE (line 170) | const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE...
  constant SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE (line 171) | const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE = 4615...
  constant SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE (line 172) | const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE = 4615042;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE (line 173) | const SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE = 4615043;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY (line 174) | const SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY = 4615044;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR (line 175) | const SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR = 4615045;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT (line 176) | const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT = 4615046;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER (line 177) | const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER = 4615047;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW (line 178) | const SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW = 4615048;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR (line 179) | const SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR = 4615049;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER (line 180) | const SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER = 4615050;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED (line 181) | const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXC...
  constant SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED (line 182) | const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED = 4615052;
  constant SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED (line 183) | const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCE...
  constant SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS (line 184) | const SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COM...
  constant SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS (line 188) | const SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS = 5508000;
  constant SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER (line 189) | const SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER = 5508001;
  constant SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER (line 190) | const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER = 5508002;
  constant SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER (line 191) | const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER = 5508003;
  constant SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER (line 192) | const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER = 5508004;
  constant SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER (line 193) | const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER = 5508005;
  constant SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER (line 194) | const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER = 5508...
  constant SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER (line 195) | const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER = 5508007;
  constant SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER (line 196) | const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER = 5508008;
  constant SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS (line 197) | const SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIG...
  constant SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING (line 198) | const SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING = 5508010;
  constant SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED (line 199) | const SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED = 5508011;
  constant SOLANA_ERROR__SIGNER__WALLET_ACCOUNT_CANNOT_SIGN_TRANSACTION (line 200) | const SOLANA_ERROR__SIGNER__WALLET_ACCOUNT_CANNOT_SIGN_TRANSACTION = 550...
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__MAXIMUM_LENGTH_EXCEEDED (line 204) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__MAXIMUM_LENGTH_EXCEEDED = 5607000;
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__RESTRICTED_ASCII_BODY_CHARACTER_OUT_OF_RANGE (line 205) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__RESTRICTED_ASCII_BODY_CHARACTER_OU...
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__APPLICATION_DOMAIN_STRING_LENGTH_OUT_OF_RANGE (line 206) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__APPLICATION_DOMAIN_STRING_LENGTH_O...
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__INVALID_APPLICATION_DOMAIN_BYTE_LENGTH (line 207) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__INVALID_APPLICATION_DOMAIN_BYTE_LE...
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_SIGNATURES_MISMATCH (line 208) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_SIGNATURES_MISMATCH = 5607004;
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_REQUIRED_SIGNERS_CANNOT_BE_ZERO (line 209) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_REQUIRED_SIGNERS_CANNOT_BE_ZER...
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__VERSION_NUMBER_NOT_SUPPORTED (line 210) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__VERSION_NUMBER_NOT_SUPPORTED = 560...
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_FORMAT_MISMATCH (line 211) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_FORMAT_MISMATCH = 5607007;
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_LENGTH_MISMATCH (line 212) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_LENGTH_MISMATCH = 5607008;
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_MUST_BE_NON_EMPTY (line 213) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__MESSAGE_MUST_BE_NON_EMPTY = 5607009;
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_ENVELOPE_SIGNATURES_CANNOT_BE_ZERO (line 214) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__NUM_ENVELOPE_SIGNATURES_CANNOT_BE_...
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURES_MISSING (line 215) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURES_MISSING = 5607011;
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__ENVELOPE_SIGNERS_MISMATCH (line 216) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__ENVELOPE_SIGNERS_MISMATCH = 5607012;
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__ADDRESSES_CANNOT_SIGN_OFFCHAIN_MESSAGE (line 217) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__ADDRESSES_CANNOT_SIGN_OFFCHAIN_MES...
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__UNEXPECTED_VERSION (line 218) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__UNEXPECTED_VERSION = 5607014;
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_SORTED (line 219) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_SORTED = 5607015;
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_UNIQUE (line 220) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATORIES_MUST_BE_UNIQUE = 5607016;
  constant SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURE_VERIFICATION_FAILURE (line 221) | const SOLANA_ERROR__OFFCHAIN_MESSAGE__SIGNATURE_VERIFICATION_FAILURE = 5...
  constant SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES (line 225) | const SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES = 5663...
  constant SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE (line 226) | const SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE =...
  constant SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME (line 227) | const SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME = 5663002;
  constant SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME (line 228) | const SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME = 5663003;
  constant SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE (line 229) | const SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE = 5663004;
  constant SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING (line 230) | const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABL...
  constant SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE (line 231) | const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABL...
  constant SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND (line 232) | const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM...
  constant SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING (line 233) | const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING =...
  constant SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING (line 234) | const SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING = 5663009;
  constant SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING (line 235) | const SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING = 5663010;
  constant SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING (line 236) | const SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING = 5663011;
  constant SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING (line 237) | const SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING = 5663012;
  constant SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING (line 238) | const SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_...
  constant SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE (line 239) | const SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUC...
  constant SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION (line 240) | const SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION = 566...
  constant SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES (line 241) | const SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES = 5...
  constant SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH (line 242) | const SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH = 5663017;
  constant SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT (line 243) | const SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT = 5663...
  constant SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT (line 244) | const SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMP...
  constant SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT (line 245) | const SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT = 5663020;
  constant SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_NOT_SUPPORTED (line 246) | const SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_NOT_SUPPORTED = 5663021;
  constant SOLANA_ERROR__TRANSACTION__NONCE_ACCOUNT_CANNOT_BE_IN_LOOKUP_TABLE (line 247) | const SOLANA_ERROR__TRANSACTION__NONCE_ACCOUNT_CANNOT_BE_IN_LOOKUP_TABLE...
  constant SOLANA_ERROR__TRANSACTION__MALFORMED_MESSAGE_BYTES (line 248) | const SOLANA_ERROR__TRANSACTION__MALFORMED_MESSAGE_BYTES = 5663023;
  constant SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_MESSAGE_BYTES (line 249) | const SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_MESSAGE_BYTES ...
  constant SOLANA_ERROR__TRANSACTION__CANNOT_DECODE_EMPTY_TRANSACTION_BYTES (line 250) | const SOLANA_ERROR__TRANSACTION__CANNOT_DECODE_EMPTY_TRANSACTION_BYTES =...
  constant SOLANA_ERROR__TRANSACTION__VERSION_ZERO_MUST_BE_ENCODED_WITH_SIGNATURES_FIRST (line 251) | const SOLANA_ERROR__TRANSACTION__VERSION_ZERO_MUST_BE_ENCODED_WITH_SIGNA...
  constant SOLANA_ERROR__TRANSACTION__SIGNATURE_COUNT_TOO_HIGH_FOR_TRANSACTION_BYTES (line 252) | const SOLANA_ERROR__TRANSACTION__SIGNATURE_COUNT_TOO_HIGH_FOR_TRANSACTIO...
  constant SOLANA_ERROR__TRANSACTION__INVALID_CONFIG_MASK_PRIORITY_FEE_BITS (line 253) | const SOLANA_ERROR__TRANSACTION__INVALID_CONFIG_MASK_PRIORITY_FEE_BITS =...
  constant SOLANA_ERROR__TRANSACTION__INVALID_NONCE_ACCOUNT_INDEX (line 254) | const SOLANA_ERROR__TRANSACTION__INVALID_NONCE_ACCOUNT_INDEX = 5663029;
  constant SOLANA_ERROR__TRANSACTION__INVALID_CONFIG_VALUE_KIND (line 255) | const SOLANA_ERROR__TRANSACTION__INVALID_CONFIG_VALUE_KIND = 5663030;
  constant SOLANA_ERROR__TRANSACTION__INSTRUCTION_HEADERS_PAYLOADS_MISMATCH (line 256) | const SOLANA_ERROR__TRANSACTION__INSTRUCTION_HEADERS_PAYLOADS_MISMATCH =...
  constant SOLANA_ERROR__TRANSACTION__TOO_MANY_SIGNER_ADDRESSES (line 257) | const SOLANA_ERROR__TRANSACTION__TOO_MANY_SIGNER_ADDRESSES = 5663032;
  constant SOLANA_ERROR__TRANSACTION__TOO_MANY_ACCOUNT_ADDRESSES (line 258) | const SOLANA_ERROR__TRANSACTION__TOO_MANY_ACCOUNT_ADDRESSES = 5663033;
  constant SOLANA_ERROR__TRANSACTION__TOO_MANY_INSTRUCTIONS (line 259) | const SOLANA_ERROR__TRANSACTION__TOO_MANY_INSTRUCTIONS = 5663034;
  constant SOLANA_ERROR__TRANSACTION__TOO_MANY_ACCOUNTS_IN_INSTRUCTION (line 260) | const SOLANA_ERROR__TRANSACTION__TOO_MANY_ACCOUNTS_IN_INSTRUCTION = 5663...
  constant SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN (line 265) | const SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN = 7050000;
  constant SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE (line 266) | const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE = 7050001;
  constant SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE (line 267) | const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE = 7050002;
  constant SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND (line 268) | const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND = 7050003;
  constant SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND (line 269) | const SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND = 7050004;
  constant SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE (line 270) | const SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE = 7050...
  constant SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE (line 271) | const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE = 7050006;
  constant SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED (line 272) | const SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED = 7050007;
  constant SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND (line 273) | const SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND = 7050008;
  constant SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP (line 275) | const SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP = 7050009;
  constant SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE (line 276) | const SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE = 7050010;
  constant SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX (line 277) | const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX = 7050011;
  constant SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE (line 278) | const SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE = 7050012;
  constant SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION (line 279) | const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION = 7...
  constant SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE (line 280) | const SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE = 7050014;
  constant SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE (line 281) | const SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE = 7050015;
  constant SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING (line 282) | const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = 7050...
  constant SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT (line 283) | const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT...
  constant SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION (line 284) | const SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION = 7050018;
  constant SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT (line 285) | const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT = 7050019;
  constant SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT (line 286) | const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIM...
  constant SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT (line 287) | const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_L...
  constant SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS (line 288) | const SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS = 7050022;
  constant SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND (line 289) | const SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND = ...
  constant SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER (line 290) | const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNE...
  constant SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA (line 291) | const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA...
  constant SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX (line 292) | const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDE...
  constant SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT (line 293) | const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT = 705...
  constant SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT (line 294) | const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT ...
  constant SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT (line 295) | const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_L...
  constant SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION (line 296) | const SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION = 7050030;
  constant SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT (line 297) | const SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT = 705...
  constant SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED (line 298) | const SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXC...
  constant SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT (line 299) | const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE...
  constant SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED (line 300) | const SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED = 7050034;
  constant SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED (line 301) | const SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RES...
  constant SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION (line 302) | const SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION = 7050036;
  constant SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_CANNOT_ACCOMMODATE_PLAN (line 306) | const SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_CANNOT_ACCOMMODATE_PLAN =...
  constant SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_PACKER_ALREADY_COMPLETE (line 307) | const SOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_PACKER_ALREADY_COMPLETE =...
  constant SOLANA_ERROR__INSTRUCTION_PLANS__EMPTY_INSTRUCTION_PLAN (line 308) | const SOLANA_ERROR__INSTRUCTION_PLANS__EMPTY_INSTRUCTION_PLAN = 7618002;
  constant SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLAN (line 309) | const SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLA...
  constant SOLANA_ERROR__INSTRUCTION_PLANS__NON_DIVISIBLE_TRANSACTION_PLANS_NOT_SUPPORTED (line 310) | const SOLANA_ERROR__INSTRUCTION_PLANS__NON_DIVISIBLE_TRANSACTION_PLANS_N...
  constant SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_SINGLE_TRANSACTION_PLAN_RESULT_NOT_FOUND (line 311) | const SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_SINGLE_TRANSACTION_PLAN_RE...
  constant SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_INSTRUCTION_PLAN (line 312) | const SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_INSTRUCTION_PLAN = 761...
  constant SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN (line 313) | const SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN = 761...
  constant SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN_RESULT (line 314) | const SOLANA_ERROR__INSTRUCTION_PLANS__UNEXPECTED_TRANSACTION_PLAN_RESUL...
  constant SOLANA_ERROR__INSTRUCTION_PLANS__EXPECTED_SUCCESSFUL_TRANSACTION_PLAN_RESULT (line 315) | const SOLANA_ERROR__INSTRUCTION_PLANS__EXPECTED_SUCCESSFUL_TRANSACTION_P...
  constant SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY (line 319) | const SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY = 8078000;
  constant SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH (line 320) | const SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH = 8078001;
  constant SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH (line 321) | const SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH = 8078002;
  constant SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH (line 322) | const SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH = 8078003;
  constant SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH (line 323) | const SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH ...
  constant SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH (line 324) | const SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH = 8078005;
  constant SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH (line 325) | const SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH = 8078006;
  constant SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS (line 326) | const SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS = 8078007;
  constant SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE (line 327) | const SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE = 8078008;
  constant SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT (line 328) | const SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT = 8078009;
  constant SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT (line 329) | const SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT = 8078010;
  constant SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE (line 330) | const SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE = 8078011;
  constant SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE (line 331) | const SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE = 8078012;
  constant SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH (line 332) | const SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH = 8078013;
  constant SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE (line 333) | const SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE = 8078014;
  constant SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT (line 334) | const SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT = 8078015;
  constant SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE (line 335) | const SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE = 8...
  constant SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE (line 336) | const SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE = 8078017;
  constant SOLANA_ERROR__CODECS__INVALID_CONSTANT (line 337) | const SOLANA_ERROR__CODECS__INVALID_CONSTANT = 8078018;
  constant SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE (line 338) | const SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE...
  constant SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL (line 339) | const SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL = 80...
  constant SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES (line 340) | const SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES = 8078021;
  constant SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS (line 341) | const SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINA...
  constant SOLANA_ERROR__CODECS__EXPECTED_DECODER_TO_CONSUME_ENTIRE_BYTE_ARRAY (line 342) | const SOLANA_ERROR__CODECS__EXPECTED_DECODER_TO_CONSUME_ENTIRE_BYTE_ARRA...
  constant SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_VALUE (line 343) | const SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_VALUE = 8078024;
  constant SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_BYTES (line 344) | const SOLANA_ERROR__CODECS__INVALID_PATTERN_MATCH_BYTES = 8078025;
  constant SOLANA_ERROR__FIXED_POINTS__INVALID_TOTAL_BITS (line 348) | const SOLANA_ERROR__FIXED_POINTS__INVALID_TOTAL_BITS = 8090000;
  constant SOLANA_ERROR__FIXED_POINTS__INVALID_FRACTIONAL_BITS (line 349) | const SOLANA_ERROR__FIXED_POINTS__INVALID_FRACTIONAL_BITS = 8090001;
  constant SOLANA_ERROR__FIXED_POINTS__INVALID_DECIMALS (line 350) | const SOLANA_ERROR__FIXED_POINTS__INVALID_DECIMALS = 8090002;
  constant SOLANA_ERROR__FIXED_POINTS__FRACTIONAL_BITS_EXCEED_TOTAL_BITS (line 351) | const SOLANA_ERROR__FIXED_POINTS__FRACTIONAL_BITS_EXCEED_TOTAL_BITS = 80...
  constant SOLANA_ERROR__FIXED_POINTS__VALUE_OUT_OF_RANGE (line 352) | const SOLANA_ERROR__FIXED_POINTS__VALUE_OUT_OF_RANGE = 8090004;
  constant SOLANA_ERROR__FIXED_POINTS__INVALID_STRING (line 353) | const SOLANA_ERROR__FIXED_POINTS__INVALID_STRING = 8090005;
  constant SOLANA_ERROR__FIXED_POINTS__INVALID_ZERO_DENOMINATOR_RATIO (line 354) | const SOLANA_ERROR__FIXED_POINTS__INVALID_ZERO_DENOMINATOR_RATIO = 8090006;
  constant SOLANA_ERROR__FIXED_POINTS__ARITHMETIC_OVERFLOW (line 355) | const SOLANA_ERROR__FIXED_POINTS__ARITHMETIC_OVERFLOW = 8090007;
  constant SOLANA_ERROR__FIXED_POINTS__SHAPE_MISMATCH (line 356) | const SOLANA_ERROR__FIXED_POINTS__SHAPE_MISMATCH = 8090008;
  constant SOLANA_ERROR__FIXED_POINTS__DIVISION_BY_ZERO (line 357) | const SOLANA_ERROR__FIXED_POINTS__DIVISION_BY_ZERO = 8090009;
  constant SOLANA_ERROR__FIXED_POINTS__STRICT_MODE_PRECISION_LOSS (line 358) | const SOLANA_ERROR__FIXED_POINTS__STRICT_MODE_PRECISION_LOSS = 8090010;
  constant SOLANA_ERROR__FIXED_POINTS__MALFORMED_RAW_VALUE (line 359) | const SOLANA_ERROR__FIXED_POINTS__MALFORMED_RAW_VALUE = 8090011;
  constant SOLANA_ERROR__FIXED_POINTS__TOTAL_BITS_NOT_BYTE_ALIGNED (line 360) | const SOLANA_ERROR__FIXED_POINTS__TOTAL_BITS_NOT_BYTE_ALIGNED = 8090012;
  constant SOLANA_ERROR__RPC__INTEGER_OVERFLOW (line 364) | const SOLANA_ERROR__RPC__INTEGER_OVERFLOW = 8100000;
  constant SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN (line 365) | const SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN = 8100001;
  constant SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR (line 366) | const SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR = 8100002;
  constant SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD (line 367) | const SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD = 8100003;
  constant SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN (line 371) | const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN =...
  constant SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID (line 372) | const SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID =...
  constant SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED (line 373) | const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUF...
  constant SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED (line 374) | const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED = 8190003;
  constant SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT (line 375) | const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT = 8190004;
  constant SOLANA_ERROR__SUBSCRIBABLE__RETRY_NOT_SUPPORTED (line 379) | const SOLANA_ERROR__SUBSCRIBABLE__RETRY_NOT_SUPPORTED = 8195000;
  constant SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS (line 383) | const SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS = 8500000;
  constant SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE (line 384) | const SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE = 850...
  constant SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION (line 385) | const SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION = 85...
  constant SOLANA_ERROR__PROGRAM_CLIENTS__UNEXPECTED_RESOLVED_INSTRUCTION_INPUT_TYPE (line 386) | const SOLANA_ERROR__PROGRAM_CLIENTS__UNEXPECTED_RESOLVED_INSTRUCTION_INP...
  constant SOLANA_ERROR__PROGRAM_CLIENTS__RESOLVED_INSTRUCTION_INPUT_MUST_BE_NON_NULL (line 387) | const SOLANA_ERROR__PROGRAM_CLIENTS__RESOLVED_INSTRUCTION_INPUT_MUST_BE_...
  constant SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_ACCOUNT_TYPE (line 388) | const SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_ACCOUNT_TYPE = 8500005;
  constant SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT (line 389) | const SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT = 8500006;
  constant SOLANA_ERROR__WALLET__NOT_CONNECTED (line 393) | const SOLANA_ERROR__WALLET__NOT_CONNECTED = 8900000;
  constant SOLANA_ERROR__WALLET__NO_SIGNER_CONNECTED (line 394) | const SOLANA_ERROR__WALLET__NO_SIGNER_CONNECTED = 8900001;
  constant SOLANA_ERROR__WALLET__SIGNER_NOT_AVAILABLE (line 395) | const SOLANA_ERROR__WALLET__SIGNER_NOT_AVAILABLE = 8900002;
  constant SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING (line 401) | const SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MIS...
  constant SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE (line 402) | const SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_...
  constant SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING (line 403) | const SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE...
  constant SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE (line 404) | const SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE = 990...
  constant SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED (line 405) | const SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEM...
  constant SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_INSTRUCTION_PLAN_KIND (line 406) | const SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_INSTRUCTION_PLAN_KIND =...
  constant SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_TRANSACTION_PLAN_KIND (line 407) | const SOLANA_ERROR__INVARIANT_VIOLATION__INVALID_TRANSACTION_PLAN_KIND =...
  type SolanaErrorCode (line 425) | type SolanaErrorCode =
  type SolanaErrorCodeWithCause (line 739) | type SolanaErrorCodeWithCause =
  type SolanaErrorCodeWithDeprecatedCause (line 747) | type SolanaErrorCodeWithDeprecatedCause =

FILE: packages/errors/src/context.ts
  type BasicInstructionErrorContext (line 233) | type BasicInstructionErrorContext<T extends SolanaErrorCode> = { [P in T...
  type DefaultUnspecifiedErrorContextToUndefined (line 235) | type DefaultUnspecifiedErrorContextToUndefined<T> = {
  type ReadonlyContextValue (line 239) | type ReadonlyContextValue<T> = {
  type TypedArrayMutableProperties (line 243) | type TypedArrayMutableProperties = 'copyWithin' | 'fill' | 'reverse' | '...
  type ReadonlyUint8Array (line 244) | interface ReadonlyUint8Array extends Omit<Uint8Array, TypedArrayMutableP...
  type Bytes (line 249) | type Bytes = number;
  type SolanaErrorContext (line 254) | type SolanaErrorContext = ReadonlyContextValue<
  function decodeEncodedContext (line 968) | function decodeEncodedContext(encodedContext: string): object {
  function encodeValue (line 973) | function encodeValue(value: unknown): string {
  function encodeObjectContextEntry (line 992) | function encodeObjectContextEntry([key, value]: [string, unknown]): `${t...
  function encodeContextObject (line 996) | function encodeContextObject(context: object): string {

FILE: packages/errors/src/error.ts
  type SolanaErrorWithDeprecatedCause (line 12) | interface SolanaErrorWithDeprecatedCause<
  function isSolanaError (line 72) | function isSolanaError<TErrorCode extends SolanaErrorCode>(
  type SolanaErrorCodedContext (line 90) | type SolanaErrorCodedContext = {
  class SolanaError (line 101) | class SolanaError<TErrorCode extends SolanaErrorCode = SolanaErrorCode> ...
    method constructor (line 113) | constructor(

FILE: packages/errors/src/instruction-error.ts
  constant ORDERED_ERROR_NAMES (line 5) | const ORDERED_ERROR_NAMES = [
  function getSolanaErrorFromInstructionError (line 65) | function getSolanaErrorFromInstructionError(

FILE: packages/errors/src/json-rpc-error.ts
  type RpcErrorResponse (line 25) | interface RpcErrorResponse {
  type TransactionError (line 31) | type TransactionError = string | { [key: string]: unknown };
  type RpcSimulateTransactionResult (line 37) | interface RpcSimulateTransactionResult {
  function getSolanaErrorFromJsonRpcError (line 106) | function getSolanaErrorFromJsonRpcError(putativeErrorResponse: unknown):...
  function isRpcErrorResponse (line 162) | function isRpcErrorResponse(value: unknown): value is RpcErrorResponse {

FILE: packages/errors/src/message-formatter.ts
  constant INSTRUCTION_ERROR_RANGE_SIZE (line 5) | const INSTRUCTION_ERROR_RANGE_SIZE = 1000;
  type StateType (line 7) | const enum StateType {
  type State (line 12) | type State = Readonly<{
  constant START_INDEX (line 16) | const START_INDEX = 'i';
  constant TYPE (line 17) | const TYPE = 't';
  function getHumanReadableErrorMessage (line 19) | function getHumanReadableErrorMessage<TErrorCode extends SolanaErrorCode>(
  function getErrorMessage (line 97) | function getErrorMessage<TErrorCode extends SolanaErrorCode>(

FILE: packages/errors/src/rpc-enum-errors.ts
  type Config (line 6) | type Config = Readonly<{
  function getSolanaErrorFromRpcError (line 34) | function getSolanaErrorFromRpcError(

FILE: packages/errors/src/simulation-errors.ts
  function unwrapSimulationError (line 38) | function unwrapSimulationError(error: unknown): unknown {

FILE: packages/errors/src/stack-trace.ts
  function safeCaptureStackTrace (line 1) | function safeCaptureStackTrace(...args: Parameters<typeof Error.captureS...

FILE: packages/errors/src/transaction-error.ts
  constant ORDERED_ERROR_NAMES (line 18) | const ORDERED_ERROR_NAMES = [
  function getSolanaErrorFromTransactionError (line 61) | function getSolanaErrorFromTransactionError(transactionError: string | {...

FILE: packages/event-target-impl/src/index.node.ts
  method constructor (line 4) | constructor(...args: ConstructorParameters<typeof globalThis.AbortContro...
  method constructor (line 11) | constructor(...args: ConstructorParameters<typeof globalThis.EventTarget...

FILE: packages/event-target-impl/tsup.config.ts
  method outExtension (line 9) | outExtension({ format }) {

FILE: packages/fast-stable-stringify/src/__tests__/index-test.ts
  class ImplementingToJSON (line 5) | class ImplementingToJSON {
    method toJSON (line 6) | toJSON() {
  class NotImplementingToJSON (line 11) | class NotImplementingToJSON {}

FILE: packages/fast-stable-stringify/src/index.ts
  function stringify (line 36) | function stringify(val: unknown, isArrayProp: boolean) {

FILE: packages/fetch-impl/src/__benchmarks__/run.ts
  constant NUM_CONCURRENT_REQUESTS (line 9) | const NUM_CONCURRENT_REQUESTS = 1024;
  constant URL (line 10) | const URL = process.argv[2];
  function createDispatcher (line 18) | function createDispatcher(options: Agent.Options) {
  function getTestInit (line 28) | function getTestInit() {
  function makeConcurrentRequests (line 42) | async function makeConcurrentRequests(num: number = NUM_CONCURRENT_REQUE...
  method beforeEach (line 55) | beforeEach() {

FILE: packages/fixed-points/src/assertions.ts
  type FixedPointKind (line 17) | type FixedPointKind = 'binaryFixedPoint' | 'decimalFixedPoint';
  function getRawRange (line 31) | function getRawRange(signedness: Signedness, totalBits: number): { max: ...
  function assertValidTotalBits (line 45) | function assertValidTotalBits(kind: FixedPointKind, totalBits: unknown):...
  function assertValidFractionalBits (line 60) | function assertValidFractionalBits(fractionalBits: unknown): asserts fra...
  function assertValidDecimals (line 74) | function assertValidDecimals(decimals: unknown): asserts decimals is num...
  function assertFractionalBitsFitInTotalBits (line 89) | function assertFractionalBitsFitInTotalBits(fractionalBits: number, tota...
  function assertTotalBitsIsByteAligned (line 108) | function assertTotalBitsIsByteAligned(kind: FixedPointKind, totalBits: n...
  function assertRawFitsInRange (line 124) | function assertRawFitsInRange(
  type FixedPointShape (line 151) | type FixedPointShape = {
  type ExpectedFixedPointShape (line 168) | type ExpectedFixedPointShape = {
  function describeShape (line 183) | function describeShape(value: unknown): FixedPointShape {
  function assertShapeMatches (line 214) | function assertShapeMatches(
  function assertRawIsBigint (line 255) | function assertRawIsBigint(kind: FixedPointKind, value: unknown): assert...
  function assertNoArithmeticOverflow (line 273) | function assertNoArithmeticOverflow(
  function assertNoDivisionByZero (line 300) | function assertNoDivisionByZero(

FILE: packages/fixed-points/src/binary/arithmetics.ts
  function addBinaryFixedPoint (line 23) | function addBinaryFixedPoint<
  function subtractBinaryFixedPoint (line 53) | function subtractBinaryFixedPoint<
  function multiplyBinaryFixedPoint (line 94) | function multiplyBinaryFixedPoint<
  function divideBinaryFixedPoint (line 140) | function divideBinaryFixedPoint<
  function negateBinaryFixedPoint (line 176) | function negateBinaryFixedPoint<TTotalBits extends number, TFractionalBi...
  function absoluteBinaryFixedPoint (line 199) | function absoluteBinaryFixedPoint<

FILE: packages/fixed-points/src/binary/codecs.ts
  function getBinaryFixedPointEncoder (line 44) | function getBinaryFixedPointEncoder<
  function getBinaryFixedPointDecoder (line 94) | function getBinaryFixedPointDecoder<
  function getBinaryFixedPointCodec (line 144) | function getBinaryFixedPointCodec<

FILE: packages/fixed-points/src/binary/comparisons.ts
  function cmpBinaryFixedPoint (line 29) | function cmpBinaryFixedPoint<TFractionalBits extends number>(
  function eqBinaryFixedPoint (line 46) | function eqBinaryFixedPoint<TFractionalBits extends number>(
  function ltBinaryFixedPoint (line 58) | function ltBinaryFixedPoint<TFractionalBits extends number>(
  function lteBinaryFixedPoint (line 70) | function lteBinaryFixedPoint<TFractionalBits extends number>(
  function gtBinaryFixedPoint (line 82) | function gtBinaryFixedPoint<TFractionalBits extends number>(
  function gteBinaryFixedPoint (line 94) | function gteBinaryFixedPoint<TFractionalBits extends number>(

FILE: packages/fixed-points/src/binary/conversions.ts
  function binaryFixedPointToBase10 (line 36) | function binaryFixedPointToBase10(value: BinaryFixedPoint<Signedness, nu...
  function toUnsignedBinaryFixedPoint (line 64) | function toUnsignedBinaryFixedPoint<TTotalBits extends number, TFraction...
  function toSignedBinaryFixedPoint (line 95) | function toSignedBinaryFixedPoint<TTotalBits extends number, TFractional...
  function rescaleBinaryFixedPoint (line 128) | function rescaleBinaryFixedPoint<

FILE: packages/fixed-points/src/binary/core.ts
  type BinaryFixedPoint (line 36) | type BinaryFixedPoint<
  function createBinaryFixedPoint (line 48) | function createBinaryFixedPoint<
  function binaryFixedPoint (line 87) | function binaryFixedPoint<
  function rawBinaryFixedPoint (line 134) | function rawBinaryFixedPoint<
  function ratioBinaryFixedPoint (line 175) | function ratioBinaryFixedPoint<

FILE: packages/fixed-points/src/binary/formatting.ts
  function binaryFixedPointToString (line 32) | function binaryFixedPointToString(
  function formatBinaryFixedPoint (line 70) | function formatBinaryFixedPoint(
  function binaryFixedPointToNumber (line 96) | function binaryFixedPointToNumber(value: BinaryFixedPoint<Signedness, nu...

FILE: packages/fixed-points/src/binary/guards.ts
  function assertIsBinaryFixedPoint (line 33) | function assertIsBinaryFixedPoint<
  function isBinaryFixedPoint (line 80) | function isBinaryFixedPoint<

FILE: packages/fixed-points/src/codecs.ts
  type FixedPointCodecConfig (line 8) | type FixedPointCodecConfig = {
  type TotalBitsToBytesTable (line 26) | type TotalBitsToBytesTable = {
  type BytesForTotalBits (line 69) | type BytesForTotalBits<TTotalBits extends number> = TTotalBits extends k...
  constant MASK_64 (line 73) | const MASK_64 = 0xffffffffffffffffn;
  constant MASK_32 (line 74) | const MASK_32 = 0xffffffffn;
  constant MASK_16 (line 75) | const MASK_16 = 0xffffn;
  constant MASK_8 (line 76) | const MASK_8 = 0xffn;
  function writeRawBigInt (line 93) | function writeRawBigInt(
  function readRawBigInt (line 158) | function readRawBigInt(

FILE: packages/fixed-points/src/decimal/arithmetics.ts
  function addDecimalFixedPoint (line 23) | function addDecimalFixedPoint<
  function subtractDecimalFixedPoint (line 53) | function subtractDecimalFixedPoint<
  function multiplyDecimalFixedPoint (line 95) | function multiplyDecimalFixedPoint<
  function divideDecimalFixedPoint (line 142) | function divideDecimalFixedPoint<
  function negateDecimalFixedPoint (line 178) | function negateDecimalFixedPoint<TTotalBits extends number, TDecimals ex...
  function absoluteDecimalFixedPoint (line 201) | function absoluteDecimalFixedPoint<

FILE: packages/fixed-points/src/decimal/codecs.ts
  function getDecimalFixedPointEncoder (line 43) | function getDecimalFixedPointEncoder<
  function getDecimalFixedPointDecoder (line 92) | function getDecimalFixedPointDecoder<
  function getDecimalFixedPointCodec (line 141) | function getDecimalFixedPointCodec<

FILE: packages/fixed-points/src/decimal/comparisons.ts
  function cmpDecimalFixedPoint (line 29) | function cmpDecimalFixedPoint<TDecimals extends number>(
  function eqDecimalFixedPoint (line 46) | function eqDecimalFixedPoint<TDecimals extends number>(
  function ltDecimalFixedPoint (line 58) | function ltDecimalFixedPoint<TDecimals extends number>(
  function lteDecimalFixedPoint (line 70) | function lteDecimalFixedPoint<TDecimals extends number>(
  function gtDecimalFixedPoint (line 82) | function gtDecimalFixedPoint<TDecimals extends number>(
  function gteDecimalFixedPoint (line 94) | function gteDecimalFixedPoint<TDecimals extends number>(

FILE: packages/fixed-points/src/decimal/conversions.ts
  function toUnsignedDecimalFixedPoint (line 30) | function toUnsignedDecimalFixedPoint<TTotalBits extends number, TDecimal...
  function toSignedDecimalFixedPoint (line 61) | function toSignedDecimalFixedPoint<TTotalBits extends number, TDecimals ...
  function rescaleDecimalFixedPoint (line 95) | function rescaleDecimalFixedPoint<

FILE: packages/fixed-points/src/decimal/core.ts
  type DecimalFixedPoint (line 29) | type DecimalFixedPoint<TSignedness extends Signedness, TTotalBits extend...
  function createDecimalFixedPoint (line 37) | function createDecimalFixedPoint<TSignedness extends Signedness, TTotalB...
  function decimalFixedPoint (line 72) | function decimalFixedPoint<TSignedness extends Signedness, TTotalBits ex...
  function rawDecimalFixedPoint (line 116) | function rawDecimalFixedPoint<
  function ratioDecimalFixedPoint (line 156) | function ratioDecimalFixedPoint<

FILE: packages/fixed-points/src/decimal/formatting.ts
  function decimalFixedPointToString (line 30) | function decimalFixedPointToString(
  function formatDecimalFixedPoint (line 66) | function formatDecimalFixedPoint(
  function decimalFixedPointToNumber (line 92) | function decimalFixedPointToNumber(value: DecimalFixedPoint<Signedness, ...

FILE: packages/fixed-points/src/decimal/guards.ts
  function assertIsDecimalFixedPoint (line 27) | function assertIsDecimalFixedPoint<
  function isDecimalFixedPoint (line 70) | function isDecimalFixedPoint<

FILE: packages/fixed-points/src/formatting.ts
  type FixedPointToStringOptions (line 22) | type FixedPointToStringOptions = {
  function applyDecimalsOption (line 35) | function applyDecimalsOption(
  function formatScaledBigint (line 64) | function formatScaledBigint(raw: bigint, decimals: number, padTrailingZe...

FILE: packages/fixed-points/src/parsing.ts
  function parseDecimalString (line 20) | function parseDecimalString(

FILE: packages/fixed-points/src/rounding.ts
  type RoundingMode (line 20) | type RoundingMode = 'ceil' | 'floor' | 'round' | 'strict' | 'trunc';
  function roundDivision (line 37) | function roundDivision(

FILE: packages/fixed-points/src/signedness.ts
  type Signedness (line 12) | type Signedness = 'signed' | 'unsigned';

FILE: packages/fs-impl/src/index.browser.ts
  function throwUnsupported (line 6) | function throwUnsupported(operation: string): never {

FILE: packages/fs-impl/tsup.config.ts
  method outExtension (line 9) | outExtension({ format }) {

FILE: packages/functional/src/__tests__/pipe-test.ts
  function combine (line 92) | function combine<T extends object, U extends object>(a: T, b: U): T & U {
  function combine (line 110) | function combine<T>(a: T[], b: T[]): T[] {
  function combine (line 128) | function combine(a: string, b: string): string {
  function addOrAppend (line 146) | function addOrAppend(obj: { a: number; b?: string; c?: boolean; d?: stri...
  function dropArray (line 153) | function dropArray(obj: { a: number; b?: string; c?: boolean; d?: string...
  function throws (line 246) | function throws(_a: string): string {

FILE: packages/functional/src/__typetests__/pipe-typetest.ts
  function assertNotAProperty (line 3) | function assertNotAProperty<T extends object, TPropName extends string>(
  function addOrAppend (line 236) | function addOrAppend(obj: { a: number; b?: string; c?: boolean; d?: stri...
  function dropArray (line 243) | function dropArray(obj: { a: number; b?: string; c?: boolean; d?: string...

FILE: packages/functional/src/pipe.ts
  function pipe (line 234) | function pipe<TInitial>(init: TInitial, ...fns: CallableFunction[]) {

FILE: packages/instruction-plans/src/__tests__/__setup__.ts
  constant MINIMUM_INSTRUCTION_SIZE (line 18) | const MINIMUM_INSTRUCTION_SIZE = 35;
  function createSingleInstructionAtATimeMessagePackerInstructionPlan (line 26) | function createSingleInstructionAtATimeMessagePackerInstructionPlan(
  constant FOREVER_PROMISE (line 49) | const FOREVER_PROMISE = new Promise(() => {
  function createMessage (line 53) | function createMessage<TId extends string>(
  function createTransaction (line 63) | function createTransaction<TId extends string>(id: TId): Transaction & {...
  function instructionFactory (line 71) | function instructionFactory(baseSeed?: string) {
  function transactionPercentFactory (line 88) | function transactionPercentFactory(
  function createMessagePackerInstructionPlan (line 96) | function createMessagePackerInstructionPlan(

FILE: packages/instruction-plans/src/__tests__/append-instruction-plan-test.ts
  function createInstruction (line 19) | function createInstruction<TId extends string>(id: TId): Instruction & {...

FILE: packages/instruction-plans/src/__tests__/instruction-plan-input-test.ts
  function createInstruction (line 19) | function createInstruction<TId extends string>(id: TId): Instruction & {...

FILE: packages/instruction-plans/src/__tests__/instruction-plan-test.ts
  function createInstruction (line 51) | function createInstruction<TId extends string>(id: TId): Instruction & {...

FILE: packages/instruction-plans/src/__tests__/transaction-plan-errors-test.ts
  function createPreflightError (line 55) | function createPreflightError(

FILE: packages/instruction-plans/src/__tests__/transaction-plan-executor-test.ts
  function expectFailedToExecute (line 32) | async function expectFailedToExecute(
  function forwardId (line 52) | function forwardId(_: unknown, message: TransactionMessage & Transaction...

FILE: packages/instruction-plans/src/__tests__/transaction-planner-test.ts
  function createMockTransactionMessage (line 46) | function createMockTransactionMessage(): TransactionMessage & Transactio...
  function getHelpers (line 50) | function getHelpers(createTransactionMessage: () => TransactionMessage &...
  function makeAddress (line 104) | function makeAddress(i: number): Address {
  function makeAddresses (line 107) | function makeAddresses(n: number, offset = 0): Address[] {
  function runAndAbortPlanner (line 1875) | function runAndAbortPlanner(planner: TransactionPlanner, plan?: Instruct...

FILE: packages/instruction-plans/src/__typetests__/append-instruction-plan-typetest.ts
  type InstructionA (line 21) | type InstructionA = Instruction & { identifier: 'A' };

FILE: packages/instruction-plans/src/__typetests__/transaction-plan-executor-typetest.ts
  type CustomContext (line 36) | type CustomContext = { customData: string };

FILE: packages/instruction-plans/src/__typetests__/transaction-plan-result-typetest.ts
  type CustomContext (line 49) | type CustomContext = { customData: string };

FILE: packages/instruction-plans/src/append-instruction-plan.ts
  type AppendTransactionMessageInstructions (line 17) | type AppendTransactionMessageInstructions<TTransactionMessage extends Tr...
  function appendTransactionMessageInstructionPlan (line 60) | function appendTransactionMessageInstructionPlan<

FILE: packages/instruction-plans/src/instruction-plan-input.ts
  type InstructionPlanInput (line 46) | type InstructionPlanInput = Instruction | InstructionPlan | readonly (In...
  function parseInstructionPlanInput (line 96) | function parseInstructionPlanInput(input: InstructionPlanInput): Instruc...
  type TransactionPlanInput (line 135) | type TransactionPlanInput =
  function parseTransactionPlanInput (line 188) | function parseTransactionPlanInput(input: TransactionPlanInput): Transac...
  function parseInstructionOrTransactionPlanInput (line 231) | function parseInstructionOrTransactionPlanInput(
  function isTransactionPlanInput (line 246) | function isTransactionPlanInput(value: unknown): value is SingleTransact...
  function isTransactionMessage (line 250) | function isTransactionMessage(value: unknown): value is SingleTransactio...

FILE: packages/instruction-plans/src/instruction-plan.ts
  type InstructionPlan (line 48) | type InstructionPlan =
  type SequentialInstructionPlan (line 92) | type SequentialInstructionPlan = Readonly<{
  type ParallelInstructionPlan (line 128) | type ParallelInstructionPlan = Readonly<{
  type SingleInstructionPlan (line 149) | type SingleInstructionPlan<TInstruction extends Instruction = Instructio...
  type MessagePackerInstructionPlan (line 209) | type MessagePackerInstructionPlan = Readonly<{
  type MessagePacker (line 243) | type MessagePacker = Readonly<{
  function parallelInstructionPlan (line 280) | function parallelInstructionPlan(plans: (Instruction | InstructionPlan)[...
  function sequentialInstructionPlan (line 309) | function sequentialInstructionPlan(
  function nonDivisibleSequentialInstructionPlan (line 341) | function nonDivisibleSequentialInstructionPlan(
  function singleInstructionPlan (line 362) | function singleInstructionPlan(instruction: Instruction): SingleInstruct...
  function parseSingleInstructionPlans (line 366) | function parseSingleInstructionPlans(plans: (Instruction | InstructionPl...
  function isInstructionPlan (line 395) | function isInstructionPlan(value: unknown): value is InstructionPlan {
  function isSingleInstructionPlan (line 423) | function isSingleInstructionPlan(plan: InstructionPlan): plan is SingleI...
  function assertIsSingleInstructionPlan (line 445) | function assertIsSingleInstructionPlan(plan: InstructionPlan): asserts p...
  function isMessagePackerInstructionPlan (line 473) | function isMessagePackerInstructionPlan(plan: InstructionPlan): plan is ...
  function assertIsMessagePackerInstructionPlan (line 495) | function assertIsMessagePackerInstructionPlan(
  function isSequentialInstructionPlan (line 525) | function isSequentialInstructionPlan(plan: InstructionPlan): plan is Seq...
  function assertIsSequentialInstructionPlan (line 547) | function assertIsSequentialInstructionPlan(plan: InstructionPlan): asser...
  function isNonDivisibleSequentialInstructionPlan (line 578) | function isNonDivisibleSequentialInstructionPlan(
  function assertIsNonDivisibleSequentialInstructionPlan (line 605) | function assertIsNonDivisibleSequentialInstructionPlan(
  function isParallelInstructionPlan (line 635) | function isParallelInstructionPlan(plan: InstructionPlan): plan is Paral...
  function assertIsParallelInstructionPlan (line 657) | function assertIsParallelInstructionPlan(plan: InstructionPlan): asserts...
  function findInstructionPlan (line 710) | function findInstructionPlan(
  function everyInstructionPlan (line 771) | function everyInstructionPlan(
  function transformInstructionPlan (line 829) | function transformInstructionPlan(
  function flattenInstructionPlan (line 876) | function flattenInstructionPlan(
  function getLinearMessagePackerInstructionPlan (line 916) | function getLinearMessagePackerInstructionPlan({
  function getMessagePackerInstructionPlanFromInstructions (line 990) | function getMessagePackerInstructionPlanFromInstructions<TInstruction ex...
  constant REALLOC_LIMIT (line 1034) | const REALLOC_LIMIT = 10_240;
  function getReallocMessagePackerInstructionPlan (line 1052) | function getReallocMessagePackerInstructionPlan({

FILE: packages/instruction-plans/src/transaction-plan-errors.ts
  type PreflightData (line 20) | type PreflightData = Omit<RpcSimulateTransactionResult, 'err'>;
  function createFailedToSendTransactionError (line 55) | function createFailedToSendTransactionError(
  function createFailedToSendTransactionsError (line 124) | function createFailedToSendTransactionsError(
  function createFailedToExecuteTransactionPlanError (line 198) | function createFailedToExecuteTransactionPlanError(
  function unwrapErrorWithPreflightData (line 216) | function unwrapErrorWithPreflightData(error: Error): {
  function findErrorFromTransactionPlanResult (line 237) | function findErrorFromTransactionPlanResult(result: TransactionPlanResul...
  function formatLogSnippet (line 249) | function formatLogSnippet(logs: readonly string[] | undefined): string {
  function getFailedIndicator (line 257) | function getFailedIndicator(isPreflight: boolean, signature: string | un...

FILE: packages/instruction-plans/src/transaction-plan-executor.ts
  type TransactionPlanExecutor (line 48) | type TransactionPlanExecutor<TContext extends TransactionPlanResultConte...
  type ExecuteTransactionMessage (line 53) | type ExecuteTransactionMessage<TContext extends TransactionPlanResultCon...
  type TransactionPlanExecutorConfig (line 64) | type TransactionPlanExecutorConfig<
  function createTransactionPlanExecutor (line 121) | function createTransactionPlanExecutor<
  type TraverseConfig (line 151) | type TraverseConfig<TContext extends TransactionPlanResultContext> = Tra...
  function traverse (line 156) | async function traverse<TContext extends TransactionPlanResultContext>(
  function traverseSequential (line 174) | async function traverseSequential<TContext extends TransactionPlanResult...
  function traverseParallel (line 192) | async function traverseParallel<TContext extends TransactionPlanResultCo...
  function traverseSingle (line 200) | async function traverseSingle<TContext extends TransactionPlanResultCont...
  function assertDivisibleSequentialPlansOnly (line 229) | function assertDivisibleSequentialPlansOnly(transactionPlan: Transaction...
  function passthroughFailedTransactionPlanExecution (line 296) | async function passthroughFailedTransactionPlanExecution(

FILE: packages/instruction-plans/src/transaction-plan-result.ts
  type TransactionPlanResult (line 34) | type TransactionPlanResult<
  type SuccessfulTransactionPlanResult (line 66) | type SuccessfulTransactionPlanResult<
  type TransactionPlanResultContext (line 93) | type TransactionPlanResultContext = { [key: number | string | symbol]: u...
  type BaseTransactionPlanResultContext (line 106) | interface BaseTransactionPlanResultContext {
  type SuccessfulBaseTransactionPlanResultContext (line 122) | interface SuccessfulBaseTransactionPlanResultContext extends BaseTransac...
  type SequentialTransactionPlanResult (line 162) | type SequentialTransactionPlanResult<
  type ParallelTransactionPlanResult (line 200) | type ParallelTransactionPlanResult<
  type SingleTransactionPlanResult (line 258) | type SingleTransactionPlanResult<
  type SuccessfulSingleTransactionPlanResult (line 299) | type SuccessfulSingleTransactionPlanResult<
  type FailedSingleTransactionPlanResult (line 343) | type FailedSingleTransactionPlanResult<
  type CanceledSingleTransactionPlanResult (line 384) | type CanceledSingleTransactionPlanResult<
  function sequentialTransactionPlanResult (line 417) | function sequentialTransactionPlanResult<
  function nonDivisibleSequentialTransactionPlanResult (line 444) | function nonDivisibleSequentialTransactionPlanResult<
  function parallelTransactionPlanResult (line 470) | function parallelTransactionPlanResult<
  function successfulSingleTransactionPlanResultFromTransaction (line 500) | function successfulSingleTransactionPlanResultFromTransaction<
  function successfulSingleTransactionPlanResult (line 542) | function successfulSingleTransactionPlanResult<
  function failedSingleTransactionPlanResult (line 585) | function failedSingleTransactionPlanResult<
  function canceledSingleTransactionPlanResult (line 622) | function canceledSingleTransactionPlanResult<
  function isTransactionPlanResult (line 664) | function isTransactionPlanResult(value: unknown): value is TransactionPl...
  function isSingleTransactionPlanResult (line 692) | function isSingleTransactionPlanResult<
  function assertIsSingleTransactionPlanResult (line 722) | function assertIsSingleTransactionPlanResult<
  function isSuccessfulSingleTransactionPlanResult (line 758) | function isSuccessfulSingleTransactionPlanResult<
  function assertIsSuccessfulSingleTransactionPlanResult (line 786) | function assertIsSuccessfulSingleTransactionPlanResult<
  function isFailedSingleTransactionPlanResult (line 820) | function isFailedSingleTransactionPlanResult<
  function assertIsFailedSingleTransactionPlanResult (line 848) | function assertIsFailedSingleTransactionPlanResult<
  function isCanceledSingleTransactionPlanResult (line 882) | function isCanceledSingleTransactionPlanResult<
  function assertIsCanceledSingleTransactionPlanResult (line 910) | function assertIsCanceledSingleTransactionPlanResult<
  function isSequentialTransactionPlanResult (line 944) | function isSequentialTransactionPlanResult<
  function assertIsSequentialTransactionPlanResult (line 976) | function assertIsSequentialTransactionPlanResult<
  function isNonDivisibleSequentialTransactionPlanResult (line 1017) | function isNonDivisibleSequentialTransactionPlanResult<
  function assertIsNonDivisibleSequentialTransactionPlanResult (line 1052) | function assertIsNonDivisibleSequentialTransactionPlanResult<
  function isParallelTransactionPlanResult (line 1090) | function isParallelTransactionPlanResult<
  function assertIsParallelTransactionPlanResult (line 1122) | function assertIsParallelTransactionPlanResult<
  function isSuccessfulTransactionPlanResult (line 1174) | function isSuccessfulTransactionPlanResult<
  function assertIsSuccessfulTransactionPlanResult (line 1220) | function assertIsSuccessfulTransactionPlanResult<
  function findTransactionPlanResult (line 1268) | function findTransactionPlanResult<
  function getFirstFailedSingleTransactionPlanResult (line 1327) | function getFirstFailedSingleTransactionPlanResult<
  function everyTransactionPlanResult (line 1401) | function everyTransactionPlanResult<
  function transformTransactionPlanResult (line 1457) | function transformTransactionPlanResult(
  function flattenTransactionPlanResult (line 1505) | function flattenTransactionPlanResult<
  type TransactionPlanResultSummary (line 1527) | type TransactionPlanResultSummary<
  function summarizeTransactionPlanResult (line 1546) | function summarizeTransactionPlanResult<

FILE: packages/instruction-plans/src/transaction-plan.ts
  type TransactionPlan (line 33) | type TransactionPlan = ParallelTransactionPlan | SequentialTransactionPl...
  type SequentialTransactionPlan (line 74) | type SequentialTransactionPlan = Readonly<{
  type ParallelTransactionPlan (line 112) | type ParallelTransactionPlan = Readonly<{
  type SingleTransactionPlan (line 133) | type SingleTransactionPlan<
  function parallelTransactionPlan (line 165) | function parallelTransactionPlan(
  function sequentialTransactionPlan (line 194) | function sequentialTransactionPlan(
  function nonDivisibleSequentialTransactionPlan (line 228) | function nonDivisibleSequentialTransactionPlan(
  function singleTransactionPlan (line 250) | function singleTransactionPlan<
  function parseSingleTransactionPlans (line 257) | function parseSingleTransactionPlans(
  function isTransactionPlan (line 288) | function isTransactionPlan(value: unknown): value is TransactionPlan {
  function isSingleTransactionPlan (line 316) | function isSingleTransactionPlan(plan: TransactionPlan): plan is SingleT...
  function assertIsSingleTransactionPlan (line 338) | function assertIsSingleTransactionPlan(plan: TransactionPlan): asserts p...
  function isSequentialTransactionPlan (line 366) | function isSequentialTransactionPlan(plan: TransactionPlan): plan is Seq...
  function assertIsSequentialTransactionPlan (line 388) | function assertIsSequentialTransactionPlan(plan: TransactionPlan): asser...
  function isNonDivisibleSequentialTransactionPlan (line 419) | function isNonDivisibleSequentialTransactionPlan(
  function assertIsNonDivisibleSequentialTransactionPlan (line 446) | function assertIsNonDivisibleSequentialTransactionPlan(
  function isParallelTransactionPlan (line 476) | function isParallelTransactionPlan(plan: TransactionPlan): plan is Paral...
  function assertIsParallelTransactionPlan (line 498) | function assertIsParallelTransactionPlan(plan: TransactionPlan): asserts...
  function flattenTransactionPlan (line 537) | function flattenTransactionPlan(transactionPlan: TransactionPlan): Singl...
  function findTransactionPlan (line 587) | function findTransactionPlan(
  function everyTransactionPlan (line 648) | function everyTransactionPlan(
  function transformTransactionPlan (line 706) | function transformTransactionPlan(

FILE: packages/instruction-plans/src/transaction-planner.ts
  type TransactionPlanner (line 47) | type TransactionPlanner = (
  type Mutable (line 52) | type Mutable<T> = { -readonly [P in keyof T]: T[P] };
  type CreateTransactionMessage (line 54) | type CreateTransactionMessage = (config?: {
  type OnTransactionMessageUpdated (line 60) | type OnTransactionMessageUpdated = (
  type TransactionPlannerConfig (line 72) | type TransactionPlannerConfig = {
  function createTransactionPlanner (line 106) | function createTransactionPlanner(config: TransactionPlannerConfig): Tra...
  type MutableTransactionPlan (line 124) | type MutableTransactionPlan = Mutable<TransactionPlan>;
  type MutableSingleTransactionPlan (line 125) | type MutableSingleTransactionPlan = Mutable<SingleTransactionPlan>;
  type TraverseContext (line 127) | type TraverseContext = {
  function traverse (line 135) | async function traverse(
  function traverseSequential (line 156) | async function traverseSequential(
  function traverseParallel (line 215) | async function traverseParallel(
  function traverseSingle (line 250) | async function traverseSingle(
  function traverseMessagePacker (line 264) | async function traverseMessagePacker(
  function getSequentialCandidate (line 298) | function getSequentialCandidate(latestPlan: MutableTransactionPlan): Mut...
  function getParallelCandidates (line 308) | function getParallelCandidates(latestPlan: TransactionPlan): MutableSing...
  function selectAndMutateCandidate (line 312) | async function selectAndMutateCandidate(
  function createNewMessage (line 350) | async function createNewMessage(
  function freezeTransactionPlan (line 377) | function freezeTransactionPlan(plan: MutableTransactionPlan): Transactio...
  function fitEntirePlanInsideMessage (line 394) | function fitEntirePlanInsideMessage(

FILE: packages/instructions/src/__typetests__/instruction-typetest.ts
  type MyAddress (line 57) | type MyAddress = typeof myAddress;

FILE: packages/instructions/src/accounts.ts
  type AccountMeta (line 23) | interface AccountMeta<TAddress extends string = string> {
  type ReadonlyAccount (line 31) | type ReadonlyAccount<TAddress extends string = string> = AccountMeta<TAd...
  type WritableAccount (line 37) | type WritableAccount<TAddress extends string = string> = AccountMeta<TAd...
  type ReadonlySignerAccount (line 41) | type ReadonlySignerAccount<TAddress extends string = string> = AccountMe...
  type WritableSignerAccount (line 47) | type WritableSignerAccount<TAddress extends string = string> = AccountMe...
  type AccountLookupMeta (line 72) | interface AccountLookupMeta<TAddress extends string = string, TLookupTab...
  type ReadonlyAccountLookup (line 82) | type ReadonlyAccountLookup<
  type WritableAccountLookup (line 89) | type WritableAccountLookup<

FILE: packages/instructions/src/instruction.ts
  type Instruction (line 20) | interface Instruction<
  type InstructionWithAccounts (line 42) | interface InstructionWithAccounts<
  function isInstructionForProgram (line 48) | function isInstructionForProgram<TProgramAddress extends string, TInstru...
  function assertIsInstructionForProgram (line 55) | function assertIsInstructionForProgram<TProgramAddress extends string, T...
  function isInstructionWithAccounts (line 67) | function isInstructionWithAccounts<
  function assertIsInstructionWithAccounts (line 74) | function assertIsInstructionWithAccounts<
  type InstructionWithData (line 108) | interface InstructionWithData<TData extends ReadonlyUint8Array> extends ...
  function isInstructionWithData (line 112) | function isInstructionWithData<
  function assertIsInstructionWithData (line 119) | function assertIsInstructionWithData<

FILE: packages/instructions/src/roles.ts
  type AccountRole (line 15) | enum AccountRole {
  constant IS_SIGNER_BITMASK (line 24) | const IS_SIGNER_BITMASK = 0b10;
  constant IS_WRITABLE_BITMASK (line 25) | const IS_WRITABLE_BITMASK = 0b01;
  function downgradeRoleToNonSigner (line 33) | function downgradeRoleToNonSigner(role: AccountRole): AccountRole {
  function downgradeRoleToReadonly (line 43) | function downgradeRoleToReadonly(role: AccountRole): AccountRole {
  function isSignerRole (line 51) | function isSignerRole(role: AccountRole): role is AccountRole.READONLY_S...
  function isWritableRole (line 59) | function isWritableRole(role: AccountRole): role is AccountRole.WRITABLE...
  function mergeRoles (line 83) | function mergeRoles(roleA: AccountRole, roleB: AccountRole): AccountRole {
  function upgradeRoleToSigner (line 93) | function upgradeRoleToSigner(role: AccountRole): AccountRole {
  function upgradeRoleToWritable (line 103) | function upgradeRoleToWritable(role: AccountRole): AccountRole {

FILE: packages/keys/src/__benchmarks__/run.ts
  function generateKeyPairForTest (line 12) | async function generateKeyPairForTest() {
  function generateRandomBytesForTest (line 17) | function generateRandomBytesForTest() {
  function generateSignatureForBytes (line 23) | async function generateSignatureForBytes() {
  method beforeEach (line 30) | async beforeEach() {
  method beforeEach (line 36) | async beforeEach() {

FILE: packages/keys/src/__tests__/grind-keypair-test.ts
  function getAddressFromKeyPair (line 16) | async function getAddressFromKeyPair(keyPair: CryptoKeyPair): Promise<st...

FILE: packages/keys/src/__tests__/key-pair-test.ts
  constant MOCK_KEY_BYTES (line 10) | const MOCK_KEY_BYTES = new Uint8Array([
  constant MOCK_INVALID_KEY_BYTES (line 17) | const MOCK_INVALID_KEY_BYTES = new Uint8Array([

FILE: packages/keys/src/__tests__/private-key-test.ts
  constant MOCK_DATA (line 3) | const MOCK_DATA = new Uint8Array([1, 2, 3]);
  constant MOCK_DATA_SIGNATURE (line 4) | const MOCK_DATA_SIGNATURE = new Uint8Array([
  constant MOCK_PRIVATE_KEY_BYTES (line 9) | const MOCK_PRIVATE_KEY_BYTES = new Uint8Array([

FILE: packages/keys/src/__tests__/public-key-test.ts
  constant MOCK_PRIVATE_KEY_BYTES (line 6) | const MOCK_PRIVATE_KEY_BYTES = new Uint8Array([
  constant EXPECTED_MOCK_PUBLIC_KEY_BYTES (line 11) | const EXPECTED_MOCK_PUBLIC_KEY_BYTES = new Uint8Array([

FILE: packages/keys/src/__tests__/signatures-test.ts
  constant MOCK_DATA (line 12) | const MOCK_DATA = new Uint8Array([1, 2, 3]);
  constant MOCK_DATA_SIGNATURE (line 13) | const MOCK_DATA_SIGNATURE = new Uint8Array([
  constant MOCK_PRIVATE_KEY_BYTES (line 18) | const MOCK_PRIVATE_KEY_BYTES = new Uint8Array([
  constant MOCK_PUBLIC_KEY_BYTES (line 22) | const MOCK_PUBLIC_KEY_BYTES = new Uint8Array([

FILE: packages/keys/src/__tests__/write-keypair-test.node.ts
  constant MOCK_PRIVATE_KEY_BYTES (line 12) | const MOCK_PRIVATE_KEY_BYTES = new Uint8Array([

FILE: packages/keys/src/algorithm.ts
  constant ED25519_ALGORITHM_IDENTIFIER (line 1) | const ED25519_ALGORITHM_IDENTIFIER =

FILE: packages/keys/src/grind-keypair.ts
  type GrindKeyPairMatches (line 22) | type GrindKeyPairMatches = RegExp | ((address: string) => boolean);
  type GrindKeyPairsConfig (line 30) | type GrindKeyPairsConfig = Readonly<{
  constant STRIP_UNVALIDATED_REGEX_PARTS (line 71) | const STRIP_UNVALIDATED_REGEX_PARTS = /\\.|\[[^\]]*\]|\{[^}]*\}|\([^)]*\...
  constant STRIP_GRIND_METACHARACTERS (line 75) | const STRIP_GRIND_METACHARACTERS = /[$()*+./?[\]^{|}]/g;
  constant BASE58_ALPHABET_REGEX (line 78) | const BASE58_ALPHABET_REGEX = /^[1-9A-HJ-NP-Za-km-z]*$/;
  function assertGrindRegexIsValid (line 92) | function assertGrindRegexIsValid(regex: RegExp): void {
  function grindKeyPairs (line 166) | async function grindKeyPairs(config: GrindKeyPairsConfig): Promise<Crypt...
  function grindKeyPair (line 298) | async function grindKeyPair(config: Omit<GrindKeyPairsConfig, 'amount'>)...

FILE: packages/keys/src/key-pair.ts
  function generateKeyPair (line 29) | async function generateKeyPair(extractable: boolean = false): Promise<Cr...
  function createKeyPairFromBytes (line 66) | async function createKeyPairFromBytes(
  function createKeyPairFromPrivateKeyBytes (line 125) | async function createKeyPairFromPrivateKeyBytes(

FILE: packages/keys/src/private-key.ts
  function addPkcs8Header (line 6) | function addPkcs8Header(bytes: ReadonlyUint8Array): ReadonlyUint8Array<A...
  function createPrivateKeyFromBytes (line 61) | async function createPrivateKeyFromBytes(

FILE: packages/keys/src/public-key.ts
  function getPublicKeyFromPrivateKey (line 23) | async function getPublicKeyFromPrivateKey(

FILE: packages/keys/src/signatures.ts
  type Signature (line 16) | type Signature = Brand<EncodedString<string, 'base58'>, 'Signature'>;
  type SignatureBytes (line 24) | type SignatureBytes = Brand<Uint8Array, 'SignatureBytes'>;
  function assertIsSignature (line 56) | function assertIsSignature(putativeSignature: string): asserts putativeS...
  function assertIsSignatureBytes (line 102) | function assertIsSignatureBytes(
  function isSignature (line 133) | function isSignature(putativeSignature: string): putativeSignature is Si...
  function isSignatureBytes (line 169) | function isSignatureBytes(putativeSignatureBytes: ReadonlyUint8Array): p...
  function signBytes (line 186) | async function signBytes(key: CryptoKey, data: ReadonlyUint8Array): Prom...
  function signature (line 206) | function signature(putativeSignature: string): Signature {
  function signatureBytes (line 225) | function signatureBytes(putativeSignatureBytes: ReadonlyUint8Array): Sig...
  function verifySignature (line 246) | async function verifySignature(

FILE: packages/keys/src/write-keypair.ts
  type WriteKeyPairConfig (line 12) | type WriteKeyPairConfig = Readonly<{
  function writeKeyPair (line 73) | async function writeKeyPair(

FILE: packages/kit/src/__tests__/airdrop-internal-test.ts
  constant FOREVER_PROMISE (line 8) | const FOREVER_PROMISE = new Promise(() => {

FILE: packages/kit/src/__tests__/compute-unit-limit-estimation-test.ts
  constant FOREVER_PROMISE (line 35) | const FOREVER_PROMISE = new Promise(() => {
  constant MOCK_BLOCKHASH_LIFETIME_CONSTRAINT (line 39) | const MOCK_BLOCKHASH_LIFETIME_CONSTRAINT = {
  constant MOCK_TRANSACTION_MESSAGE (line 44) | const MOCK_TRANSACTION_MESSAGE: TransactionMessage & TransactionMessageW...

FILE: packages/kit/src/__tests__/create-async-generator-with-initial-value-and-slot-tracking-test.ts
  type TestValue (line 7) | type TestValue = { count: number };
  function createMockRpcRequest (line 9) | function createMockRpcRequest(): {
  function createMockSubscriptionRequest (line 27) | function createMockSubscriptionRequest(): {
  function rpcResponse (line 106) | function rpcResponse(slot: number, value: TestValue): SolanaRpcResponse<...
  function expectedResponse (line 111) | function expectedResponse(slot: number, value: number) {
  function collectValues (line 116) | async function collectValues<T>(gen: AsyncGenerator<T>, n?: number): Pro...

FILE: packages/kit/src/__tests__/create-reactive-store-with-initial-value-and-slot-tracking-test.ts
  type TestValue (line 7) | type TestValue = { count: number };
  function createMockRpcRequest (line 9) | function createMockRpcRequest(): {
  function createMockSubscriptionRequest (line 27) | function createMockSubscriptionRequest(): {
  function rpcResponse (line 106) | function rpcResponse(slot: number, value: TestValue): SolanaRpcResponse<...
  function createRetryableMocks (line 626) | function createRetryableMocks() {

FILE: packages/kit/src/__tests__/send-and-confirm-durable-nonce-transaction-test.ts
  constant FOREVER_PROMISE (line 27) | const FOREVER_PROMISE = new Promise(() => {
  constant DELAYED_SIGNATURE_INTERVAL (line 31) | const DELAYED_SIGNATURE_INTERVAL = 1000;

FILE: packages/kit/src/__tests__/send-transaction-internal-test.ts
  constant FOREVER_PROMISE (line 20) | const FOREVER_PROMISE = new Promise(() => {

FILE: packages/kit/src/__typetests__/decompile-transaction-message-fetching-lookup-tables-typetest.ts
  function acceptsTransactionMessageWithBlockhashLifetime (line 52) | function acceptsTransactionMessageWithBlockhashLifetime(_msg: Transactio...
  type TransactionMessageNotLegacy (line 68) | type TransactionMessageNotLegacy = Exclude<TransactionMessage, { version...
  function acceptsNonLegacyTransactionMessage (line 69) | function acceptsNonLegacyTransactionMessage(_msg: TransactionMessageNotL...

FILE: packages/kit/src/__typetests__/scenarios/transaction-message-decompile-modify-typetest.ts
  type TransactionMessageNotLegacy (line 29) | type TransactionMessageNotLegacy = Exclude<TransactionMessage, { version...

FILE: packages/kit/src/__typetests__/scenarios/transaction-signers-typetest.ts
  type TransactionVersionWithoutV1 (line 21) | type TransactionVersionWithoutV1 = Exclude<TransactionVersion, 1>;

FILE: packages/kit/src/airdrop-internal.ts
  type RequestAndConfirmAirdropConfig (line 7) | type RequestAndConfirmAirdropConfig = Readonly<{
  function requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT (line 21) | async function requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({

FILE: packages/kit/src/airdrop.ts
  type AirdropFunction (line 12) | type AirdropFunction = (
  type AirdropFactoryConfig (line 19) | type AirdropFactoryConfig<TCluster> = {
  function airdropFactory (line 53) | function airdropFactory<TCluster extends 'devnet' | 'mainnet' | 'testnet...

FILE: packages/kit/src/compute-unit-limit-estimation.ts
  constant PROVISORY_COMPUTE_UNIT_LIMIT (line 21) | const PROVISORY_COMPUTE_UNIT_LIMIT = 0;
  constant MAX_COMPUTE_UNIT_LIMIT (line 22) | const MAX_COMPUTE_UNIT_LIMIT = 1_400_000;
  type EstimateComputeUnitLimitFactoryConfig (line 24) | type EstimateComputeUnitLimitFactoryConfig = Readonly<{
  type EstimateComputeUnitLimitConfig (line 28) | type EstimateComputeUnitLimitConfig = Readonly<{
  type EstimateComputeUnitLimitFunction (line 34) | type EstimateComputeUnitLimitFunction = (
  function estimateComputeUnitLimitFactory (line 59) | function estimateComputeUnitLimitFactory({
  function estimateAndSetComputeUnitLimitFactory (line 137) | function estimateAndSetComputeUnitLimitFactory(
  function fillTransactionMessageProvisoryComputeUnitLimit (line 176) | function fillTransactionMessageProvisoryComputeUnitLimit<TTransactionMes...

FILE: packages/kit/src/create-async-generator-with-initial-value-and-slot-tracking.ts
  type CreateAsyncGeneratorWithInitialValueAndSlotTrackingConfig (line 5) | type CreateAsyncGeneratorWithInitialValueAndSlotTrackingConfig<TRpcValue...
  function markSourcesDone (line 101) | function markSourcesDone() {
  function onAbort (line 114) | function onAbort() {
  function enqueue (line 126) | function enqueue(item: SolanaRpcResponse<TItem>) {
  function handleError (line 140) | function handleError(err: unknown) {

FILE: packages/kit/src/create-reactive-store-with-initial-value-and-slot-tracking.ts
  type CreateReactiveStoreWithInitialValueAndSlotTrackingConfig (line 6) | type CreateReactiveStoreWithInitialValueAndSlotTrackingConfig<TRpcValue,...
  constant LOADING_STATE (line 34) | const LOADING_STATE: ReactiveState<never> = Object.freeze({
  function createReactiveStoreWithInitialValueAndSlotTracking (line 98) | function createReactiveStoreWithInitialValueAndSlotTracking<TRpcValue, T...

FILE: packages/kit/src/decompile-transaction-message-fetching-lookup-tables.ts
  type DecompileTransactionMessageFetchingLookupTablesConfig (line 14) | type DecompileTransactionMessageFetchingLookupTablesConfig = FetchAccoun...
  function decompileTransactionMessageFetchingLookupTables (line 27) | async function decompileTransactionMessageFetchingLookupTables(

FILE: packages/kit/src/fetch-lookup-tables.ts
  type FetchedAddressLookup (line 11) | type FetchedAddressLookup = {
  function fetchAddressesForLookupTables (line 22) | async function fetchAddressesForLookupTables(

FILE: packages/kit/src/get-minimum-balance-for-rent-exemption.ts
  function getMinimumBalanceForRentExemption (line 24) | function getMinimumBalanceForRentExemption(space: bigint): Lamports {

FILE: packages/kit/src/send-and-confirm-durable-nonce-transaction.ts
  type SendAndConfirmDurableNonceTransactionFunction (line 20) | type SendAndConfirmDurableNonceTransactionFunction = (
  type SendAndConfirmDurableNonceTransactionFactoryConfig (line 28) | type SendAndConfirmDurableNonceTransactionFactoryConfig<TCluster> = {
  function sendAndConfirmDurableNonceTransactionFactory (line 80) | function sendAndConfirmDurableNonceTransactionFactory<

FILE: packages/kit/src/send-and-confirm-transaction.ts
  type SendAndConfirmTransactionWithBlockhashLifetimeFunction (line 13) | type SendAndConfirmTransactionWithBlockhashLifetimeFunction = (
  type SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig (line 21) | type SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<TCluste...
  function sendAndConfirmTransactionFactory (line 63) | function sendAndConfirmTransactionFactory<TCluster extends 'devnet' | 'm...

FILE: packages/kit/src/send-transaction-internal.ts
  type SendAndConfirmDurableNonceTransactionConfig (line 16) | interface SendAndConfirmDurableNonceTransactionConfig
  type SendAndConfirmTransactionWithBlockhashLifetimeConfig (line 27) | interface SendAndConfirmTransactionWithBlockhashLifetimeConfig
  type SendTransactionBaseConfig (line 38) | interface SendTransactionBaseConfig extends SendTransactionConfigWithout...
  type SendTransactionConfigWithoutEncoding (line 45) | type SendTransactionConfigWithoutEncoding = Omit<
  function getSendTransactionConfigWithAdjustedPreflightCommitment (line 50) | function getSendTransactionConfigWithAdjustedPreflightCommitment(
  function sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT (line 74) | async function sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({
  function sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT (line 90) | async function sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NO...
  function sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT (line 113) | async function sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_O...

FILE: packages/kit/src/send-transaction-without-confirming.ts
  type SendTransactionWithoutConfirmingFunction (line 6) | type SendTransactionWithoutConfirmingFunction = (
  type SendTransactionWithoutConfirmingFactoryConfig (line 11) | interface SendTransactionWithoutConfirmingFactoryConfig {
  function sendTransactionWithoutConfirmingFactory (line 42) | function sendTransactionWithoutConfirmingFactory({

FILE: packages/nominal-types/src/index.ts
  type AffinePointValidity (line 23) | type AffinePointValidity = 'invalid' | 'valid';
  type CompressionFormat (line 24) | type CompressionFormat = 'zstd';
  type StringEncoding (line 25) | type StringEncoding = 'base58' | 'base64';
  type AffinePoint (line 47) | type AffinePoint<T, TValidity extends AffinePointValidity> = NominalType...
  type Brand (line 76) | type Brand<T, TBrandName extends string> = NominalType<'brand', TBrandNa...
  type CompressedData (line 94) | type CompressedData<T, TFormat extends CompressionFormat> = NominalType<...
  type EncodedString (line 114) | type EncodedString<T extends string, TEncoding extends StringEncoding> =...
  type NominalType (line 140) | type NominalType<TKey extends string, TMarker extends string> = {

FILE: packages/offchain-messages/src/__tests__/content-test.ts
  constant UTF8_LONGER_THAN_65535 (line 20) | const UTF8_LONGER_THAN_65535 = [
  constant UTF8_WITHIN_65535 (line 26) | const UTF8_WITHIN_65535 = ['!'.repeat(65535), '😘'.repeat(16383), '€'.rep...
  constant UTF8_LONGER_THAN_1232 (line 28) | const UTF8_LONGER_THAN_1232 = ['!'.repeat(1232 + 1), '😘'.repeat(308 + 1)...
  constant UTF8_WITHIN_1232 (line 29) | const UTF8_WITHIN_1232 = ['!'.repeat(1232), '😘'.repeat(308), '€'.repeat(...

FILE: packages/offchain-messages/src/__tests__/envelope-codec-test.ts
  constant OFFCHAIN_MESSAGE_SIGNING_DOMAIN_BYTES (line 20) | const OFFCHAIN_MESSAGE_SIGNING_DOMAIN_BYTES: ReadonlyUint8Array = new Ui...
  constant APPLICATION_DOMAIN_BYTES (line 24) | const APPLICATION_DOMAIN_BYTES = new Uint8Array([
  constant SIGNER_A (line 29) | const SIGNER_A =
  constant SIGNER_A_BYTES (line 31) | const SIGNER_A_BYTES = new Uint8Array([
  constant SIGNER_B (line 35) | const SIGNER_B =
  constant SIGNER_B_BYTES (line 37) | const SIGNER_B_BYTES = new Uint8Array([

FILE: packages/offchain-messages/src/__tests__/message-codec-test.ts
  constant OFFCHAIN_MESSAGE_SIGNING_DOMAIN_BYTES (line 15) | const OFFCHAIN_MESSAGE_SIGNING_DOMAIN_BYTES: ReadonlyUint8Array = new Ui...

FILE: packages/offchain-messages/src/__tests__/message-v0-codec-test.ts
  constant OFFCHAIN_MESSAGE_SIGNING_DOMAIN_BYTES (line 32) | const OFFCHAIN_MESSAGE_SIGNING_DOMAIN_BYTES: ReadonlyUint8Array = new Ui...
  constant APPLICATION_DOMAIN (line 36) | const APPLICATION_DOMAIN = 'testdomain111111111111111111111111111111111'...
  constant APPLICATION_DOMAIN_BYTES (line 37) | const APPLICATION_DOMAIN_BYTES = new Uint8Array([
  constant SIGNER_A (line 42) | const SIGNER_A =
  constant SIGNER_A_BYTES (line 44) | const SIGNER_A_BYTES = new Uint8Array([
  constant SIGNER_B (line 48) | const SIGNER_B =
  constant SIGNER_B_BYTES (line 50) | const SIGNER_B_BYTES = new Uint8Array([

FILE: packages/offchain-messages/src/__tests__/message-v1-codec-test.ts
  constant OFFCHAIN_MESSAGE_SIGNING_DOMAIN_BYTES (line 20) | const OFFCHAIN_MESSAGE_SIGNING_DOMAIN_BYTES: ReadonlyUint8Array = new Ui...
  constant SIGNER_A (line 24) | const SIGNER_A =
  constant SIGNER_A_BYTES (line 26) | const SIGNER_A_BYTES = new Uint8Array([
  constant SIGNER_B (line 30) | const SIGNER_B =
  constant SIGNER_B_BYTES (line 32) | const SIGNER_B_BYTES = new Uint8Array([

FILE: packages/offchain-messages/src/__tests__/preamble-test.ts
  function arr (line 4) | function arr(a: ArrayLike<number>) {

FILE: packages/offchain-messages/src/__tests__/signatures-test.ts
  constant OFFCHAIN_MESSAGE_SIGNING_DOMAIN_BYTES (line 33) | const OFFCHAIN_MESSAGE_SIGNING_DOMAIN_BYTES: ReadonlyUint8Array = new Ui...
  constant APPLICATION_DOMAIN_BYTES (line 37) | const APPLICATION_DOMAIN_BYTES = new Uint8Array([
  constant SIGNER_A_BYTES (line 42) | const SIGNER_A_BYTES = new Uint8Array([
  constant SIGNER_B_BYTES (line 46) | const SIGNER_B_BYTES = new Uint8Array([
  constant SIGNER_C_BYTES (line 50) | const SIGNER_C_BYTES = new Uint8Array([

FILE: packages/offchain-messages/src/application-domain.ts
  type OffchainMessageApplicationDomain (line 21) | type OffchainMessageApplicationDomain = Brand<
  function isOffchainMessageApplicationDomain (line 47) | function isOffchainMessageApplicationDomain(
  function assertIsOffchainMessageApplicationDomain (line 83) | function assertIsOffchainMessageApplicationDomain(
  function offchainMessageApplicationDomain (line 132) | function offchainMessageApplicationDomain(putativeApplicationDomain: str...

FILE: packages/offchain-messages/src/codecs/application-domain.ts
  function getOffchainMessageApplicationDomainEncoder (line 33) | function getOffchainMessageApplicationDomainEncoder(): FixedSizeEncoder<...
  function getOffchainMessageApplicationDomainDecoder (line 60) | function getOffchainMessageApplicationDomainDecoder(): FixedSizeDecoder<...
  function getOffchainMessageApplicationDomainCodec (line 74) | function getOffchainMessageApplicationDomainCodec(): FixedSizeCodec<

FILE: packages/offchain-messages/src/codecs/content.ts
  function getOffchainMessageContentFormatDecoder (line 6) | function getOffchainMessageContentFormatDecoder(): FixedSizeDecoder<Offc...
  function getOffchainMessageContentFormatEncoder (line 12) | function getOffchainMessageContentFormatEncoder(): FixedSizeEncoder<Offc...
  function getOffchainMessageContentFormatCodec (line 18) | function getOffchainMessageContentFormatCodec(): FixedSizeCodec<

FILE: packages/offchain-messages/src/codecs/envelope.ts
  function getOffchainMessageEnvelopeEncoder (line 37) | function getOffchainMessageEnvelopeEncoder(): VariableSizeEncoder<Offcha...
  function getOffchainMessageEnvelopeDecoder (line 94) | function getOffchainMessageEnvelopeDecoder(): VariableSizeDecoder<Offcha...
  function getOffchainMessageEnvelopeCodec (line 110) | function getOffchainMessageEnvelopeCodec() {
  type PartiallyDecodedOffchainMessageEnvelope (line 114) | type PartiallyDecodedOffchainMessageEnvelope = {
  function decodePartiallyDecodedOffchainMessageEnvelope (line 119) | function decodePartiallyDecodedOffchainMessageEnvelope(
  function decodeAndValidateRequiredSignatoryAddresses (line 157) | function decodeAndValidateRequiredSignatoryAddresses(bytes: ReadonlyUint...

FILE: packages/offchain-messages/src/codecs/message-v0.ts
  function getOffchainMessageV0Decoder (line 43) | function getOffchainMessageV0Decoder(): VariableSizeDecoder<OffchainMess...
  function getOffchainMessageV0Encoder (line 95) | function getOffchainMessageV0Encoder(): VariableSizeEncoder<OffchainMess...
  function getOffchainMessageV0Codec (line 136) | function getOffchainMessageV0Codec(): VariableSizeCodec<OffchainMessageV...

FILE: packages/offchain-messages/src/codecs/message-v1.ts
  function getOffchainMessageV1Decoder (line 33) | function getOffchainMessageV1Decoder(): VariableSizeDecoder<OffchainMess...
  function getOffchainMessageV1Encoder (line 53) | function getOffchainMessageV1Encoder(): VariableSizeEncoder<OffchainMess...
  function getOffchainMessageV1Codec (line 72) | function getOffchainMessageV1Codec(): VariableSizeCodec<OffchainMessageV...

FILE: packages/offchain-messages/src/codecs/message.ts
  function getOffchainMessageDecoder (line 37) | function getOffchainMessageDecoder(): VariableSizeDecoder<OffchainMessag...
  function getOffchainMessageEncoder (line 66) | function getOffchainMessageEncoder(): VariableSizeEncoder<OffchainMessag...
  function getOffchainMessageCodec (line 107) | function getOffchainMessageCodec(): VariableSizeCodec<OffchainMessage> {

FILE: packages/offchain-messages/src/codecs/preamble-common.ts
  type TDecoderFields (line 29) | type TDecoderFields = Parameters<typeof getStructDecoder>[0];
  type TEncoderFields (line 30) | type TEncoderFields = Parameters<typeof getStructEncoder>[0];
  function getSigningDomainPrefixedDecoder (line 32) | function getSigningDomainPrefixedDecoder<const T extends TDecoderFields>...
  function getSigningDomainPrefixedEncoder (line 36) | function getSigningDomainPrefixedEncoder<const T extends TEncoderFields>...
  function getVersionTransformer (line 40) | function getVersionTransformer(fixedVersion?: OffchainMessageVersion) {
  function createOffchainMessagePreambleDecoder (line 57) | function createOffchainMessagePreambleDecoder<
  function createOffchainMessagePreambleEncoder (line 67) | function createOffchainMessagePreambleEncoder<
  function decodeRequiredSignatoryAddresses (line 77) | function decodeRequiredSignatoryAddresses(bytes: ReadonlyUint8Array): re...
  function getSignatoriesComparator (line 99) | function getSignatoriesComparator(): (a: ReadonlyUint8Array, b: Readonly...

FILE: packages/offchain-messages/src/codecs/preamble-v0.ts
  function getOffchainMessageV0PreambleDecoder (line 22) | function getOffchainMessageV0PreambleDecoder(): VariableSizeDecoder<Offc...
  function getOffchainMessageV0PreambleEncoder (line 40) | function getOffchainMessageV0PreambleEncoder(): VariableSizeEncoder<Offc...
  function getOffchainMessageV0PreambleCodec (line 61) | function getOffchainMessageV0PreambleCodec(): VariableSizeCodec<Offchain...

FILE: packages/offchain-messages/src/codecs/preamble-v1.ts
  function getOffchainMessageV1PreambleDecoder (line 28) | function getOffchainMessageV1PreambleDecoder(): VariableSizeDecoder<Offc...
  function getOffchainMessageV1PreambleEncoder (line 57) | function getOffchainMessageV1PreambleEncoder(): VariableSizeEncoder<Offc...
  function getOffchainMessageV1PreambleCodec (line 85) | function getOffchainMessageV1PreambleCodec(): VariableSizeCodec<Offchain...

FILE: packages/offchain-messages/src/codecs/signatures.ts
  function getSignaturesToEncode (line 9) | function getSignaturesToEncode(signaturesMap: OffchainMessageEnvelope['s...
  function getSignaturesEncoder (line 23) | function getSignaturesEncoder(): VariableSizeEncoder<OffchainMessageEnve...

FILE: packages/offchain-messages/src/codecs/signing-domain.ts
  constant OFFCHAIN_MESSAGE_SIGNING_DOMAIN_BYTES (line 11) | const OFFCHAIN_MESSAGE_SIGNING_DOMAIN_BYTES: ReadonlyUint8Array = new Ui...
  function getOffchainMessageSigningDomainDecoder (line 15) | function getOffchainMessageSigningDomainDecoder(): FixedSizeDecoder<void...
  function getOffchainMessageSigningDomainEncoder (line 19) | function getOffchainMessageSigningDomainEncoder(): FixedSizeEncoder<void...
  function getOffchainMessageSigningDomainCodec (line 23) | function getOffchainMessageSigningDomainCodec(): FixedSizeCodec<void, vo...

FILE: packages/offchain-messages/src/codecs/version.ts
  function assertOffchainMessageVersion (line 14) | function assertOffchainMessageVersion(putativeVersion: number): asserts ...
  function getOffchainMessageVersionEncoder (line 25) | function getOffchainMessageVersionEncoder(): FixedSizeEncoder<OffchainMe...
  function getOffchainMessageVersionDecoder (line 36) | function getOffchainMessageVersionDecoder(): FixedSizeDecoder<OffchainMe...
  function getOffchainMessageVersionCodec (line 49) | function getOffchainMessageVersionCodec(): FixedSizeCodec<OffchainMessag...

FILE: packages/offchain-messages/src/content.ts
  constant MAX_BODY_BYTES (line 11) | const MAX_BODY_BYTES =
  constant MAX_BODY_BYTES_HARDWARE_WALLET_SIGNABLE (line 14) | const MAX_BODY_BYTES_HARDWARE_WALLET_SIGNABLE =
  type OffchainMessageContentFormat (line 28) | enum OffchainMessageContentFormat {
  type OffchainMessageContentRestrictedAsciiOf1232BytesMax (line 41) | type OffchainMessageContentRestrictedAsciiOf1232BytesMax<TContent extend...
  type OffchainMessageContentUtf8Of1232BytesMax (line 49) | type OffchainMessageContentUtf8Of1232BytesMax<TContent extends string = ...
  type OffchainMessageContentUtf8Of65535BytesMax (line 57) | type OffchainMessageContentUtf8Of65535BytesMax<TContent extends string =...
  type OffchainMessageContent (line 62) | type OffchainMessageContent =
  function assertIsOffchainMessageContentRestrictedAsciiOf1232BytesMax (line 74) | function assertIsOffchainMessageContentRestrictedAsciiOf1232BytesMax(put...
  function isOffchainMessageContentRestrictedAsciiOf1232BytesMax (line 106) | function isOffchainMessageContentRestrictedAsciiOf1232BytesMax(putativeC...
  function offchainMessageContentRestrictedAsciiOf1232BytesMax (line 162) | function offchainMessageContentRestrictedAsciiOf1232BytesMax<TText exten...
  function assertIsOffchainMessageContentUtf8Of1232BytesMax (line 179) | function assertIsOffchainMessageContentUtf8Of1232BytesMax(putativeConten...
  function isOffchainMessageContentUtf8Of1232BytesMax (line 208) | function isOffchainMessageContentUtf8Of1232BytesMax(putativeContent: {
  function offchainMessageContentUtf8Of1232BytesMax (line 263) | function offchainMessageContentUtf8Of1232BytesMax<TText extends string>(
  function assertIsOffchainMessageContentUtf8Of65535BytesMax (line 281) | function assertIsOffchainMessageContentUtf8Of65535BytesMax(putativeConte...
  function isOffchainMessageContentUtf8Of65535BytesMax (line 310) | function isOffchainMessageContentUtf8Of65535BytesMax(putativeContent: {
  function offchainMessageContentUtf8Of65535BytesMax (line 365) | function offchainMessageContentUtf8Of65535BytesMax<TText extends string>(
  function isTextRestrictedAscii (line 376) | function isTextRestrictedAscii(putativeRestrictedAsciiString: string): b...

FILE: packages/offchain-messages/src/envelope-common.ts
  function compileOffchainMessageEnvelopeUsingEncoder (line 6) | function compileOffchainMessageEnvelopeUsingEncoder<T extends OffchainMe...

FILE: packages/offchain-messages/src/envelope-v0.ts
  function compileOffchainMessageV0Envelope (line 13) | function compileOffchainMessageV0Envelope(offchainMessage: OffchainMessa...

FILE: packages/offchain-messages/src/envelope-v1.ts
  function compileOffchainMessageV1Envelope (line 13) | function compileOffchainMessageV1Envelope(offchainMessage: OffchainMessa...

FILE: packages/offchain-messages/src/envelope.ts
  type OrderedMap (line 9) | type OrderedMap<K extends string, V> = Record<K, V>;
  type OffchainMessageSignaturesMap (line 10) | type OffchainMessageSignaturesMap = OrderedMap<Address, SignatureBytes |...
  type OffchainMessageEnvelope (line 12) | interface OffchainMessageEnvelope {
  function compileOffchainMessageEnvelope (line 34) | function compileOffchainMessageEnvelope(offchainMessage: OffchainMessage...

FILE: packages/offchain-messages/src/message-v0.ts
  type BaseOffchainMessageV0 (line 13) | type BaseOffchainMessageV0 = Omit<
  type OffchainMessageWithRestrictedAsciiOf1232BytesMaxContent (line 22) | interface OffchainMessageWithRestrictedAsciiOf1232BytesMaxContent {
  type OffchainMessageWithUtf8Of1232BytesMaxContent (line 30) | interface OffchainMessageWithUtf8Of1232BytesMaxContent {
  type OffchainMessageWithUtf8Of65535BytesMaxContent (line 38) | interface OffchainMessageWithUtf8Of65535BytesMaxContent {
  type OffchainMessageWithContent (line 48) | type OffchainMessageWithContent =
  type OffchainMessageV0 (line 53) | type OffchainMessageV0 = BaseOffchainMessageV0 &
  function assertIsOffchainMessageRestrictedAsciiOf1232BytesMax (line 64) | function assertIsOffchainMessageRestrictedAsciiOf1232BytesMax<TMessage e...
  function assertIsOffchainMessageUtf8Of1232BytesMax (line 83) | function assertIsOffchainMessageUtf8Of1232BytesMax<TMessage extends Offc...
  function assertIsOffchainMessageUtf8Of65535BytesMax (line 103) | function assertIsOffchainMessageUtf8Of65535BytesMax<TMessage extends Off...

FILE: packages/offchain-messages/src/message-v1.ts
  type BaseOffchainMessageV1 (line 4) | type BaseOffchainMessageV1 = Omit<OffchainMessagePreambleV1, 'requiredSi...
  type OffchainMessageV1 (line 6) | type OffchainMessageV1 = BaseOffchainMessageV1 &

FILE: packages/offchain-messages/src/message.ts
  type OffchainMessage (line 7) | type OffchainMessage = OffchainMessageV0 | OffchainMessageV1;
  type OffchainMessageBytes (line 8) | type OffchainMessageBytes = Brand<ReadonlyUint8Array, 'OffchainMessageBy...

FILE: packages/offchain-messages/src/preamble-v0.ts
  type OffchainMessagePreambleV0 (line 5) | interface OffchainMessagePreambleV0 extends OffchainMessageWithRequiredS...

FILE: packages/offchain-messages/src/preamble-v1.ts
  type OffchainMessagePreambleV1 (line 3) | interface OffchainMessagePreambleV1 extends OffchainMessageWithRequiredS...

FILE: packages/offchain-messages/src/signatures.ts
  type FullySignedOffchainMessageEnvelope (line 18) | type FullySignedOffchainMessageEnvelope = NominalType<'offchainMessageEn...
  type OffchainMessageSignatory (line 23) | type OffchainMessageSignatory<TAddress extends string = string> = Readon...
  type OffchainMessageWithRequiredSignatories (line 30) | interface OffchainMessageWithRequiredSignatories<
  function partiallySignOffchainMessageEnvelope (line 59) | async function partiallySignOffchainMessageEnvelope<TOffchainMessageEnve...
  function signOffchainMessageEnvelope (line 139) | async function signOffchainMessageEnvelope<TOffchainMessageEnvelope exte...
  function isFullySignedOffchainMessageEnvelope (line 164) | function isFullySignedOffchainMessageEnvelope<TEnvelope extends Offchain...
  function assertIsFullySignedOffchainMessageEnvelope (line 194) | function assertIsFullySignedOffchainMessageEnvelope<TEnvelope extends Of...
  function verifyOffchainMessageEnvelope (line 241) | async function verifyOffchainMessageEnvelope(offchainMessageEnvelope: Of...

FILE: packages/offchain-messages/src/version.ts
  type OffchainMessageVersion (line 1) | type OffchainMessageVersion = 0 | 1;

FILE: packages/options/src/__tests__/unwrap-option-recursively-test.ts
  type ExpectedUnwrappedPerson (line 76) | type ExpectedUnwrappedPerson = {
  type ExpectedUnwrappedPerson (line 147) | type ExpectedUnwrappedPerson = {

FILE: packages/options/src/option-codec.ts
  type OptionCodecConfig (line 61) | type OptionCodecConfig<TPrefix extends NumberCodec | NumberDecoder | Num...
  function getOptionEncoder (line 141) | function getOptionEncoder<TFrom>(
  function getOptionDecoder (line 229) | function getOptionDecoder<TTo>(
  function getOptionCodec (line 389) | function getOptionCodec<TFrom, TTo extends TFrom = TFrom>(

FILE: packages/options/src/option.ts
  type Option (line 43) | type Option<T> = None | Some<T>;
  type OptionOrNullable (line 72) | type OptionOrNullable<T> = Option<T> | T | null;
  type Some (line 95) | type Some<T> = Readonly<{ __option: 'Some'; value: T }>;
  type None (line 116) | type None = Readonly<{ __option: 'None' }>;

FILE: packages/options/src/unwrap-option-recursively.ts
  type UnUnwrappables (line 10) | type UnUnwrappables =
  type UnwrappedOption (line 57) | type UnwrappedOption<T, U = null> =
  function unwrapOptionRecursively (line 127) | function unwrapOptionRecursively<T, U = null>(input: T, fallback?: () =>...

FILE: packages/options/src/unwrap-option.ts
  function unwrapOption (line 37) | function unwrapOption<T, U = null>(option: Option<T>, fallback?: () => U...

FILE: packages/plugin-core/src/__typetests__/client-typetest.ts
  constant EMPTY_CLIENT (line 4) | const EMPTY_CLIENT = null as unknown as Client<object>;
  constant EMPTY_ASYNC_CLIENT (line 5) | const EMPTY_ASYNC_CLIENT = null as unknown as AsyncClient<object>;

FILE: packages/plugin-core/src/client.ts
  type ClientPlugin (line 101) | type ClientPlugin<TInput extends object, TOutput extends Promise<object>...
  type Client (line 113) | type Client<TSelf extends object> = TSelf & {
  type AsyncClient (line 137) | type AsyncClient<TSelf extends object> = Promise<Client<TSelf>> & {
  function createClient (line 175) | function createClient<TSelf extends object = object>(value?: TSelf): Cli...
  function addUse (line 179) | function addUse<TSelf extends object>(value: TSelf): Client<TSelf> {
  function createAsyncClient (line 199) | function createAsyncClient<TSelf extends object>(promise: Promise<TSelf>...
  function extendClient (line 240) | function extendClient<TClient extends object, TAdditions extends object>(
  function toConfigurableDescriptors (line 249) | function toConfigurableDescriptors<T extends PropertyDescriptorMap>(desc...
  function withCleanup (line 290) | function withCleanup<TClient extends object>(client: TClient, cleanup: (...
  constant DISPOSABLE_STACK_PROPERTY (line 301) | const DISPOSABLE_STACK_PROPERTY = '__PRIVATE__DISPOSABLE_STACK' as const;
  function addCleanupToClientWithExistingStack (line 303) | function addCleanupToClientWithExistingStack<TClient extends Record<type...
  function addCleanupToClientWithoutExistingStack (line 313) | function addCleanupToClientWithoutExistingStack<TClient extends object>(

FILE: packages/plugin-interfaces/src/__typetests__/airdrop-typetest.ts
  type CustomClient (line 27) | type CustomClient = ClientWithAirdrop & { otherMethod(): string };

FILE: packages/plugin-interfaces/src/__typetests__/get-minimum-balance-typetest.ts
  type CustomClient (line 21) | type CustomClient = ClientWithGetMinimumBalance & { otherMethod(): strin...

FILE: packages/plugin-interfaces/src/__typetests__/identity-typetest.ts
  type CustomClient (line 15) | type CustomClient = ClientWithIdentity & { customMethod(): void };

FILE: packages/plugin-interfaces/src/__typetests__/instruction-plans-typetest.ts
  type FullTransactionClient (line 97) | type FullTransactionClient = ClientWithTransactionPlanning & ClientWithT...

FILE: packages/plugin-interfaces/src/__typetests__/payer-typetest.ts
  type CustomClient (line 15) | type CustomClient = ClientWithPayer & { customMethod(): void };

FILE: packages/plugin-interfaces/src/__typetests__/rpc-typetest.ts
  type TestRpcMethods (line 6) | type TestRpcMethods = {
  type TestSubscriptionMethods (line 11) | type TestSubscriptionMethods = {
  type CombinedClient (line 26) | type CombinedClient = ClientWithRpc<TestRpcMethods> & { payer: { address...
  type FullRpcClient (line 43) | type FullRpcClient = ClientWithRpc<TestRpcMethods> & ClientWithRpcSubscr...

FILE: packages/plugin-interfaces/src/__typetests__/subscribe-to-typetest.ts
  type CustomClient (line 23) | type CustomClient = ClientWithSubscribeToPayer & { customMethod(): void };
  type CustomClient (line 40) | type CustomClient = ClientWithSubscribeToIdentity & { customMethod(): vo...

FILE: packages/plugin-interfaces/src/airdrop.ts
  type ClientWithAirdrop (line 19) | type ClientWithAirdrop = {

FILE: packages/plugin-interfaces/src/get-minimum-balance.ts
  type GetMinimumBalanceConfig (line 6) | type GetMinimumBalanceConfig = {
  type ClientWithGetMinimumBalance (line 34) | type ClientWithGetMinimumBalance = {

FILE: packages/plugin-interfaces/src/identity.ts
  type ClientWithIdentity (line 23) | type ClientWithIdentity = { identity: TransactionSigner };

FILE: packages/plugin-interfaces/src/instruction-plans.ts
  type Config (line 10) | type Config = { abortSignal?: AbortSignal };
  type ClientWithTransactionPlanning (line 32) | type ClientWithTransactionPlanning = {
  type ClientWithTransactionSending (line 82) | type ClientWithTransactionSending = {

FILE: packages/plugin-interfaces/src/payer.ts
  type ClientWithPayer (line 26) | type ClientWithPayer = { payer: TransactionSigner };

FILE: packages/plugin-interfaces/src/rpc.ts
  type ClientWithRpc (line 23) | type ClientWithRpc<TRpcMethods> = { rpc: Rpc<TRpcMethods> };
  type ClientWithRpcSubscriptions (line 50) | type ClientWithRpcSubscriptions<TRpcSubscriptionsMethods> = {

FILE: packages/plugin-interfaces/src/subscribe-to.ts
  type SubscribeToFn (line 34) | type SubscribeToFn = (listener: () => void) => () => void;
  type ClientWithSubscribeToPayer (line 61) | type ClientWithSubscribeToPayer = {
  type ClientWithSubscribeToIdentity (line 94) | type ClientWithSubscribeToIdentity = {

FILE: packages/program-client-core/src/__tests__/self-fetch-functions-test.ts
  function getMockCodec (line 28) | function getMockCodec() {
  function fetchEncodedAccountImpl (line 32) | function fetchEncodedAccountImpl(address: Address): MaybeEncodedAccount {

FILE: packages/program-client-core/src/__tests__/self-plan-and-send-functions-test.ts
  function createMockClient (line 19) | function createMockClient() {
  method then (line 170) | then(onFulfilled) {

FILE: packages/program-client-core/src/__typetests__/self-fetch-functions-typetest.ts
  type RpcClient (line 9) | type RpcClient = ClientWithRpc<GetAccountInfoApi & GetMultipleAccountsApi>;
  type MyAccountData (line 11) | type MyAccountData = { age: number; name: string };
  type MyAccountInput (line 63) | type MyAccountInput = { age: bigint | number; name: string };
  type MyCodec (line 83) | type MyCodec = FixedSizeCodec<MyAccountData> & { custom: 42 };
  type MyAccountInput (line 92) | type MyAccountInput = { age: bigint | number; name: string };
  type MyAccountInput (line 101) | type MyAccountInput = { age: bigint | number; name: string };
  type MyAccountInput (line 123) | type MyAccountInput = { age: bigint | number; name: string };

FILE: packages/program-client-core/src/__typetests__/self-plan-and-send-functions-typetest.ts
  type FullClient (line 14) | type FullClient = ClientWithTransactionPlanning & ClientWithTransactionS...
  type MyInstruction (line 97) | type MyInstruction = Instruction<'MyProgram111111111111111111111111'> & ...
  type MyPlan (line 106) | type MyPlan = SingleInstructionPlan & { custom: 42 };
  type MyInstruction (line 115) | type MyInstruction = Instruction<'MyProgram111111111111111111111111'>;

FILE: packages/program-client-core/src/instruction-input-resolution.ts
  function getNonNullResolvedInstructionInput (line 33) | function getNonNullResolvedInstructionInput<T>(inputName: string, value:...
  function getAddressFromResolvedInstructionAccount (line 62) | function getAddressFromResolvedInstructionAccount<T extends string = str...
  function getResolvedInstructionAccountAsProgramDerivedAddress (line 96) | function getResolvedInstructionAccountAsProgramDerivedAddress<T extends ...
  function getResolvedInstructionAccountAsTransactionSigner (line 128) | function getResolvedInstructionAccountAsTransactionSigner<T extends stri...
  type ResolvedInstructionAccount (line 160) | type ResolvedInstructionAccount<
  function getAccountMetaFactory (line 191) | function getAccountMetaFactory(programAddress: Address, optionalAccountS...
  function isResolvedInstructionAccountSigner (line 208) | function isResolvedInstructionAccountSigner(value: unknown): value is Tr...

FILE: packages/program-client-core/src/instructions.ts
  type InstructionWithByteDelta (line 9) | type InstructionWithByteDelta = {

FILE: packages/program-client-core/src/self-fetch-functions.ts
  type AnyObjectCodec (line 18) | type AnyObjectCodec = Codec<any, object>;
  type InferTFrom (line 20) | type InferTFrom<T> = T extends Codec<infer TFrom, any> ? TFrom : never;
  type InferTTo (line 22) | type InferTTo<T> = T extends Codec<any, infer TTo> ? TTo : never;
  type SelfFetchFunctions (line 59) | type SelfFetchFunctions<TFrom extends object, TTo extends TFrom> = {
  function addSelfFetchFunctions (line 129) | function addSelfFetchFunctions<TCodec extends AnyObjectCodec>(

FILE: packages/program-client-core/src/self-plan-and-send-functions.ts
  type PlanTransaction (line 5) | type PlanTransaction = ClientWithTransactionPlanning['planTransaction'];
  type PlanTransactions (line 6) | type PlanTransactions = ClientWithTransactionPlanning['planTransactions'];
  type SendTransaction (line 7) | type SendTransaction = ClientWithTransactionSending['sendTransaction'];
  type SendTransactions (line 8) | type SendTransactions = ClientWithTransactionSending['sendTransactions'];
  type SelfPlanAndSendFunctions (line 31) | type SelfPlanAndSendFunctions = {
  function addSelfPlanAndSendFunctions (line 86) | function addSelfPlanAndSendFunctions<
  function isPromiseLike (line 110) | function isPromiseLike(

FILE: packages/programs/src/program-error.ts
  function isProgramError (line 31) | function isProgramError<TProgramErrorCode extends number>(

FILE: packages/promises/src/__tests__/abortable-test.ts
  class CustomError (line 85) | class CustomError extends Error {

FILE: packages/promises/src/__tests__/race-test.ts
  function randomString (line 14) | async function randomString(length: number) {
  function usageMeaningfullyIncreasing (line 27) | function usageMeaningfullyIncreasing(usages: readonly NodeJS.MemoryUsage...
  function detectLeak (line 34) | function detectLeak(usages: readonly NodeJS.MemoryUsage[]) {
  function run (line 38) | async function run(race: typeof Promise.race) {

FILE: packages/promises/src/abortable.ts
  function isAbortError (line 26) | function isAbortError(err: unknown): err is Error {
  function getAbortablePromise (line 44) | function getAbortablePromise<T>(promise: Promise<T>, abortSignal?: Abort...

FILE: packages/promises/src/race.ts
  type Deferred (line 35) | type Deferred = Readonly<{
  function isObject (line 40) | function isObject(value: unknown): value is object {
  function addRaceContender (line 44) | function addRaceContender(contender: object) {
  function safeRace (line 80) | async function safeRace<T extends readonly unknown[] | []>(contenders: T...

FILE: packages/react/src/SelectedWalletAccountContextProvider.tsx
  type SelectedWalletAccountContextProviderProps (line 12) | type SelectedWalletAccountContextProviderProps = {
  function findSavedWalletAccount (line 27) | function findSavedWalletAccount(
  function SelectedWalletAccountContextProvider (line 57) | function SelectedWalletAccountContextProvider({

FILE: packages/react/src/__tests__/SelectedWalletAccountContextProvider-test.browser.tsx
  function makeWallet (line 28) | function makeWallet(name: string, accounts: string[]) {
  function Consumer (line 37) | function Consumer() {

FILE: packages/react/src/__typetests__/selectedWalletAccountContextProvider-typetest.ts
  type CtxValue (line 39) | type CtxValue = ReturnType<typeof useSelectedWalletAccount>;
  type SelectedWallet (line 43) | type SelectedWallet = CtxValue[0];
  type SetSelected (line 50) | type SetSelected = CtxValue[1];
  type FilteredWallets (line 68) | type FilteredWallets = CtxValue[2];

FILE: packages/react/src/chain.ts
  type AssertSolanaChain (line 3) | type AssertSolanaChain<T> = T extends `solana:${string}` ? T : never;
  type OnlySolanaChains (line 5) | type OnlySolanaChains<T extends IdentifierArray> = T extends IdentifierA...

FILE: packages/react/src/selectedWalletAccountContext.ts
  type SelectedWalletAccountState (line 4) | type SelectedWalletAccountState = UiWalletAccount | undefined;
  type SelectedWalletAccountContextValue (line 6) | type SelectedWalletAccountContextValue = readonly [
  function useSelectedWalletAccount (line 18) | function useSelectedWalletAccount() {

FILE: packages/react/src/test-renderer.tsx
  type Result (line 5) | type Result<T> =
  type TestComponentProps (line 16) | type TestComponentProps<THookReturn> = {
  function TestComponentHookRenderer (line 21) | function TestComponentHookRenderer<THookFn extends (...args: never) => u...
  function TestComponent (line 29) | function TestComponent<THookFn extends (...args: never) => unknown>({
  function renderHook (line 53) | function renderHook<THookReturn>(executor: () => THookReturn): {

FILE: packages/react/src/useSignAndSendTransaction.ts
  type Input (line 17) | type Input = Readonly<
  type Output (line 24) | type Output = SolanaSignAndSendTransactionOutput;
  function useSignAndSendTransaction (line 70) | function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(
  function useSignAndSendTransactions (line 125) | function useSignAndSendTransactions<TWalletAccount extends UiWalletAccou...

FILE: packages/react/src/useSignIn.ts
  type Input (line 22) | type Input = SolanaSignInInput;
  type Output (line 23) | type Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &
  function useSignIn (line 74) | function useSignIn(uiWalletHandle: UiWalletHandle): (input?: Input) => P...
  function useSignIns (line 85) | function useSignIns(

FILE: packages/react/src/useSignMessage.ts
  type Input (line 11) | type Input = Omit<SolanaSignMessageInput, 'account'>;
  type Output (line 12) | type Output = Omit<SolanaSignMessageOutput, 'signatureType'>;
  function useSignMessage (line 43) | function useSignMessage<TWalletAccount extends UiWalletAccount>(
  function useSignMessages (line 56) | function useSignMessages<TWalletAccount extends UiWalletAccount>(

FILE: packages/react/src/useSignTransaction.ts
  type Input (line 17) | type Input = Readonly<
  type Output (line 24) | type Output = SolanaSignTransactionOutput;
  function useSignTransaction (line 66) | function useSignTransaction<TWalletAccount extends UiWalletAccount>(
  function useSignTransactions (line 121) | function useSignTransactions<TWalletAccount extends UiWalletAccount>(

FILE: packages/react/src/useWalletAccountMessageSigner.ts
  function useWalletAccountMessageSigner (line 52) | function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAc...

FILE: packages/react/src/useWalletAccountTransactionSendingSigner.ts
  function useWalletAccountTransactionSendingSigner (line 70) | function useWalletAccountTransactionSendingSigner<TWalletAccount extends...

FILE: packages/react/src/useWalletAccountTransactionSigner.ts
  function useWalletAccountTransactionSigner (line 63) | function useWalletAccountTransactionSigner<TWalletAccount extends UiWall...

FILE: packages/rpc-api/src/__tests__/__setup__.ts
  function createLocalhostSolanaRpc (line 6) | function createLocalhostSolanaRpc(): Rpc<SolanaRpcApi> {

FILE: packages/rpc-api/src/__tests__/get-account-info-test.ts
  constant CONTEXT_MATCHER (line 9) | const CONTEXT_MATCHER = expect.objectContaining({

FILE: packages/rpc-api/src/__tests__/get-block-production-test.ts
  constant CONTEXT_MATCHER (line 9) | const CONTEXT_MATCHER = expect.objectContaining({

FILE: packages/rpc-api/src/__tests__/get-cluster-nodes-test.ts
  function getNodeInfoFromLogFile (line 19) | async function getNodeInfoFromLogFile() {

FILE: packages/rpc-api/src/__tests__/get-fee-for-message-test.ts
  constant CONTEXT_MATCHER (line 15) | const CONTEXT_MATCHER = expect.objectContaining({
  constant MOCK_PUBLIC_KEY_BYTES (line 19) | const MOCK_PUBLIC_KEY_BYTES = // DRtXHDgC312wpNdNCSb8vCoXDcofCJcPHdAw4Vk...
  function getMockTransactionMessage (line 26) | function getMockTransactionMessage(blockhash: Blockhash) {

FILE: packages/rpc-api/src/__tests__/get-genesis-hash-test.ts
  function getGenesisHashFromLogFile (line 12) | async function getGenesisHashFromLogFile() {

FILE: packages/rpc-api/src/__tests__/get-identity-test.ts
  function getValidatorAddress (line 13) | async function getValidatorAddress() {

FILE: packages/rpc-api/src/__tests__/get-largest-accounts-test.ts
  constant CONTEXT_MATCHER (line 12) | const CONTEXT_MATCHER = expect.objectContaining({
  function getNodeAddress (line 20) | async function getNodeAddress(path: string) {

FILE: packages/rpc-api/src/__tests__/get-latest-blockhash-test.ts
  constant CONTEXT_MATCHER (line 8) | const CONTEXT_MATCHER = expect.objectContaining({

FILE: packages/rpc-api/src/__tests__/get-leader-schedule-test.ts
  function getValidatorAddress (line 14) | async function getValidatorAddress() {

FILE: packages/rpc-api/src/__tests__/get-multiple-accounts-test.ts
  constant CONTEXT_MATCHER (line 9) | const CONTEXT_MATCHER = expect.objectContaining({

FILE: packages/rpc-api/src/__tests__/get-program-accounts-test.ts
  constant CONTEXT_MATCHER (line 13) | const CONTEXT_MATCHER = expect.objectContaining({
  function getNodeAddress (line 20) | async function getNodeAddress(path: string) {

FILE: packages/rpc-api/src/__tests__/get-signature-statuses-test.ts
  constant CONTEXT_MATCHER (line 8) | const CONTEXT_MATCHER = expect.objectContaining({

FILE: packages/rpc-api/src/__tests__/get-slot-leader-test.ts
  function getValidatorAddress (line 15) | async function getValidatorAddress() {

FILE: packages/rpc-api/src/__tests__/get-slot-leaders-test.ts
  function getValidatorAddress (line 14) | async function getValidatorAddress() {

FILE: packages/rpc-api/src/__tests__/get-supply-test.ts
  constant CONTEXT_MATCHER (line 7) | const CONTEXT_MATCHER = expect.objectContaining({

FILE: packages/rpc-api/src/__tests__/get-token-account-balance-test.ts
  constant CONTEXT_MATCHER (line 9) | const CONTEXT_MATCHER = expect.objectContaining({

FILE: packages/rpc-api/src/__tests__/get-token-accounts-by-delegate-test.ts
  constant CONTEXT_MATCHER (line 13) | const CONTEXT_MATCHER = expect.objectContaining({

FILE: packages/rpc-api/src/__tests__/get-token-accounts-by-owner-test.ts
  constant CONTEXT_MATCHER (line 13) | const CONTEXT_MATCHER = expect.objectContaining({

FILE: packages/rpc-api/src/__tests__/get-token-largest-accounts-test.ts
  constant CONTEXT_MATCHER (line 9) | const CONTEXT_MATCHER = expect.objectContaining({

FILE: packages/rpc-api/src/__tests__/get-token-supply-test.ts
  constant CONTEXT_MATCHER (line 9) | const CONTEXT_MATCHER = expect.objectContaining({

FILE: packages/rpc-api/src/__tests__/get-version-test.ts
  function getVersionFromLogFile (line 13) | async function getVersionFromLogFile() {

FILE: packages/rpc-api/src/__tests__/send-transaction-test.ts
  function getMockTransactionMessage (line 22) | function getMockTransactionMessage({
  constant MOCK_PRIVATE_KEY_BYTES (line 65) | const MOCK_PRIVATE_KEY_BYTES = new Uint8Array([
  constant MOCK_PUBLIC_KEY_BYTES (line 70) | const MOCK_PUBLIC_KEY_BYTES = // DRtXHDgC312wpNdNCSb8vCoXDcofCJcPHdAw4Vk...
  constant MOCK_INSUFFICIENT_BALANCE_PRIVATE_KEY_BYTES (line 77) | const MOCK_INSUFFICIENT_BALANCE_PRIVATE_KEY_BYTES = new Uint8Array([
  constant MOCK_INSUFFICIENT_BALANCE_PUBLIC_KEY_BYTES (line 82) | const MOCK_INSUFFICIENT_BALANCE_PUBLIC_KEY_BYTES = // 6Zs91PMyhqyMgNVuT8...
  function getSecretKey (line 89) | async function getSecretKey(privateKeyBytes: Uint8Array) {

FILE: packages/rpc-api/src/__tests__/simulate-transaction-test.ts
  constant CONTEXT_MATCHER (line 19) | const CONTEXT_MATCHER 
Copy disabled (too large) Download .json
Condensed preview — 2013 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,961K chars).
[
  {
    "path": ".agents/skills/changesets/INJECT.md",
    "chars": 590,
    "preview": "---\nheading: Changesets\n---\n\n- Any PR that should trigger a package release MUST include a changeset.\n- Identify affecte"
  },
  {
    "path": ".agents/skills/changesets/SKILL.md",
    "chars": 4178,
    "preview": "---\nname: changesets\ndescription: Generate a changeset file with a changelog entry for package releases. Use when a PR i"
  },
  {
    "path": ".agents/skills/shipping-git/INJECT.md",
    "chars": 583,
    "preview": "---\nheading: Shipping (Git)\n---\n\n- NEVER commit, push, create branches, or create PRs without explicit user approval.\n- "
  },
  {
    "path": ".agents/skills/shipping-git/SKILL.md",
    "chars": 2452,
    "preview": "---\nname: shipping-git\ndescription: Shipping workflow using standard Git and GitHub CLI. Provides guidance for committin"
  },
  {
    "path": ".agents/skills/shipping-graphite/INJECT.md",
    "chars": 1077,
    "preview": "---\nheading: Shipping (Graphite)\n---\n\n- Check if [Graphite](https://graphite.dev/) is installed (`which gt`). Prefer Gra"
  },
  {
    "path": ".agents/skills/shipping-graphite/SKILL.md",
    "chars": 3624,
    "preview": "---\nname: shipping-graphite\ndescription: Shipping workflow using Graphite CLI. Provides guidance for committing, branchi"
  },
  {
    "path": ".agents/skills/ts-docblocks/INJECT.md",
    "chars": 480,
    "preview": "---\nheading: TypeScript Docblocks\n---\n\n- All exported functions, types, interfaces, and constants MUST have JSDoc docblo"
  },
  {
    "path": ".agents/skills/ts-docblocks/SKILL.md",
    "chars": 6818,
    "preview": "---\nname: ts-docblocks\ndescription: Add missing JSDoc docblocks to exported symbols in TypeScript projects. Use when wri"
  },
  {
    "path": ".agents/skills/ts-readme/INJECT.md",
    "chars": 353,
    "preview": "---\nheading: TypeScript READMEs\n---\n\n- When adding a new public API, add or update the package's README.\n- Structure: br"
  },
  {
    "path": ".agents/skills/ts-readme/SKILL.md",
    "chars": 5937,
    "preview": "---\nname: ts-readme\ndescription: Guidelines for writing developer-friendly READMEs for TypeScript libraries. Use when cr"
  },
  {
    "path": ".bundlemonrc.json",
    "chars": 320,
    "preview": "{\n    \"baseDir\": \"./packages/\",\n    \"files\": [\n        {\n            \"friendlyName\": \"@solana/kit production bundle\",\n  "
  },
  {
    "path": ".changeset/bold-drinks-strive.md",
    "chars": 828,
    "preview": "---\n'@solana/rpc-spec': minor\n'@solana/kit': minor\n---\n\nAdd a `reactiveStore()` method to `PendingRpcRequest`. It fires "
  },
  {
    "path": ".changeset/brown-candles-relax.md",
    "chars": 594,
    "preview": "---\n'@solana/rpc-subscriptions-spec': minor\n'@solana/kit': minor\n---\n\nAdd a `reactiveStore()` method to `PendingRpcSubsc"
  },
  {
    "path": ".changeset/clever-spies-shout.md",
    "chars": 1150,
    "preview": "---\n'@solana/subscribable': minor\n'@solana/errors': minor\n'@solana/kit': minor\n---\n\nAdd `retry()` and `getUnifiedState()"
  },
  {
    "path": ".changeset/config.json",
    "chars": 546,
    "preview": "{\n  \"$schema\": \"https://unpkg.com/@changesets/config@3.0.0/schema.json\",\n  \"access\": \"public\",\n  \"baseBranch\": \"main\",\n "
  },
  {
    "path": ".changeset/some-views-pick.md",
    "chars": 278,
    "preview": "---\n'@solana/subscribable': minor\n'@solana/rpc-subscriptions-spec': minor\n'@solana/kit': minor\n'@solana/errors': minor\n-"
  },
  {
    "path": ".changeset/thin-cats-drop.md",
    "chars": 768,
    "preview": "---\n'@solana/subscribable': minor\n---\n\nAdded `createReactiveActionStore` — a framework-agnostic state machine that wraps"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/0_bug.md",
    "chars": 762,
    "preview": "---\nname: Report a Bug\nabout: Help us reproduce a bug you've found so that we can fix it\ntitle: ''\nlabels: ['bug']\nassig"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/1_feature.md",
    "chars": 633,
    "preview": "---\nname: Suggest a Feature\nabout: Propose an idea for how to make this library better.\ntitle: ''\nlabels: ['enhancement'"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 355,
    "preview": "contact_links:\n  - about: 'Have a question about using this software, or about Solana in general? Post it on the Solana "
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 50,
    "preview": "#### Problem\n\n\n\n#### Summary of Changes\n\n\n\nFixes #"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 1441,
    "preview": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where "
  },
  {
    "path": ".github/label-actions.yml",
    "chars": 894,
    "preview": "question:\n  issues:\n    # Post a comment, `{issue-author}` is an optional placeholder\n    comment: >\n      Hi @{issue-au"
  },
  {
    "path": ".github/workflows/actions/install-dependencies/action.yml",
    "chars": 571,
    "preview": "name: Install Dependencies\ndescription: Sets up Node and its package manager, then installs all dependencies\n\ninputs:\n  "
  },
  {
    "path": ".github/workflows/actions/setup-validator/action.yml",
    "chars": 1055,
    "preview": "name: Install Solana Test Validator\ndescription: Downloads and caches an install of the latest Solana Test Validator\n\nou"
  },
  {
    "path": ".github/workflows/autolock-inactive-threads.yml",
    "chars": 1100,
    "preview": "name: 'Lock inactive threads'\n\non:\n  # Chosen to be just before London wakes up and way past San Francisco's bedtime.\n  "
  },
  {
    "path": ".github/workflows/backport.yml",
    "chars": 750,
    "preview": "name: Backport\non:\n  pull_request_target:\n    types:\n      - closed\n      - labeled\n\npermissions:\n  contents: write\n  pu"
  },
  {
    "path": ".github/workflows/bundlesize.yml",
    "chars": 1303,
    "preview": "name: Compare bundle size\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n    types: [synchronize, opened, reope"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 4780,
    "preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
  },
  {
    "path": ".github/workflows/deploy-docs.yml",
    "chars": 1909,
    "preview": "name: Deploy Documentation\n\non:\n  workflow_dispatch:\n    branches:\n      - main\n  push:\n    branches:\n      - main\n\nperm"
  },
  {
    "path": ".github/workflows/dismiss-stale-pr-reviews.yml",
    "chars": 545,
    "preview": "name: Dismiss Stale PR Reviews\n\non:\n  pull_request_target:\n    types: [opened, synchronize, reopened]\n\npermissions:\n  ac"
  },
  {
    "path": ".github/workflows/label-actions.yml",
    "chars": 253,
    "preview": "name: 'Issue Label Actions'\n\non:\n  issues:\n    types: [labeled, unlabeled]\n\npermissions:\n  contents: read\n  issues: writ"
  },
  {
    "path": ".github/workflows/manage-stale-threads.yml",
    "chars": 1639,
    "preview": "name: 'Manage stale issues and PRs'\non:\n  # Chosen to be just before London wakes up and way past San Francisco's bedtim"
  },
  {
    "path": ".github/workflows/preview-docs.yml",
    "chars": 2722,
    "preview": "name: Preview Documentation\n\non:\n  pull_request:\n  merge_group:\n\npermissions:\n  contents: read\n\nenv:\n  # Among other thi"
  },
  {
    "path": ".github/workflows/publish-packages.yml",
    "chars": 4507,
    "preview": "name: Publish Packages (or Tag Release Manually upon manual dispatch)\n\non:\n  workflow_dispatch:\n    branches:\n      - ma"
  },
  {
    "path": ".github/workflows/pull-requests.yml",
    "chars": 2205,
    "preview": "name: Pull requests\n\non:\n  pull_request:\n  merge_group:\n\npermissions:\n  contents: read\n\nenv:\n  # Among other things, opt"
  },
  {
    "path": ".github/workflows/update-docs-lockfile.yml",
    "chars": 1588,
    "preview": "name: Update Docs Lockfile\n\non:\n  pull_request_target:\n    paths:\n      - 'docs/package.json'\n\npermissions:\n  contents: "
  },
  {
    "path": ".gitignore",
    "chars": 338,
    "preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\nnode_modules\n.pnp\n"
  },
  {
    "path": ".npmrc",
    "chars": 66,
    "preview": "auto-install-peers=true\nengine-strict=true\nworkspaces-update=false"
  },
  {
    "path": ".prettierignore",
    "chars": 171,
    "preview": ".changeset/\n.github/**.md\n\n# These are autogenerated, so leave them alone\n**/CHANGELOG.md\n\ndeclarations/\ndist/\ndoc/\nlib/"
  },
  {
    "path": ".skills-inject.json",
    "chars": 105,
    "preview": "{\n  \"targets\": [\n    \"CLAUDE.md\"\n  ],\n  \"skillsDirs\": [\n    \".agents/skills\",\n    \".claude/skills\"\n  ]\n}\n"
  },
  {
    "path": ".vscode/extensions.json",
    "chars": 67,
    "preview": "{\n    \"recommendations\": [\n        \"esbenp.prettier-vscode\"\n    ]\n}"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 60,
    "preview": "{\n    \"editor.defaultFormatter\": \"esbenp.prettier-vscode\"\n}\n"
  },
  {
    "path": "CLAUDE.md",
    "chars": 11452,
    "preview": "# Agent Instructions\n\n## Project Overview\n\nKit (`@solana/kit`) is the official JavaScript SDK for building Solana applic"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1385,
    "preview": "Kit is developed in public and we encourage and appreciate contributions.\n\n## Getting Started\n\n1. Install dependencies: "
  },
  {
    "path": "LICENSE",
    "chars": 1060,
    "preview": "Copyright (c) 2023 Solana Labs, Inc\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of thi"
  },
  {
    "path": "README.md",
    "chars": 69105,
    "preview": "[![npm][npm-image]][npm-url]\n[![npm-downloads][npm-downloads-image]][npm-url]\n<br />\n[![code-style-prettier][code-style-"
  },
  {
    "path": "SECURITY.md",
    "chars": 3704,
    "preview": "# Security Policy\n\n1. [Reporting security problems](#reporting)\n2. [Incident Response Process](#process)\n\n<a name=\"repor"
  },
  {
    "path": "docs/.eslintrc.json",
    "chars": 63,
    "preview": "{\n    \"extends\": [\"next/core-web-vitals\", \"next/typescript\"]\n}\n"
  },
  {
    "path": "docs/.gitignore",
    "chars": 275,
    "preview": "# deps\n/node_modules\n\n# generated content\n.contentlayer\n.content-collections\n.source\n\n# test & build\n/coverage\n/.next/\n/"
  },
  {
    "path": "docs/.npmrc",
    "chars": 31,
    "preview": "enable-pre-post-scripts = true\n"
  },
  {
    "path": "docs/.prettierignore",
    "chars": 27,
    "preview": "pnpm-lock.yaml\ncontent/api/"
  },
  {
    "path": "docs/README.md",
    "chars": 949,
    "preview": "# Kit documentation\n\nDocumentation website for Kit, built with [Fumadocs](https://github.com/fuma-nama/fumadocs).\n\n## In"
  },
  {
    "path": "docs/build-api-docs.sh",
    "chars": 744,
    "preview": "#!/usr/bin/env bash\nset -euo pipefail\n\ncd ..\npnpm turbo compile:docs --output-logs=hash-only\n\n# Move generated docs.\nech"
  },
  {
    "path": "docs/build-api-index.js",
    "chars": 9526,
    "preview": "#!/usr/bin/env node\n\n/**\n * Generate API index page using TypeDoc JSON output\n * This script uses TypeDoc's JSON output "
  },
  {
    "path": "docs/cli.json",
    "chars": 300,
    "preview": "{\n  \"$schema\": \"node_modules/@fumadocs/cli/dist/schema/src.json\",\n  \"aliases\": {\n    \"uiDir\": \"./components/ui\",\n    \"co"
  },
  {
    "path": "docs/content/.prettierrc",
    "chars": 128,
    "preview": "{\n    \"$schema\": \"https://json.schemastore.org/prettierrc\",\n    \"tabWidth\": 4,\n    \"singleQuote\": true,\n    \"printWidth\""
  },
  {
    "path": "docs/content/docs/advanced-guides/codecs.mdx",
    "chars": 106836,
    "preview": "---\ntitle: Codecs\ndescription: Encode and decode anything\n---\n\n## Introduction\n\nKit includes a powerful serialisation sy"
  },
  {
    "path": "docs/content/docs/advanced-guides/errors.mdx",
    "chars": 13477,
    "preview": "---\ntitle: Errors\ndescription: Recover from errors in development and production\n---\n\n## Introduction\n\nThe ecosystem of "
  },
  {
    "path": "docs/content/docs/advanced-guides/index.mdx",
    "chars": 845,
    "preview": "---\ntitle: Advanced Guides\ndescription: Deep dives into Kit's fundamental building blocks\n---\n\nThese guides go deep on t"
  },
  {
    "path": "docs/content/docs/advanced-guides/instruction-plans.mdx",
    "chars": 37360,
    "preview": "---\ntitle: Instruction Plans\ndescription: Compose instructions into multi-step operations\n---\n\n## Introduction\n\nInstruct"
  },
  {
    "path": "docs/content/docs/advanced-guides/keypairs.mdx",
    "chars": 20339,
    "preview": "---\ntitle: Key pairs\ndescription: Sign and verify messages and transactions using Ed25519 keys\n---\n\n## Introduction\n\nKit"
  },
  {
    "path": "docs/content/docs/advanced-guides/kit-without-a-client.mdx",
    "chars": 9898,
    "preview": "---\ntitle: Kit without a client\ndescription: Use Kit's full power without the client abstraction\n---\n\nThis guide shows h"
  },
  {
    "path": "docs/content/docs/advanced-guides/meta.json",
    "chars": 106,
    "preview": "{\n    \"title\": \"Advanced Guides\",\n    \"defaultOpen\": true,\n    \"pages\": [\"kit-without-a-client\", \"...\"]\n}\n"
  },
  {
    "path": "docs/content/docs/advanced-guides/offchain-messages.mdx",
    "chars": 17600,
    "preview": "---\ntitle: Offchain messages\ndescription: Build, compile, sign, and verify messages offchain\n---\n\n## Introduction\n\nAny t"
  },
  {
    "path": "docs/content/docs/advanced-guides/signers.mdx",
    "chars": 33691,
    "preview": "---\ntitle: Signers\ndescription: Accounts with signing capabilities\n---\n\n## Introduction\n\nSigners are an abstraction that"
  },
  {
    "path": "docs/content/docs/advanced-guides/transactions.mdx",
    "chars": 29975,
    "preview": "---\ntitle: Transactions\ndescription: Build and compile transaction messages\n---\n\n## Introduction\n\nTo take an action on S"
  },
  {
    "path": "docs/content/docs/getting-started.mdx",
    "chars": 10856,
    "preview": "---\ntitle: Getting started\ndescription: Build your first Solana app with Kit\n---\n\nIn this tutorial, we'll build a small "
  },
  {
    "path": "docs/content/docs/guides/fetching-accounts.mdx",
    "chars": 9202,
    "preview": "---\ntitle: Fetching accounts\ndescription: Read and decode onchain account data\n---\n\nReading data from Solana usually mea"
  },
  {
    "path": "docs/content/docs/guides/index.mdx",
    "chars": 943,
    "preview": "---\ntitle: Guides\ndescription: Practical guides for common tasks with Kit\n---\n\nThe pages in this section cover the most "
  },
  {
    "path": "docs/content/docs/guides/meta.json",
    "chars": 322,
    "preview": "{\n    \"title\": \"Guides\",\n    \"defaultOpen\": true,\n    \"pages\": [\n        \"setting-up-signers\",\n        \"rpc\",\n        \"r"
  },
  {
    "path": "docs/content/docs/guides/rpc-subscriptions.mdx",
    "chars": 7629,
    "preview": "---\ntitle: RPC subscriptions\ndescription: Get notified of changes to the blockchain\n---\n\nRPC subscriptions let your appl"
  },
  {
    "path": "docs/content/docs/guides/rpc.mdx",
    "chars": 7128,
    "preview": "---\ntitle: RPC requests\ndescription: Read and write data to the blockchain\n---\n\nSolana applications interact with the ne"
  },
  {
    "path": "docs/content/docs/guides/sending-multiple-transactions.mdx",
    "chars": 10937,
    "preview": "---\ntitle: Sending multiple transactions\ndescription: Plan and execute work across several transactions\n---\n\nWhen an ope"
  },
  {
    "path": "docs/content/docs/guides/sending-transactions.mdx",
    "chars": 8897,
    "preview": "---\ntitle: Sending transactions\ndescription: Send single transactions with a Kit client\n---\n\nA Kit client can take a lis"
  },
  {
    "path": "docs/content/docs/guides/setting-up-signers.mdx",
    "chars": 7164,
    "preview": "---\ntitle: Setting up signers\ndescription: Authorize transactions, pay fees, and own onchain assets\n---\n\nMost Kit applic"
  },
  {
    "path": "docs/content/docs/guides/testing-and-local-development.mdx",
    "chars": 8977,
    "preview": "---\ntitle: Testing & local development\ndescription: Test your Solana applications locally\n---\n\nLocal development and tes"
  },
  {
    "path": "docs/content/docs/guides/using-program-plugins.mdx",
    "chars": 9968,
    "preview": "---\ntitle: Using program plugins\ndescription: Add typed program APIs to your client\n---\n\nProgram plugins are how Kit cli"
  },
  {
    "path": "docs/content/docs/index.mdx",
    "chars": 6549,
    "preview": "---\ntitle: Installation\ndescription: Get started with Kit\n---\n\nKit is a JavaScript SDK for building Solana apps across e"
  },
  {
    "path": "docs/content/docs/meta.json",
    "chars": 245,
    "preview": "{\n    \"title\": \"Documentation\",\n    \"defaultOpen\": true,\n    \"root\": true,\n    \"pages\": [\n        \"index\",\n        \"gett"
  },
  {
    "path": "docs/content/docs/plugins/available-plugins.mdx",
    "chars": 13683,
    "preview": "---\ntitle: Available plugins\ndescription: Directory of plugins for Kit clients\n---\n\nThis page lists the Kit plugins publ"
  },
  {
    "path": "docs/content/docs/plugins/creating-custom-plugins.mdx",
    "chars": 7238,
    "preview": "---\ntitle: Creating custom plugins\ndescription: Write your own plugins to extend Kit clients\n---\n\nPlugins are small, foc"
  },
  {
    "path": "docs/content/docs/plugins/generating-program-plugins.mdx",
    "chars": 4166,
    "preview": "---\ntitle: Generating program plugins\ndescription: Generate typed plugins for your Solana programs using Codama\n---\n\nPro"
  },
  {
    "path": "docs/content/docs/plugins/index.mdx",
    "chars": 4097,
    "preview": "---\ntitle: Plugins\ndescription: Understand Kit's plugin ecosystem\n---\n\nPlugins are how Kit clients gain capabilities. Ev"
  },
  {
    "path": "docs/content/docs/plugins/meta.json",
    "chars": 145,
    "preview": "{\n    \"title\": \"Plugins\",\n    \"defaultOpen\": true,\n    \"pages\": [\"available-plugins\", \"creating-custom-plugins\", \"genera"
  },
  {
    "path": "docs/content/docs/tree-shaking.tsx",
    "chars": 187636,
    "preview": "import { ImageZoom } from 'fumadocs-ui/components/image-zoom';\n\nexport default function TreeShaking() {\n    return (\n   "
  },
  {
    "path": "docs/content/docs/upgrade-guide.mdx",
    "chars": 21977,
    "preview": "---\ntitle: Upgrade guide\ndescription: Upgrade your Web3.js project to Kit\n---\n\nimport TreeShaking from './tree-shaking';"
  },
  {
    "path": "docs/content/home/example-codecs.mdx",
    "chars": 343,
    "preview": "---\ntitle: Codecs Example\n---\n\n{/* Please keep visible code between 4 to 8 lines of code. */}\n\n```ts\nconst personCodec ="
  },
  {
    "path": "docs/content/home/example-rpc-subscriptions.mdx",
    "chars": 487,
    "preview": "---\ntitle: RPC Subscriptions Example\n---\n\n{/* Please keep visible code between 4 to 8 lines of code. */}\n\n```ts\nconst rp"
  },
  {
    "path": "docs/content/home/example-rpc.mdx",
    "chars": 386,
    "preview": "---\ntitle: RPC Example\n---\n\n{/* Please keep visible code between 4 to 8 lines of code. */}\n\n```ts\nconst rpc = createSola"
  },
  {
    "path": "docs/content/home/example-signers.mdx",
    "chars": 296,
    "preview": "---\ntitle: Signers Example\n---\n\n{/* Please keep visible code between 4 to 8 lines of code. */}\n\n```ts\nconst keypairSigne"
  },
  {
    "path": "docs/content/home/example-solana-programs.mdx",
    "chars": 369,
    "preview": "---\ntitle: Solana Programs Example\n---\n\n{/* Please keep visible code between 4 to 8 lines of code. */}\n\n```ts\nimport { g"
  },
  {
    "path": "docs/content/home/example-transactions.mdx",
    "chars": 422,
    "preview": "---\ntitle: Transactions Example\n---\n\n{/* Please keep visible code between 4 to 8 lines of code. */}\n\n```ts\nconst transac"
  },
  {
    "path": "docs/content/recipes/airdropping-tokens.mdx",
    "chars": 6058,
    "preview": "---\ntitle: Airdropping tokens\ndescription: Airdrop tokens to many wallets using parallel transaction plans\n---\n\nThis rec"
  },
  {
    "path": "docs/content/recipes/creating-a-token.mdx",
    "chars": 5623,
    "preview": "---\ntitle: Creating a token\ndescription: Create a new SPL token mint, mint tokens, and transfer them\n---\n\nThis recipe wa"
  },
  {
    "path": "docs/content/recipes/index.mdx",
    "chars": 621,
    "preview": "---\ntitle: Recipes\ndescription: Quick how-to guides for common Solana tasks\n---\n\nRecipes are short, copy-pasteable walkt"
  },
  {
    "path": "docs/content/recipes/meta.json",
    "chars": 129,
    "preview": "{\n    \"title\": \"Recipes\",\n    \"root\": true,\n    \"pages\": [\"...\", \"transferring-sol\", \"creating-a-token\", \"airdropping-to"
  },
  {
    "path": "docs/content/recipes/transferring-sol.mdx",
    "chars": 4811,
    "preview": "---\ntitle: Transferring SOL\ndescription: Send SOL from one account to another with error handling\n---\n\nThis recipe walks"
  },
  {
    "path": "docs/next.config.mjs",
    "chars": 2276,
    "preview": "import { createMDX } from 'fumadocs-mdx/next';\n\nconst withMDX = createMDX();\n\nconst docsRouteRedirects = [\n    ['compati"
  },
  {
    "path": "docs/package.json",
    "chars": 2265,
    "preview": "{\n    \"name\": \"@solana/kit-docs\",\n    \"version\": \"0.0.0\",\n    \"private\": true,\n    \"scripts\": {\n        \"build\": \"NODE_O"
  },
  {
    "path": "docs/postcss.config.mjs",
    "chars": 78,
    "preview": "export default {\n    plugins: {\n        '@tailwindcss/postcss': {},\n    },\n};\n"
  },
  {
    "path": "docs/source.config.ts",
    "chars": 1530,
    "preview": "import { rehypeCodeDefaultOptions } from 'fumadocs-core/mdx-plugins';\nimport { remarkInstall } from 'fumadocs-docgen';\ni"
  },
  {
    "path": "docs/src/app/(home)/layout.tsx",
    "chars": 374,
    "preview": "import type { ReactNode } from 'react';\nimport { HomeLayout, HomeLayoutProps } from 'fumadocs-ui/layouts/home';\nimport {"
  },
  {
    "path": "docs/src/app/(home)/page/code.tsx",
    "chars": 1507,
    "preview": "'use client';\n\nimport React, { useContext } from 'react';\nimport { ExampleContext } from './example-context';\nimport { P"
  },
  {
    "path": "docs/src/app/(home)/page/cta.tsx",
    "chars": 2173,
    "preview": "import { ThemedImage } from '@/lib/ThemedImage';\nimport DarkMascotInquisitiveImage from '@/public/mascots/dark-mascot-in"
  },
  {
    "path": "docs/src/app/(home)/page/example-context.tsx",
    "chars": 2544,
    "preview": "'use client';\n\nimport { createContext, useEffect, useMemo, useRef, useState } from 'react';\n\nconst EXAMPLES = ['rpc', 'c"
  },
  {
    "path": "docs/src/app/(home)/page/features.tsx",
    "chars": 5970,
    "preview": "'use client';\n\nimport { ThemedImage } from '@/lib/ThemedImage';\nimport DarkCodecsImage from '@/public/features/dark-code"
  },
  {
    "path": "docs/src/app/(home)/page/footer.tsx",
    "chars": 1442,
    "preview": "import { ThemedImage } from '@/lib/ThemedImage';\nimport DarkFooter from '@/public/footer/dark-footer.svg';\nimport LightF"
  },
  {
    "path": "docs/src/app/(home)/page/hero.tsx",
    "chars": 1822,
    "preview": "import { ThemedImage } from '@/lib/ThemedImage';\nimport DarkHeader from '@/public/header/dark-header.jpg';\nimport LightH"
  },
  {
    "path": "docs/src/app/(home)/page.tsx",
    "chars": 1168,
    "preview": "import { home } from '@/.source';\nimport React from 'react';\n\nimport { mdxComponents } from '../layout.config';\nimport H"
  },
  {
    "path": "docs/src/app/api/[[...slug]]/page.tsx",
    "chars": 1623,
    "preview": "import { mdxComponents } from '@/app/layout.config';\nimport { LLMCopyButton, ViewOptions } from '@/components/page-actio"
  },
  {
    "path": "docs/src/app/api/layout.tsx",
    "chars": 742,
    "preview": "import { DocsLayout, DocsLayoutProps } from 'fumadocs-ui/layouts/docs';\nimport type { ReactNode } from 'react';\nimport {"
  },
  {
    "path": "docs/src/app/docs/[[...slug]]/page.tsx",
    "chars": 2273,
    "preview": "import { mdxComponents } from '@/app/layout.config';\nimport { LLMCopyButton, ViewOptions } from '@/components/page-actio"
  },
  {
    "path": "docs/src/app/docs/layout.tsx",
    "chars": 734,
    "preview": "import { baseOptions } from '@/app/layout.config';\nimport { docsSource } from '@/lib/source';\nimport { DocsLayout, DocsL"
  },
  {
    "path": "docs/src/app/docs/navbar.tsx",
    "chars": 1458,
    "preview": "import Link from 'fumadocs-core/link';\nimport { SearchToggle } from 'fumadocs-ui/components/layout/search-toggle';\nimpor"
  },
  {
    "path": "docs/src/app/docs/sidebar.tsx",
    "chars": 4604,
    "preview": "import Link from 'fumadocs-core/link';\nimport { RootToggle } from 'fumadocs-ui/components/layout/root-toggle';\nimport { "
  },
  {
    "path": "docs/src/app/global.css",
    "chars": 386,
    "preview": "@import 'tailwindcss';\n\n/* Fumadocs imports. */\n@import 'fumadocs-ui/css/neutral.css';\n@import 'fumadocs-ui/css/preset.c"
  },
  {
    "path": "docs/src/app/layout.config.tsx",
    "chars": 1832,
    "preview": "import { CardTab, CardTabs } from '@/components/card-tabs';\nimport { overridenMdxComponents } from '@/lib/Overrides';\nim"
  },
  {
    "path": "docs/src/app/layout.tsx",
    "chars": 801,
    "preview": "import './global.css';\n\nimport InKeepSearchDialog from '@/lib/InKeepSearchDialog';\nimport { RootProvider } from 'fumadoc"
  },
  {
    "path": "docs/src/app/llms-full.txt/route.ts",
    "chars": 410,
    "preview": "import { apiSource, docsSource, recipesSource } from '@/lib/source';\nimport { getLLMText } from '@/lib/get-llm-text';\n\n/"
  },
  {
    "path": "docs/src/app/llms.mdx/api/[[...slug]]/route.ts",
    "chars": 591,
    "preview": "import { getLLMText } from '@/lib/get-llm-text';\nimport { apiSource } from '@/lib/source';\nimport { notFound } from 'nex"
  },
  {
    "path": "docs/src/app/llms.mdx/docs/[[...slug]]/route.ts",
    "chars": 595,
    "preview": "import { getLLMText } from '@/lib/get-llm-text';\nimport { docsSource } from '@/lib/source';\nimport { notFound } from 'ne"
  },
  {
    "path": "docs/src/app/llms.mdx/recipes/[[...slug]]/route.ts",
    "chars": 607,
    "preview": "import { getLLMText } from '@/lib/get-llm-text';\nimport { recipesSource } from '@/lib/source';\nimport { notFound } from "
  },
  {
    "path": "docs/src/app/logo.tsx",
    "chars": 12897,
    "preview": "import { cn } from 'fumadocs-ui/utils/cn';\n\nexport function LogoWithSolana({\n    className,\n    solanaClassName,\n}: Reac"
  },
  {
    "path": "docs/src/app/recipes/[[...slug]]/page.tsx",
    "chars": 2288,
    "preview": "import { mdxComponents } from '@/app/layout.config';\nimport { LLMCopyButton, ViewOptions } from '@/components/page-actio"
  },
  {
    "path": "docs/src/app/recipes/layout.tsx",
    "chars": 758,
    "preview": "import { baseOptions } from '@/app/layout.config';\nimport { recipesSource } from '@/lib/source';\nimport { DocsLayout, Do"
  },
  {
    "path": "docs/src/app/styles/brand.css",
    "chars": 1551,
    "preview": "@theme {\n    /* ---------*/\n    /* Colours. */\n    /* ---------*/\n\n    /* Linen scale. */\n    --color-linen-50: #f9f6f1;"
  },
  {
    "path": "docs/src/app/styles/fumadocs-overrides.css",
    "chars": 4971,
    "preview": "/* -------- */\n/* Colours. */\n/* -------- */\n\n@theme {\n    --color-fd-background: var(--color-linen-100);\n    --color-fd"
  },
  {
    "path": "docs/src/app/styles/typography.css",
    "chars": 751,
    "preview": "/* ------ */\n/* Fonts. */\n/* ------ */\n\nh1,\nh2,\nh3 {\n    font-family: var(--font-title);\n    font-weight: 700;\n}\n\n.prose"
  },
  {
    "path": "docs/src/components/card-tabs.tsx",
    "chars": 5047,
    "preview": "'use client';\n\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from 'fumadocs-ui/components/ui/tabs';\nimport { creat"
  },
  {
    "path": "docs/src/components/page-actions.tsx",
    "chars": 11040,
    "preview": "'use client';\nimport { useMemo, useState } from 'react';\nimport { Check, ChevronDown, Copy, ExternalLinkIcon } from 'luc"
  },
  {
    "path": "docs/src/components/ui/button.tsx",
    "chars": 1241,
    "preview": "import { cva, type VariantProps } from 'class-variance-authority';\n\nconst variants = {\n  primary:\n    'bg-fd-primary tex"
  },
  {
    "path": "docs/src/components/ui/popover.tsx",
    "chars": 1273,
    "preview": "'use client';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport * as React from 'react';\nimport { cn }"
  },
  {
    "path": "docs/src/lib/InKeepSearchDialog.tsx",
    "chars": 5045,
    "preview": "'use client';\n\nimport { type InkeepModalSearchAndChatProps } from '@inkeep/cxkit-react';\nimport type { SharedProps } fro"
  },
  {
    "path": "docs/src/lib/Overrides.tsx",
    "chars": 734,
    "preview": "import { Card as BaseCard, Cards as BaseCards } from 'fumadocs-ui/components/card';\nimport { Tab as BaseTab, Tabs as Bas"
  },
  {
    "path": "docs/src/lib/Spread.tsx",
    "chars": 278,
    "preview": "import { ReactNode } from 'react';\n\nexport function Spread({ children }: { children: ReactNode }) {\n    return (\n       "
  },
  {
    "path": "docs/src/lib/ThemedImage.tsx",
    "chars": 1055,
    "preview": "import { cn } from 'fumadocs-ui/utils/cn';\nimport Image, { ImageProps, StaticImageData } from 'next/image';\n\nexport func"
  },
  {
    "path": "docs/src/lib/cn.ts",
    "chars": 48,
    "preview": "export { twMerge as cn } from 'tailwind-merge';\n"
  },
  {
    "path": "docs/src/lib/get-llm-text.ts",
    "chars": 333,
    "preview": "import { apiSource, docsSource } from '@/lib/source';\nimport type { InferPageType } from 'fumadocs-core/source';\n\nexport"
  },
  {
    "path": "docs/src/lib/source.ts",
    "chars": 398,
    "preview": "import { api, docs, recipes } from '@/.source';\nimport { loader } from 'fumadocs-core/source';\n\nexport const apiSource ="
  },
  {
    "path": "docs/tsconfig.json",
    "chars": 897,
    "preview": "{\n    \"compilerOptions\": {\n        \"baseUrl\": \".\",\n        \"target\": \"ESNext\",\n        \"lib\": [\"dom\", \"dom.iterable\", \"e"
  },
  {
    "path": "eslint.config.mjs",
    "chars": 67,
    "preview": "export { default } from '@solana/eslint-config/eslint.config.mjs';\n"
  },
  {
    "path": "examples/README.md",
    "chars": 355,
    "preview": "# Examples\n\n## One-time setup\n\nStart by installing all dependencies.\n\n```shell\npnpm install\n```\n\nMost examples use a loc"
  },
  {
    "path": "examples/deserialize-transaction/LICENSE",
    "chars": 1060,
    "preview": "Copyright (c) 2023 Solana Labs, Inc\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of thi"
  },
  {
    "path": "examples/deserialize-transaction/package.json",
    "chars": 1292,
    "preview": "{\n    \"name\": \"@solana/example-deserialize-transaction\",\n    \"private\": true,\n    \"type\": \"module\",\n    \"scripts\": {\n   "
  },
  {
    "path": "examples/deserialize-transaction/src/example.ts",
    "chars": 19503,
    "preview": "/**\n * EXAMPLE\n * Deserialize and inspect a transaction with @solana/kit\n *\n * Before running any of the examples in thi"
  },
  {
    "path": "examples/deserialize-transaction/tsconfig.json",
    "chars": 346,
    "preview": "{\n    \"$schema\": \"https://json.schemastore.org/tsconfig\",\n    \"compilerOptions\": {\n        \"module\": \"NodeNext\",\n       "
  },
  {
    "path": "examples/react-app/.gitignore",
    "chars": 253,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndis"
  },
  {
    "path": "examples/react-app/LICENSE",
    "chars": 1060,
    "preview": "Copyright (c) 2023 Solana Labs, Inc\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of thi"
  },
  {
    "path": "examples/react-app/README.md",
    "chars": 1354,
    "preview": "# @solana/example-react-app\n\nThis is an example of how to use `@solana/kit` and `@solana/react` to build a React web app"
  },
  {
    "path": "examples/react-app/eslint.config.mjs",
    "chars": 974,
    "preview": "import solanaReactConfig from '@solana/eslint-config/eslint.config.react.mjs';\nimport reactRefreshPlugin from 'eslint-pl"
  },
  {
    "path": "examples/react-app/index.html",
    "chars": 415,
    "preview": "<!doctype html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\" />\n        <link rel=\"icon\" type=\"image/svg+xm"
  },
  {
    "path": "examples/react-app/package.json",
    "chars": 1695,
    "preview": "{\n    \"name\": \"@solana/example-react-app\",\n    \"private\": true,\n    \"version\": \"0.0.0\",\n    \"type\": \"module\",\n    \"scrip"
  },
  {
    "path": "examples/react-app/src/components/AirdropButton.tsx",
    "chars": 4100,
    "preview": "import { Blockquote, Button, Dialog, Flex, Link, Text } from '@radix-ui/themes';\nimport { Address, airdropFactory, lampo"
  },
  {
    "path": "examples/react-app/src/components/Balance.tsx",
    "chars": 2227,
    "preview": "import { ExclamationTriangleIcon } from '@radix-ui/react-icons';\nimport { Text, Tooltip } from '@radix-ui/themes';\nimpor"
  },
  {
    "path": "examples/react-app/src/components/BaseSignMessageFeaturePanel.tsx",
    "chars": 4620,
    "preview": "import { Pencil1Icon } from '@radix-ui/react-icons';\nimport { Blockquote, Box, Button, Code, DataList, Dialog, Flex, Tex"
  },
  {
    "path": "examples/react-app/src/components/ConnectWalletMenu.tsx",
    "chars": 4229,
    "preview": "import { ExclamationTriangleIcon } from '@radix-ui/react-icons';\nimport { Button, Callout, DropdownMenu } from '@radix-u"
  },
  {
    "path": "examples/react-app/src/components/ConnectWalletMenuItem.tsx",
    "chars": 3717,
    "preview": "import { DropdownMenu } from '@radix-ui/themes';\nimport { useSelectedWalletAccount } from '@solana/react';\nimport type {"
  },
  {
    "path": "examples/react-app/src/components/DisconnectButton.tsx",
    "chars": 1637,
    "preview": "import { ExclamationTriangleIcon, ExitIcon } from '@radix-ui/react-icons';\nimport { Button, Tooltip } from '@radix-ui/th"
  },
  {
    "path": "examples/react-app/src/components/ErrorDialog.tsx",
    "chars": 1263,
    "preview": "import { AlertDialog, Blockquote, Button, Flex } from '@radix-ui/themes';\nimport { useState } from 'react';\n\nimport { ge"
  },
  {
    "path": "examples/react-app/src/components/FeatureNotSupportedCallout.tsx",
    "chars": 817,
    "preview": "import { ExclamationTriangleIcon } from '@radix-ui/react-icons';\nimport { Callout } from '@radix-ui/themes';\nimport Reac"
  },
  {
    "path": "examples/react-app/src/components/FeaturePanel.tsx",
    "chars": 469,
    "preview": "import { DataList } from '@radix-ui/themes';\nimport React from 'react';\n\ntype Props = Readonly<{\n    children: React.Rea"
  },
  {
    "path": "examples/react-app/src/components/Nav.tsx",
    "chars": 2714,
    "preview": "import { Badge, Box, DropdownMenu, Flex, Heading } from '@radix-ui/themes';\nimport { useContext } from 'react';\n\nimport "
  },
  {
    "path": "examples/react-app/src/components/SignInMenu.tsx",
    "chars": 3222,
    "preview": "import { ExclamationTriangleIcon } from '@radix-ui/react-icons';\nimport { Button, Callout, DropdownMenu } from '@radix-u"
  },
  {
    "path": "examples/react-app/src/components/SignInMenuItem.tsx",
    "chars": 1373,
    "preview": "import { DropdownMenu } from '@radix-ui/themes';\nimport { useSignIn } from '@solana/react';\nimport type { UiWallet, UiWa"
  },
  {
    "path": "examples/react-app/src/components/SlotIndicator.tsx",
    "chars": 1801,
    "preview": "import { Link, Text } from '@radix-ui/themes';\nimport { useContext, useEffect, useState, useSyncExternalStore } from 're"
  },
  {
    "path": "examples/react-app/src/components/SolanaPartialSignTransactionFeaturePanel.tsx",
    "chars": 14280,
    "preview": "import { Blockquote, Box, Button, Dialog, Flex, Link, Select, Text, TextField } from '@radix-ui/themes';\nimport {\n    Ad"
  },
  {
    "path": "examples/react-app/src/components/SolanaSignAndSendTransactionFeaturePanel.tsx",
    "chars": 10725,
    "preview": "import { Blockquote, Box, Button, Dialog, Flex, Link, Select, Text, TextField } from '@radix-ui/themes';\nimport {\n    ad"
  },
  {
    "path": "examples/react-app/src/components/SolanaSignMessageFeaturePanel.tsx",
    "chars": 1185,
    "preview": "import type { Address } from '@solana/kit';\nimport { useWalletAccountMessageSigner } from '@solana/react';\nimport type {"
  },
  {
    "path": "examples/react-app/src/components/SolanaSignTransactionFeaturePanel.tsx",
    "chars": 12750,
    "preview": "import { Blockquote, Box, Button, Dialog, Flex, Link, Select, Text, TextField } from '@radix-ui/themes';\nimport {\n    Ad"
  },
  {
    "path": "examples/react-app/src/components/UnconnectableWalletMenuItem.tsx",
    "chars": 1360,
    "preview": "import { ExclamationTriangleIcon } from '@radix-ui/react-icons';\nimport { Box, DropdownMenu, Text } from '@radix-ui/them"
  },
  {
    "path": "examples/react-app/src/components/WalletAccountIcon.tsx",
    "chars": 721,
    "preview": "import type { UiWalletAccount } from '@wallet-standard/react';\nimport { uiWalletAccountBelongsToUiWallet, useWallets } f"
  },
  {
    "path": "examples/react-app/src/components/WalletMenuItemContent.tsx",
    "chars": 781,
    "preview": "import { Avatar, Flex, Spinner, Text } from '@radix-ui/themes';\nimport type { UiWallet } from '@wallet-standard/react';\n"
  },
  {
    "path": "examples/react-app/src/context/ChainContext.tsx",
    "chars": 776,
    "preview": "import type { ClusterUrl } from '@solana/kit';\nimport { devnet } from '@solana/kit';\nimport { createContext } from 'reac"
  },
  {
    "path": "examples/react-app/src/context/ChainContextProvider.tsx",
    "chars": 2269,
    "preview": "import { mainnet, testnet } from '@solana/kit';\nimport { useMemo, useState } from 'react';\n\nimport { ChainContext, DEFAU"
  },
  {
    "path": "examples/react-app/src/context/RpcContext.tsx",
    "chars": 625,
    "preview": "import type { Rpc, RpcSubscriptions, SolanaRpcApiMainnet, SolanaRpcSubscriptionsApi } from '@solana/kit';\nimport { creat"
  },
  {
    "path": "examples/react-app/src/context/RpcContextProvider.tsx",
    "chars": 832,
    "preview": "import { createSolanaRpc, createSolanaRpcSubscriptions } from '@solana/kit';\nimport { ReactNode, useContext, useMemo } f"
  },
  {
    "path": "examples/react-app/src/errors.tsx",
    "chars": 3487,
    "preview": "import { Code, Flex, Text } from '@radix-ui/themes';\nimport { isSolanaError, SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_T"
  },
  {
    "path": "examples/react-app/src/functions/balance.ts",
    "chars": 1677,
    "preview": "import {\n    AccountNotificationsApi,\n    Address,\n    createReactiveStoreWithInitialValueAndSlotTracking,\n    GetBalanc"
  },
  {
    "path": "examples/react-app/src/hooks/useStable.ts",
    "chars": 317,
    "preview": "/* eslint-disable react-hooks/refs */\nimport { useRef } from 'react';\n\nconst UNRESOLVED = Symbol();\n\nexport function use"
  },
  {
    "path": "examples/react-app/src/index.css",
    "chars": 23,
    "preview": "@import './reset.css';\n"
  },
  {
    "path": "examples/react-app/src/main.tsx",
    "chars": 1631,
    "preview": "import './index.css';\nimport '@radix-ui/themes/styles.css';\n\nimport { Flex, Section, Theme } from '@radix-ui/themes';\nim"
  },
  {
    "path": "examples/react-app/src/reset.css",
    "chars": 1293,
    "preview": "/* Box sizing rules */\n*,\n*::before,\n*::after {\n    box-sizing: border-box;\n}\n\n/* Remove default margin */\nbody,\nh1,\nh2,"
  },
  {
    "path": "examples/react-app/src/routes/root.tsx",
    "chars": 5880,
    "preview": "import { Box, Code, Container, DataList, Flex, Heading, Spinner, Text } from '@radix-ui/themes';\nimport { useSelectedWal"
  },
  {
    "path": "examples/react-app/src/signerBytes.json",
    "chars": 306,
    "preview": "[\n    220, 120, 88, 208, 87, 244, 238, 165, 90, 164, 136, 113, 27, 148, 169, 29, 21, 60, 86, 177, 76, 127, 211, 167, 247"
  },
  {
    "path": "examples/react-app/src/storage.ts",
    "chars": 1194,
    "preview": "let storage: Storage | undefined;\ntry {\n    if (typeof window !== 'undefined' && window.localStorage) {\n        storage "
  },
  {
    "path": "examples/react-app/src/vite-env.d.ts",
    "chars": 38,
    "preview": "/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "examples/react-app/tsconfig.app.json",
    "chars": 786,
    "preview": "{\n    \"compilerOptions\": {\n        \"composite\": true,\n        \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.app.tsbui"
  },
  {
    "path": "examples/react-app/tsconfig.json",
    "chars": 173,
    "preview": "{\n    \"files\": [],\n    \"references\": [\n        {\n            \"path\": \"./tsconfig.app.json\"\n        },\n        {\n        "
  },
  {
    "path": "examples/react-app/tsconfig.node.json",
    "chars": 363,
    "preview": "{\n    \"compilerOptions\": {\n        \"composite\": true,\n        \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.node.tsbu"
  },
  {
    "path": "examples/react-app/vite.config.ts",
    "chars": 624,
    "preview": "import react from '@vitejs/plugin-react-swc';\nimport { defineConfig, Plugin } from 'vite';\n\nfunction replaceProcessEnv(m"
  },
  {
    "path": "examples/rpc-custom-api/LICENSE",
    "chars": 1060,
    "preview": "Copyright (c) 2023 Solana Labs, Inc\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of thi"
  },
  {
    "path": "examples/rpc-custom-api/package.json",
    "chars": 957,
    "preview": "{\n    \"name\": \"@solana/example-rpc-custom-api\",\n    \"private\": true,\n    \"type\": \"module\",\n    \"scripts\": {\n        \"pre"
  },
  {
    "path": "examples/rpc-custom-api/src/example.ts",
    "chars": 4707,
    "preview": "/**\n * EXAMPLE\n * Add a custom JSON RPC method to the base Solana JSON RPC API using @solana/kit.\n *\n * To run this exam"
  },
  {
    "path": "examples/rpc-custom-api/tsconfig.json",
    "chars": 337,
    "preview": "{\n    \"$schema\": \"https://json.schemastore.org/tsconfig\",\n    \"compilerOptions\": {\n        \"module\": \"NodeNext\",\n       "
  },
  {
    "path": "examples/rpc-transport-throttled/LICENSE",
    "chars": 1060,
    "preview": "Copyright (c) 2023 Solana Labs, Inc\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of thi"
  },
  {
    "path": "examples/rpc-transport-throttled/package.json",
    "chars": 1145,
    "preview": "{\n    \"name\": \"@solana/example-rpc-transport-throttled\",\n    \"private\": true,\n    \"type\": \"module\",\n    \"scripts\": {\n   "
  },
  {
    "path": "examples/rpc-transport-throttled/src/example.ts",
    "chars": 5628,
    "preview": "/**\n * EXAMPLE\n * Create a custom RPC transport that will only send a certain number of requests per second.\n *\n * Befor"
  },
  {
    "path": "examples/rpc-transport-throttled/tsconfig.json",
    "chars": 346,
    "preview": "{\n    \"$schema\": \"https://json.schemastore.org/tsconfig\",\n    \"compilerOptions\": {\n        \"module\": \"NodeNext\",\n       "
  },
  {
    "path": "examples/signers/LICENSE",
    "chars": 1060,
    "preview": "Copyright (c) 2023 Solana Labs, Inc\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of thi"
  }
]

// ... and 1813 more files (download for full content)

About this extraction

This page contains the full source code of the anza-xyz/solana-web3.js GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2013 files (10.1 MB), approximately 2.7M tokens, and a symbol index with 3271 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!