acheron hai 7 meses
pai
achega
0e5285aecd
Modificáronse 100 ficheiros con 4235 adicións e 146 borrados
  1. 10 2
      CHANGELOG.md
  2. 16 16
      Cargo.lock
  3. 1 1
      VERSION
  4. 1 1
      avm/Cargo.toml
  5. 12 0
      bench/BINARY_SIZE.md
  6. 98 0
      bench/COMPUTE_UNITS.md
  7. 98 0
      bench/STACK_MEMORY.md
  8. 4 4
      cli/Cargo.toml
  9. 1 1
      cli/npm-package/package.json
  10. 2 1
      cli/src/rust_template.rs
  11. 2 2
      client/Cargo.toml
  12. 2 2
      client/src/lib.rs
  13. 1 1
      docker/Makefile
  14. 2 2
      docs/content/docs/clients/rust.mdx
  15. 2 2
      docs/content/docs/features/declare-program.mdx
  16. 1 1
      docs/content/docs/features/events.mdx
  17. 1 1
      docs/content/docs/features/zero-copy.mdx
  18. 6 6
      docs/content/docs/installation.mdx
  19. 1 1
      docs/content/docs/quickstart/local.mdx
  20. 2 2
      docs/content/docs/references/anchor-toml.mdx
  21. 2 2
      docs/content/docs/references/verifiable-builds.mdx
  22. 1 1
      docs/content/docs/tokens/basics/create-token-account.mdx
  23. 2 2
      docs/content/docs/tokens/index.mdx
  24. 272 0
      docs/content/docs/updates/changelog.mdx
  25. 549 0
      docs/content/docs/updates/release-notes/0-31-0.mdx
  26. 1 1
      docs/content/docs/updates/release-notes/meta.json
  27. 1 1
      examples/tutorial/basic-0/package.json
  28. 1 1
      examples/tutorial/basic-1/package.json
  29. 1 1
      examples/tutorial/basic-2/package.json
  30. 1 1
      examples/tutorial/basic-3/package.json
  31. 1 1
      examples/tutorial/basic-4/package.json
  32. 1 1
      examples/tutorial/basic-5/package.json
  33. 1 1
      idl/Cargo.toml
  34. 11 11
      lang/Cargo.toml
  35. 2 2
      lang/attribute/access-control/Cargo.toml
  36. 2 2
      lang/attribute/account/Cargo.toml
  37. 2 2
      lang/attribute/constant/Cargo.toml
  38. 2 2
      lang/attribute/error/Cargo.toml
  39. 2 2
      lang/attribute/event/Cargo.toml
  40. 3 3
      lang/attribute/program/Cargo.toml
  41. 1 1
      lang/attribute/program/src/lib.rs
  42. 2 2
      lang/derive/accounts/Cargo.toml
  43. 2 2
      lang/derive/serde/Cargo.toml
  44. 1 1
      lang/derive/space/Cargo.toml
  45. 1 1
      lang/syn/Cargo.toml
  46. 2 2
      spl/Cargo.toml
  47. 1 1
      tests/anchor-cli-account/package.json
  48. 1 1
      tests/anchor-cli-idl/package.json
  49. 1 1
      tests/auction-house/package.json
  50. 186 0
      tests/bench/bench.json
  51. 2865 0
      tests/bench/locks/0.31.0.lock
  52. 1 1
      tests/bench/package.json
  53. 1 1
      tests/cashiers-check/package.json
  54. 1 1
      tests/cfo/package.json
  55. 1 1
      tests/chat/package.json
  56. 1 1
      tests/composite/package.json
  57. 1 1
      tests/cpi-returns/package.json
  58. 1 1
      tests/custom-coder/package.json
  59. 1 1
      tests/custom-discriminator/package.json
  60. 1 1
      tests/declare-id/package.json
  61. 1 1
      tests/declare-program/package.json
  62. 1 1
      tests/errors/package.json
  63. 1 1
      tests/escrow/package.json
  64. 1 1
      tests/events/package.json
  65. 1 1
      tests/floats/package.json
  66. 1 1
      tests/idl/package.json
  67. 1 1
      tests/ido-pool/package.json
  68. 1 1
      tests/lazy-account/package.json
  69. 1 1
      tests/lockup/package.json
  70. 1 1
      tests/misc/package.json
  71. 1 1
      tests/multiple-suites/package.json
  72. 1 1
      tests/multisig/package.json
  73. 1 1
      tests/optional/package.json
  74. 1 1
      tests/pda-derivation/package.json
  75. 1 1
      tests/pyth/package.json
  76. 1 1
      tests/realloc/package.json
  77. 1 1
      tests/relations-derivation/package.json
  78. 1 1
      tests/solang/package.json
  79. 1 1
      tests/spl/metadata/package.json
  80. 1 1
      tests/spl/token-extensions/package.json
  81. 1 1
      tests/spl/token-proxy/package.json
  82. 1 1
      tests/spl/token-wrapper/package.json
  83. 1 1
      tests/spl/transfer-hook/package.json
  84. 1 1
      tests/swap/package.json
  85. 1 1
      tests/system-accounts/package.json
  86. 1 1
      tests/sysvars/package.json
  87. 1 1
      tests/tictactoe/package.json
  88. 1 1
      tests/typescript/package.json
  89. 1 1
      tests/validator-clone/package.json
  90. 1 1
      tests/zero-copy/package.json
  91. 1 1
      ts/packages/anchor-errors/package.json
  92. 3 3
      ts/packages/anchor/package.json
  93. 1 1
      ts/packages/borsh/package.json
  94. 1 1
      ts/packages/spl-associated-token-account/package.json
  95. 1 1
      ts/packages/spl-binary-option/package.json
  96. 1 1
      ts/packages/spl-binary-oracle-pair/package.json
  97. 1 1
      ts/packages/spl-feature-proposal/package.json
  98. 1 1
      ts/packages/spl-governance/package.json
  99. 1 1
      ts/packages/spl-memo/package.json
  100. 1 1
      ts/packages/spl-name-service/package.json

+ 10 - 2
CHANGELOG.md

@@ -12,6 +12,14 @@ The minor version will be incremented upon a breaking change and the patch versi
 
 ### Features
 
+### Fixes
+
+### Breaking
+
+## [0.31.0] - 2025-03-08
+
+### Features
+
 - client: Make `solana_account_decoder` dep public in anchor client ([#3455](https://github.com/coral-xyz/anchor/pull/3455)).
 - ts: Add optional `options.blockhash` to `Provider.sendAndConfirm` ([#3070](https://github.com/coral-xyz/anchor/pull/3070)).
 - ts: Add optional `commitment` parameter to `Program.addEventListener` ([#3052](https://github.com/coral-xyz/anchor/pull/3052)).
@@ -27,7 +35,7 @@ The minor version will be incremented upon a breaking change and the patch versi
 - lang: Remove the fallback function shortcut in `try_entry` function ([#3109](https://github.com/coral-xyz/anchor/pull/3109)).
 - ts: Get discriminator lengths dynamically ([#3120](https://github.com/coral-xyz/anchor/pull/3120)).
 - client: Support non-8-byte discriminators ([#3125](https://github.com/coral-xyz/anchor/pull/3125)).
-- spl: Add `withdraw_withheld_tokens_from_accounts` instruction ([#3128]([https://github.com/coral-xyz/anchor/pull/3128)).
+- spl: Add `withdraw_withheld_tokens_from_accounts` instruction ([#3128](https://github.com/coral-xyz/anchor/pull/3128)).
 - ts: Add optional `wallet` property to the `Provider` interface ([#3130](https://github.com/coral-xyz/anchor/pull/3130)).
 - cli: Warn if `anchor-spl/idl-build` is missing ([#3133](https://github.com/coral-xyz/anchor/pull/3133)).
 - client: Add `internal_rpc` method for `mock` feature ([#3135](https://github.com/coral-xyz/anchor/pull/3135)).
@@ -40,7 +48,7 @@ The minor version will be incremented upon a breaking change and the patch versi
 - cli: Support non-8-byte discriminators ([#3165](https://github.com/coral-xyz/anchor/pull/3165)).
 - idl: Disallow empty discriminators ([#3166](https://github.com/coral-xyz/anchor/pull/3166)).
 - cli: Add `--no-idl` option to the `test` command ([#3175](https://github.com/coral-xyz/anchor/pull/3175)).
-- spl: Add `burn_checked`, `mint_to_checked` and `approve_checked` instructions ([#3186]([https://github.com/coral-xyz/anchor/pull/3186)).
+- spl: Add `burn_checked`, `mint_to_checked` and `approve_checked` instructions ([#3186](https://github.com/coral-xyz/anchor/pull/3186)).
 - cli: Migrate to `agave-install` when `solana_version` is `>= 1.18.19` ([#3185](https://github.com/coral-xyz/anchor/pull/3185)).
 - idl: Add `IdlBuilder` ([#3188](https://github.com/coral-xyz/anchor/pull/3188)).
 - cli: Make `clean` command also remove the `.anchor` directory ([#3192](https://github.com/coral-xyz/anchor/pull/3192)).

+ 16 - 16
Cargo.lock

@@ -102,7 +102,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-attribute-access-control"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anchor-syn",
  "proc-macro2",
@@ -112,7 +112,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-attribute-account"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anchor-syn",
  "bs58",
@@ -123,7 +123,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-attribute-constant"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anchor-syn",
  "quote",
@@ -132,7 +132,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-attribute-error"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anchor-syn",
  "quote",
@@ -141,7 +141,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-attribute-event"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anchor-syn",
  "proc-macro2",
@@ -151,7 +151,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-attribute-program"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anchor-lang-idl",
  "anchor-syn",
@@ -166,7 +166,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-cli"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anchor-client",
  "anchor-lang",
@@ -202,7 +202,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-client"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anchor-lang",
  "anyhow",
@@ -219,7 +219,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-derive-accounts"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anchor-syn",
  "quote",
@@ -228,7 +228,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-derive-serde"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anchor-syn",
  "borsh-derive-internal",
@@ -239,7 +239,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-derive-space"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -248,7 +248,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-lang"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anchor-attribute-access-control",
  "anchor-attribute-account",
@@ -270,7 +270,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-lang-idl"
-version = "0.1.1"
+version = "0.1.2"
 dependencies = [
  "anchor-lang-idl-spec",
  "anyhow",
@@ -291,7 +291,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-spl"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anchor-lang",
  "borsh 0.10.3",
@@ -307,7 +307,7 @@ dependencies = [
 
 [[package]]
 name = "anchor-syn"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anyhow",
  "bs58",
@@ -650,7 +650,7 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
 
 [[package]]
 name = "avm"
-version = "0.30.1"
+version = "0.31.0"
 dependencies = [
  "anyhow",
  "cargo_toml",

+ 1 - 1
VERSION

@@ -1 +1 @@
-0.30.1
+0.31.0

+ 1 - 1
avm/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "avm"
-version = "0.30.1"
+version = "0.31.0"
 edition = "2021"
 
 [[bin]]

+ 12 - 0
bench/BINARY_SIZE.md

@@ -16,6 +16,18 @@ The programs and their tests are located in [/tests/bench](https://github.com/co
 
 Solana version: 2.1.0
 
+| Program | Binary Size | -   |
+| ------- | ----------- | --- |
+| bench   | 1,041,928   | -   |
+
+### Notable changes
+
+---
+
+## [0.31.0]
+
+Solana version: 2.1.0
+
 | Program | Binary Size | -                        |
 | ------- | ----------- | ------------------------ |
 | bench   | 1,041,928   | 🔴 **+250,920 (31.72%)** |

+ 98 - 0
bench/COMPUTE_UNITS.md

@@ -16,6 +16,104 @@ The programs and their tests are located in [/tests/bench](https://github.com/co
 
 Solana version: 2.1.0
 
+| Instruction                 | Compute Units | -   |
+| --------------------------- | ------------- | --- |
+| accountInfo1                | 571           | -   |
+| accountInfo2                | 895           | -   |
+| accountInfo4                | 1,553         | -   |
+| accountInfo8                | 2,923         | -   |
+| accountEmptyInit1           | 5,083         | -   |
+| accountEmpty1               | 645           | -   |
+| accountEmptyInit2           | 9,301         | -   |
+| accountEmpty2               | 1,007         | -   |
+| accountEmptyInit4           | 17,764        | -   |
+| accountEmpty4               | 1,724         | -   |
+| accountEmptyInit8           | 34,723        | -   |
+| accountEmpty8               | 3,163         | -   |
+| accountSizedInit1           | 5,192         | -   |
+| accountSized1               | 693           | -   |
+| accountSizedInit2           | 9,489         | -   |
+| accountSized2               | 1,075         | -   |
+| accountSizedInit4           | 18,170        | -   |
+| accountSized4               | 1,848         | -   |
+| accountSizedInit8           | 35,433        | -   |
+| accountSized8               | 3,387         | -   |
+| accountUnsizedInit1         | 5,305         | -   |
+| accountUnsized1             | 746           | -   |
+| accountUnsizedInit2         | 9,759         | -   |
+| accountUnsized2             | 1,163         | -   |
+| accountUnsizedInit4         | 18,603        | -   |
+| accountUnsized4             | 2,002         | -   |
+| accountUnsizedInit8         | 35,993        | -   |
+| accountUnsized8             | 3,673         | -   |
+| boxedAccountEmptyInit1      | 5,175         | -   |
+| boxedAccountEmpty1          | 734           | -   |
+| boxedAccountEmptyInit2      | 9,414         | -   |
+| boxedAccountEmpty2          | 1,116         | -   |
+| boxedAccountEmptyInit4      | 17,918        | -   |
+| boxedAccountEmpty4          | 1,872         | -   |
+| boxedAccountEmptyInit8      | 34,953        | -   |
+| boxedAccountEmpty8          | 3,401         | -   |
+| boxedAccountSizedInit1      | 5,271         | -   |
+| boxedAccountSized1          | 783           | -   |
+| boxedAccountSizedInit2      | 9,583         | -   |
+| boxedAccountSized2          | 1,190         | -   |
+| boxedAccountSizedInit4      | 18,230        | -   |
+| boxedAccountSized4          | 1,996         | -   |
+| boxedAccountSizedInit8      | 35,553        | -   |
+| boxedAccountSized8          | 3,628         | -   |
+| boxedAccountUnsizedInit1    | 5,371         | -   |
+| boxedAccountUnsized1        | 836           | -   |
+| boxedAccountUnsizedInit2    | 9,759         | -   |
+| boxedAccountUnsized2        | 1,270         | -   |
+| boxedAccountUnsizedInit4    | 18,558        | -   |
+| boxedAccountUnsized4        | 2,132         | -   |
+| boxedAccountUnsizedInit8    | 36,185        | -   |
+| boxedAccountUnsized8        | 3,881         | -   |
+| boxedInterfaceAccountMint1  | 1,351         | -   |
+| boxedInterfaceAccountMint2  | 2,123         | -   |
+| boxedInterfaceAccountMint4  | 3,656         | -   |
+| boxedInterfaceAccountMint8  | 6,738         | -   |
+| boxedInterfaceAccountToken1 | 2,011         | -   |
+| boxedInterfaceAccountToken2 | 3,431         | -   |
+| boxedInterfaceAccountToken4 | 6,260         | -   |
+| boxedInterfaceAccountToken8 | 11,934        | -   |
+| interfaceAccountMint1       | 1,476         | -   |
+| interfaceAccountMint2       | 2,489         | -   |
+| interfaceAccountMint4       | 4,511         | -   |
+| interfaceAccountMint8       | 8,550         | -   |
+| interfaceAccountToken1      | 2,111         | -   |
+| interfaceAccountToken2      | 3,729         | -   |
+| interfaceAccountToken4      | 6,955         | -   |
+| interface1                  | 769           | -   |
+| interface2                  | 912           | -   |
+| interface4                  | 1,189         | -   |
+| interface8                  | 1,748         | -   |
+| program1                    | 779           | -   |
+| program2                    | 920           | -   |
+| program4                    | 1,193         | -   |
+| program8                    | 1,744         | -   |
+| signer1                     | 774           | -   |
+| signer2                     | 1,064         | -   |
+| signer4                     | 1,637         | -   |
+| signer8                     | 2,788         | -   |
+| systemAccount1              | 796           | -   |
+| systemAccount2              | 1,096         | -   |
+| systemAccount4              | 1,689         | -   |
+| systemAccount8              | 2,880         | -   |
+| uncheckedAccount1           | 783           | -   |
+| uncheckedAccount2           | 1,056         | -   |
+| uncheckedAccount4           | 1,594         | -   |
+| uncheckedAccount8           | 2,679         | -   |
+
+### Notable changes
+
+---
+
+## [0.31.0]
+
+Solana version: 2.1.0
+
 | Instruction                 | Compute Units | -                      |
 | --------------------------- | ------------- | ---------------------- |
 | accountInfo1                | 571           | 🟢 **-30 (4.99%)**     |

+ 98 - 0
bench/STACK_MEMORY.md

@@ -16,6 +16,104 @@ The programs and their tests are located in [/tests/bench](https://github.com/co
 
 Solana version: 2.1.0
 
+| Instruction                    | Stack Memory | -   |
+| ------------------------------ | ------------ | --- |
+| account_info1                  | 46           | -   |
+| account_info2                  | 80           | -   |
+| account_info4                  | 80           | -   |
+| account_info8                  | 80           | -   |
+| account_empty_init1            | 88           | -   |
+| account_empty_init2            | 88           | -   |
+| account_empty_init4            | 88           | -   |
+| account_empty_init8            | 88           | -   |
+| account_empty1                 | 88           | -   |
+| account_empty2                 | 88           | -   |
+| account_empty4                 | 88           | -   |
+| account_empty8                 | 88           | -   |
+| account_sized_init1            | 88           | -   |
+| account_sized_init2            | 88           | -   |
+| account_sized_init4            | 88           | -   |
+| account_sized_init8            | 88           | -   |
+| account_sized1                 | 88           | -   |
+| account_sized2                 | 88           | -   |
+| account_sized4                 | 88           | -   |
+| account_sized8                 | 88           | -   |
+| account_unsized_init1          | 88           | -   |
+| account_unsized_init2          | 88           | -   |
+| account_unsized_init4          | 88           | -   |
+| account_unsized_init8          | 88           | -   |
+| account_unsized1               | 88           | -   |
+| account_unsized2               | 88           | -   |
+| account_unsized4               | 88           | -   |
+| account_unsized8               | 88           | -   |
+| boxed_account_empty_init1      | 88           | -   |
+| boxed_account_empty_init2      | 88           | -   |
+| boxed_account_empty_init4      | 88           | -   |
+| boxed_account_empty_init8      | 88           | -   |
+| boxed_account_empty1           | 88           | -   |
+| boxed_account_empty2           | 88           | -   |
+| boxed_account_empty4           | 88           | -   |
+| boxed_account_empty8           | 88           | -   |
+| boxed_account_sized_init1      | 88           | -   |
+| boxed_account_sized_init2      | 88           | -   |
+| boxed_account_sized_init4      | 88           | -   |
+| boxed_account_sized_init8      | 88           | -   |
+| boxed_account_sized1           | 88           | -   |
+| boxed_account_sized2           | 88           | -   |
+| boxed_account_sized4           | 88           | -   |
+| boxed_account_sized8           | 88           | -   |
+| boxed_account_unsized_init1    | 88           | -   |
+| boxed_account_unsized_init2    | 88           | -   |
+| boxed_account_unsized_init4    | 88           | -   |
+| boxed_account_unsized_init8    | 88           | -   |
+| boxed_account_unsized1         | 88           | -   |
+| boxed_account_unsized2         | 88           | -   |
+| boxed_account_unsized4         | 88           | -   |
+| boxed_account_unsized8         | 88           | -   |
+| boxed_interface_account_mint1  | 88           | -   |
+| boxed_interface_account_mint2  | 88           | -   |
+| boxed_interface_account_mint4  | 88           | -   |
+| boxed_interface_account_mint8  | 88           | -   |
+| boxed_interface_account_token1 | 88           | -   |
+| boxed_interface_account_token2 | 88           | -   |
+| boxed_interface_account_token4 | 88           | -   |
+| boxed_interface_account_token8 | 88           | -   |
+| interface_account_mint1        | 88           | -   |
+| interface_account_mint2        | 88           | -   |
+| interface_account_mint4        | 88           | -   |
+| interface_account_mint8        | 88           | -   |
+| interface_account_token1       | 80           | -   |
+| interface_account_token2       | 80           | -   |
+| interface_account_token4       | 80           | -   |
+| interface1                     | 88           | -   |
+| interface2                     | 88           | -   |
+| interface4                     | 88           | -   |
+| interface8                     | 88           | -   |
+| program1                       | 88           | -   |
+| program2                       | 88           | -   |
+| program4                       | 88           | -   |
+| program8                       | 88           | -   |
+| signer1                        | 88           | -   |
+| signer2                        | 88           | -   |
+| signer4                        | 88           | -   |
+| signer8                        | 88           | -   |
+| system_account1                | 88           | -   |
+| system_account2                | 88           | -   |
+| system_account4                | 88           | -   |
+| system_account8                | 88           | -   |
+| unchecked_account1             | 88           | -   |
+| unchecked_account2             | 88           | -   |
+| unchecked_account4             | 88           | -   |
+| unchecked_account8             | 88           | -   |
+
+### Notable changes
+
+---
+
+## [0.31.0]
+
+Solana version: 2.1.0
+
 | Instruction                    | Stack Memory | -                    |
 | ------------------------------ | ------------ | -------------------- |
 | account_info1                  | 46           | 🟢 **-98 (68.06%)**  |

+ 4 - 4
cli/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-cli"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 edition = "2021"
 repository = "https://github.com/coral-xyz/anchor"
@@ -15,9 +15,9 @@ path = "src/bin/main.rs"
 dev = []
 
 [dependencies]
-anchor-client = { path = "../client", version = "0.30.1" }
-anchor-lang-idl = { path = "../idl", version = "0.1.1", features = ["build", "convert"] }
-anchor-lang = { path = "../lang", version = "0.30.1" }
+anchor-client = { path = "../client", version = "0.31.0" }
+anchor-lang-idl = { path = "../idl", version = "0.1.2", features = ["build", "convert"] }
+anchor-lang = { path = "../lang", version = "0.31.0" }
 anyhow = "1.0.32"
 base64 = "0.21"
 bincode = "1.3.3"

+ 1 - 1
cli/npm-package/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@coral-xyz/anchor-cli",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "description": "Anchor CLI tool",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 2 - 1
cli/src/rust_template.rs

@@ -179,7 +179,8 @@ fn cargo_toml(name: &str, with_mollusk: bool) -> String {
     let dev_dependencies = if with_mollusk {
         r#"
 [dev-dependencies]
-mollusk-svm = "=0.0.6-solana-1.18"
+mollusk-svm = "=0.0.15"
+solana-program = "~2.1"
 "#
     } else {
         ""

+ 2 - 2
client/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-client"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 edition = "2021"
 license = "Apache-2.0"
@@ -16,7 +16,7 @@ debug = []
 mock = []
 
 [dependencies]
-anchor-lang = { path = "../lang", version = "0.30.1" }
+anchor-lang = { path = "../lang", version = "0.31.0" }
 anyhow = "1"
 futures = "0.3"
 regex = "1"

+ 2 - 2
client/src/lib.rs

@@ -50,7 +50,7 @@
 //!
 //! More examples can be found in [here].
 //!
-//! [here]: https://github.com/coral-xyz/anchor/tree/v0.30.1/client/example/src
+//! [here]: https://github.com/coral-xyz/anchor/tree/v0.31.0/client/example/src
 //!
 //! # Features
 //!
@@ -59,7 +59,7 @@
 //! The client is blocking by default. To enable asynchronous client, add `async` feature:
 //!
 //! ```toml
-//! anchor-client = { version = "0.30.1 ", features = ["async"] }
+//! anchor-client = { version = "0.31.0 ", features = ["async"] }
 //! ````
 //!
 //! ## `mock`

+ 1 - 1
docker/Makefile

@@ -2,7 +2,7 @@ WORKDIR=$(PWD)
 #
 # Anchor version.
 #
-ANCHOR_CLI=v0.30.1
+ANCHOR_CLI=v0.31.0
 #
 # Solana toolchain.
 #

+ 2 - 2
docs/content/docs/clients/rust.mdx

@@ -261,8 +261,8 @@ version = "0.1.0"
 edition = "2021"
 
 [dependencies]
-anchor-client = { version = "0.30.1", features = ["async"] }
-anchor-lang = "0.30.1"
+anchor-client = { version = "0.31.0", features = ["async"] }
+anchor-lang = "0.31.0"
 anyhow = "1.0.93"
 tokio = { version = "1.0", features = ["full"] }
 ```

+ 2 - 2
docs/content/docs/features/declare-program.mdx

@@ -678,8 +678,8 @@ version = "0.1.0"
 edition = "2021"
 
 [dependencies]
-anchor-client = { version = "0.30.1", features = ["async"] }
-anchor-lang = "0.30.1"
+anchor-client = { version = "0.31.0", features = ["async"] }
+anchor-lang = "0.31.0"
 anyhow = "1.0.93"
 tokio = { version = "1.0", features = ["full"] }
 ```

+ 1 - 1
docs/content/docs/features/events.mdx

@@ -148,7 +148,7 @@ program's `Cargo.toml`:
 
 ```toml title="Cargo.toml"
 [dependencies]
-anchor-lang = { version = "0.30.1", features = ["event-cpi"] }
+anchor-lang = { version = "0.31.0", features = ["event-cpi"] }
 ```
 
 Example usage:

+ 1 - 1
docs/content/docs/features/zero-copy.mdx

@@ -18,7 +18,7 @@ zero-copy types.
 ```toml title="Cargo.toml"
 [dependencies]
 bytemuck = { version = "1.20.0", features = ["min_const_generics"] }
-anchor-lang = "0.30.1"
+anchor-lang = "0.31.0"
 ```
 
 ### Define a Zero Copy Account

+ 6 - 6
docs/content/docs/installation.mdx

@@ -30,7 +30,7 @@ After installation, you should see output similar to the following:
 Installed Versions:
 Rust: rustc 1.85.0 (4d91de4e4 2025-02-17)
 Solana CLI: solana-cli 2.1.15 (src:53545685; feat:3271415109, client:Agave)
-Anchor CLI: anchor-cli 0.30.1
+Anchor CLI: anchor-cli 0.31.0
 Node.js: v23.9.0
 Yarn: 1.22.1
 
@@ -355,8 +355,8 @@ Alternatively, you can install a specific version of Anchor CLI by specifying
 the version number:
 
 ```shell title="Terminal"
-avm install 0.30.1
-avm use 0.30.1
+avm install 0.31.0
+avm use 0.31.0
 ```
 
 <Callout type="info">
@@ -365,7 +365,7 @@ Don't forget to run the `avm use` command to declare which Anchor CLI version
 should be used on your system.
 
 - If you installed the `latest` version, run `avm use latest`.
-- If you installed the version `0.30.1`, run `avm use 0.30.1`.
+- If you installed the version `0.31.0`, run `avm use 0.31.0`.
 
 </Callout>
 
@@ -376,7 +376,7 @@ should be used on your system.
 Install a specific version of the Anchor CLI with the following command:
 
 ```shell title="Terminal"
-cargo install --git https://github.com/coral-xyz/anchor --tag v0.30.1 anchor-cli
+cargo install --git https://github.com/coral-xyz/anchor --tag v0.31.0 anchor-cli
 ```
 
 </Tab>
@@ -391,7 +391,7 @@ anchor --version
 You should see output similar to the following:
 
 ```
-anchor-cli 0.30.1
+anchor-cli 0.31.0
 ```
 
 <Callout type="warn">

+ 1 - 1
docs/content/docs/quickstart/local.mdx

@@ -37,7 +37,7 @@ anchor --version
 Expected output:
 
 ```shell filename="Terminal"
-anchor-cli 0.30.1
+anchor-cli 0.31.0
 ```
 
 ## Getting Started

+ 2 - 2
docs/content/docs/references/anchor-toml.mdx

@@ -218,6 +218,6 @@ Override toolchain data in the workspace similar to
 
 ```toml
 [toolchain]
-anchor_version = "0.30.1"    # `anchor-cli` version to use(requires `avm`)
-solana_version = "1.18.17"    # Solana version to use(applies to all Solana tools)
+anchor_version = "0.31.0"    # `anchor-cli` version to use(requires `avm`)
+solana_version = "2.1.0"    # Solana version to use(applies to all Solana tools)
 ```

+ 2 - 2
docs/content/docs/references/verifiable-builds.mdx

@@ -39,10 +39,10 @@ If the program has an IDL, it will also check the IDL deployed on chain matches.
 A docker image for each version of Anchor is published on
 [Docker Hub](https://hub.docker.com/r/backpackapp/build). They are tagged in the
 form `backpackapp/build:<version>`. For example, to get the image for Anchor
-`v0.30.1` one can run
+`v0.31.0` one can run
 
 ```shell
-docker pull backpackapp/build:v0.30.1
+docker pull backpackapp/build:v0.31.0
 ```
 
 ## Removing an Image

+ 1 - 1
docs/content/docs/tokens/basics/create-token-account.mdx

@@ -309,7 +309,7 @@ To use the `init_if_needed` constraint, enable the `init-if-needed` feature in
 
 ```toml title="Cargo.toml"
 [dependencies]
-anchor-lang = { version = "0.30.1", features = ["init-if-needed"] }
+anchor-lang = { version = "0.31.0", features = ["init-if-needed"] }
 ```
 
 ## Examples

+ 2 - 2
docs/content/docs/tokens/index.mdx

@@ -40,8 +40,8 @@ idl-build = [
 ]
 
 [dependencies]
-anchor-lang = "0.30.1"
-anchor-spl = "0.30.1"
+anchor-lang = "0.31.0"
+anchor-spl = "0.31.0"
 ```
 
 ### Core Modules

+ 272 - 0
docs/content/docs/updates/changelog.mdx

@@ -9,6 +9,278 @@ patch version will be incremented for features.
 
 ---
 
+## [0.31.0] - 2025-03-08
+
+### Features
+
+- client: Make `solana_account_decoder` dep public in anchor client
+  ([#3455](https://github.com/coral-xyz/anchor/pull/3455)).
+- ts: Add optional `options.blockhash` to `Provider.sendAndConfirm`
+  ([#3070](https://github.com/coral-xyz/anchor/pull/3070)).
+- ts: Add optional `commitment` parameter to `Program.addEventListener`
+  ([#3052](https://github.com/coral-xyz/anchor/pull/3052)).
+- cli, idl: Pass `cargo` args to IDL generation when building program or IDL
+  ([#3059](https://github.com/coral-xyz/anchor/pull/3059)).
+- cli: Add checks for incorrect usage of `idl-build` feature
+  ([#3061](https://github.com/coral-xyz/anchor/pull/3061)).
+- lang: Export `Discriminator` trait from `prelude`
+  ([#3075](https://github.com/coral-xyz/anchor/pull/3075)).
+- lang: Add `Account` utility type to get accounts from bytes
+  ([#3091](https://github.com/coral-xyz/anchor/pull/3091)).
+- client: Add option to pass in mock rpc client when using anchor_client
+  ([#3053](https://github.com/coral-xyz/anchor/pull/3053)).
+- lang: Get discriminator length dynamically
+  ([#3101](https://github.com/coral-xyz/anchor/pull/3101)).
+- lang: Add non-8-byte discriminator support in `declare_program!`
+  ([#3103](https://github.com/coral-xyz/anchor/pull/3103)).
+- client: Make `ThreadSafeSigner` trait public
+  ([#3107](https://github.com/coral-xyz/anchor/pull/3107)).
+- lang: Update `dispatch` function to support dynamic discriminators
+  ([#3104](https://github.com/coral-xyz/anchor/pull/3104)).
+- lang: Remove the fallback function shortcut in `try_entry` function
+  ([#3109](https://github.com/coral-xyz/anchor/pull/3109)).
+- ts: Get discriminator lengths dynamically
+  ([#3120](https://github.com/coral-xyz/anchor/pull/3120)).
+- client: Support non-8-byte discriminators
+  ([#3125](https://github.com/coral-xyz/anchor/pull/3125)).
+- spl: Add `withdraw_withheld_tokens_from_accounts` instruction
+  ([#3128](https://github.com/coral-xyz/anchor/pull/3128)).
+- ts: Add optional `wallet` property to the `Provider` interface
+  ([#3130](https://github.com/coral-xyz/anchor/pull/3130)).
+- cli: Warn if `anchor-spl/idl-build` is missing
+  ([#3133](https://github.com/coral-xyz/anchor/pull/3133)).
+- client: Add `internal_rpc` method for `mock` feature
+  ([#3135](https://github.com/coral-xyz/anchor/pull/3135)).
+- lang: Add `#[instruction]` attribute proc-macro to override default
+  instruction discriminators
+  ([#3137](https://github.com/coral-xyz/anchor/pull/3137)).
+- lang: Use associated discriminator constants instead of hardcoding in
+  `#[account]` ([#3144](https://github.com/coral-xyz/anchor/pull/3144)).
+- lang: Add `discriminator` argument to `#[account]` attribute
+  ([#3149](https://github.com/coral-xyz/anchor/pull/3149)).
+- lang: Add `discriminator` argument to `#[event]` attribute
+  ([#3152](https://github.com/coral-xyz/anchor/pull/3152)).
+- idl: Check ambiguous discriminators
+  ([#3157](https://github.com/coral-xyz/anchor/pull/3157)).
+- idl: Disallow all zero account discriminators
+  ([#3159](https://github.com/coral-xyz/anchor/pull/3159)).
+- cli: Support non-8-byte discriminators
+  ([#3165](https://github.com/coral-xyz/anchor/pull/3165)).
+- idl: Disallow empty discriminators
+  ([#3166](https://github.com/coral-xyz/anchor/pull/3166)).
+- cli: Add `--no-idl` option to the `test` command
+  ([#3175](https://github.com/coral-xyz/anchor/pull/3175)).
+- spl: Add `burn_checked`, `mint_to_checked` and `approve_checked` instructions
+  ([#3186](https://github.com/coral-xyz/anchor/pull/3186)).
+- cli: Migrate to `agave-install` when `solana_version` is `>= 1.18.19`
+  ([#3185](https://github.com/coral-xyz/anchor/pull/3185)).
+- idl: Add `IdlBuilder`
+  ([#3188](https://github.com/coral-xyz/anchor/pull/3188)).
+- cli: Make `clean` command also remove the `.anchor` directory
+  ([#3192](https://github.com/coral-xyz/anchor/pull/3192)).
+- lang: Deprecate `#[interface]` attribute
+  ([#3195](https://github.com/coral-xyz/anchor/pull/3195)).
+- ts: Include unresolved accounts in the resolution error message
+  ([#3207](https://github.com/coral-xyz/anchor/pull/3207)).
+- lang: Add `LazyAccount`
+  ([#3194](https://github.com/coral-xyz/anchor/pull/3194)).
+- avm: Ask whether to install if the version is not installed with the `use`
+  command ([#3230](https://github.com/coral-xyz/anchor/pull/3230)).
+- cli: Warn if a manifest has `solana-program` dependency
+  ([#3250](https://github.com/coral-xyz/anchor/pull/3250)).
+- cli: Add completions command to generate shell completions via the
+  clap_complete crate ([#3251](https://github.com/coral-xyz/anchor/pull/3251)).
+- cli: Always convert IDLs
+  ([#3265](https://github.com/coral-xyz/anchor/pull/3265)).
+- cli: Check whether the `idl-build` feature exists when using the `idl build`
+  command ([#3273](https://github.com/coral-xyz/anchor/pull/3273)).
+- cli: Build IDL if there is only one program when using the `idl build` command
+  ([#3275](https://github.com/coral-xyz/anchor/pull/3275)).
+- cli: Add short alias for the `idl build` command
+  ([#3283](https://github.com/coral-xyz/anchor/pull/3283)).
+- cli: Add `--program-id` option to `idl convert` command
+  ([#3309](https://github.com/coral-xyz/anchor/pull/3309)).
+- lang: Generate documentation of constants in `declare_program!`
+  ([#3311](https://github.com/coral-xyz/anchor/pull/3311)).
+- cli: Add support for fetching legacy IDLs
+  ([#3324](https://github.com/coral-xyz/anchor/pull/3324)).
+- avm: Add short alias for `install` and `list` commands
+  ([#3326](https://github.com/coral-xyz/anchor/pull/3326)).
+- avm: Add Windows support for renaming anchor binary
+  ([#3325](https://github.com/coral-xyz/anchor/pull/3325)).
+- cli: Add optional `package-manager` flag in `init` command to set package
+  manager field in Anchor.toml
+  ([#3328](https://github.com/coral-xyz/anchor/pull/3328)).
+- cli: Add test template for [Mollusk](https://github.com/buffalojoec/mollusk)
+  ([#3352](https://github.com/coral-xyz/anchor/pull/3352)).
+- idl: Disallow account discriminators that can conflict with the `zero`
+  constraint ([#3365](https://github.com/coral-xyz/anchor/pull/3365)).
+- cli: Include recommended solana args by default and add new `--max-retries`
+  option to the `deploy` command
+  ([#3354](https://github.com/coral-xyz/anchor/pull/3354)).
+- avm: Make installation download binaries by default
+  ([#3445](https://github.com/coral-xyz/anchor/pull/3445)).
+- idl: Support PDA resolution of call expressions that don't have any arguments
+  ([#3485](https://github.com/coral-xyz/anchor/pull/3485)).
+- spl: Add `anchor-debug` feature
+  ([#3511](https://github.com/coral-xyz/anchor/pull/3511)).
+
+### Fixes
+
+- idl: Make safety comment checks fail silently when program path env is not set
+  ([#3045](https://github.com/coral-xyz/anchor/pull/3045)).
+- idl: Avoid interference from rust tests during IDL generation
+  ([#3058](https://github.com/coral-xyz/anchor/pull/3058)).
+- lang: Fix `align` repr support in `declare-program!`
+  ([#3056](https://github.com/coral-xyz/anchor/pull/3056)).
+- lang: Make stack frames slimmer on ATA creation
+  ([#3065](https://github.com/coral-xyz/anchor/pull/3065)).
+- lang: Remove `getrandom` dependency
+  ([#3072](https://github.com/coral-xyz/anchor/pull/3072)).
+- lang: Make `InitSpace` support unnamed & unit structs
+  ([#3084](https://github.com/coral-xyz/anchor/pull/3084)).
+- lang: Fix using `owner` constraint with `Box`ed accounts
+  ([#3087](https://github.com/coral-xyz/anchor/pull/3087)).
+- lang: Add a sanity check for unimplemented token extensions
+  ([#3090](https://github.com/coral-xyz/anchor/pull/3090)).
+- cli: Skip IDL checks if `--no-idl` option is passed
+  ([#3093](https://github.com/coral-xyz/anchor/pull/3093)).
+- lang: Remove unnecessary clone in account exit routine
+  ([#3139](https://github.com/coral-xyz/anchor/pull/3139)).
+- cli: Fix installation with `--locked` argument using Rust v1.80 due to `time`
+  crate issue ([#3143](https://github.com/coral-xyz/anchor/pull/3143)).
+- lang: Fix compilation warnings due to unused deprecated program id macros
+  ([#3170](https://github.com/coral-xyz/anchor/pull/3170)).
+- ts: Remove `crypto-hash` dependency
+  ([#3171](https://github.com/coral-xyz/anchor/pull/3171)).
+- ts: Improve error message of unsupported `view` method
+  ([#3177](https://github.com/coral-xyz/anchor/pull/3177)).
+- idl: Fix panicking on tests
+  ([#3197](https://github.com/coral-xyz/anchor/pull/3197)).
+- lang: Remove `arrayref` dependency
+  ([#3201](https://github.com/coral-xyz/anchor/pull/3201)).
+- cli: Fix template code shouldn't escape
+  ([#3210](https://github.com/coral-xyz/anchor/pull/3210)).
+- idl: Fix using `address` constraint with non-const expressions
+  ([#3216](https://github.com/coral-xyz/anchor/pull/3216)).
+- idl: Fix using full path types with `Program`
+  ([#3228](https://github.com/coral-xyz/anchor/pull/3228)).
+- lang: Use closures for `init` constraints to reduce the stack usage of
+  `try_accounts` ([#2939](https://github.com/coral-xyz/anchor/pull/2939)).
+- lang: Allow the `cfg` attribute above the instructions
+  ([#2339](https://github.com/coral-xyz/anchor/pull/2339)).
+- idl: Log output with `ANCHOR_LOG` on failure and improve build error message
+  ([#3284](https://github.com/coral-xyz/anchor/pull/3284)).
+- lang: Fix constant bytes declarations when using `declare_program!`
+  ([#3287](https://github.com/coral-xyz/anchor/pull/3287)).
+- lang: Fix using non-instruction composite accounts with `declare_program!`
+  ([#3290](https://github.com/coral-xyz/anchor/pull/3290)).
+- idl: Fix instructions with tuple parameters not producing an
+  error([#3294](https://github.com/coral-xyz/anchor/pull/3294)).
+- ts: Update `engines.node` to `>= 17`
+  ([#3301](https://github.com/coral-xyz/anchor/pull/3301)).
+- cli: Use OS-agnostic paths
+  ([#3307](https://github.com/coral-xyz/anchor/pull/3307)).
+- avm: Use `rustc 1.79.0` when installing versions older than v0.31
+  ([#3315](https://github.com/coral-xyz/anchor/pull/3315)).
+- cli: Fix priority fee calculation causing panic on localnet
+  ([#3318](https://github.com/coral-xyz/anchor/pull/3318)).
+- cli: Fix `shell` command failing due to outdated program initialization
+  ([#3351](https://github.com/coral-xyz/anchor/pull/3351)).
+- idl: Fix detecting false-positives from doc comments during module path
+  conversion ([#3359](https://github.com/coral-xyz/anchor/pull/3359)).
+- cli: Remove passing the rent sysvar account to IDL instructions
+  ([#3372](https://github.com/coral-xyz/anchor/pull/3372)).
+- lang: Fix `cpi` feature instructions not accounting for discriminator
+  overrides ([#3376](https://github.com/coral-xyz/anchor/pull/3376)).
+- idl: Ignore compiler warnings during builds
+  ([#3396](https://github.com/coral-xyz/anchor/pull/3396)).
+- cli: Avoid extra IDL generation during `verify`
+  ([#3398](https://github.com/coral-xyz/anchor/pull/3398)).
+- lang: Require `zero` accounts to be unique
+  ([#3409](https://github.com/coral-xyz/anchor/pull/3409)).
+- lang: Deduplicate `zero` accounts against `init` accounts
+  ([#3422](https://github.com/coral-xyz/anchor/pull/3422)).
+- cli: Fix custom `provider.cluster`
+  ([#3428](https://github.com/coral-xyz/anchor/pull/3428)).
+- cli: Ignore non semver solana/agave releases to avoid panic
+  ([#3432](https://github.com/coral-xyz/anchor/pull/3432)).
+- ts: Fix loading programs with numbers in their names using `workspace`
+  ([#3450](https://github.com/coral-xyz/anchor/pull/3450)).
+- lang: Remove a potential panic while getting the IDL in `declare_program!`
+  ([#3458](https://github.com/coral-xyz/anchor/pull/3458)).
+- cli: Fix altering user-provided lib names
+  ([#3467](https://github.com/coral-xyz/anchor/pull/3467)).
+- idl: Fix missing `program::seed` resolution
+  ([#3474](https://github.com/coral-xyz/anchor/pull/3474)).
+- lang: Fix adding `derive`s and `repr`s to type alias definitions in
+  `declare_program!` ([#3504](https://github.com/coral-xyz/anchor/pull/3504)).
+- idl: Fix using constant identifiers as generic arguments
+  ([#3522](https://github.com/coral-xyz/anchor/pull/3522)).
+- client: Remove `std::process::exit` usage
+  ([#3544](https://github.com/coral-xyz/anchor/pull/3544)).
+- idl: Fix using `Pubkey` constants with `seeds::program`
+  ([#3559](https://github.com/coral-xyz/anchor/pull/3559)).
+- lang: Fix instructions with no accounts causing compilation errors when using
+  `declare_program!` ([#3567](https://github.com/coral-xyz/anchor/pull/3567)).
+- idl: Fix using account or arg values for `seeds::program`
+  ([#3570](https://github.com/coral-xyz/anchor/pull/3570)).
+- lang: Fix using `data` as an instruction parameter name in `declare_program!`
+  ([#3574](https://github.com/coral-xyz/anchor/pull/3574)).
+- cli: Use camelCase for program name in `anchor.workspace` templates
+  ([#3581](https://github.com/coral-xyz/anchor/pull/3581)).
+
+### Breaking
+
+- syn: Remove `bpf` target support in `hash` feature
+  ([#3078](https://github.com/coral-xyz/anchor/pull/3078)).
+- client: Add `tokio` support to `RequestBuilder` with `async` feature
+  ([#3057](https://github.com/coral-xyz/anchor/pull/3057)).
+- lang: Remove `EventData` trait
+  ([#3083](https://github.com/coral-xyz/anchor/pull/3083)).
+- client: Remove `async_rpc` method
+  ([#3053](https://github.com/coral-xyz/anchor/pull/3053)).
+- lang: Make discriminator type unsized
+  ([#3098](https://github.com/coral-xyz/anchor/pull/3098)).
+- lang: Require `Discriminator` trait impl when using the `zero` constraint
+  ([#3118](https://github.com/coral-xyz/anchor/pull/3118)).
+- ts: Remove `DISCRIMINATOR_SIZE` constant
+  ([#3120](https://github.com/coral-xyz/anchor/pull/3120)).
+- lang: `#[account]` attribute arguments no longer parses identifiers as
+  namespaces ([#3140](https://github.com/coral-xyz/anchor/pull/3140)).
+- spl: Rename metadata interface instruction fields from `token_program_id` to
+  `program_id` ([#3076](https://github.com/coral-xyz/anchor/pull/3076)).
+- lang, ts: Remove "8 byte" requirement from discriminator error messages
+  ([#3161](https://github.com/coral-xyz/anchor/pull/3161)).
+- lang: Remove `discriminator` method from `Discriminator` trait
+  ([#3163](https://github.com/coral-xyz/anchor/pull/3163)).
+- docker: Upgrade `node` to 20.16.0 LTS
+  ([#3179](https://github.com/coral-xyz/anchor/pull/3179)).
+- ts: Change the `Program` constructor's `idl` parameter type to `any`
+  ([#3181](https://github.com/coral-xyz/anchor/pull/3181)).
+- lang, spl: Remove `borsh 0.9` support
+  ([#3199](https://github.com/coral-xyz/anchor/pull/3199)).
+- ts: Upgrade `typescript` to `5.5.4` and remove the generic parameters of
+  `SimulateResponse` ([#3221](https://github.com/coral-xyz/anchor/pull/3221)).
+- ts: Remove
+  `StateCoder`([#3224](https://github.com/coral-xyz/anchor/pull/3224)).
+- cli: Accept integers for `warp_slot`
+  ([#3235](https://github.com/coral-xyz/anchor/pull/3235)).
+- lang: Remove `EventIndex`
+  ([#3244](https://github.com/coral-xyz/anchor/pull/3244)).
+- spl: Remove `dex` feature
+  ([#3257](https://github.com/coral-xyz/anchor/pull/3257)).
+- client, lang, spl: Upgrade Solana to v2 and SPL to the latest
+  ([#3219](https://github.com/coral-xyz/anchor/pull/3219)).
+- cli: Install Solana from anza.xyz domain in Docker verifiable builds
+  ([#3271](https://github.com/coral-xyz/anchor/pull/3271)).
+- spl: Upgrade SPL deps to latest
+  ([#3346](https://github.com/coral-xyz/anchor/pull/3346)).
+- cli: Upgrade `typescript` version of templates to v5
+  ([#3480](https://github.com/coral-xyz/anchor/pull/3480)).
+- ts: Remove `snake-case` dependency
+  ([#3507](https://github.com/coral-xyz/anchor/pull/3507)).
+
 ## [0.30.1] - 2024-06-20
 
 ### Features

+ 549 - 0
docs/content/docs/updates/release-notes/0-31-0.mdx

@@ -0,0 +1,549 @@
+---
+title: 0.31.0
+description: Anchor - Release Notes 0.31.0
+---
+
+The last major release before v1 is finally here.
+
+As always, there are a great number of changes, but we'll only be covering the
+most important ones here. For a list of all notable changes, see the
+[CHANGELOG](https://github.com/coral-xyz/anchor/blob/v0.31.0/CHANGELOG.md#0310---2025-03-08).
+
+---
+
+## How to upgrade
+
+1. Install the latest version of `avm`:
+
+   ```sh
+   cargo install --git https://github.com/coral-xyz/anchor avm --force
+   ```
+
+   This will allow installing Anchor CLI without having to compile from source,
+   see [Install from binary](#install-from-binary).
+
+2. Update `anchor-cli`:
+
+   ```sh
+   avm install 0.31.0
+   ```
+
+3. Update Anchor crate(s) to `0.31.0`.
+
+4. Update TS package(s) to `0.31.0`.
+
+## Recommended Solana Version
+
+The recommended Solana version is `2.1.0`. This is a special upgrade because
+some of the Solana binaries have been renamed to Agave, see
+[Agave transition](https://github.com/anza-xyz/agave/wiki/Agave-Transition).
+
+You can install the newer tooling by running:
+
+```
+sh -c "$(curl -sSfL https://release.anza.xyz/v2.1.0/install)"
+```
+
+This change is handled automatically if you specify `toolchain.solana_version`,
+see [Automatic Agave transition](#automatic-agave-transition).
+
+## AVM
+
+### Install from binary
+
+`avm install` now downloads binaries from GitHub by default.
+
+The following build targets are supported:
+
+- `aarch64-apple-darwin`
+- `x86_64-unknown-linux-gnu`
+- `x86_64-apple-darwin`
+- `x86_64-pc-windows-msvc`
+
+You can add the `--from-source` flag to the `install` command if that's
+preferred (or required due to unsupported platform).
+
+## CLI
+
+### Automatic Agave transition
+
+As mentioned in [Recommended Solana version](#recommended-solana-version)
+section, some of the Solana binaries are renamed to Agave. `solana-install` is
+deprecated in `1.18.19` and logs a deprecation message when used (this results
+in parsing failure in older Anchor versions):
+
+```
+⚠️  solana-install is deprecated and will be discontinued when v1.18 is no longer supported. Please switch to Agave: https://github.com/anza-xyz/agave/wiki/Agave-Transition
+```
+
+In this release, if you specify `solana_version` field with a version greater
+than `1.18.19`, it automatically installs and switches to `agave-install`:
+
+```toml
+[toolchain]
+solana_version = "2.1.0"
+```
+
+### `solana-program` warning
+
+Adding `solana-program` as a dependency of Anchor programs should be avoided to
+decrease the possibility of version conflicts between Solana v1 and v2 crates.
+
+You'll see the following warning on builds if you have `solana-program` in your
+dependency list:
+
+```
+WARNING: Adding `solana-program` as a separate dependency might cause conflicts.
+To solve, remove the `solana-program` dependency and use the exported crate from `anchor-lang`.
+`use solana_program` becomes `use anchor_lang::solana_program`.
+Program name: `my-program`
+```
+
+### Pass `cargo` args to IDL build
+
+Both `anchor build` and `anchor idl build` commands pass the `cargo` arguments
+to the underyling IDL build command. For example:
+
+```
+anchor build -- --features my-feature
+```
+
+now builds the IDL with `my-feature` enabled.
+
+### `--no-idl` flag for tests
+
+If you make a change to your program, but the API of the program stays the same,
+building the IDL is pointless and takes additional time.
+
+Similar to [`--no-idl` flag on builds](./0.30.0#no-idl-flag-on-builds), now you
+can use:
+
+```
+anchor test --no-idl
+```
+
+### `mollusk` test template
+
+You can initialize your workspace using the new
+[`mollusk`](/docs/testing/mollusk) template by running:
+
+```sh
+anchor init my-program --test-template mollusk
+```
+
+### `clean`
+
+`anchor clean` now also removes the generated `.anchor` directory.
+
+For those of you that don't know, this command is similar to `cargo clean`, but
+it keeps the program keypairs.
+
+### Automatic IDL conversion
+
+Legacy IDLs (pre Anchor v0.30) were not supported in v0.30, unless you first
+converted them to the new spec using `anchor idl convert`. In this release,
+various commands do this conversion automatically, meaning you'll be able to
+work with both specs without having to switch versions. The only exception is
+the `idl fetch` command, which does not convert legacy IDLs.
+
+### Shell completions
+
+You can now generate shell completions, see
+[Generating Shell Completions](/docs/installation#generating-shell-completions).
+
+## Lang
+
+### Stack memory improvements
+
+This is going to be a longer section, TL;DR is stack usage is improved massively
+when using `init` constraints, and stack warnings on builds are now reliable
+when using Solana v2 (`platform-tools v1.42`). Keep reading if you're interested
+in learning more, otherwise you can skip to
+[Custom discriminators](#custom-discriminators).
+
+The main place where Anchor programs are likely to hit stack violation errors is
+a generated function called `try_accounts`. This is where the instruction is
+deserialized and constraints are run. Although having everything at the same
+place is convenient for using constraints, this also makes it very easy to use
+the fixed amount of stack space (4096 bytes) SVM allocates just by increasing
+the number of accounts the instruction has. You might be familiar with it from
+the mangled build logs:
+
+```
+Error: Function _ZN71_$LT$pr..Test$u20$as$u20$anchor_lang..Accounts$LT$pr..TestBumps$GT$$GT$12try_accounts17h5572074d55b9e638E Stack offset of 4112 exceeded max offset of 4096 by 16 bytes, please minimize large stack variables.
+```
+
+The problem was made worse with the following external developments:
+
+1. Rust/LLVM changes shipped with Solana v1.18 made Anchor's `try_accounts`
+   function use even more stack space, resulting in much lower threshold to hit
+   stack-related problems.
+2. The stack logs were unreliable, meaning you wouldn't always get warnings
+   during builds if you went over the stack limit.
+3. The feature
+   ["Account data direct mapping"](https://github.com/solana-labs/solana/issues/29708),
+   which is enabled by default when using local-validator, made the programs run
+   into [undefined behavior](https://en.wikipedia.org/wiki/Undefined_behavior)
+   when a function used more stack space than it had available.
+
+All of this combined meant that your programs used more stack space (1), but
+sometimes the errors didn't get caught during the compile time (2) or even the
+runtime (3).
+
+Undefined behavior is particularly challenging to debug because things may
+appear to work as expected during tests, but a different input to the same test
+might overwrite an account's data with unintended bytes. There are endless
+scenarios that could go wrong here, and some examples include
+[#2955](https://github.com/coral-xyz/anchor/issues/2955),
+[#3113](https://github.com/coral-xyz/anchor/issues/3113), and
+[#3196](https://github.com/coral-xyz/anchor/issues/3196).
+
+There isn't much we can do for problems 1 and 3, but the problem 2 is resolved
+with Solana v2 (`platform-tools v1.42`), meaning you'll reliably get warnings
+about all stack problems.
+
+Circling back to Anchor, the biggest offender to the stack usage was identified
+to be the `init` constraint. Each `init` constraint expands to a lengthy code
+inside `try_accounts`, resulting in excessive stack usage when multiple `init`
+constraints are used. This problem was fixed by moving the `init` code inside a
+closure and immediately calling it in order to create and use a different stack
+frame ([#2939](https://github.com/coral-xyz/anchor/pull/2939)).
+
+Related to this topic, there is
+[SIMD-0166](https://github.com/solana-foundation/solana-improvement-documents/pull/166),
+a proposal to introduce dynamic stack frames.
+
+In short, you'll have fewer problems related to stack memory when using Anchor
+v0.31 and Solana v2. If you're still running into problems, please create an
+issue in [coral-xyz/anchor](https://github.com/coral-xyz/anchor/issues/3097).
+
+### Custom discriminators
+
+Before this release, there were several problems regarding Anchor
+discriminators:
+
+- Due to the transaction size limits enforced by the Solana runtime (1232
+  bytes), 8 bytes can be too high for some use cases
+- The `Discriminator` trait had a fixed size type field (`[u8; 8]`), which meant
+  we wouldn't be able to implement it for non-Anchor programs (e.g. in
+  `declare_program!`)
+- Discriminators were not customizable
+- Changing the name of the data type the discriminator was derived from resulted
+  in a different discriminator
+
+This release solves all of the above problems by introducing support for custom
+discriminators. The default 8-byte discriminators have not changed, but you can
+override them via the `discriminator` argument implemented in various Anchor
+attribute macros:
+
+- `#[account(discriminator = 1)]`
+- `#[event(discriminator = [1, 2])]`
+- `#[instruction(discriminator = MY_CONST)]`
+
+All constant expressions are supported.
+
+See
+[example](https://github.com/coral-xyz/anchor/blob/v0.31.0/tests/custom-discriminator/programs/custom-discriminator/src/lib.rs).
+
+It's important that the discriminator is always unique for the type you're
+implementing it for. While the discriminator can be at any length (including
+zero), the IDL generation does not currently allow empty discriminators for
+safety and convenience reasons. However, the `Discriminator` trait definition
+still allows empty discriminators because some non-Anchor programs, e.g. the SPL
+Token program, don't have account discriminators. In that case, safety checks
+should never depend on the discriminator.
+
+Additionally, the IDL generation step also checks whether you have ambigious
+discriminators i.e. discriminators that can be used for multiple types. However,
+you should still consider future possibilities, especially when working with
+1-byte discriminators. For example, having an account with discriminator `[1]`
+means you can't have any other discriminators that start with `1`, e.g.
+`[1, 2 , 3, 4]`, as it would not be unique.
+
+This change also enables using non-Anchor programs with both Rust (via
+[`declare_program!`](./0.30.0#dependency-free-program-declaration)) and in the
+TS client.
+
+### `Discriminator` trait
+
+The `discriminator` method of the `Discriminator` trait has been removed. If you
+have compilation errors related to this removal, you can simply replace the
+`discriminator()` call to the `DISCRIMINATOR` associated constant.
+
+This trait is now exported from `prelude`, and it can be used to replace a very
+common usage that hardcodes the discriminator length as `8`. For example, the
+following:
+
+```rs
+space = 8 + ...
+```
+
+can be replaced by:
+
+```rs
+space = MyAccount::DISCRIMINATOR.len() + ...
+```
+
+### `LazyAccount`
+
+`LazyAccount` is an experimental account type that can be used to replace
+`Account` when you're running into performance-related problems.
+
+We'll skip the details to keep the release notes as short as possible, but if
+you're interested, check out
+[its documentation](https://docs.rs/anchor-lang/0.31.0/anchor_lang/accounts/lazy_account/struct.LazyAccount.html)
+to see if it fits your needs.
+
+**Note:** You need to enable `lazy-account` feature of `anchor-lang` to be able
+to use `LazyAccount`.
+
+### `cfg` attribute on instructions
+
+You can now use `cfg` attributes on instructions:
+
+```rs
+#[program]
+mod my_program {
+    #[cfg(feature = "my-feature")]
+    pub fn my_feature(ctx: Context<MyFeature>) -> Result<()> {}
+}
+```
+
+### Unnamed and unit structs with `InitSpace`
+
+Unnamed and unit struct support was added in v0.30, but deriving `InitSpace` did
+not work with these structs. This release adds support for both of them:
+
+```rs
+#[derive(InitSpace)]
+pub struct Unnamed(pub u64, #[max_len(64)] pub Vec<u8>);
+
+#[derive(InitSpace)]
+pub struct Unit;
+```
+
+### Account parser
+
+You can now conveniently parse any program account using `declare_program!`:
+
+```rs
+declare_program!(my_program);
+```
+
+This will generate something similar to:
+
+```rs
+pub enum Account {
+    SomeAccount(SomeAccount),
+    OtherAccount(OtherAccount),
+}
+```
+
+Use `my_program::utils::Account::try_from_bytes` to parse any account belonging
+to the program.
+
+### `declare_program!` improvements
+
+The following issues related to
+[`declare_program!`](/docs/features/declare-program) have been fixed:
+
+- Being unable to use constant bytes
+  ([#3287](https://github.com/coral-xyz/anchor/pull/3287))
+- Missing docs from the generated constants
+  ([#3311](https://github.com/coral-xyz/anchor/pull/3311))
+- Compilation errors related to incorrectly adding `derive`s and `repr`s to type
+  aliases ([#3504](https://github.com/coral-xyz/anchor/pull/3504))
+- Being unable to use `data` as an instruction parameter
+  ([#3574](https://github.com/coral-xyz/anchor/pull/3574))
+
+## SPL
+
+### New Token 2022 instructions
+
+The following Token 2022 instructions were added:
+
+- `burn_checked`
+- `mint_to_checked`
+- `approve_checked`
+- `withdraw_withheld_tokens_from_accounts`
+
+## IDL
+
+### Safety comment checks
+
+In v0.30.1, you'd run into panics in Rust Analyzer if you enabled all features
+because the `idl-build` feature expected an environment variable to be set. This
+was always set if you used `anchor build`, but since Rust Analyzer did not know
+about this environment variable, it would panic:
+
+```
+custom attribute panicked
+message: Safety checks failed: Failed to get program path
+```
+
+It no longer panics if the environment variable is missing.
+
+### `address` constraint with non-const expressions
+
+There was a regression in v0.30 that made using non-const expressions with the
+`address` constraint fail:
+
+```rs
+#[derive(Accounts)]
+pub struct MyIx {
+    #[account(address = my_account.authority())]
+    pub authority: Signer<'info>,
+    pub my_account: Account<'info, MyAccount>,
+}
+```
+
+This is now fixed and no longer results in build errors.
+
+See [coral-xyz/anchor#3216](https://github.com/coral-xyz/anchor/pull/3216) for
+more information.
+
+### `Program` accounts with full paths
+
+The following did not work in v0.30, but it works now:
+
+```rs
+#[derive(Accounts)]
+pub struct FullPath<'info> {
+    pub external_program: Program<'info, external::program::External>,
+}
+```
+
+### `IdlBuilder`
+
+Building the IDL via the
+[`build_idl`](https://github.com/coral-xyz/anchor/blob/v0.31.0/idl/src/build.rs#L119)
+function made it impossible to extend its functionality e.g. add new parameters
+without a breaking change. To solve this problem, there is a new way to build
+IDLs programatically:
+
+```rs
+let idl = IdlBuilder::new().program_path(path).skip_lint(true).build()?;
+```
+
+See
+[`IdlBuilder`](https://docs.rs/anchor-lang-idl/0.1.2/anchor_lang_idl/build/struct.IdlBuilder.html)
+for more information.
+
+### Generation improvements
+
+The following issues with the IDL generation have been fixed:
+
+- A bug where using tuple parameters in instructions would result in an
+  incorrect IDL ([#3294](https://github.com/coral-xyz/anchor/pull/3294))
+- A bug where doc comments could trigger false-positives during module paths
+  convertion ([#3359](https://github.com/coral-xyz/anchor/pull/3359))
+- A bug where the generated IDL only has partial resolution information
+  ([#3474](https://github.com/coral-xyz/anchor/pull/3474))
+- Being unable to use constant identifiers as generic arguments
+  ([#3522](https://github.com/coral-xyz/anchor/pull/3522))
+- Being unable to pass in a `Pubkey` constant to `seeds::program`
+  ([#3559](https://github.com/coral-xyz/anchor/pull/3559))
+- Being unable to pass in an account or an argument to `seeds::program`
+  ([#3570](https://github.com/coral-xyz/anchor/pull/3570))
+
+## TypeScript
+
+### Simpler `Program` construction
+
+TypeScript's automatic inference of JSON files made it difficult to use the
+`Program` constructor without additional casting:
+
+```ts
+import * as idl from "./idl/my_program.json";
+import type { MyProgram } from "./types/my_program";
+
+const program = new Program(idl as unknown as MyProgram, provider);
+```
+
+Casting to `unknown` or `any` was necessary when TypeScript automatically
+inferred the type of the JSON file.
+
+In this release, the program constructor no longer infers the IDL type from the
+given `idl` argument. This makes it easier to specify the actual IDL type:
+
+```ts
+const program = new Program<MyProgram>(idl, provider);
+```
+
+### Error improvements
+
+Account resolution error now includes the accounts that weren't able to get
+resolved:
+
+```
+Reached maximum depth for account resolution. Unresolved accounts: `pda`, `anotherPda`
+```
+
+Similarly, unsupported `view` method error now includes the possible causes:
+
+```
+Error: Method does not support views. The instruction should return a value, and its accounts must be read-only
+```
+
+### Type improvements
+
+It's common to use `//@ts-ignore` to get the payer keypair in tests:
+
+```ts
+// @ts-ignore
+const payer = program.provider.wallet.payer;
+```
+
+To fix this problem, the `Provider` interface now includes an optional
+`wallet: Wallet` field, and similarly, the `Wallet` interface now includes
+optional `payer: Keypair` field.
+
+You can now do:
+
+```ts
+const payer = program.provider.wallet!.payer!;
+```
+
+We're using `!` because we know these fields are going to be defined in our
+testing environment.
+
+### Better confirmation
+
+`Provider.sendAndConfirm` now takes in an optional `blockhash` and uses that for
+better transaction confirmation:
+
+```ts
+await program.provider.sendAndConfirm(tx, signers, { blockhash: ... });
+```
+
+### Programs with numbers in their name
+
+Testing programs with numbers in their name using `anchor.workspace` now works
+for all cases.
+
+For more details about the problem and its solution, see
+[#3450](https://github.com/coral-xyz/anchor/pull/3450).
+
+## Rust Client
+
+### `tokio` support
+
+There was a problem that made it impossible to use `tokio` with
+[`anchor-client`](https://docs.rs/anchor-client/0.31.0/anchor_client/index.html).
+This problem is now fixed, and you can use `tokio` (with `async` feature). See
+[`tokio` example](https://github.com/coral-xyz/anchor/blob/v0.31.0/client/example/src/nonblocking.rs#L65-L99).
+
+### Mock client
+
+It's now possible to pass in a
+[mock RPC client](https://docs.rs/solana-client/2.1.0/solana_client/rpc_client/struct.RpcClient.html#method.new_mock)
+for testing by enabling the `mock` feature:
+
+```toml
+anchor-client = { version = "0.31.0", features = ["mock"] }
+```
+
+---
+
+See the full list of notable changes in the
+[CHANGELOG](https://github.com/coral-xyz/anchor/blob/v0.31.0/CHANGELOG.md#0310---2025-03-08).

+ 1 - 1
docs/content/docs/updates/release-notes/meta.json

@@ -1,4 +1,4 @@
 {
   "title": "Release Notes",
-  "pages": ["0-30-1", "0-30-0", "0-29-0"]
+  "pages": ["0-31-0", "0-30-1", "0-30-0", "0-29-0"]
 }

+ 1 - 1
examples/tutorial/basic-0/package.json

@@ -1,6 +1,6 @@
 {
   "name": "basic-0",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
examples/tutorial/basic-1/package.json

@@ -1,6 +1,6 @@
 {
   "name": "basic-1",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
examples/tutorial/basic-2/package.json

@@ -1,6 +1,6 @@
 {
   "name": "basic-2",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
examples/tutorial/basic-3/package.json

@@ -1,6 +1,6 @@
 {
   "name": "basic-3",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
examples/tutorial/basic-4/package.json

@@ -1,6 +1,6 @@
 {
   "name": "basic-4",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
examples/tutorial/basic-5/package.json

@@ -1,6 +1,6 @@
 {
   "name": "basic-5",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
idl/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-lang-idl"
-version = "0.1.1"
+version = "0.1.2"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 repository = "https://github.com/coral-xyz/anchor"
 edition = "2021"

+ 11 - 11
lang/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-lang"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 repository = "https://github.com/coral-xyz/anchor"
 edition = "2021"
@@ -39,18 +39,18 @@ interface-instructions = ["anchor-attribute-program/interface-instructions"]
 lazy-account = ["anchor-attribute-account/lazy-account", "anchor-derive-serde/lazy-account"]
 
 [dependencies]
-anchor-attribute-access-control = { path = "./attribute/access-control", version = "0.30.1" }
-anchor-attribute-account = { path = "./attribute/account", version = "0.30.1" }
-anchor-attribute-constant = { path = "./attribute/constant", version = "0.30.1" }
-anchor-attribute-error = { path = "./attribute/error", version = "0.30.1" }
-anchor-attribute-event = { path = "./attribute/event", version = "0.30.1" }
-anchor-attribute-program = { path = "./attribute/program", version = "0.30.1" }
-anchor-derive-accounts = { path = "./derive/accounts", version = "0.30.1" }
-anchor-derive-serde = { path = "./derive/serde", version = "0.30.1" }
-anchor-derive-space = { path = "./derive/space", version = "0.30.1" }
+anchor-attribute-access-control = { path = "./attribute/access-control", version = "0.31.0" }
+anchor-attribute-account = { path = "./attribute/account", version = "0.31.0" }
+anchor-attribute-constant = { path = "./attribute/constant", version = "0.31.0" }
+anchor-attribute-error = { path = "./attribute/error", version = "0.31.0" }
+anchor-attribute-event = { path = "./attribute/event", version = "0.31.0" }
+anchor-attribute-program = { path = "./attribute/program", version = "0.31.0" }
+anchor-derive-accounts = { path = "./derive/accounts", version = "0.31.0" }
+anchor-derive-serde = { path = "./derive/serde", version = "0.31.0" }
+anchor-derive-space = { path = "./derive/space", version = "0.31.0" }
 
 # `anchor-lang-idl` should only be included with `idl-build` feature
-anchor-lang-idl = { path = "../idl", version = "0.1.1", optional = true }
+anchor-lang-idl = { path = "../idl", version = "0.1.2", optional = true }
 
 base64 = "0.21"
 bincode = "1"

+ 2 - 2
lang/attribute/access-control/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-attribute-access-control"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 repository = "https://github.com/coral-xyz/anchor"
 license = "Apache-2.0"
@@ -14,7 +14,7 @@ proc-macro = true
 anchor-debug = ["anchor-syn/anchor-debug"]
 
 [dependencies]
-anchor-syn = { path = "../../syn", version = "0.30.1" }
+anchor-syn = { path = "../../syn", version = "0.31.0" }
 proc-macro2 = "1"
 quote = "1"
 syn = { version = "1", features = ["full"] }

+ 2 - 2
lang/attribute/account/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-attribute-account"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 repository = "https://github.com/coral-xyz/anchor"
 license = "Apache-2.0"
@@ -16,7 +16,7 @@ idl-build = ["anchor-syn/idl-build"]
 lazy-account = []
 
 [dependencies]
-anchor-syn = { path = "../../syn", version = "0.30.1", features = ["hash"] }
+anchor-syn = { path = "../../syn", version = "0.31.0", features = ["hash"] }
 bs58 = "0.5"
 proc-macro2 = "1"
 quote = "1"

+ 2 - 2
lang/attribute/constant/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-attribute-constant"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 repository = "https://github.com/coral-xyz/anchor"
 license = "Apache-2.0"
@@ -15,6 +15,6 @@ anchor-debug = ["anchor-syn/anchor-debug"]
 idl-build = ["anchor-syn/idl-build"]
 
 [dependencies]
-anchor-syn = { path = "../../syn", version = "0.30.1" }
+anchor-syn = { path = "../../syn", version = "0.31.0" }
 quote = "1"
 syn = { version = "1", features = ["full"] }

+ 2 - 2
lang/attribute/error/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-attribute-error"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 repository = "https://github.com/coral-xyz/anchor"
 license = "Apache-2.0"
@@ -15,6 +15,6 @@ anchor-debug = ["anchor-syn/anchor-debug"]
 idl-build = ["anchor-syn/idl-build"]
 
 [dependencies]
-anchor-syn = { path = "../../syn", version = "0.30.1" }
+anchor-syn = { path = "../../syn", version = "0.31.0" }
 quote = "1"
 syn = { version = "1", features = ["full"] }

+ 2 - 2
lang/attribute/event/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-attribute-event"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 repository = "https://github.com/coral-xyz/anchor"
 license = "Apache-2.0"
@@ -17,7 +17,7 @@ event-cpi = ["anchor-syn/event-cpi"]
 idl-build = ["anchor-syn/idl-build"]
 
 [dependencies]
-anchor-syn = { path = "../../syn", version = "0.30.1", features = ["hash"] }
+anchor-syn = { path = "../../syn", version = "0.31.0", features = ["hash"] }
 proc-macro2 = "1"
 quote = "1"
 syn = { version = "1", features = ["full"] }

+ 3 - 3
lang/attribute/program/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-attribute-program"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 repository = "https://github.com/coral-xyz/anchor"
 license = "Apache-2.0"
@@ -16,8 +16,8 @@ idl-build = ["anchor-syn/idl-build"]
 interface-instructions = ["anchor-syn/interface-instructions"]
 
 [dependencies]
-anchor-lang-idl = { path = "../../../idl", version = "0.1.1", features = ["convert"] }
-anchor-syn = { path = "../../syn", version = "0.30.1" }
+anchor-lang-idl = { path = "../../../idl", version = "0.1.2", features = ["convert"] }
+anchor-syn = { path = "../../syn", version = "0.31.0" }
 anyhow = "1"
 bs58 = "0.5"
 heck = "0.3"

+ 1 - 1
lang/attribute/program/src/lib.rs

@@ -50,7 +50,7 @@ pub fn program(
 ///
 /// A full on-chain CPI usage example can be found [here].
 ///
-/// [here]: https://github.com/coral-xyz/anchor/tree/v0.30.1/tests/declare-program
+/// [here]: https://github.com/coral-xyz/anchor/tree/v0.31.0/tests/declare-program
 #[proc_macro]
 pub fn declare_program(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
     parse_macro_input!(input as DeclareProgram)

+ 2 - 2
lang/derive/accounts/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-derive-accounts"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 repository = "https://github.com/coral-xyz/anchor"
 license = "Apache-2.0"
@@ -17,6 +17,6 @@ idl-build = ["anchor-syn/idl-build"]
 init-if-needed = ["anchor-syn/init-if-needed"]
 
 [dependencies]
-anchor-syn = { path = "../../syn", version = "0.30.1" }
+anchor-syn = { path = "../../syn", version = "0.31.0" }
 quote = "1"
 syn = { version = "1", features = ["full"] }

+ 2 - 2
lang/derive/serde/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-derive-serde"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 repository = "https://github.com/coral-xyz/anchor"
 license = "Apache-2.0"
@@ -15,7 +15,7 @@ idl-build = ["anchor-syn/idl-build"]
 lazy-account = []
 
 [dependencies]
-anchor-syn = { path = "../../syn", version = "0.30.1" }
+anchor-syn = { path = "../../syn", version = "0.31.0" }
 borsh-derive-internal = "0.10.3"
 proc-macro2 = "1"
 syn = { version = "1", features = ["full"] }

+ 1 - 1
lang/derive/space/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-derive-space"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 repository = "https://github.com/coral-xyz/anchor"
 license = "Apache-2.0"

+ 1 - 1
lang/syn/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-syn"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 repository = "https://github.com/coral-xyz/anchor"
 license = "Apache-2.0"

+ 2 - 2
spl/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "anchor-spl"
-version = "0.30.1"
+version = "0.31.0"
 authors = ["Anchor Maintainers <accounts@200ms.io>"]
 edition = "2021"
 license = "Apache-2.0"
@@ -26,7 +26,7 @@ token_2022 = ["spl-token-2022"]
 token_2022_extensions = ["spl-token-2022", "spl-token-group-interface", "spl-token-metadata-interface", "spl-pod"]
 
 [dependencies]
-anchor-lang = { path = "../lang", version = "0.30.1", features = ["derive"] }
+anchor-lang = { path = "../lang", version = "0.31.0", features = ["derive"] }
 borsh = { version = "0.10.3", optional = true }
 mpl-token-metadata = { version = "5", optional = true }
 spl-associated-token-account = { version = "6", features = ["no-entrypoint"], optional = true }

+ 1 - 1
tests/anchor-cli-account/package.json

@@ -1,6 +1,6 @@
 {
   "name": "anchor-cli-account",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/anchor-cli-idl/package.json

@@ -1,6 +1,6 @@
 {
   "name": "anchor-cli-idl",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/auction-house/package.json

@@ -1,6 +1,6 @@
 {
   "name": "auction-house",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 186 - 0
tests/bench/bench.json

@@ -929,6 +929,192 @@
       }
     }
   },
+  "0.31.0": {
+    "solanaVersion": "2.1.0",
+    "result": {
+      "binarySize": {
+        "bench": 1041928
+      },
+      "computeUnits": {
+        "accountInfo1": 571,
+        "accountInfo2": 895,
+        "accountInfo4": 1553,
+        "accountInfo8": 2923,
+        "accountEmptyInit1": 5083,
+        "accountEmpty1": 645,
+        "accountEmptyInit2": 9301,
+        "accountEmpty2": 1007,
+        "accountEmptyInit4": 17764,
+        "accountEmpty4": 1724,
+        "accountEmptyInit8": 34723,
+        "accountEmpty8": 3163,
+        "accountSizedInit1": 5192,
+        "accountSized1": 693,
+        "accountSizedInit2": 9489,
+        "accountSized2": 1075,
+        "accountSizedInit4": 18170,
+        "accountSized4": 1848,
+        "accountSizedInit8": 35433,
+        "accountSized8": 3387,
+        "accountUnsizedInit1": 5305,
+        "accountUnsized1": 746,
+        "accountUnsizedInit2": 9759,
+        "accountUnsized2": 1163,
+        "accountUnsizedInit4": 18603,
+        "accountUnsized4": 2002,
+        "accountUnsizedInit8": 35993,
+        "accountUnsized8": 3673,
+        "boxedAccountEmptyInit1": 5175,
+        "boxedAccountEmpty1": 734,
+        "boxedAccountEmptyInit2": 9414,
+        "boxedAccountEmpty2": 1116,
+        "boxedAccountEmptyInit4": 17918,
+        "boxedAccountEmpty4": 1872,
+        "boxedAccountEmptyInit8": 34953,
+        "boxedAccountEmpty8": 3401,
+        "boxedAccountSizedInit1": 5271,
+        "boxedAccountSized1": 783,
+        "boxedAccountSizedInit2": 9583,
+        "boxedAccountSized2": 1190,
+        "boxedAccountSizedInit4": 18230,
+        "boxedAccountSized4": 1996,
+        "boxedAccountSizedInit8": 35553,
+        "boxedAccountSized8": 3628,
+        "boxedAccountUnsizedInit1": 5371,
+        "boxedAccountUnsized1": 836,
+        "boxedAccountUnsizedInit2": 9759,
+        "boxedAccountUnsized2": 1270,
+        "boxedAccountUnsizedInit4": 18558,
+        "boxedAccountUnsized4": 2132,
+        "boxedAccountUnsizedInit8": 36185,
+        "boxedAccountUnsized8": 3881,
+        "boxedInterfaceAccountMint1": 1351,
+        "boxedInterfaceAccountMint2": 2123,
+        "boxedInterfaceAccountMint4": 3656,
+        "boxedInterfaceAccountMint8": 6738,
+        "boxedInterfaceAccountToken1": 2011,
+        "boxedInterfaceAccountToken2": 3431,
+        "boxedInterfaceAccountToken4": 6260,
+        "boxedInterfaceAccountToken8": 11934,
+        "interfaceAccountMint1": 1476,
+        "interfaceAccountMint2": 2489,
+        "interfaceAccountMint4": 4511,
+        "interfaceAccountMint8": 8550,
+        "interfaceAccountToken1": 2111,
+        "interfaceAccountToken2": 3729,
+        "interfaceAccountToken4": 6955,
+        "interface1": 769,
+        "interface2": 912,
+        "interface4": 1189,
+        "interface8": 1748,
+        "program1": 779,
+        "program2": 920,
+        "program4": 1193,
+        "program8": 1744,
+        "signer1": 774,
+        "signer2": 1064,
+        "signer4": 1637,
+        "signer8": 2788,
+        "systemAccount1": 796,
+        "systemAccount2": 1096,
+        "systemAccount4": 1689,
+        "systemAccount8": 2880,
+        "uncheckedAccount1": 783,
+        "uncheckedAccount2": 1056,
+        "uncheckedAccount4": 1594,
+        "uncheckedAccount8": 2679
+      },
+      "stackMemory": {
+        "account_info1": 46,
+        "account_info2": 80,
+        "account_info4": 80,
+        "account_info8": 80,
+        "account_empty_init1": 88,
+        "account_empty_init2": 88,
+        "account_empty_init4": 88,
+        "account_empty_init8": 88,
+        "account_empty1": 88,
+        "account_empty2": 88,
+        "account_empty4": 88,
+        "account_empty8": 88,
+        "account_sized_init1": 88,
+        "account_sized_init2": 88,
+        "account_sized_init4": 88,
+        "account_sized_init8": 88,
+        "account_sized1": 88,
+        "account_sized2": 88,
+        "account_sized4": 88,
+        "account_sized8": 88,
+        "account_unsized_init1": 88,
+        "account_unsized_init2": 88,
+        "account_unsized_init4": 88,
+        "account_unsized_init8": 88,
+        "account_unsized1": 88,
+        "account_unsized2": 88,
+        "account_unsized4": 88,
+        "account_unsized8": 88,
+        "boxed_account_empty_init1": 88,
+        "boxed_account_empty_init2": 88,
+        "boxed_account_empty_init4": 88,
+        "boxed_account_empty_init8": 88,
+        "boxed_account_empty1": 88,
+        "boxed_account_empty2": 88,
+        "boxed_account_empty4": 88,
+        "boxed_account_empty8": 88,
+        "boxed_account_sized_init1": 88,
+        "boxed_account_sized_init2": 88,
+        "boxed_account_sized_init4": 88,
+        "boxed_account_sized_init8": 88,
+        "boxed_account_sized1": 88,
+        "boxed_account_sized2": 88,
+        "boxed_account_sized4": 88,
+        "boxed_account_sized8": 88,
+        "boxed_account_unsized_init1": 88,
+        "boxed_account_unsized_init2": 88,
+        "boxed_account_unsized_init4": 88,
+        "boxed_account_unsized_init8": 88,
+        "boxed_account_unsized1": 88,
+        "boxed_account_unsized2": 88,
+        "boxed_account_unsized4": 88,
+        "boxed_account_unsized8": 88,
+        "boxed_interface_account_mint1": 88,
+        "boxed_interface_account_mint2": 88,
+        "boxed_interface_account_mint4": 88,
+        "boxed_interface_account_mint8": 88,
+        "boxed_interface_account_token1": 88,
+        "boxed_interface_account_token2": 88,
+        "boxed_interface_account_token4": 88,
+        "boxed_interface_account_token8": 88,
+        "interface_account_mint1": 88,
+        "interface_account_mint2": 88,
+        "interface_account_mint4": 88,
+        "interface_account_mint8": 88,
+        "interface_account_token1": 80,
+        "interface_account_token2": 80,
+        "interface_account_token4": 80,
+        "interface1": 88,
+        "interface2": 88,
+        "interface4": 88,
+        "interface8": 88,
+        "program1": 88,
+        "program2": 88,
+        "program4": 88,
+        "program8": 88,
+        "signer1": 88,
+        "signer2": 88,
+        "signer4": 88,
+        "signer8": 88,
+        "system_account1": 88,
+        "system_account2": 88,
+        "system_account4": 88,
+        "system_account8": 88,
+        "unchecked_account1": 88,
+        "unchecked_account2": 88,
+        "unchecked_account4": 88,
+        "unchecked_account8": 88
+      }
+    }
+  },
   "unreleased": {
     "solanaVersion": "2.1.0",
     "result": {

+ 2865 - 0
tests/bench/locks/0.31.0.lock

@@ -0,0 +1,2865 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "aead"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
+dependencies = [
+ "crypto-common",
+ "generic-array",
+]
+
+[[package]]
+name = "aes"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
+dependencies = [
+ "cfg-if",
+ "cipher",
+ "cpufeatures",
+]
+
+[[package]]
+name = "aes-gcm-siv"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d"
+dependencies = [
+ "aead",
+ "aes",
+ "cipher",
+ "ctr",
+ "polyval",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "ahash"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anchor-attribute-access-control"
+version = "0.31.0"
+dependencies = [
+ "anchor-syn",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-attribute-account"
+version = "0.31.0"
+dependencies = [
+ "anchor-syn",
+ "bs58",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-attribute-constant"
+version = "0.31.0"
+dependencies = [
+ "anchor-syn",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-attribute-error"
+version = "0.31.0"
+dependencies = [
+ "anchor-syn",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-attribute-event"
+version = "0.31.0"
+dependencies = [
+ "anchor-syn",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-attribute-program"
+version = "0.31.0"
+dependencies = [
+ "anchor-lang-idl",
+ "anchor-syn",
+ "anyhow",
+ "bs58",
+ "heck",
+ "proc-macro2",
+ "quote",
+ "serde_json",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-derive-accounts"
+version = "0.31.0"
+dependencies = [
+ "anchor-syn",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-derive-serde"
+version = "0.31.0"
+dependencies = [
+ "anchor-syn",
+ "borsh-derive-internal",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-derive-space"
+version = "0.31.0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-lang"
+version = "0.31.0"
+dependencies = [
+ "anchor-attribute-access-control",
+ "anchor-attribute-account",
+ "anchor-attribute-constant",
+ "anchor-attribute-error",
+ "anchor-attribute-event",
+ "anchor-attribute-program",
+ "anchor-derive-accounts",
+ "anchor-derive-serde",
+ "anchor-derive-space",
+ "anchor-lang-idl",
+ "base64 0.21.7",
+ "bincode",
+ "borsh 0.10.4",
+ "bytemuck",
+ "solana-program",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "anchor-lang-idl"
+version = "0.1.2"
+dependencies = [
+ "anchor-lang-idl-spec",
+ "anyhow",
+ "heck",
+ "regex",
+ "serde",
+ "serde_json",
+ "sha2 0.10.8",
+]
+
+[[package]]
+name = "anchor-lang-idl-spec"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "serde",
+]
+
+[[package]]
+name = "anchor-spl"
+version = "0.31.0"
+dependencies = [
+ "anchor-lang",
+ "spl-associated-token-account",
+ "spl-pod",
+ "spl-token",
+ "spl-token-2022",
+ "spl-token-group-interface",
+ "spl-token-metadata-interface",
+]
+
+[[package]]
+name = "anchor-syn"
+version = "0.31.0"
+dependencies = [
+ "anyhow",
+ "bs58",
+ "cargo_toml",
+ "heck",
+ "proc-macro2",
+ "quote",
+ "serde",
+ "serde_json",
+ "sha2 0.10.8",
+ "syn 1.0.109",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.97"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
+
+[[package]]
+name = "arrayref"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
+
+[[package]]
+name = "autocfg"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+
+[[package]]
+name = "base64"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
+
+[[package]]
+name = "base64"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
+name = "bench"
+version = "0.1.0"
+dependencies = [
+ "anchor-lang",
+ "anchor-spl",
+]
+
+[[package]]
+name = "bincode"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitflags"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
+
+[[package]]
+name = "blake3"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "675f87afced0413c9bb02843499dbbd3882a237645883f71a2b59644a6d2f753"
+dependencies = [
+ "arrayref",
+ "arrayvec",
+ "cc",
+ "cfg-if",
+ "constant_time_eq",
+ "digest 0.10.7",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "borsh"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee"
+dependencies = [
+ "borsh-derive 0.10.4",
+ "hashbrown 0.13.2",
+]
+
+[[package]]
+name = "borsh"
+version = "1.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5430e3be710b68d984d1391c854eb431a9d548640711faa54eecb1df93db91cc"
+dependencies = [
+ "borsh-derive 1.5.5",
+ "cfg_aliases",
+]
+
+[[package]]
+name = "borsh-derive"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89"
+dependencies = [
+ "borsh-derive-internal",
+ "borsh-schema-derive-internal",
+ "proc-macro-crate 0.1.5",
+ "proc-macro2",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "borsh-derive"
+version = "1.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8b668d39970baad5356d7c83a86fee3a539e6f93bf6764c97368243e17a0487"
+dependencies = [
+ "once_cell",
+ "proc-macro-crate 3.3.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
+[[package]]
+name = "borsh-derive-internal"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "borsh-schema-derive-internal"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "bs58"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
+
+[[package]]
+name = "bv"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340"
+dependencies = [
+ "feature-probe",
+ "serde",
+]
+
+[[package]]
+name = "bytemuck"
+version = "1.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540"
+dependencies = [
+ "bytemuck_derive",
+]
+
+[[package]]
+name = "bytemuck_derive"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "cargo_toml"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a98356df42a2eb1bd8f1793ae4ee4de48e384dd974ce5eac8eee802edb7492be"
+dependencies = [
+ "serde",
+ "toml 0.8.20",
+]
+
+[[package]]
+name = "cc"
+version = "1.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c"
+dependencies = [
+ "shlex",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "cfg_aliases"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
+
+[[package]]
+name = "cipher"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
+dependencies = [
+ "crypto-common",
+ "inout",
+]
+
+[[package]]
+name = "console_error_panic_hook"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "console_log"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f"
+dependencies = [
+ "log",
+ "web-sys",
+]
+
+[[package]]
+name = "constant_time_eq"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crunchy"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "rand_core 0.6.4",
+ "typenum",
+]
+
+[[package]]
+name = "ctr"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
+dependencies = [
+ "cipher",
+]
+
+[[package]]
+name = "curve25519-dalek"
+version = "4.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "curve25519-dalek-derive",
+ "digest 0.10.7",
+ "fiat-crypto",
+ "rand_core 0.6.4",
+ "rustc_version",
+ "serde",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "curve25519-dalek-derive"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
+[[package]]
+name = "derivation-path"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0"
+
+[[package]]
+name = "digest"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer 0.10.4",
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "either"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+
+[[package]]
+name = "equivalent"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+
+[[package]]
+name = "feature-probe"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da"
+
+[[package]]
+name = "fiat-crypto"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
+
+[[package]]
+name = "five8_const"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b4f62f0f8ca357f93ae90c8c2dd1041a1f665fde2f889ea9b1787903829015"
+dependencies = [
+ "five8_core",
+]
+
+[[package]]
+name = "five8_core"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94474d15a76982be62ca8a39570dccce148d98c238ebb7408b0a21b2c4bdddc4"
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.9.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
+dependencies = [
+ "ahash",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
+
+[[package]]
+name = "heck"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest 0.10.7",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.15.2",
+]
+
+[[package]]
+name = "inout"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "keccak"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654"
+dependencies = [
+ "cpufeatures",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+
+[[package]]
+name = "libc"
+version = "0.2.170"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828"
+
+[[package]]
+name = "libsecp256k1"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73"
+dependencies = [
+ "arrayref",
+ "base64 0.12.3",
+ "digest 0.9.0",
+ "libsecp256k1-core",
+ "libsecp256k1-gen-ecmult",
+ "libsecp256k1-gen-genmult",
+ "rand 0.7.3",
+ "serde",
+ "sha2 0.9.9",
+]
+
+[[package]]
+name = "libsecp256k1-core"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80"
+dependencies = [
+ "crunchy",
+ "digest 0.9.0",
+ "subtle",
+]
+
+[[package]]
+name = "libsecp256k1-gen-ecmult"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3"
+dependencies = [
+ "libsecp256k1-core",
+]
+
+[[package]]
+name = "libsecp256k1-gen-genmult"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d"
+dependencies = [
+ "libsecp256k1-core",
+]
+
+[[package]]
+name = "lock_api"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "merlin"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d"
+dependencies = [
+ "byteorder",
+ "keccak",
+ "rand_core 0.6.4",
+ "zeroize",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
+dependencies = [
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-derive"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179"
+dependencies = [
+ "num_enum_derive",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
+dependencies = [
+ "proc-macro-crate 3.3.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
+
+[[package]]
+name = "opaque-debug"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-targets",
+]
+
+[[package]]
+name = "pbkdf2"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917"
+dependencies = [
+ "digest 0.10.7",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "polyval"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "opaque-debug",
+ "universal-hash",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
+dependencies = [
+ "toml 0.5.11",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35"
+dependencies = [
+ "toml_edit",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.94"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "qstring"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1f1914ce909e1658d9907913b4b91947430c7d9be598b15a1912935b8c04801"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+dependencies = [
+ "getrandom 0.1.16",
+ "libc",
+ "rand_chacha 0.2.2",
+ "rand_core 0.5.1",
+ "rand_hc",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+dependencies = [
+ "getrandom 0.1.16",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom 0.2.15",
+]
+
+[[package]]
+name = "rand_hc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+dependencies = [
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "regex"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
+
+[[package]]
+name = "ryu"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "semver"
+version = "1.0.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
+
+[[package]]
+name = "serde"
+version = "1.0.218"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_bytes"
+version = "0.11.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "364fec0df39c49a083c9a8a18a23a6bcfd9af130fe9fe321d18520a0d113e09e"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.218"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.140"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "sha2"
+version = "0.9.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
+dependencies = [
+ "block-buffer 0.9.0",
+ "cfg-if",
+ "cpufeatures",
+ "digest 0.9.0",
+ "opaque-debug",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest 0.10.7",
+]
+
+[[package]]
+name = "sha3"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60"
+dependencies = [
+ "digest 0.10.7",
+ "keccak",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "smallvec"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
+
+[[package]]
+name = "solana-account"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258"
+dependencies = [
+ "solana-account-info",
+ "solana-clock",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sdk-ids",
+]
+
+[[package]]
+name = "solana-account-info"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0c17d606a298a205fae325489fbed88ee6dc4463c111672172327e741c8905d"
+dependencies = [
+ "bincode",
+ "serde",
+ "solana-program-error",
+ "solana-program-memory",
+ "solana-pubkey",
+]
+
+[[package]]
+name = "solana-address-lookup-table-interface"
+version = "2.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1673f67efe870b64a65cb39e6194be5b26527691ce5922909939961a6e6b395"
+dependencies = [
+ "bincode",
+ "bytemuck",
+ "serde",
+ "serde_derive",
+ "solana-clock",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sdk-ids",
+ "solana-slot-hashes",
+]
+
+[[package]]
+name = "solana-atomic-u64"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d52e52720efe60465b052b9e7445a01c17550666beec855cce66f44766697bc2"
+dependencies = [
+ "parking_lot",
+]
+
+[[package]]
+name = "solana-big-mod-exp"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567"
+dependencies = [
+ "num-bigint",
+ "num-traits",
+ "solana-define-syscall",
+]
+
+[[package]]
+name = "solana-bincode"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc"
+dependencies = [
+ "bincode",
+ "serde",
+ "solana-instruction",
+]
+
+[[package]]
+name = "solana-blake3-hasher"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672"
+dependencies = [
+ "blake3",
+ "solana-define-syscall",
+ "solana-hash",
+ "solana-sanitize",
+]
+
+[[package]]
+name = "solana-borsh"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "718333bcd0a1a7aed6655aa66bef8d7fb047944922b2d3a18f49cbc13e73d004"
+dependencies = [
+ "borsh 0.10.4",
+ "borsh 1.5.5",
+]
+
+[[package]]
+name = "solana-clock"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67c2177a1b9fe8326004f1151a5acd124420b737811080b1035df31349e4d892"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-cpi"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11"
+dependencies = [
+ "solana-account-info",
+ "solana-define-syscall",
+ "solana-instruction",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-stable-layout",
+]
+
+[[package]]
+name = "solana-curve25519"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f213e3a853a23814dee39d730cd3a5583b7b1e6b37b2cd4d940bbe62df7acc16"
+dependencies = [
+ "bytemuck",
+ "bytemuck_derive",
+ "curve25519-dalek",
+ "solana-define-syscall",
+ "subtle",
+ "thiserror 2.0.12",
+]
+
+[[package]]
+name = "solana-decode-error"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10a6a6383af236708048f8bd8d03db8ca4ff7baf4a48e5d580f4cce545925470"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "solana-define-syscall"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf784bb2cb3e02cac9801813c30187344228d2ae952534902108f6150573a33d"
+
+[[package]]
+name = "solana-derivation-path"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "939756d798b25c5ec3cca10e06212bdca3b1443cb9bb740a38124f58b258737b"
+dependencies = [
+ "derivation-path",
+ "qstring",
+ "uriparse",
+]
+
+[[package]]
+name = "solana-epoch-rewards"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-hash",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-epoch-schedule"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-example-mocks"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84461d56cbb8bb8d539347151e0525b53910102e4bced875d49d5139708e39d3"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-address-lookup-table-interface",
+ "solana-clock",
+ "solana-hash",
+ "solana-instruction",
+ "solana-keccak-hasher",
+ "solana-message",
+ "solana-nonce",
+ "solana-pubkey",
+ "solana-sdk-ids",
+ "solana-system-interface",
+ "thiserror 2.0.12",
+]
+
+[[package]]
+name = "solana-feature-gate-interface"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f9c7fbf3e58b64a667c5f35e90af580538a95daea7001ff7806c0662d301bdf"
+dependencies = [
+ "bincode",
+ "serde",
+ "serde_derive",
+ "solana-account",
+ "solana-account-info",
+ "solana-instruction",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-rent",
+ "solana-sdk-ids",
+ "solana-system-interface",
+]
+
+[[package]]
+name = "solana-fee-calculator"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d89bc408da0fb3812bc3008189d148b4d3e08252c79ad810b245482a3f70cd8d"
+dependencies = [
+ "log",
+ "serde",
+ "serde_derive",
+]
+
+[[package]]
+name = "solana-hash"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf7bcb14392900fe02e4e34e90234fbf0c673d4e327888410ba99fa2ba0f4e99"
+dependencies = [
+ "borsh 1.5.5",
+ "bs58",
+ "bytemuck",
+ "bytemuck_derive",
+ "js-sys",
+ "serde",
+ "serde_derive",
+ "solana-atomic-u64",
+ "solana-sanitize",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-instruction"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce496a475e5062ba5de97215ab39d9c358f9c9df4bb7f3a45a1f1a8bd9065ed"
+dependencies = [
+ "bincode",
+ "borsh 1.5.5",
+ "getrandom 0.2.15",
+ "js-sys",
+ "num-traits",
+ "serde",
+ "serde_derive",
+ "solana-define-syscall",
+ "solana-pubkey",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-instructions-sysvar"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "427f2d0d6dc0bb49f16cef5e7f975180d2e80aab9bdd3b2af68e2d029ec63f43"
+dependencies = [
+ "bitflags",
+ "solana-account-info",
+ "solana-instruction",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-sanitize",
+ "solana-sdk-ids",
+ "solana-serialize-utils",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-keccak-hasher"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79"
+dependencies = [
+ "sha3",
+ "solana-define-syscall",
+ "solana-hash",
+ "solana-sanitize",
+]
+
+[[package]]
+name = "solana-last-restart-slot"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-loader-v2-interface"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8ab08006dad78ae7cd30df8eea0539e207d08d91eaefb3e1d49a446e1c49654"
+dependencies = [
+ "serde",
+ "serde_bytes",
+ "serde_derive",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sdk-ids",
+]
+
+[[package]]
+name = "solana-loader-v3-interface"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4be76cfa9afd84ca2f35ebc09f0da0f0092935ccdac0595d98447f259538c2"
+dependencies = [
+ "serde",
+ "serde_bytes",
+ "serde_derive",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sdk-ids",
+ "solana-system-interface",
+]
+
+[[package]]
+name = "solana-loader-v4-interface"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e"
+dependencies = [
+ "serde",
+ "serde_bytes",
+ "serde_derive",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sdk-ids",
+ "solana-system-interface",
+]
+
+[[package]]
+name = "solana-message"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "268486ba8a294ed22a4d7c1ec05f540c3dbe71cfa7c6c54b6d4d13668d895678"
+dependencies = [
+ "bincode",
+ "blake3",
+ "lazy_static",
+ "serde",
+ "serde_derive",
+ "solana-bincode",
+ "solana-hash",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sanitize",
+ "solana-sdk-ids",
+ "solana-short-vec",
+ "solana-system-interface",
+ "solana-transaction-error",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-msg"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092"
+dependencies = [
+ "solana-define-syscall",
+]
+
+[[package]]
+name = "solana-native-token"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33e9de00960197412e4be3902a6cd35e60817c511137aca6c34c66cd5d4017ec"
+
+[[package]]
+name = "solana-nonce"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-fee-calculator",
+ "solana-hash",
+ "solana-pubkey",
+ "solana-sha256-hasher",
+]
+
+[[package]]
+name = "solana-program"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "586469467e93ceb79048f8d8e3a619bf61d05396ee7de95cb40280301a589d05"
+dependencies = [
+ "bincode",
+ "blake3",
+ "borsh 0.10.4",
+ "borsh 1.5.5",
+ "bs58",
+ "bytemuck",
+ "console_error_panic_hook",
+ "console_log",
+ "getrandom 0.2.15",
+ "lazy_static",
+ "log",
+ "memoffset",
+ "num-bigint",
+ "num-derive",
+ "num-traits",
+ "rand 0.8.5",
+ "serde",
+ "serde_bytes",
+ "serde_derive",
+ "solana-account-info",
+ "solana-address-lookup-table-interface",
+ "solana-atomic-u64",
+ "solana-big-mod-exp",
+ "solana-bincode",
+ "solana-blake3-hasher",
+ "solana-borsh",
+ "solana-clock",
+ "solana-cpi",
+ "solana-decode-error",
+ "solana-define-syscall",
+ "solana-epoch-rewards",
+ "solana-epoch-schedule",
+ "solana-example-mocks",
+ "solana-feature-gate-interface",
+ "solana-fee-calculator",
+ "solana-hash",
+ "solana-instruction",
+ "solana-instructions-sysvar",
+ "solana-keccak-hasher",
+ "solana-last-restart-slot",
+ "solana-loader-v2-interface",
+ "solana-loader-v3-interface",
+ "solana-loader-v4-interface",
+ "solana-message",
+ "solana-msg",
+ "solana-native-token",
+ "solana-nonce",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-program-memory",
+ "solana-program-option",
+ "solana-program-pack",
+ "solana-pubkey",
+ "solana-rent",
+ "solana-sanitize",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-secp256k1-recover",
+ "solana-serde-varint",
+ "solana-serialize-utils",
+ "solana-sha256-hasher",
+ "solana-short-vec",
+ "solana-slot-hashes",
+ "solana-slot-history",
+ "solana-stable-layout",
+ "solana-stake-interface",
+ "solana-system-interface",
+ "solana-sysvar",
+ "solana-sysvar-id",
+ "solana-vote-interface",
+ "thiserror 2.0.12",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-program-entrypoint"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "473ffe73c68d93e9f2aa726ad2985fe52760052709aaab188100a42c618060ec"
+dependencies = [
+ "solana-account-info",
+ "solana-msg",
+ "solana-program-error",
+ "solana-pubkey",
+]
+
+[[package]]
+name = "solana-program-error"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8ae2c1a8d0d4ae865882d5770a7ebca92bab9c685e43f0461682c6c05a35bfa"
+dependencies = [
+ "borsh 1.5.5",
+ "num-traits",
+ "serde",
+ "serde_derive",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-msg",
+ "solana-pubkey",
+]
+
+[[package]]
+name = "solana-program-memory"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b0268f6c89825fb634a34bd0c3b8fdaeaecfc3728be1d622a8ee6dd577b60d4"
+dependencies = [
+ "num-traits",
+ "solana-define-syscall",
+]
+
+[[package]]
+name = "solana-program-option"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0"
+
+[[package]]
+name = "solana-program-pack"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "319f0ef15e6e12dc37c597faccb7d62525a509fec5f6975ecb9419efddeb277b"
+dependencies = [
+ "solana-program-error",
+]
+
+[[package]]
+name = "solana-pubkey"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "40db1ff5a0f8aea2c158d78ab5f2cf897848964251d1df42fef78efd3c85b863"
+dependencies = [
+ "borsh 0.10.4",
+ "borsh 1.5.5",
+ "bs58",
+ "bytemuck",
+ "bytemuck_derive",
+ "curve25519-dalek",
+ "five8_const",
+ "getrandom 0.2.15",
+ "js-sys",
+ "num-traits",
+ "serde",
+ "serde_derive",
+ "solana-atomic-u64",
+ "solana-decode-error",
+ "solana-define-syscall",
+ "solana-sanitize",
+ "solana-sha256-hasher",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-rent"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-sanitize"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf"
+
+[[package]]
+name = "solana-sdk-ids"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f"
+dependencies = [
+ "solana-pubkey",
+]
+
+[[package]]
+name = "solana-sdk-macro"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86280da8b99d03560f6ab5aca9de2e38805681df34e0bb8f238e69b29433b9df"
+dependencies = [
+ "bs58",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
+[[package]]
+name = "solana-secp256k1-recover"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496"
+dependencies = [
+ "libsecp256k1",
+ "solana-define-syscall",
+ "thiserror 2.0.12",
+]
+
+[[package]]
+name = "solana-security-txt"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183"
+
+[[package]]
+name = "solana-seed-derivable"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3beb82b5adb266c6ea90e5cf3967235644848eac476c5a1f2f9283a143b7c97f"
+dependencies = [
+ "solana-derivation-path",
+]
+
+[[package]]
+name = "solana-seed-phrase"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36187af2324f079f65a675ec22b31c24919cb4ac22c79472e85d819db9bbbc15"
+dependencies = [
+ "hmac",
+ "pbkdf2",
+ "sha2 0.10.8",
+]
+
+[[package]]
+name = "solana-serde-varint"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcc07d00200d82e6def2f7f7a45738e3406b17fe54a18adcf0defa16a97ccadb"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "solana-serialize-utils"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "817a284b63197d2b27afdba829c5ab34231da4a9b4e763466a003c40ca4f535e"
+dependencies = [
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sanitize",
+]
+
+[[package]]
+name = "solana-sha256-hasher"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0037386961c0d633421f53560ad7c80675c0447cba4d1bb66d60974dd486c7ea"
+dependencies = [
+ "sha2 0.10.8",
+ "solana-define-syscall",
+ "solana-hash",
+]
+
+[[package]]
+name = "solana-short-vec"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c54c66f19b9766a56fa0057d060de8378676cb64987533fa088861858fc5a69"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "solana-signature"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47d251c8f3dc015f320b4161daac7f108156c837428e5a8cc61136d25beb11d6"
+dependencies = [
+ "bs58",
+ "solana-sanitize",
+]
+
+[[package]]
+name = "solana-signer"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b"
+dependencies = [
+ "solana-pubkey",
+ "solana-signature",
+ "solana-transaction-error",
+]
+
+[[package]]
+name = "solana-slot-hashes"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-hash",
+ "solana-sdk-ids",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-slot-history"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e"
+dependencies = [
+ "bv",
+ "serde",
+ "serde_derive",
+ "solana-sdk-ids",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-stable-layout"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54"
+dependencies = [
+ "solana-instruction",
+ "solana-pubkey",
+]
+
+[[package]]
+name = "solana-stake-interface"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5269e89fde216b4d7e1d1739cf5303f8398a1ff372a81232abbee80e554a838c"
+dependencies = [
+ "borsh 0.10.4",
+ "borsh 1.5.5",
+ "num-traits",
+ "serde",
+ "serde_derive",
+ "solana-clock",
+ "solana-cpi",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-system-interface",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-system-interface"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94d7c18cb1a91c6be5f5a8ac9276a1d7c737e39a21beba9ea710ab4b9c63bc90"
+dependencies = [
+ "js-sys",
+ "num-traits",
+ "serde",
+ "serde_derive",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-pubkey",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-sysvar"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf6b44740d7f0c9f375d045c165bc0aab4a90658f92d6835aeb0649afaeaff9a"
+dependencies = [
+ "base64 0.22.1",
+ "bincode",
+ "bytemuck",
+ "bytemuck_derive",
+ "lazy_static",
+ "serde",
+ "serde_derive",
+ "solana-account-info",
+ "solana-clock",
+ "solana-define-syscall",
+ "solana-epoch-rewards",
+ "solana-epoch-schedule",
+ "solana-fee-calculator",
+ "solana-hash",
+ "solana-instruction",
+ "solana-instructions-sysvar",
+ "solana-last-restart-slot",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-program-memory",
+ "solana-pubkey",
+ "solana-rent",
+ "solana-sanitize",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-slot-hashes",
+ "solana-slot-history",
+ "solana-stake-interface",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-sysvar-id"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1"
+dependencies = [
+ "solana-pubkey",
+ "solana-sdk-ids",
+]
+
+[[package]]
+name = "solana-transaction-error"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1"
+dependencies = [
+ "solana-instruction",
+ "solana-sanitize",
+]
+
+[[package]]
+name = "solana-vote-interface"
+version = "2.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1e9f6a1651310a94cd5a1a6b7f33ade01d9e5ea38a2220becb5fd737b756514"
+dependencies = [
+ "bincode",
+ "num-derive",
+ "num-traits",
+ "serde",
+ "serde_derive",
+ "solana-clock",
+ "solana-decode-error",
+ "solana-hash",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-rent",
+ "solana-sdk-ids",
+ "solana-serde-varint",
+ "solana-serialize-utils",
+ "solana-short-vec",
+ "solana-system-interface",
+]
+
+[[package]]
+name = "solana-zk-sdk"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8318220b73552a2765c6545a4be04fc87fe21b6dd0cb8c2b545a66121bf5b8a"
+dependencies = [
+ "aes-gcm-siv",
+ "base64 0.22.1",
+ "bincode",
+ "bytemuck",
+ "bytemuck_derive",
+ "curve25519-dalek",
+ "itertools",
+ "js-sys",
+ "lazy_static",
+ "merlin",
+ "num-derive",
+ "num-traits",
+ "rand 0.8.5",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "sha3",
+ "solana-derivation-path",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sdk-ids",
+ "solana-seed-derivable",
+ "solana-seed-phrase",
+ "solana-signature",
+ "solana-signer",
+ "subtle",
+ "thiserror 2.0.12",
+ "wasm-bindgen",
+ "zeroize",
+]
+
+[[package]]
+name = "spl-associated-token-account"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76fee7d65013667032d499adc3c895e286197a35a0d3a4643c80e7fd3e9969e3"
+dependencies = [
+ "borsh 1.5.5",
+ "num-derive",
+ "num-traits",
+ "solana-program",
+ "spl-associated-token-account-client",
+ "spl-token",
+ "spl-token-2022",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-associated-token-account-client"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6f8349dbcbe575f354f9a533a21f272f3eb3808a49e2fdc1c34393b88ba76cb"
+dependencies = [
+ "solana-instruction",
+ "solana-pubkey",
+]
+
+[[package]]
+name = "spl-discriminator"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7398da23554a31660f17718164e31d31900956054f54f52d5ec1be51cb4f4b3"
+dependencies = [
+ "bytemuck",
+ "solana-program-error",
+ "solana-sha256-hasher",
+ "spl-discriminator-derive",
+]
+
+[[package]]
+name = "spl-discriminator-derive"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750"
+dependencies = [
+ "quote",
+ "spl-discriminator-syn",
+ "syn 2.0.99",
+]
+
+[[package]]
+name = "spl-discriminator-syn"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c1f05593b7ca9eac7caca309720f2eafb96355e037e6d373b909a80fe7b69b9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "sha2 0.10.8",
+ "syn 2.0.99",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-elgamal-registry"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce0f668975d2b0536e8a8fd60e56a05c467f06021dae037f1d0cfed0de2e231d"
+dependencies = [
+ "bytemuck",
+ "solana-program",
+ "solana-zk-sdk",
+ "spl-pod",
+ "spl-token-confidential-transfer-proof-extraction",
+]
+
+[[package]]
+name = "spl-memo"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f09647c0974e33366efeb83b8e2daebb329f0420149e74d3a4bd2c08cf9f7cb"
+dependencies = [
+ "solana-account-info",
+ "solana-instruction",
+ "solana-msg",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
+]
+
+[[package]]
+name = "spl-pod"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d994afaf86b779104b4a95ba9ca75b8ced3fdb17ee934e38cb69e72afbe17799"
+dependencies = [
+ "borsh 1.5.5",
+ "bytemuck",
+ "bytemuck_derive",
+ "num-derive",
+ "num-traits",
+ "solana-decode-error",
+ "solana-msg",
+ "solana-program-error",
+ "solana-program-option",
+ "solana-pubkey",
+ "solana-zk-sdk",
+ "thiserror 2.0.12",
+]
+
+[[package]]
+name = "spl-program-error"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d39b5186f42b2b50168029d81e58e800b690877ef0b30580d107659250da1d1"
+dependencies = [
+ "num-derive",
+ "num-traits",
+ "solana-program",
+ "spl-program-error-derive",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-program-error-derive"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "sha2 0.10.8",
+ "syn 2.0.99",
+]
+
+[[package]]
+name = "spl-tlv-account-resolution"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd99ff1e9ed2ab86e3fd582850d47a739fec1be9f4661cba1782d3a0f26805f3"
+dependencies = [
+ "bytemuck",
+ "num-derive",
+ "num-traits",
+ "solana-account-info",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-msg",
+ "solana-program-error",
+ "solana-pubkey",
+ "spl-discriminator",
+ "spl-pod",
+ "spl-program-error",
+ "spl-type-length-value",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-token"
+version = "7.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed320a6c934128d4f7e54fe00e16b8aeaecf215799d060ae14f93378da6dc834"
+dependencies = [
+ "arrayref",
+ "bytemuck",
+ "num-derive",
+ "num-traits",
+ "num_enum",
+ "solana-program",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-token-2022"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b27f7405010ef816587c944536b0eafbcc35206ab6ba0f2ca79f1d28e488f4f"
+dependencies = [
+ "arrayref",
+ "bytemuck",
+ "num-derive",
+ "num-traits",
+ "num_enum",
+ "solana-program",
+ "solana-security-txt",
+ "solana-zk-sdk",
+ "spl-elgamal-registry",
+ "spl-memo",
+ "spl-pod",
+ "spl-token",
+ "spl-token-confidential-transfer-ciphertext-arithmetic",
+ "spl-token-confidential-transfer-proof-extraction",
+ "spl-token-confidential-transfer-proof-generation",
+ "spl-token-group-interface",
+ "spl-token-metadata-interface",
+ "spl-transfer-hook-interface",
+ "spl-type-length-value",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-token-confidential-transfer-ciphertext-arithmetic"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "170378693c5516090f6d37ae9bad2b9b6125069be68d9acd4865bbe9fc8499fd"
+dependencies = [
+ "base64 0.22.1",
+ "bytemuck",
+ "solana-curve25519",
+ "solana-zk-sdk",
+]
+
+[[package]]
+name = "spl-token-confidential-transfer-proof-extraction"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eff2d6a445a147c9d6dd77b8301b1e116c8299601794b558eafa409b342faf96"
+dependencies = [
+ "bytemuck",
+ "solana-curve25519",
+ "solana-program",
+ "solana-zk-sdk",
+ "spl-pod",
+ "thiserror 2.0.12",
+]
+
+[[package]]
+name = "spl-token-confidential-transfer-proof-generation"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8627184782eec1894de8ea26129c61303f1f0adeed65c20e0b10bc584f09356d"
+dependencies = [
+ "curve25519-dalek",
+ "solana-zk-sdk",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-token-group-interface"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d595667ed72dbfed8c251708f406d7c2814a3fa6879893b323d56a10bedfc799"
+dependencies = [
+ "bytemuck",
+ "num-derive",
+ "num-traits",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-msg",
+ "solana-program-error",
+ "solana-pubkey",
+ "spl-discriminator",
+ "spl-pod",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-token-metadata-interface"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfb9c89dbc877abd735f05547dcf9e6e12c00c11d6d74d8817506cab4c99fdbb"
+dependencies = [
+ "borsh 1.5.5",
+ "num-derive",
+ "num-traits",
+ "solana-borsh",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-msg",
+ "solana-program-error",
+ "solana-pubkey",
+ "spl-discriminator",
+ "spl-pod",
+ "spl-type-length-value",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-transfer-hook-interface"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4aa7503d52107c33c88e845e1351565050362c2314036ddf19a36cd25137c043"
+dependencies = [
+ "arrayref",
+ "bytemuck",
+ "num-derive",
+ "num-traits",
+ "solana-account-info",
+ "solana-cpi",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-msg",
+ "solana-program-error",
+ "solana-pubkey",
+ "spl-discriminator",
+ "spl-pod",
+ "spl-program-error",
+ "spl-tlv-account-resolution",
+ "spl-type-length-value",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-type-length-value"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba70ef09b13af616a4c987797870122863cba03acc4284f226a4473b043923f9"
+dependencies = [
+ "bytemuck",
+ "num-derive",
+ "num-traits",
+ "solana-account-info",
+ "solana-decode-error",
+ "solana-msg",
+ "solana-program-error",
+ "spl-discriminator",
+ "spl-pod",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "subtle"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.99"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e02e925281e18ffd9d640e234264753c43edc62d64b2d4cf898f1bc5e75f3fc2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
+dependencies = [
+ "thiserror-impl 1.0.69",
+]
+
+[[package]]
+name = "thiserror"
+version = "2.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
+dependencies = [
+ "thiserror-impl 2.0.12",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "2.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "toml"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "typenum"
+version = "1.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
+
+[[package]]
+name = "universal-hash"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"
+dependencies = [
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "uriparse"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff"
+dependencies = [
+ "fnv",
+ "lazy_static",
+]
+
+[[package]]
+name = "version_check"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "wasi"
+version = "0.9.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
+dependencies = [
+ "bumpalo",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "winnow"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "byteorder",
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
+dependencies = [
+ "zeroize_derive",
+]
+
+[[package]]
+name = "zeroize_derive"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]

+ 1 - 1
tests/bench/package.json

@@ -1,6 +1,6 @@
 {
   "name": "bench",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/cashiers-check/package.json

@@ -1,6 +1,6 @@
 {
   "name": "cashiers-check",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/cfo/package.json

@@ -1,6 +1,6 @@
 {
   "name": "cfo",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/chat/package.json

@@ -1,6 +1,6 @@
 {
   "name": "chat",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/composite/package.json

@@ -1,6 +1,6 @@
 {
   "name": "composite",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/cpi-returns/package.json

@@ -1,6 +1,6 @@
 {
   "name": "cpi-returns",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/custom-coder/package.json

@@ -1,6 +1,6 @@
 {
   "name": "custom-coder",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/custom-discriminator/package.json

@@ -1,6 +1,6 @@
 {
   "name": "custom-discriminator",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/declare-id/package.json

@@ -1,6 +1,6 @@
 {
   "name": "declare-id",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/declare-program/package.json

@@ -1,6 +1,6 @@
 {
   "name": "declare-program",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/errors/package.json

@@ -1,6 +1,6 @@
 {
   "name": "errors",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/escrow/package.json

@@ -1,6 +1,6 @@
 {
   "name": "escrow",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/events/package.json

@@ -1,6 +1,6 @@
 {
   "name": "events",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/floats/package.json

@@ -1,6 +1,6 @@
 {
   "name": "floats",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/idl/package.json

@@ -1,6 +1,6 @@
 {
   "name": "idl",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/ido-pool/package.json

@@ -1,6 +1,6 @@
 {
   "name": "ido-pool",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/lazy-account/package.json

@@ -1,6 +1,6 @@
 {
   "name": "lazy-account",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/lockup/package.json

@@ -1,6 +1,6 @@
 {
   "name": "lockup",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/misc/package.json

@@ -1,6 +1,6 @@
 {
   "name": "misc",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/multiple-suites/package.json

@@ -1,6 +1,6 @@
 {
   "name": "multiple-suites",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/multisig/package.json

@@ -1,6 +1,6 @@
 {
   "name": "multisig",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/optional/package.json

@@ -1,6 +1,6 @@
 {
   "name": "optional",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/pda-derivation/package.json

@@ -1,6 +1,6 @@
 {
   "name": "pda-derivation",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/pyth/package.json

@@ -1,6 +1,6 @@
 {
   "name": "pyth",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/realloc/package.json

@@ -1,6 +1,6 @@
 {
   "name": "realloc",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/relations-derivation/package.json

@@ -1,6 +1,6 @@
 {
   "name": "relations-derivation",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/solang/package.json

@@ -1,6 +1,6 @@
 {
   "name": "solang",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/spl/metadata/package.json

@@ -1,6 +1,6 @@
 {
   "name": "metadata",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/spl/token-extensions/package.json

@@ -1,6 +1,6 @@
 {
   "name": "token-extensions",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/spl/token-proxy/package.json

@@ -1,6 +1,6 @@
 {
   "name": "token-proxy",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/spl/token-wrapper/package.json

@@ -1,6 +1,6 @@
 {
   "name": "token-wrapper",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/spl/transfer-hook/package.json

@@ -1,6 +1,6 @@
 {
   "name": "transfer-hook",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/swap/package.json

@@ -1,6 +1,6 @@
 {
   "name": "swap",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/system-accounts/package.json

@@ -1,6 +1,6 @@
 {
   "name": "system-accounts",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/sysvars/package.json

@@ -1,6 +1,6 @@
 {
   "name": "sysvars",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/tictactoe/package.json

@@ -1,6 +1,6 @@
 {
   "name": "tictactoe",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/typescript/package.json

@@ -1,6 +1,6 @@
 {
   "name": "typescript-example",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/validator-clone/package.json

@@ -1,6 +1,6 @@
 {
   "name": "validator-clone",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
tests/zero-copy/package.json

@@ -1,6 +1,6 @@
 {
   "name": "zero-copy",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "license": "(MIT OR Apache-2.0)",
   "homepage": "https://github.com/coral-xyz/anchor#readme",
   "bugs": {

+ 1 - 1
ts/packages/anchor-errors/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@coral-xyz/anchor-errors",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "description": "Anchor error codes",
   "main": "dist/index.js",
   "types": "dist/index.d.ts",

+ 3 - 3
ts/packages/anchor/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@coral-xyz/anchor",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "description": "Anchor client",
   "module": "./dist/esm/index.js",
   "main": "./dist/cjs/index.js",
@@ -33,8 +33,8 @@
     "test": "jest tests --detectOpenHandles"
   },
   "dependencies": {
-    "@coral-xyz/anchor-errors": "^0.30.1",
-    "@coral-xyz/borsh": "^0.30.1",
+    "@coral-xyz/anchor-errors": "^0.31.0",
+    "@coral-xyz/borsh": "^0.31.0",
     "@noble/hashes": "^1.3.1",
     "@solana/web3.js": "^1.69.0",
     "bn.js": "^5.1.2",

+ 1 - 1
ts/packages/borsh/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@coral-xyz/borsh",
-  "version": "0.30.1",
+  "version": "0.31.0",
   "description": "Anchor Borsh",
   "main": "dist/index.js",
   "types": "dist/index.d.ts",

+ 1 - 1
ts/packages/spl-associated-token-account/package.json

@@ -27,7 +27,7 @@
     "watch": "tsc -p tsconfig.cjs.json --watch"
   },
   "dependencies": {
-    "@coral-xyz/anchor": "=0.30.1",
+    "@coral-xyz/anchor": "=0.31.0",
     "@native-to-anchor/buffer-layout": "=0.1.0"
   },
   "devDependencies": {

+ 1 - 1
ts/packages/spl-binary-option/package.json

@@ -27,7 +27,7 @@
     "watch": "tsc -p tsconfig.cjs.json --watch"
   },
   "dependencies": {
-    "@coral-xyz/anchor": "=0.30.1",
+    "@coral-xyz/anchor": "=0.31.0",
     "@native-to-anchor/buffer-layout": "=0.1.0"
   },
   "devDependencies": {

+ 1 - 1
ts/packages/spl-binary-oracle-pair/package.json

@@ -27,7 +27,7 @@
     "watch": "tsc -p tsconfig.cjs.json --watch"
   },
   "dependencies": {
-    "@coral-xyz/anchor": "=0.30.1",
+    "@coral-xyz/anchor": "=0.31.0",
     "@native-to-anchor/buffer-layout": "=0.1.0"
   },
   "devDependencies": {

+ 1 - 1
ts/packages/spl-feature-proposal/package.json

@@ -27,7 +27,7 @@
     "watch": "tsc -p tsconfig.cjs.json --watch"
   },
   "dependencies": {
-    "@coral-xyz/anchor": "=0.30.1",
+    "@coral-xyz/anchor": "=0.31.0",
     "@native-to-anchor/buffer-layout": "=0.1.0"
   },
   "devDependencies": {

+ 1 - 1
ts/packages/spl-governance/package.json

@@ -27,7 +27,7 @@
     "watch": "tsc -p tsconfig.cjs.json --watch"
   },
   "dependencies": {
-    "@coral-xyz/anchor": "=0.30.1",
+    "@coral-xyz/anchor": "=0.31.0",
     "@native-to-anchor/buffer-layout": "=0.1.0"
   },
   "devDependencies": {

+ 1 - 1
ts/packages/spl-memo/package.json

@@ -27,7 +27,7 @@
     "watch": "tsc -p tsconfig.cjs.json --watch"
   },
   "dependencies": {
-    "@coral-xyz/anchor": "=0.30.1"
+    "@coral-xyz/anchor": "=0.31.0"
   },
   "devDependencies": {
     "@rollup/plugin-commonjs": "=21.0.2",

+ 1 - 1
ts/packages/spl-name-service/package.json

@@ -27,7 +27,7 @@
     "watch": "tsc -p tsconfig.cjs.json --watch"
   },
   "dependencies": {
-    "@coral-xyz/anchor": "=0.30.1",
+    "@coral-xyz/anchor": "=0.31.0",
     "@native-to-anchor/buffer-layout": "=0.1.0"
   },
   "devDependencies": {

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio