From f90855ee98ca820fa8a89c7ba7974a3e2436b0c4 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Wed, 21 Jan 2026 23:13:42 +0000 Subject: [PATCH 01/23] feat: add anchor program examples for compressed tokens --- program-examples/anchor/Anchor.toml | 36 + program-examples/anchor/Cargo.lock | 8950 +++++++++++++++++ program-examples/anchor/Cargo.toml | 45 + program-examples/anchor/README.md | 63 + .../anchor/programs/approve/Cargo.toml | 31 + .../anchor/programs/approve/src/lib.rs | 36 + .../anchor/programs/approve/tests/test.rs | 125 + .../anchor/programs/burn/Cargo.toml | 31 + .../anchor/programs/burn/src/lib.rs | 36 + .../anchor/programs/burn/tests/test.rs | 117 + .../anchor/programs/close/Cargo.toml | 31 + .../anchor/programs/close/src/lib.rs | 39 + .../anchor/programs/close/tests/test.rs | 104 + .../anchor/programs/create-ata/Cargo.toml | 31 + .../anchor/programs/create-ata/src/lib.rs | 58 + .../anchor/programs/create-ata/tests/test.rs | 106 + .../anchor/programs/create-mint/Cargo.toml | 31 + .../anchor/programs/create-mint/src/lib.rs | 102 + .../anchor/programs/create-mint/tests/test.rs | 95 + .../programs/create-token-account/Cargo.toml | 31 + .../create-token-account/keypair.json | 1 + .../programs/create-token-account/src/lib.rs | 47 + .../anchor/programs/freeze/Cargo.toml | 31 + .../anchor/programs/freeze/src/lib.rs | 33 + .../anchor/programs/freeze/tests/test.rs | 117 + .../anchor/programs/mint-to/Cargo.toml | 31 + .../anchor/programs/mint-to/src/lib.rs | 38 + .../anchor/programs/mint-to/tests/test.rs | 103 + .../anchor/programs/revoke/Cargo.toml | 31 + .../anchor/programs/revoke/src/lib.rs | 32 + .../anchor/programs/revoke/tests/test.rs | 132 + .../anchor/programs/thaw/Cargo.toml | 31 + .../anchor/programs/thaw/src/lib.rs | 33 + .../anchor/programs/thaw/tests/test.rs | 130 + .../programs/transfer-interface/Cargo.toml | 32 + .../programs/transfer-interface/src/lib.rs | 44 + .../programs/transfer-interface/tests/test.rs | 146 + program-examples/anchor/rust-toolchain.toml | 3 + 38 files changed, 11113 insertions(+) create mode 100644 program-examples/anchor/Anchor.toml create mode 100644 program-examples/anchor/Cargo.lock create mode 100644 program-examples/anchor/Cargo.toml create mode 100644 program-examples/anchor/README.md create mode 100644 program-examples/anchor/programs/approve/Cargo.toml create mode 100644 program-examples/anchor/programs/approve/src/lib.rs create mode 100644 program-examples/anchor/programs/approve/tests/test.rs create mode 100644 program-examples/anchor/programs/burn/Cargo.toml create mode 100644 program-examples/anchor/programs/burn/src/lib.rs create mode 100644 program-examples/anchor/programs/burn/tests/test.rs create mode 100644 program-examples/anchor/programs/close/Cargo.toml create mode 100644 program-examples/anchor/programs/close/src/lib.rs create mode 100644 program-examples/anchor/programs/close/tests/test.rs create mode 100644 program-examples/anchor/programs/create-ata/Cargo.toml create mode 100644 program-examples/anchor/programs/create-ata/src/lib.rs create mode 100644 program-examples/anchor/programs/create-ata/tests/test.rs create mode 100644 program-examples/anchor/programs/create-mint/Cargo.toml create mode 100644 program-examples/anchor/programs/create-mint/src/lib.rs create mode 100644 program-examples/anchor/programs/create-mint/tests/test.rs create mode 100644 program-examples/anchor/programs/create-token-account/Cargo.toml create mode 100644 program-examples/anchor/programs/create-token-account/keypair.json create mode 100644 program-examples/anchor/programs/create-token-account/src/lib.rs create mode 100644 program-examples/anchor/programs/freeze/Cargo.toml create mode 100644 program-examples/anchor/programs/freeze/src/lib.rs create mode 100644 program-examples/anchor/programs/freeze/tests/test.rs create mode 100644 program-examples/anchor/programs/mint-to/Cargo.toml create mode 100644 program-examples/anchor/programs/mint-to/src/lib.rs create mode 100644 program-examples/anchor/programs/mint-to/tests/test.rs create mode 100644 program-examples/anchor/programs/revoke/Cargo.toml create mode 100644 program-examples/anchor/programs/revoke/src/lib.rs create mode 100644 program-examples/anchor/programs/revoke/tests/test.rs create mode 100644 program-examples/anchor/programs/thaw/Cargo.toml create mode 100644 program-examples/anchor/programs/thaw/src/lib.rs create mode 100644 program-examples/anchor/programs/thaw/tests/test.rs create mode 100644 program-examples/anchor/programs/transfer-interface/Cargo.toml create mode 100644 program-examples/anchor/programs/transfer-interface/src/lib.rs create mode 100644 program-examples/anchor/programs/transfer-interface/tests/test.rs create mode 100644 program-examples/anchor/rust-toolchain.toml diff --git a/program-examples/anchor/Anchor.toml b/program-examples/anchor/Anchor.toml new file mode 100644 index 0000000..089095b --- /dev/null +++ b/program-examples/anchor/Anchor.toml @@ -0,0 +1,36 @@ +[features] +seeds = false +skip-lint = false + +[programs.localnet] +light_token_anchor_create_ata = "77bt3j6A3g9s1WtwYnRFTGP9y8H1nigW7mLtywGKPmMi" +light_token_anchor_create_mint = "Ev7tKaozVxbZLVGcKcVcz8A9yKZjUf5ATqoNSe5BDkjj" +light_token_anchor_create_token_account = "CTAiNDz2wJrB67HuJYYfooHG1gN3nXnZVfm3QhPgi2Vi" +light_token_anchor_mint_to = "7SUgjNZYC1h89MuPVYkgEP5A4uYx5GFSjC7mzqMbN8U2" +light_token_anchor_transfer_interface = "ChkDqFsvNNT5CGrV2YCkmK4DiVSATnXc98mNozPbhC6u" +light_token_anchor_close = "4fi27siKEvKXJYN5WCzWuHdAw1rLed6Tprv9ZARv3Gxu" +light_token_anchor_approve = "A9b9t3qNQmYTpbui7TXLQbTJPXbNaV5dW11vxn2M7eC5" +light_token_anchor_revoke = "Dvq3UxQUDEF3B6khoJTdcbm3UutDsvxkdkTvxoJvegfg" +light_token_anchor_burn = "BHTGZDjDw9Gpz8oYm7CRMg2WtKwW65YAYHXXMKv4dpr6" +light_token_anchor_freeze = "7ovuM3dD2MZtcWQesVMiSYJef3oh1XH3e8nUk1ArpWX6" +light_token_anchor_thaw = "FL4MY6v5mTqncytUeuPoGroo6DHSsmBCPirckygGbcip" + +[programs.devnet] +light_token_anchor_create_ata = "77bt3j6A3g9s1WtwYnRFTGP9y8H1nigW7mLtywGKPmMi" +light_token_anchor_create_mint = "Ev7tKaozVxbZLVGcKcVcz8A9yKZjUf5ATqoNSe5BDkjj" +light_token_anchor_create_token_account = "CTAiNDz2wJrB67HuJYYfooHG1gN3nXnZVfm3QhPgi2Vi" +light_token_anchor_mint_to = "7SUgjNZYC1h89MuPVYkgEP5A4uYx5GFSjC7mzqMbN8U2" +light_token_anchor_transfer_interface = "ChkDqFsvNNT5CGrV2YCkmK4DiVSATnXc98mNozPbhC6u" +light_token_anchor_close = "4fi27siKEvKXJYN5WCzWuHdAw1rLed6Tprv9ZARv3Gxu" +light_token_anchor_approve = "A9b9t3qNQmYTpbui7TXLQbTJPXbNaV5dW11vxn2M7eC5" +light_token_anchor_revoke = "Dvq3UxQUDEF3B6khoJTdcbm3UutDsvxkdkTvxoJvegfg" +light_token_anchor_burn = "BHTGZDjDw9Gpz8oYm7CRMg2WtKwW65YAYHXXMKv4dpr6" +light_token_anchor_freeze = "7ovuM3dD2MZtcWQesVMiSYJef3oh1XH3e8nUk1ArpWX6" +light_token_anchor_thaw = "FL4MY6v5mTqncytUeuPoGroo6DHSsmBCPirckygGbcip" + +[provider] +cluster = "Localnet" +wallet = "~/.config/solana/id.json" + +[scripts] +test = "ts-mocha -p ./tsconfig.json -t 1000000 ts-tests/**/*.ts" diff --git a/program-examples/anchor/Cargo.lock b/program-examples/anchor/Cargo.lock new file mode 100644 index 0000000..eba225c --- /dev/null +++ b/program-examples/anchor/Cargo.lock @@ -0,0 +1,8950 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[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 = "agave-feature-set" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a2c365c0245cbb8959de725fc2b44c754b673fdf34c9a7f9d4a25c35a7bf1" +dependencies = [ + "ahash", + "solana-epoch-schedule", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", + "solana-svm-feature-set", +] + +[[package]] +name = "agave-precompiles" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d60d73657792af7f2464e9181d13c3979e94bb09841d9ffa014eef4ef0492b77" +dependencies = [ + "agave-feature-set", + "bincode", + "digest 0.10.7", + "ed25519-dalek", + "libsecp256k1", + "openssl", + "sha3", + "solana-ed25519-program", + "solana-message", + "solana-precompile-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "agave-reserved-account-keys" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8289c8a8a2ef5aa10ce49a070f360f4e035ee3410b8d8f3580fb39d8cf042581" +dependencies = [ + "agave-feature-set", + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.4", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned-sized" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48a526ec4434d531d488af59fe866f36b310fe8906691c75dffa664450a3800a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "anchor-attribute-access-control" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f70fd141a4d18adf11253026b32504f885447048c7494faf5fa83b01af9c0cf" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-account" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715a261c57c7679581e06f07a74fa2af874ac30f86bd8ea07cca4a7e5388a064" +dependencies = [ + "anchor-syn", + "bs58", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-constant" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730d6df8ae120321c5c25e0779e61789e4b70dc8297102248902022f286102e4" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-error" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27e6e449cc3a37b2880b74dcafb8e5a17b954c0e58e376432d7adc646fb333ef" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-event" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7710e4c54adf485affcd9be9adec5ef8846d9c71d7f31e16ba86ff9fc1dd49f" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-program" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ecfd49b2aeadeb32f35262230db402abed76ce87e27562b34f61318b2ec83c" +dependencies = [ + "anchor-lang-idl", + "anchor-syn", + "anyhow", + "bs58", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde_json", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-accounts" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be89d160793a88495af462a7010b3978e48e30a630c91de47ce2c1d3cb7a6149" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-serde" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abc6ee78acb7bfe0c2dd2abc677aaa4789c0281a0c0ef01dbf6fe85e0fd9e6e4" +dependencies = [ + "anchor-syn", + "borsh-derive-internal", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-space" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "134a01c0703f6fd355a0e472c033f6f3e41fac1ef6e370b20c50f4c8d022cea7" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-lang" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6bab117055905e930f762c196e08f861f8dfe7241b92cee46677a3b15561a0a" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e8599d21995f68e296265aa5ab0c3cef582fd58afec014d01bd0bce18a4418" +dependencies = [ + "anchor-lang-idl-spec", + "anyhow", + "heck 0.3.3", + "regex", + "serde", + "serde_json", + "sha2 0.10.9", +] + +[[package]] +name = "anchor-lang-idl-spec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" +dependencies = [ + "anyhow", + "serde", +] + +[[package]] +name = "anchor-syn" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dc7a6d90cc643df0ed2744862cdf180587d1e5d28936538c18fc8908489ed67" +dependencies = [ + "anyhow", + "bs58", + "cargo_toml", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.9", + "syn 1.0.109", + "thiserror 1.0.69", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "ark-bn254" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +dependencies = [ + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff 0.4.2", + "ark-poly 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe 0.6.0", + "fnv", + "hashbrown 0.15.2", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe 0.6.0", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.114", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe 0.6.0", + "fnv", + "hashbrown 0.15.2", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive 0.4.2", + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", + "rayon", +] + +[[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 = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "async-compression" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" +dependencies = [ + "compression-codecs", + "compression-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[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 = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +dependencies = [ + "serde_core", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake3" +version = "1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" +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.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +dependencies = [ + "borsh-derive 1.6.0", + "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.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +dependencies = [ + "once_cell", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[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 = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[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.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" + +[[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 = "bytecount" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[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.23", +] + +[[package]] +name = "cc" +version = "1.2.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cfg_eval" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "chrono" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[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 = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "compression-codecs" +version = "0.4.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" +dependencies = [ + "brotli", + "compression-core", + "flate2", + "memchr", +] + +[[package]] +name = "compression-core" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + +[[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 = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[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 = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[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.114", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.114", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derivation-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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 = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "eager" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek 3.2.0", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek-bip32" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" +dependencies = [ + "derivation-path", + "ed25519-dalek", + "hmac 0.12.1", + "sha2 0.10.9", +] + +[[package]] +name = "educe" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" +dependencies = [ + "enum-ordinalize 3.1.15", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize 4.3.2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-iterator" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "enum-ordinalize" +version = "3.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[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 = "find-msvc-tools" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" + +[[package]] +name = "five8" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_const" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" + +[[package]] +name = "flate2" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[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 = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "groth16-solana" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a6d1ffb18dbf5cfc60b11bd7da88474c672870247c1e5b498619bcb6ba3d8f5" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "num-bigint 0.4.6", + "solana-bn254", + "thiserror 1.0.69", +] + +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.13.0", + "slab", + "tokio", + "tokio-util 0.7.18", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.4.0", + "indexmap 2.13.0", + "slab", + "tokio", + "tokio-util 0.7.18", + "tracing", +] + +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[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" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[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 = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.4.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.4.0", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.5.10", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2 0.4.13", + "http 1.4.0", + "http-body 1.0.1", + "httparse", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper 0.14.32", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http 1.4.0", + "hyper 1.8.1", + "hyper-util", + "rustls 0.23.36", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.4", + "tower-service", + "webpki-roots 1.0.5", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper 0.14.32", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.8.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "hyper 1.8.1", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.6.1", + "system-configuration 0.6.1", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width", + "web-time", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jsonrpc-core" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" +dependencies = [ + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "kaigan" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ba15de5aeb137f0f65aa3bf82187647f1285abfe5b20c80c2c37f7007ad519a" +dependencies = [ + "borsh 0.10.4", + "serde", +] + +[[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.180" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" + +[[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", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "typenum", +] + +[[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 = "light-account-checks" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0785da22cd4a7667583141ca56c790a5c8afa2b22ad2a08204d78881035524e8" +dependencies = [ + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sysvar", + "thiserror 2.0.17", +] + +[[package]] +name = "light-array-map" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859dc5b406a8bf0b114f686e6f2e36d0e939bad6f579492a520d309b52fde1f8" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "light-batched-merkle-tree" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13cb8bc778065ee71d1990fdc94112e35dc63a5e387a323284a49f40d123d8e0" +dependencies = [ + "aligned-sized", + "borsh 0.10.4", + "light-account-checks", + "light-bloom-filter", + "light-compressed-account 0.8.0", + "light-hasher", + "light-macros", + "light-merkle-tree-metadata", + "light-verifier", + "light-zero-copy 0.6.0", + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sysvar", + "thiserror 2.0.17", + "zerocopy", +] + +[[package]] +name = "light-bloom-filter" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a609e3c9179f0ae8488cc70c5413c86dfd97dad7ad85fee2ad8da2d0a11e61" +dependencies = [ + "bitvec", + "num-bigint 0.4.6", + "solana-nostd-keccak", + "solana-program-error", + "thiserror 2.0.17", +] + +[[package]] +name = "light-bounded-vec" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58cfa375d028164719e3ffef93d2e5c27855cc8a5bb5bf257b868d17c12a3e66" +dependencies = [ + "bytemuck", + "memoffset", + "solana-program-error", + "thiserror 1.0.69", +] + +[[package]] +name = "light-client" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b1f3cd013364dbe5c45a9e9a8faee1af30dccb600cd56a41e296ed8d5684768" +dependencies = [ + "anchor-lang", + "async-trait", + "base64 0.13.1", + "borsh 0.10.4", + "bs58", + "futures", + "lazy_static", + "light-compressed-account 0.8.0", + "light-compressible", + "light-concurrent-merkle-tree", + "light-event", + "light-hasher", + "light-indexed-merkle-tree", + "light-merkle-tree-metadata", + "light-prover-client", + "light-sdk", + "light-token", + "light-token-interface", + "litesvm", + "num-bigint 0.4.6", + "photon-api", + "rand 0.8.5", + "smallvec", + "solana-account", + "solana-account-decoder-client-types", + "solana-address-lookup-table-interface", + "solana-banks-client", + "solana-clock", + "solana-commitment-config", + "solana-compute-budget-interface", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-program-error", + "solana-pubkey", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-signature", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "spl-pod", + "spl-token-2022-interface", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "light-compressed-account" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "058df2733fa6a3e4bda6f162a6c5d41f10fc8c6f6ddb992af1de76b60214e4a6" +dependencies = [ + "borsh 0.10.4", + "light-hasher", + "light-macros", + "light-program-profiler", + "light-zero-copy 0.5.0", + "thiserror 2.0.17", + "tinyvec", + "zerocopy", +] + +[[package]] +name = "light-compressed-account" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "768ae5a56d8c9cf315d132b3faa5b067f95b3d6a294c579e82f8f0e0bf29c7cc" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-hasher", + "light-macros", + "light-poseidon 0.3.0", + "light-program-profiler", + "light-zero-copy 0.6.0", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "thiserror 2.0.17", + "tinyvec", + "zerocopy", +] + +[[package]] +name = "light-compressible" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff0f0065beb8d16df587b3ea17082e11dea3f67c98813b4bcc061eecd94561f" +dependencies = [ + "aligned-sized", + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-account-checks", + "light-compressed-account 0.8.0", + "light-hasher", + "light-macros", + "light-program-profiler", + "light-sdk-types", + "light-zero-copy 0.6.0", + "pinocchio-pubkey", + "solana-pubkey", + "thiserror 2.0.17", + "zerocopy", +] + +[[package]] +name = "light-concurrent-merkle-tree" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db96f47253a0907aaa46dac15cecb27b5510130e48da0b36690dcd2e99a6d558" +dependencies = [ + "borsh 0.10.4", + "light-bounded-vec", + "light-hasher", + "memoffset", + "solana-program-error", + "thiserror 2.0.17", +] + +[[package]] +name = "light-event" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1674c9d85b32a9e8abb90cccdee18e35ae29daa1126fdb81a8a28c0a54802096" +dependencies = [ + "borsh 0.10.4", + "light-compressed-account 0.8.0", + "light-hasher", + "light-zero-copy 0.6.0", + "thiserror 2.0.17", +] + +[[package]] +name = "light-hasher" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c822662e6e109bac0e132a43fd52a4ef684811245a794e048cf9cda001e934c8" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "borsh 0.10.4", + "light-poseidon 0.3.0", + "num-bigint 0.4.6", + "sha2 0.10.9", + "sha3", + "solana-program-error", + "thiserror 2.0.17", + "tinyvec", +] + +[[package]] +name = "light-indexed-array" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f14f984030d86b6f07bd8f5ae04e2c40fcd0c3bdfcc7a291fff1ed59c9e6554" +dependencies = [ + "light-hasher", + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.17", +] + +[[package]] +name = "light-indexed-merkle-tree" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0824755289075f28de2820fc7d4ec4e6b9e99d404e033c07338b91cce8c71fb8" +dependencies = [ + "light-bounded-vec", + "light-concurrent-merkle-tree", + "light-hasher", + "light-merkle-tree-reference", + "num-bigint 0.4.6", + "num-traits", + "solana-program-error", + "thiserror 2.0.17", +] + +[[package]] +name = "light-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "179ac51cadc1d0ca047b4d6265a7cc245ca3affc16a20a2749585aa6464d39c2" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "solana-pubkey", + "syn 2.0.114", +] + +[[package]] +name = "light-merkle-tree-metadata" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17d08edcc194eef61b0f499934ce398122d54ac57505d44480e5f079a4220566" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-compressed-account 0.8.0", + "solana-msg", + "solana-program-error", + "solana-sysvar", + "thiserror 2.0.17", + "zerocopy", +] + +[[package]] +name = "light-merkle-tree-reference" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8d480f62ca32b38a6231bbc5310d693f91d6b5bdcc18bb13c2d9aab7a1c90e8" +dependencies = [ + "light-hasher", + "light-indexed-array", + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.17", +] + +[[package]] +name = "light-poseidon" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" +dependencies = [ + "ark-bn254 0.4.0", + "ark-ff 0.4.2", + "num-bigint 0.4.6", + "thiserror 1.0.69", +] + +[[package]] +name = "light-poseidon" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3d87542063daaccbfecd78b60f988079b6ec4e089249658b9455075c78d42" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "num-bigint 0.4.6", + "thiserror 1.0.69", +] + +[[package]] +name = "light-profiler-macro" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a8be18fe4de58a6f754caa74a3fbc6d8a758a26f1f3c24d5b0f5b55df5f5408" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "light-program-profiler" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1d345871581aebd8825868a3f08410290aa1cdddcb189ca7f7e588f61d79fcf" +dependencies = [ + "light-profiler-macro", +] + +[[package]] +name = "light-program-test" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a981dfbc19c529543ab1dd8d100319b89aac053b81415a681d1474c986218307" +dependencies = [ + "anchor-lang", + "async-trait", + "base64 0.13.1", + "borsh 0.10.4", + "bs58", + "bytemuck", + "chrono", + "light-client", + "light-compressed-account 0.8.0", + "light-compressible", + "light-event", + "light-hasher", + "light-indexed-array", + "light-indexed-merkle-tree", + "light-merkle-tree-metadata", + "light-merkle-tree-reference", + "light-prover-client", + "light-sdk", + "light-sdk-types", + "light-token", + "light-token-interface", + "light-zero-copy 0.6.0", + "litesvm", + "log", + "num-bigint 0.4.6", + "num-traits", + "photon-api", + "rand 0.8.5", + "reqwest 0.12.28", + "serde", + "serde_json", + "solana-account", + "solana-banks-client", + "solana-compute-budget", + "solana-instruction", + "solana-pubkey", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction", + "solana-transaction-status", + "solana-transaction-status-client-types", + "spl-token-2022 7.0.0", + "tabled", + "tokio", +] + +[[package]] +name = "light-prover-client" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75d8c9b8b6e9d445b9ef27467da592ee231e614282c3c0bd2f30f567eb904845" +dependencies = [ + "ark-bn254 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "light-compressed-account 0.7.0", + "light-hasher", + "light-indexed-array", + "light-sparse-merkle-tree", + "num-bigint 0.4.6", + "num-traits", + "reqwest 0.11.27", + "serde", + "serde_json", + "solana-bn254", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "light-sdk" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dece106ebd0897bd23a12bad040e0999d93b54447d0473739f91b1f83b1d331" +dependencies = [ + "anchor-lang", + "bincode", + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account 0.8.0", + "light-compressible", + "light-hasher", + "light-macros", + "light-sdk-macros", + "light-sdk-types", + "light-zero-copy 0.6.0", + "num-bigint 0.4.6", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-instruction", + "solana-loader-v3-interface", + "solana-msg", + "solana-program", + "solana-program-error", + "solana-pubkey", + "solana-system-interface", + "solana-sysvar", + "thiserror 2.0.17", +] + +[[package]] +name = "light-sdk-macros" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "315633f6d8bf736dd2f6cec318b662f1dc507f9d66e52ad35d91270870f6acb6" +dependencies = [ + "darling", + "light-hasher", + "light-sdk-types", + "proc-macro2", + "quote", + "solana-pubkey", + "syn 2.0.114", +] + +[[package]] +name = "light-sdk-types" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b765f0a39428a137b8d449fa60ba147194cdbff08aa0add598c6047fff2cb7d2" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account 0.8.0", + "light-hasher", + "light-macros", + "solana-msg", + "thiserror 2.0.17", +] + +[[package]] +name = "light-sparse-merkle-tree" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4251e79b6c63f4946572dcfd7623680ad0f9e0efe1a761a944733333c5645063" +dependencies = [ + "light-hasher", + "light-indexed-array", + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.17", +] + +[[package]] +name = "light-token" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62907a12a9801200e5f4c03bb7f2dbdd9aa679223a959167c456a06005291d79" +dependencies = [ + "anchor-lang", + "arrayvec", + "borsh 0.10.4", + "light-account-checks", + "light-batched-merkle-tree", + "light-compressed-account 0.8.0", + "light-compressible", + "light-macros", + "light-program-profiler", + "light-sdk", + "light-sdk-macros", + "light-sdk-types", + "light-token-interface", + "light-token-types", + "light-zero-copy 0.6.0", + "solana-account-info", + "solana-cpi", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "spl-pod", + "thiserror 2.0.17", +] + +[[package]] +name = "light-token-anchor-approve" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 1.6.0", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-burn" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 1.6.0", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-close" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 1.6.0", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-create-ata" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 1.6.0", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-create-mint" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 1.6.0", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-create-token-account" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 1.6.0", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-freeze" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 1.6.0", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-mint-to" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 1.6.0", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-revoke" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 1.6.0", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-thaw" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 1.6.0", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-transfer-interface" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 1.6.0", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "light-token-types", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-interface" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fb19b8e268a0154a8e13b3a8f6f43fa4928643e2de102d98a90b2af21f482ba" +dependencies = [ + "aligned-sized", + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-array-map", + "light-compressed-account 0.8.0", + "light-compressible", + "light-hasher", + "light-macros", + "light-program-profiler", + "light-zero-copy 0.6.0", + "pinocchio", + "pinocchio-pubkey", + "solana-account-info", + "solana-pubkey", + "spl-pod", + "spl-token-2022 7.0.0", + "thiserror 2.0.17", + "tinyvec", + "zerocopy", +] + +[[package]] +name = "light-token-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "278dddbf18d104f1225c480ca6d7b8710e1f9ff4104f24be70c522ecb6ed1dfc" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account 0.8.0", + "light-macros", + "light-sdk-types", + "solana-msg", + "thiserror 2.0.17", +] + +[[package]] +name = "light-verifier" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f35f47736be493b60d8b56ef0c8e94afd6a99efafebb257f62b0b545e9aacab" +dependencies = [ + "groth16-solana", + "light-compressed-account 0.8.0", + "thiserror 2.0.17", +] + +[[package]] +name = "light-zero-copy" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8862f463792fd60ae8f5dc418150c16213e302e19d54fba0694cf8515be5ff" +dependencies = [ + "light-zero-copy-derive 0.5.0", + "zerocopy", +] + +[[package]] +name = "light-zero-copy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5621fb515e14af46148699c0b65334aabe230a1d2cbd06736ccc7a408c8a4af" +dependencies = [ + "light-zero-copy-derive 0.6.0", + "solana-program-error", + "zerocopy", +] + +[[package]] +name = "light-zero-copy-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8af086d52100b3cab1f2993b146adc7a69fa6aaa878ae4c19514c77c50304379" +dependencies = [ + "lazy_static", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "light-zero-copy-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41c46425e5c7ab5203ff5c86ae2615b169cca55f9283f5f60f5dd74143be6934" +dependencies = [ + "lazy_static", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "litesvm" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23bca37ac374948b348e29c74b324dc36f18bbbd1ccf80e2046d967521cbd143" +dependencies = [ + "agave-feature-set", + "agave-precompiles", + "agave-reserved-account-keys", + "ansi_term", + "bincode", + "indexmap 2.13.0", + "itertools 0.14.0", + "log", + "solana-account", + "solana-address-lookup-table-interface", + "solana-bpf-loader-program", + "solana-builtins", + "solana-clock", + "solana-compute-budget", + "solana-compute-budget-instruction", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee", + "solana-fee-structure", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", + "solana-keypair", + "solana-last-restart-slot", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-log-collector", + "solana-message", + "solana-native-token 3.0.0", + "solana-nonce", + "solana-nonce-account", + "solana-precompile-error", + "solana-program-error", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sha256-hasher", + "solana-signature", + "solana-signer", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-interface", + "solana-svm-callback", + "solana-svm-transaction", + "solana-system-interface", + "solana-system-program", + "solana-sysvar", + "solana-sysvar-id", + "solana-timings", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "solana-vote-program", + "thiserror 2.0.17", +] + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[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 = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.61.2", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "num" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" +dependencies = [ + "num-bigint 0.2.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[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", + "serde", +] + +[[package]] +name = "num-complex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[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.114", +] + +[[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-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-bigint 0.2.6", + "num-integer", + "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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-src" +version = "300.5.4+3.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror 1.0.69", +] + +[[package]] +name = "papergrid" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6978128c8b51d8f4080631ceb2302ab51e32cc6e8615f735ee2f83fd269ae3f1" +dependencies = [ + "bytecount", + "fnv", + "unicode-width", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "percentage" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" +dependencies = [ + "num", +] + +[[package]] +name = "photon-api" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e572dba0c255f5b8176f15b9e849330d915a8927804f7f9702d5bbbc70e4a1ad" +dependencies = [ + "reqwest 0.12.28", + "serde", + "serde_derive", + "serde_json", + "serde_with", + "url", + "uuid", +] + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pinocchio" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b971851087bc3699b001954ad02389d50c41405ece3548cbcafc88b3e20017a" + +[[package]] +name = "pinocchio-pubkey" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0225638cadcbebae8932cb7f49cb5da7c15c21beb19f048f05a5ca7d93f065" +dependencies = [ + "five8_const", + "pinocchio", + "sha2-const-stable", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[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 = "portable-atomic" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +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.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit 0.23.10+spec-1.0.0", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "proc-macro2" +version = "1.0.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" +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 = "qualifier_attr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls 0.23.36", + "socket2 0.6.1", + "thiserror 2.0.17", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash", + "rustls 0.23.36", + "rustls-pki-types", + "slab", + "thiserror 2.0.17", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.6.1", + "tracing", + "windows-sys 0.60.2", +] + +[[package]] +name = "quote" +version = "1.0.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[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" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + +[[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_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[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.17", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[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 = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-rustls 0.24.2", + "hyper-tls 0.5.0", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.12", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.24.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.13", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.8.1", + "hyper-rustls 0.27.7", + "hyper-tls 0.6.0", + "hyper-util", + "js-sys", + "log", + "mime", + "mime_guess", + "native-tls", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.36", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.26.4", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 1.0.5", +] + +[[package]] +name = "reqwest-middleware" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" +dependencies = [ + "anyhow", + "async-trait", + "http 1.4.0", + "reqwest 0.12.28", + "serde", + "thiserror 1.0.69", + "tower-service", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.23.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki 0.103.9", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" + +[[package]] +name = "schannel" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.10.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.13.0", + "schemars 0.9.0", + "schemars 1.2.0", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2-const-stable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" + +[[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 = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "solana-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" +dependencies = [ + "bincode", + "serde", + "serde_bytes", + "serde_derive", + "solana-account-info", + "solana-clock", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-sysvar", +] + +[[package]] +name = "solana-account-decoder" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba71c97fa4d85ce4a1e0e79044ad0406c419382be598c800202903a7688ce71a" +dependencies = [ + "Inflector", + "base64 0.22.1", + "bincode", + "bs58", + "bv", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-config-program-client", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-instruction", + "solana-loader-v3-interface", + "solana-nonce", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-interface", + "solana-sysvar", + "solana-vote-interface", + "spl-generic-token", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "thiserror 2.0.17", + "zstd", +] + +[[package]] +name = "solana-account-decoder-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5519e8343325b707f17fbed54fcefb325131b692506d0af9e08a539d15e4f8cf" +dependencies = [ + "base64 0.22.1", + "bs58", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-pubkey", + "zstd", +] + +[[package]] +name = "solana-account-info" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" +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-banks-client" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68548570c38a021c724b5aa0112f45a54bdf7ff1b041a042848e034a95a96994" +dependencies = [ + "borsh 1.6.0", + "futures", + "solana-account", + "solana-banks-interface", + "solana-clock", + "solana-commitment-config", + "solana-hash", + "solana-message", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-signature", + "solana-sysvar", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "tarpc", + "thiserror 2.0.17", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-banks-interface" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6d90edc435bf488ef7abed4dcb1f94fa1970102cbabb25688f58417fd948286" +dependencies = [ + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-commitment-config", + "solana-hash", + "solana-message", + "solana-pubkey", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "tarpc", +] + +[[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 0.4.6", + "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-bn254" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4420f125118732833f36facf96a27e7b78314b2d642ba07fa9ffdacd8d79e243" +dependencies = [ + "ark-bn254 0.4.0", + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "bytemuck", + "solana-define-syscall", + "thiserror 2.0.17", +] + +[[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.6.0", +] + +[[package]] +name = "solana-bpf-loader-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aec57dcd80d0f6879956cad28854a6eebaed6b346ce56908ea01a9f36ab259" +dependencies = [ + "bincode", + "libsecp256k1", + "num-traits", + "qualifier_attr", + "scopeguard", + "solana-account", + "solana-account-info", + "solana-big-mod-exp", + "solana-bincode", + "solana-blake3-hasher", + "solana-bn254", + "solana-clock", + "solana-cpi", + "solana-curve25519", + "solana-hash", + "solana-instruction", + "solana-keccak-hasher", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-log-collector", + "solana-measure", + "solana-packet", + "solana-poseidon", + "solana-program-entrypoint", + "solana-program-runtime", + "solana-pubkey", + "solana-sbpf", + "solana-sdk-ids", + "solana-secp256k1-recover", + "solana-sha256-hasher", + "solana-stable-layout", + "solana-svm-feature-set", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", + "solana-timings", + "solana-transaction-context", + "solana-type-overrides", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-builtins" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d61a31b63b52b0d268cbcd56c76f50314867d7f8e07a0f2c62ee7c9886e07b2" +dependencies = [ + "agave-feature-set", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-hash", + "solana-loader-v4-program", + "solana-program-runtime", + "solana-pubkey", + "solana-sdk-ids", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", + "solana-zk-elgamal-proof-program", + "solana-zk-token-proof-program", +] + +[[package]] +name = "solana-builtins-default-costs" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ca69a299a6c969b18ea381a02b40c9e4dda04b2af0d15a007c1184c82163bbb" +dependencies = [ + "agave-feature-set", + "ahash", + "log", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-loader-v4-program", + "solana-pubkey", + "solana-sdk-ids", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", +] + +[[package]] +name = "solana-client-traits" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" +dependencies = [ + "solana-account", + "solana-commitment-config", + "solana-epoch-info", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-pubkey", + "solana-signature", + "solana-signer", + "solana-system-interface", + "solana-transaction", + "solana-transaction-error", +] + +[[package]] +name = "solana-clock" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-cluster-type" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" +dependencies = [ + "serde", + "serde_derive", + "solana-hash", +] + +[[package]] +name = "solana-commitment-config" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-compute-budget" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f4fc63bc2276a1618ca0bfc609da7448534ecb43a1cb387cdf9eaa2dc7bc272" +dependencies = [ + "solana-fee-structure", + "solana-program-runtime", +] + +[[package]] +name = "solana-compute-budget-instruction" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "503d94430f6d3c5ac1e1fa6a342c1c714d5b03c800999e7b6cf235298f0b5341" +dependencies = [ + "agave-feature-set", + "log", + "solana-borsh", + "solana-builtins-default-costs", + "solana-compute-budget", + "solana-compute-budget-interface", + "solana-instruction", + "solana-packet", + "solana-pubkey", + "solana-sdk-ids", + "solana-svm-transaction", + "solana-transaction-error", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-compute-budget-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8432d2c4c22d0499aa06d62e4f7e333f81777b3d7c96050ae9e5cb71a8c3aee4" +dependencies = [ + "borsh 1.6.0", + "serde", + "serde_derive", + "solana-instruction", + "solana-sdk-ids", +] + +[[package]] +name = "solana-compute-budget-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "072b02beed1862c6b7b7a8a699379594c4470a9371c711856a0a3c266dcf57e5" +dependencies = [ + "solana-program-runtime", +] + +[[package]] +name = "solana-config-program-client" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53aceac36f105fd4922e29b4f0c1f785b69d7b3e7e387e384b8985c8e0c3595e" +dependencies = [ + "bincode", + "borsh 0.10.4", + "kaigan", + "serde", + "solana-program", +] + +[[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.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae4261b9a8613d10e77ac831a8fa60b6fa52b9b103df46d641deff9f9812a23" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "solana-define-syscall", + "subtle", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-decode-error" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-define-syscall" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" + +[[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-ed25519-program" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "ed25519-dalek", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", +] + +[[package]] +name = "solana-epoch-info" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" +dependencies = [ + "serde", + "serde_derive", +] + +[[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-rewards-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" +dependencies = [ + "siphasher", + "solana-hash", + "solana-pubkey", +] + +[[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.17", +] + +[[package]] +name = "solana-feature-gate-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" +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-feature-set" +version = "2.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93b93971e289d6425f88e6e3cb6668c4b05df78b3c518c249be55ced8efd6b6d" +dependencies = [ + "ahash", + "lazy_static", + "solana-epoch-schedule", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-fee" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16beda37597046b1edd1cea6fa7caaed033c091f99ec783fe59c82828bc2adb8" +dependencies = [ + "agave-feature-set", + "solana-fee-structure", + "solana-svm-transaction", +] + +[[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-fee-structure" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33adf673581c38e810bf618f745bf31b683a0a4a4377682e6aaac5d9a058dd4e" +dependencies = [ + "serde", + "serde_derive", + "solana-message", + "solana-native-token 2.3.0", +] + +[[package]] +name = "solana-genesis-config" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3725085d47b96d37fef07a29d78d2787fc89a0b9004c66eed7753d1e554989f" +dependencies = [ + "bincode", + "chrono", + "memmap2", + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-cluster-type", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash", + "solana-inflation", + "solana-keypair", + "solana-logger", + "solana-poh-config", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sha256-hasher", + "solana-shred-version", + "solana-signer", + "solana-time-utils", +] + +[[package]] +name = "solana-hard-forks" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-hash" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" +dependencies = [ + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "five8", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-sanitize", + "wasm-bindgen", +] + +[[package]] +name = "solana-inflation" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-instruction" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab5682934bd1f65f8d2c16f21cb532526fcc1a09f796e2cacdb091eee5774ad" +dependencies = [ + "bincode", + "borsh 1.6.0", + "getrandom 0.2.17", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "serde_json", + "solana-define-syscall", + "solana-pubkey", + "wasm-bindgen", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" +dependencies = [ + "bitflags 2.10.0", + "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-keypair" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd3f04aa1a05c535e93e121a95f66e7dcccf57e007282e8255535d24bf1e98bb" +dependencies = [ + "ed25519-dalek", + "ed25519-dalek-bip32", + "five8", + "rand 0.7.3", + "solana-derivation-path", + "solana-pubkey", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "wasm-bindgen", +] + +[[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 = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" +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-loader-v4-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ab01855d851fa2fb6034b0d48de33d77d5c5f5fb4b0353d8e4a934cc03d48a" +dependencies = [ + "log", + "qualifier_attr", + "solana-account", + "solana-bincode", + "solana-bpf-loader-program", + "solana-instruction", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-log-collector", + "solana-measure", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-sbpf", + "solana-sdk-ids", + "solana-transaction-context", + "solana-type-overrides", +] + +[[package]] +name = "solana-log-collector" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d945b1cf5bf7cbd6f5b78795beda7376370c827640df43bb2a1c17b492dc106" +dependencies = [ + "log", +] + +[[package]] +name = "solana-logger" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8e777ec1afd733939b532a42492d888ec7c88d8b4127a5d867eb45c6eb5cd5" +dependencies = [ + "env_logger", + "lazy_static", + "libc", + "log", + "signal-hook", +] + +[[package]] +name = "solana-measure" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11dcd67cd2ae6065e494b64e861e0498d046d95a61cbbf1ae3d58be1ea0f42ed" + +[[package]] +name = "solana-message" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" +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-metrics" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0375159d8460f423d39e5103dcff6e07796a5ec1850ee1fcfacfd2482a8f34b5" +dependencies = [ + "crossbeam-channel", + "gethostname", + "log", + "reqwest 0.12.28", + "solana-cluster-type", + "solana-sha256-hasher", + "solana-time-utils", + "thiserror 2.0.17", +] + +[[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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" + +[[package]] +name = "solana-native-token" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" + +[[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-nonce-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" +dependencies = [ + "solana-account", + "solana-hash", + "solana-nonce", + "solana-sdk-ids", +] + +[[package]] +name = "solana-nostd-keccak" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8ced70920435b1baa58f76e6f84bbc1110ddd1d6161ec76b6d731ae8431e9c4" +dependencies = [ + "sha3", +] + +[[package]] +name = "solana-offchain-message" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" +dependencies = [ + "num_enum", + "solana-hash", + "solana-packet", + "solana-pubkey", + "solana-sanitize", + "solana-sha256-hasher", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-packet" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "004f2d2daf407b3ec1a1ca5ec34b3ccdfd6866dd2d3c7d0715004a96e4b6d127" +dependencies = [ + "bincode", + "bitflags 2.10.0", + "cfg_eval", + "serde", + "serde_derive", + "serde_with", +] + +[[package]] +name = "solana-poh-config" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-poseidon" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbac4eb90016eeb1d37fa36e592d3a64421510c49666f81020736611c319faff" +dependencies = [ + "ark-bn254 0.4.0", + "light-poseidon 0.2.0", + "solana-define-syscall", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-precompile-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d87b2c1f5de77dfe2b175ee8dd318d196aaca4d0f66f02842f80c852811f9f8" +dependencies = [ + "num-traits", + "solana-decode-error", +] + +[[package]] +name = "solana-precompiles" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36e92768a57c652edb0f5d1b30a7d0bc64192139c517967c18600debe9ae3832" +dependencies = [ + "lazy_static", + "solana-ed25519-program", + "solana-feature-set", + "solana-message", + "solana-precompile-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "solana-presigner" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" +dependencies = [ + "solana-pubkey", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-program" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" +dependencies = [ + "bincode", + "blake3", + "borsh 0.10.4", + "borsh 1.6.0", + "bs58", + "bytemuck", + "console_error_panic_hook", + "console_log", + "getrandom 0.2.17", + "lazy_static", + "log", + "memoffset", + "num-bigint 0.4.6", + "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 2.3.0", + "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.17", + "wasm-bindgen", +] + +[[package]] +name = "solana-program-entrypoint" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" +dependencies = [ + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", +] + +[[package]] +name = "solana-program-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" +dependencies = [ + "borsh 1.6.0", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-pubkey", +] + +[[package]] +name = "solana-program-memory" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" +dependencies = [ + "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-program-runtime" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5653001e07b657c9de6f0417cf9add1cf4325903732c480d415655e10cc86704" +dependencies = [ + "base64 0.22.1", + "bincode", + "enum-iterator", + "itertools 0.12.1", + "log", + "percentage", + "rand 0.8.5", + "serde", + "solana-account", + "solana-clock", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-structure", + "solana-hash", + "solana-instruction", + "solana-last-restart-slot", + "solana-log-collector", + "solana-measure", + "solana-metrics", + "solana-program-entrypoint", + "solana-pubkey", + "solana-rent", + "solana-sbpf", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-stable-layout", + "solana-svm-callback", + "solana-svm-feature-set", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", + "solana-timings", + "solana-transaction-context", + "solana-type-overrides", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-pubkey" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" +dependencies = [ + "borsh 0.10.4", + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "five8", + "five8_const", + "getrandom 0.2.17", + "js-sys", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-decode-error", + "solana-define-syscall", + "solana-sanitize", + "solana-sha256-hasher", + "wasm-bindgen", +] + +[[package]] +name = "solana-quic-definitions" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf0d4d5b049eb1d0c35f7b18f305a27c8986fc5c0c9b383e97adaa35334379e" +dependencies = [ + "solana-keypair", +] + +[[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-rent-collector" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "127e6dfa51e8c8ae3aa646d8b2672bc4ac901972a338a9e1cd249e030564fb9d" +dependencies = [ + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-epoch-schedule", + "solana-genesis-config", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", +] + +[[package]] +name = "solana-rent-debits" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" +dependencies = [ + "solana-pubkey", + "solana-reward-info", +] + +[[package]] +name = "solana-reserved-account-keys" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4b22ea19ca2a3f28af7cd047c914abf833486bf7a7c4a10fc652fff09b385b1" +dependencies = [ + "lazy_static", + "solana-feature-set", + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "solana-reward-info" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-rpc-client" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8d3161ac0918178e674c1f7f1bfac40de3e7ed0383bd65747d63113c156eaeb" +dependencies = [ + "async-trait", + "base64 0.22.1", + "bincode", + "bs58", + "futures", + "indicatif", + "log", + "reqwest 0.12.28", + "reqwest-middleware", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-clock", + "solana-commitment-config", + "solana-epoch-info", + "solana-epoch-schedule", + "solana-feature-gate-interface", + "solana-hash", + "solana-instruction", + "solana-message", + "solana-pubkey", + "solana-rpc-client-api", + "solana-signature", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-version", + "solana-vote-interface", + "tokio", +] + +[[package]] +name = "solana-rpc-client-api" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dbc138685c79d88a766a8fd825057a74ea7a21e1dd7f8de275ada899540fff7" +dependencies = [ + "anyhow", + "jsonrpc-core", + "reqwest 0.12.28", + "reqwest-middleware", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder-client-types", + "solana-clock", + "solana-rpc-client-types", + "solana-signer", + "solana-transaction-error", + "solana-transaction-status-client-types", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-rpc-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea428a81729255d895ea47fba9b30fd4dacbfe571a080448121bd0592751676" +dependencies = [ + "base64 0.22.1", + "bs58", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-clock", + "solana-commitment-config", + "solana-fee-calculator", + "solana-inflation", + "solana-pubkey", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-version", + "spl-generic-token", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-sanitize" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" + +[[package]] +name = "solana-sbpf" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "474a2d95dc819898ded08d24f29642d02189d3e1497bbb442a92a3997b7eb55f" +dependencies = [ + "byteorder", + "combine", + "hash32", + "libc", + "log", + "rand 0.8.5", + "rustc-demangle", + "thiserror 2.0.17", + "winapi", +] + +[[package]] +name = "solana-sdk" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc0e4a7635b902791c44b6581bfb82f3ada32c5bc0929a64f39fe4bb384c86a" +dependencies = [ + "bincode", + "bs58", + "getrandom 0.1.16", + "js-sys", + "serde", + "serde_json", + "solana-account", + "solana-bn254", + "solana-client-traits", + "solana-cluster-type", + "solana-commitment-config", + "solana-compute-budget-interface", + "solana-decode-error", + "solana-derivation-path", + "solana-ed25519-program", + "solana-epoch-info", + "solana-epoch-rewards-hasher", + "solana-feature-set", + "solana-fee-structure", + "solana-genesis-config", + "solana-hard-forks", + "solana-inflation", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-native-token 2.3.0", + "solana-nonce-account", + "solana-offchain-message", + "solana-packet", + "solana-poh-config", + "solana-precompile-error", + "solana-precompiles", + "solana-presigner", + "solana-program", + "solana-program-memory", + "solana-pubkey", + "solana-quic-definitions", + "solana-rent-collector", + "solana-rent-debits", + "solana-reserved-account-keys", + "solana-reward-info", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-secp256k1-program", + "solana-secp256k1-recover", + "solana-secp256r1-program", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-serde", + "solana-serde-varint", + "solana-short-vec", + "solana-shred-version", + "solana-signature", + "solana-signer", + "solana-system-transaction", + "solana-time-utils", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "solana-validator-exit", + "thiserror 2.0.17", + "wasm-bindgen", +] + +[[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.114", +] + +[[package]] +name = "solana-secp256k1-program" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f19833e4bc21558fe9ec61f239553abe7d05224347b57d65c2218aeeb82d6149" +dependencies = [ + "bincode", + "digest 0.10.7", + "libsecp256k1", + "serde", + "serde_derive", + "sha3", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", + "solana-signature", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" +dependencies = [ + "borsh 1.6.0", + "libsecp256k1", + "solana-define-syscall", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-secp256r1-program" +version = "2.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce0ae46da3071a900f02d367d99b2f3058fe2e90c5062ac50c4f20cfedad8f0f" +dependencies = [ + "bytemuck", + "openssl", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "156bb61a96c605fa124e052d630dba2f6fb57e08c7d15b757e1e958b3ed7b3fe" +dependencies = [ + "hashbrown 0.15.2", +] + +[[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 0.12.1", + "pbkdf2", + "sha2 0.10.9", +] + +[[package]] +name = "solana-serde" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serde-varint" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" +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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" +dependencies = [ + "sha2 0.10.9", + "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-shred-version" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" +dependencies = [ + "solana-hard-forks", + "solana-hash", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-signature" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" +dependencies = [ + "ed25519-dalek", + "five8", + "rand 0.8.5", + "serde", + "serde-big-array", + "serde_derive", + "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.6.0", + "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-stake-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "500e9b9d11573f12de91e94f9c4459882cd5ffc692776af49b610d6fcc0b167f" +dependencies = [ + "agave-feature-set", + "bincode", + "log", + "solana-account", + "solana-bincode", + "solana-clock", + "solana-config-program-client", + "solana-genesis-config", + "solana-instruction", + "solana-log-collector", + "solana-native-token 2.3.0", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-stake-interface", + "solana-sysvar", + "solana-transaction-context", + "solana-type-overrides", + "solana-vote-interface", +] + +[[package]] +name = "solana-svm-callback" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cef9f7d5cfb5d375081a6c8ad712a6f0e055a15890081f845acf55d8254a7a2" +dependencies = [ + "solana-account", + "solana-precompile-error", + "solana-pubkey", +] + +[[package]] +name = "solana-svm-feature-set" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f24b836eb4d74ec255217bdbe0f24f64a07adeac31aca61f334f91cd4a3b1d5" + +[[package]] +name = "solana-svm-transaction" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab717b9539375ebb088872c6c87d1d8832d19f30f154ecc530154d23f60a6f0c" +dependencies = [ + "solana-hash", + "solana-message", + "solana-pubkey", + "solana-sdk-ids", + "solana-signature", + "solana-transaction", +] + +[[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-system-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23ca36cef39aea7761be58d4108a56a2e27042fb1e913355fdb142a05fc7eab7" +dependencies = [ + "bincode", + "log", + "serde", + "serde_derive", + "solana-account", + "solana-bincode", + "solana-fee-calculator", + "solana-instruction", + "solana-log-collector", + "solana-nonce", + "solana-nonce-account", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "solana-transaction-context", + "solana-type-overrides", +] + +[[package]] +name = "solana-system-transaction" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" +dependencies = [ + "solana-hash", + "solana-keypair", + "solana-message", + "solana-pubkey", + "solana-signer", + "solana-system-interface", + "solana-transaction", +] + +[[package]] +name = "solana-sysvar" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db" +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-time-utils" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" + +[[package]] +name = "solana-timings" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c49b842dfc53c1bf9007eaa6730296dea93b4fce73f457ce1080af43375c0d6" +dependencies = [ + "eager", + "enum-iterator", + "solana-pubkey", +] + +[[package]] +name = "solana-transaction" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80657d6088f721148f5d889c828ca60c7daeedac9a8679f9ec215e0c42bcbf41" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-bincode", + "solana-feature-set", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-precompiles", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-signature", + "solana-signer", + "solana-system-interface", + "solana-transaction-error", + "wasm-bindgen", +] + +[[package]] +name = "solana-transaction-context" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a312304361987a85b2ef2293920558e6612876a639dd1309daf6d0d59ef2fe" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account", + "solana-instruction", + "solana-instructions-sysvar", + "solana-pubkey", + "solana-rent", + "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 = [ + "serde", + "serde_derive", + "solana-instruction", + "solana-sanitize", +] + +[[package]] +name = "solana-transaction-status" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135f92f4192cc68900c665becf97fc0a6500ae5a67ff347bf2cbc20ecfefa821" +dependencies = [ + "Inflector", + "agave-reserved-account-keys", + "base64 0.22.1", + "bincode", + "borsh 1.6.0", + "bs58", + "log", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-hash", + "solana-instruction", + "solana-loader-v2-interface", + "solana-loader-v3-interface", + "solana-message", + "solana-program-option", + "solana-pubkey", + "solana-reward-info", + "solana-sdk-ids", + "solana-signature", + "solana-stake-interface", + "solana-system-interface", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-vote-interface", + "spl-associated-token-account", + "spl-memo", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-transaction-status-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f1d7c2387c35850848212244d2b225847666cb52d3bd59a5c409d2c300303d" +dependencies = [ + "base64 0.22.1", + "bincode", + "bs58", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder-client-types", + "solana-commitment-config", + "solana-message", + "solana-reward-info", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-type-overrides" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d80c44761eb398a157d809a04840865c347e1831ae3859b6100c0ee457bc1a" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "solana-validator-exit" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" + +[[package]] +name = "solana-version" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3324d46c7f7b7f5d34bf7dc71a2883bdc072c7b28ca81d0b2167ecec4cf8da9f" +dependencies = [ + "agave-feature-set", + "rand 0.8.5", + "semver", + "serde", + "serde_derive", + "solana-sanitize", + "solana-serde-varint", +] + +[[package]] +name = "solana-vote-interface" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3" +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-vote-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "908d0e72c8b83e48762eb3e8c9114497cf4b1d66e506e360c46aba9308e71299" +dependencies = [ + "agave-feature-set", + "bincode", + "log", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "solana-account", + "solana-bincode", + "solana-clock", + "solana-epoch-schedule", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-metrics", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-signer", + "solana-slot-hashes", + "solana-transaction", + "solana-transaction-context", + "solana-vote-interface", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-zk-elgamal-proof-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70cea14481d8efede6b115a2581f27bc7c6fdfba0752c20398456c3ac1245fc4" +dependencies = [ + "agave-feature-set", + "bytemuck", + "num-derive", + "num-traits", + "solana-instruction", + "solana-log-collector", + "solana-program-runtime", + "solana-sdk-ids", + "solana-zk-sdk", +] + +[[package]] +name = "solana-zk-sdk" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b9fc6ec37d16d0dccff708ed1dd6ea9ba61796700c3bb7c3b401973f10f63b" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "itertools 0.12.1", + "js-sys", + "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.17", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "solana-zk-token-proof-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579752ad6ea2a671995f13c763bf28288c3c895cb857a518cc4ebab93c9a8dde" +dependencies = [ + "agave-feature-set", + "bytemuck", + "num-derive", + "num-traits", + "solana-instruction", + "solana-log-collector", + "solana-program-runtime", + "solana-sdk-ids", + "solana-zk-token-sdk", +] + +[[package]] +name = "solana-zk-token-sdk" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5055e5df94abd5badf4f947681c893375bdb6f8f543c05d2a7ab9647a6a9d205" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "itertools 0.12.1", + "merlin", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "serde_json", + "sha3", + "solana-curve25519", + "solana-derivation-path", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "subtle", + "thiserror 2.0.17", + "zeroize", +] + +[[package]] +name = "spl-associated-token-account" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae179d4a26b3c7a20c839898e6aed84cb4477adf108a366c95532f058aea041b" +dependencies = [ + "borsh 1.6.0", + "num-derive", + "num-traits", + "solana-program", + "spl-associated-token-account-client", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "thiserror 2.0.17", +] + +[[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.114", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.114", + "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 0.2.1", +] + +[[package]] +name = "spl-elgamal-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65edfeed09cd4231e595616aa96022214f9c9d2be02dea62c2b30d5695a6833a" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-cpi", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "solana-zk-sdk", + "spl-pod", + "spl-token-confidential-transfer-proof-extraction 0.3.0", +] + +[[package]] +name = "spl-generic-token" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741a62a566d97c58d33f9ed32337ceedd4e35109a686e31b1866c5dfa56abddc" +dependencies = [ + "bytemuck", + "solana-pubkey", +] + +[[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.6.0", + "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.17", +] + +[[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 0.4.1", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-program-error" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" +dependencies = [ + "num-derive", + "num-traits", + "solana-decode-error", + "solana-msg", + "solana-program-error", + "spl-program-error-derive 0.5.0", + "thiserror 2.0.17", +] + +[[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.9", + "syn 2.0.114", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.114", +] + +[[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 0.6.0", + "spl-type-length-value 0.7.0", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" +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 0.7.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.17", +] + +[[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" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sysvar", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-2022" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9048b26b0df0290f929ff91317c83db28b3ef99af2b3493dd35baa146774924c" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-program", + "solana-security-txt", + "solana-zk-sdk", + "spl-elgamal-registry 0.1.1", + "spl-memo", + "spl-pod", + "spl-token 7.0.0", + "spl-token-confidential-transfer-ciphertext-arithmetic 0.2.1", + "spl-token-confidential-transfer-proof-extraction 0.2.1", + "spl-token-confidential-transfer-proof-generation 0.3.0", + "spl-token-group-interface 0.5.0", + "spl-token-metadata-interface 0.6.0", + "spl-transfer-hook-interface 0.9.0", + "spl-type-length-value 0.7.0", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-2022" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f0dfbb079eebaee55e793e92ca5f433744f4b71ee04880bfd6beefba5973e5" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-native-token 2.3.0", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-security-txt", + "solana-system-interface", + "solana-sysvar", + "solana-zk-sdk", + "spl-elgamal-registry 0.2.0", + "spl-memo", + "spl-pod", + "spl-token 8.0.0", + "spl-token-confidential-transfer-ciphertext-arithmetic 0.3.1", + "spl-token-confidential-transfer-proof-extraction 0.3.0", + "spl-token-confidential-transfer-proof-generation 0.4.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "spl-transfer-hook-interface 0.10.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-2022-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62d7ae2ee6b856f8ddcbdc3b3a9f4d2141582bbe150f93e5298ee97e0251fa04" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "spl-token-confidential-transfer-proof-extraction 0.4.1", + "spl-token-confidential-transfer-proof-generation 0.4.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.17", +] + +[[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-ciphertext-arithmetic" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cddd52bfc0f1c677b41493dafa3f2dbbb4b47cf0990f08905429e19dc8289b35" +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.17", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe2629860ff04c17bafa9ba4bed8850a404ecac81074113e1f840dbd0ebb7bd6" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-curve25519", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512c85bdbbb4cbcc2038849a9e164c958b16541f252b53ea1a3933191c0a4a1a" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-curve25519", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" +dependencies = [ + "curve25519-dalek 4.1.3", + "solana-zk-sdk", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" +dependencies = [ + "curve25519-dalek 4.1.3", + "solana-zk-sdk", + "thiserror 2.0.17", +] + +[[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-group-interface" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.17", +] + +[[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.6.0", + "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 0.7.0", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" +dependencies = [ + "borsh 1.6.0", + "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 0.8.0", + "thiserror 2.0.17", +] + +[[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 0.6.0", + "spl-tlv-account-resolution 0.9.0", + "spl-type-length-value 0.7.0", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-transfer-hook-interface" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" +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 0.7.0", + "spl-tlv-account-resolution 0.10.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.17", +] + +[[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 = "spl-type-length-value" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-account-info", + "solana-decode-error", + "solana-msg", + "solana-program-error", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.17", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[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.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.10.0", + "core-foundation", + "system-configuration-sys 0.6.0", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tabled" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e39a2ee1fbcd360805a771e1b300f78cc88fec7b8d3e2f71cd37bbf23e725c7d" +dependencies = [ + "papergrid", + "tabled_derive", + "testing_table", +] + +[[package]] +name = "tabled_derive" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea5d1b13ca6cff1f9231ffd62f15eefd72543dab5e468735f1a456728a02846" +dependencies = [ + "heck 0.5.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tarpc" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" +dependencies = [ + "anyhow", + "fnv", + "futures", + "humantime", + "opentelemetry", + "pin-project", + "rand 0.8.5", + "serde", + "static_assertions", + "tarpc-plugins", + "thiserror 1.0.69", + "tokio", + "tokio-serde", + "tokio-util 0.6.10", + "tracing", + "tracing-opentelemetry", +] + +[[package]] +name = "tarpc-plugins" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tempfile" +version = "3.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" +dependencies = [ + "fastrand", + "getrandom 0.3.4", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "testing_table" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f8daae29995a24f65619e19d8d31dea5b389f3d853d8bf297bbf607cd0014cc" +dependencies = [ + "unicode-width", +] + +[[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.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[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.114", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" + +[[package]] +name = "time-macros" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +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 = "tokio" +version = "1.49.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.1", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls 0.23.36", + "tokio", +] + +[[package]] +name = "tokio-serde" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" +dependencies = [ + "bincode", + "bytes", + "educe 0.4.23", + "futures-core", + "futures-sink", + "pin-project", + "serde", + "serde_json", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "slab", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[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.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap 2.13.0", + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.10+spec-1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +dependencies = [ + "indexmap 2.13.0", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "async-compression", + "bitflags 2.10.0", + "bytes", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "iri-string", + "pin-project-lite", + "tokio", + "tokio-util 0.7.18", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[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 = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[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 = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +dependencies = [ + "getrandom 0.3.4", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[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.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +dependencies = [ + "cfg-if", + "futures-util", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.114", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "webpki-roots" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[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_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[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_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zmij" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd8f3f50b848df28f887acb68e41201b5aea6bc8a8dacc00fb40635ff9a72fea" + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/program-examples/anchor/Cargo.toml b/program-examples/anchor/Cargo.toml new file mode 100644 index 0000000..f03abab --- /dev/null +++ b/program-examples/anchor/Cargo.toml @@ -0,0 +1,45 @@ +[workspace] +members = [ + "programs/mint-to", + "programs/transfer-interface", + "programs/close", + "programs/approve", + "programs/revoke", + "programs/burn", + "programs/freeze", + "programs/thaw", + "programs/create-mint", + "programs/create-ata", + "programs/create-token-account", +] +resolver = "2" + +[workspace.dependencies] +# Pin to match light-protocol Cargo.lock +constant_time_eq = "=0.3.1" +blake3 = "=1.5.5" + +# Common dependencies +anchor-lang = "0.31.1" +borsh = "1.6" +tokio = "1.43.0" +solana-sdk = "2.2" + +# Light Protocol SDK +light-sdk = { version = "0.18.0", features = ["anchor", "v2"] } +light-token = "0.3.0" +light-program-test = { version = "0.18.0", features = ["v2"] } +light-client = { version = "0.18.0", features = ["v2"] } +light-token-interface = "0.2.0" +light-token-types = "0.3.0" + +[profile.release] +overflow-checks = true +lto = "fat" +codegen-units = 1 + +[profile.release.build-override] +opt-level = 3 +incremental = false +codegen-units = 1 + diff --git a/program-examples/anchor/README.md b/program-examples/anchor/README.md new file mode 100644 index 0000000..a2b5f6c --- /dev/null +++ b/program-examples/anchor/README.md @@ -0,0 +1,63 @@ +# Light Token Anchor Programs + +Anchor program examples that CPI the Light Token Program. + +## Programs + +- **approve** - Approve delegate via CPI + - [Program](programs/approve/src/lib.rs) +- **burn** - Burn tokens via CPI + - [Program](programs/burn/src/lib.rs) +- **close** - Close token account via CPI + - [Program](programs/close/src/lib.rs) +- **create-ata** - Create associated token account via CPI + - [Program](programs/create-ata/src/lib.rs) +- **create-mint** - Create light-token mint via CPI + - [Program](programs/create-mint/src/lib.rs) +- **create-token-account** - Create token account via CPI + - [Program](programs/create-token-account/src/lib.rs) +- **freeze** - Freeze token account via CPI + - [Program](programs/freeze/src/lib.rs) +- **mint-to** - Mint tokens via CPI + - [Program](programs/mint-to/src/lib.rs) +- **revoke** - Revoke delegate via CPI + - [Program](programs/revoke/src/lib.rs) +- **thaw** - Thaw token account via CPI + - [Program](programs/thaw/src/lib.rs) +- **transfer-interface** - Transfer tokens via CPI + - [Program](programs/transfer-interface/src/lib.rs) + +## Build + +```bash +anchor build +``` + +## Test + +### Requirements + +- light cli version 0.27.0+ (install via npm `i -g @lightprotocol/zk-compression-cli`) +- solana cli version 2.1.16+ +- anchor version 0.31.1+ +- Node.js and npm + +### Running Tests + +#### Rust Tests + +```bash +cargo test-sbf +``` + +## Disclaimer + +This reference implementation is not audited. + +The Light Protocol programs are audited and deployed on Solana devnet and mainnet. + +## Documentation + +Learn more [about Light-Token here](https://www.zkcompression.com/light-token/welcome). + +For your AI to index this repo: [AI Index](CLAUDE.md), [Flow Diagram](flow.mermaid), [State Machine Diagram](states.mermaid) diff --git a/program-examples/anchor/programs/approve/Cargo.toml b/program-examples/anchor/programs/approve/Cargo.toml new file mode 100644 index 0000000..08c1e58 --- /dev/null +++ b/program-examples/anchor/programs/approve/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-approve" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_approve" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs/approve/src/lib.rs b/program-examples/anchor/programs/approve/src/lib.rs new file mode 100644 index 0000000..8b1008d --- /dev/null +++ b/program-examples/anchor/programs/approve/src/lib.rs @@ -0,0 +1,36 @@ +#![allow(unexpected_cfgs)] + +use anchor_lang::prelude::*; +use light_token::instruction::ApproveCpi; + +declare_id!("A9b9t3qNQmYTpbui7TXLQbTJPXbNaV5dW11vxn2M7eC5"); + +#[program] +pub mod light_token_anchor_approve { + use super::*; + + pub fn approve(ctx: Context, amount: u64) -> Result<()> { + ApproveCpi { + token_account: ctx.accounts.token_account.to_account_info(), + delegate: ctx.accounts.delegate.to_account_info(), + owner: ctx.accounts.owner.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + amount, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct ApproveAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub token_account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub delegate: AccountInfo<'info>, + pub owner: Signer<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} diff --git a/program-examples/anchor/programs/approve/tests/test.rs b/program-examples/anchor/programs/approve/tests/test.rs new file mode 100644 index 0000000..70bbbca --- /dev/null +++ b/program-examples/anchor/programs/approve/tests/test.rs @@ -0,0 +1,125 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_approve::{instruction::Approve, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_approve() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_approve", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens first + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to approve delegate + let delegate = Keypair::new(); + let approve_amount = 500_000u64; + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(ata, false), + AccountMeta::new_readonly(delegate.pubkey(), false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + ], + data: Approve { amount: approve_amount }.data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!( + "Approved {} tokens to delegate {} via anchor program", + approve_amount, + delegate.pubkey() + ); +} diff --git a/program-examples/anchor/programs/burn/Cargo.toml b/program-examples/anchor/programs/burn/Cargo.toml new file mode 100644 index 0000000..9315f14 --- /dev/null +++ b/program-examples/anchor/programs/burn/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-burn" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_burn" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs/burn/src/lib.rs b/program-examples/anchor/programs/burn/src/lib.rs new file mode 100644 index 0000000..16f22cd --- /dev/null +++ b/program-examples/anchor/programs/burn/src/lib.rs @@ -0,0 +1,36 @@ +#![allow(unexpected_cfgs)] + +use anchor_lang::prelude::*; +use light_token::instruction::BurnCpi; + +declare_id!("BHTGZDjDw9Gpz8oYm7CRMg2WtKwW65YAYHXXMKv4dpr6"); + +#[program] +pub mod light_token_anchor_burn { + use super::*; + + pub fn burn(ctx: Context, amount: u64) -> Result<()> { + BurnCpi { + source: ctx.accounts.source.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + amount, + authority: ctx.accounts.authority.to_account_info(), + max_top_up: None, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct BurnAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub source: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub mint: AccountInfo<'info>, + pub authority: Signer<'info>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} diff --git a/program-examples/anchor/programs/burn/tests/test.rs b/program-examples/anchor/programs/burn/tests/test.rs new file mode 100644 index 0000000..b0cec86 --- /dev/null +++ b/program-examples/anchor/programs/burn/tests/test.rs @@ -0,0 +1,117 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_burn::{instruction::Burn, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_burn() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_burn", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens first + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to burn tokens + let burn_amount = 250_000u64; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(ata, false), + AccountMeta::new(mint_pda, false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + ], + data: Burn { amount: burn_amount }.data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Burned {} tokens via anchor program", burn_amount); +} diff --git a/program-examples/anchor/programs/close/Cargo.toml b/program-examples/anchor/programs/close/Cargo.toml new file mode 100644 index 0000000..7cc0c13 --- /dev/null +++ b/program-examples/anchor/programs/close/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-close" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_close" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs/close/src/lib.rs b/program-examples/anchor/programs/close/src/lib.rs new file mode 100644 index 0000000..ddc768e --- /dev/null +++ b/program-examples/anchor/programs/close/src/lib.rs @@ -0,0 +1,39 @@ +#![allow(unexpected_cfgs)] + +use anchor_lang::prelude::*; +use light_token::instruction::CloseAccountCpi; + +declare_id!("4fi27siKEvKXJYN5WCzWuHdAw1rLed6Tprv9ZARv3Gxu"); + +#[program] +pub mod light_token_anchor_close { + use super::*; + + pub fn close_account(ctx: Context) -> Result<()> { + CloseAccountCpi { + token_program: ctx.accounts.token_program.to_account_info(), + account: ctx.accounts.account.to_account_info(), + destination: ctx.accounts.destination.to_account_info(), + owner: ctx.accounts.owner.to_account_info(), + rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CloseAccountAccounts<'info> { + /// CHECK: Validated by light-token CPI + pub token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub owner: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, +} diff --git a/program-examples/anchor/programs/close/tests/test.rs b/program-examples/anchor/programs/close/tests/test.rs new file mode 100644 index 0000000..5204d97 --- /dev/null +++ b/program-examples/anchor/programs/close/tests/test.rs @@ -0,0 +1,104 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_close::{instruction::CloseAccount, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_close() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_close", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Create ATA (empty, no tokens) + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to close account + let rent_sponsor = rent_sponsor_pda(); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(ata, false), + AccountMeta::new(payer.pubkey(), false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new(rent_sponsor, false), + ], + data: CloseAccount {}.data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Closed account {} via anchor program", ata); +} diff --git a/program-examples/anchor/programs/create-ata/Cargo.toml b/program-examples/anchor/programs/create-ata/Cargo.toml new file mode 100644 index 0000000..9df7fd1 --- /dev/null +++ b/program-examples/anchor/programs/create-ata/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-create-ata" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_create_ata" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs/create-ata/src/lib.rs b/program-examples/anchor/programs/create-ata/src/lib.rs new file mode 100644 index 0000000..86ab404 --- /dev/null +++ b/program-examples/anchor/programs/create-ata/src/lib.rs @@ -0,0 +1,58 @@ +#![allow(unexpected_cfgs)] + +use anchor_lang::prelude::*; +use light_token::instruction::CreateAssociatedAccountCpi; + +declare_id!("77bt3j6A3g9s1WtwYnRFTGP9y8H1nigW7mLtywGKPmMi"); + +#[program] +pub mod light_token_anchor_create_ata { + use super::*; + + pub fn create_ata(ctx: Context, bump: u8, idempotent: bool) -> Result<()> { + let cpi = CreateAssociatedAccountCpi { + payer: ctx.accounts.payer.to_account_info(), + owner: ctx.accounts.owner.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + ata: ctx.accounts.associated_token_account.to_account_info(), + bump, + }; + + if idempotent { + cpi.idempotent().rent_free( + ctx.accounts.compressible_config.to_account_info(), + ctx.accounts.rent_sponsor.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ) + } else { + cpi.rent_free( + ctx.accounts.compressible_config.to_account_info(), + ctx.accounts.rent_sponsor.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ) + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CreateAtaAccounts<'info> { + /// CHECK: Validated by light-token CPI + pub owner: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub associated_token_account: AccountInfo<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Validated by light-token CPI + pub compressible_config: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} diff --git a/program-examples/anchor/programs/create-ata/tests/test.rs b/program-examples/anchor/programs/create-ata/tests/test.rs new file mode 100644 index 0000000..6e1909d --- /dev/null +++ b/program-examples/anchor/programs/create-ata/tests/test.rs @@ -0,0 +1,106 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_create_ata::{instruction::CreateAta, ID}; +use light_token::instruction::{ + CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, derive_token_ata, + find_mint_address, rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_create_ata() { + let config = + ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_ata", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_mint_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Derive ATA address and bump + let (ata, ata_bump) = derive_token_ata(&payer.pubkey(), &mint_pda); + + // Call the anchor program to create ATA + let compressible_config = config_pda(); + let rent_sponsor = rent_sponsor_pda(); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(payer.pubkey(), false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new(ata, false), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(compressible_config, false), + AccountMeta::new(rent_sponsor, false), + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + ], + data: CreateAta { + bump: ata_bump, + idempotent: false, + } + .data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Created ATA {} via anchor program", ata); +} diff --git a/program-examples/anchor/programs/create-mint/Cargo.toml b/program-examples/anchor/programs/create-mint/Cargo.toml new file mode 100644 index 0000000..42d8ad7 --- /dev/null +++ b/program-examples/anchor/programs/create-mint/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-create-mint" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_create_mint" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs/create-mint/src/lib.rs b/program-examples/anchor/programs/create-mint/src/lib.rs new file mode 100644 index 0000000..98891aa --- /dev/null +++ b/program-examples/anchor/programs/create-mint/src/lib.rs @@ -0,0 +1,102 @@ +#![allow(unexpected_cfgs)] + +use anchor_lang::prelude::*; +use light_token::instruction::{CreateMintCpi, CreateMintParams, SystemAccountInfos}; +use light_token::CompressedProof; + +declare_id!("Ev7tKaozVxbZLVGcKcVcz8A9yKZjUf5ATqoNSe5BDkjj"); + +#[program] +pub mod light_token_anchor_create_mint { + use super::*; + + pub fn create_mint( + ctx: Context, + decimals: u8, + address_merkle_tree_root_index: u16, + compression_address: [u8; 32], + proof: CompressedProof, + freeze_authority: Option, + bump: u8, + rent_payment: Option, + write_top_up: Option, + ) -> Result<()> { + let mint = light_token::instruction::find_mint_address(ctx.accounts.mint_seed.key).0; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index, + mint_authority: *ctx.accounts.authority.key, + proof, + compression_address, + mint, + bump, + freeze_authority, + extensions: None, + rent_payment: rent_payment.unwrap_or(16), // Default: ~24 hours + write_top_up: write_top_up.unwrap_or(766), // Default: ~3 hours per write + }; + + let system_accounts = SystemAccountInfos { + light_system_program: ctx.accounts.light_system_program.to_account_info(), + cpi_authority_pda: ctx.accounts.cpi_authority_pda.to_account_info(), + registered_program_pda: ctx.accounts.registered_program_pda.to_account_info(), + account_compression_authority: ctx.accounts.account_compression_authority.to_account_info(), + account_compression_program: ctx.accounts.account_compression_program.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + }; + + CreateMintCpi { + mint_seed: ctx.accounts.mint_seed.to_account_info(), + authority: ctx.accounts.authority.to_account_info(), + payer: ctx.accounts.payer.to_account_info(), + address_tree: ctx.accounts.address_tree.to_account_info(), + output_queue: ctx.accounts.output_queue.to_account_info(), + compressible_config: ctx.accounts.compressible_config.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), + system_accounts, + cpi_context: None, + cpi_context_account: None, + params, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CreateMintAccounts<'info> { + pub mint_seed: Signer<'info>, + /// CHECK: Validated by light-token CPI + pub authority: AccountInfo<'info>, + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub address_tree: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub output_queue: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub light_system_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub cpi_authority_pda: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub registered_program_pda: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub account_compression_authority: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub account_compression_program: AccountInfo<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Validated by light-token CPI - use light_token::token::config_pda() + pub compressible_config: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI - derived from find_mint_address(mint_seed) + #[account(mut)] + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI - use light_token::token::rent_sponsor_pda() + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} diff --git a/program-examples/anchor/programs/create-mint/tests/test.rs b/program-examples/anchor/programs/create-mint/tests/test.rs new file mode 100644 index 0000000..a753e6d --- /dev/null +++ b/program-examples/anchor/programs/create-mint/tests/test.rs @@ -0,0 +1,95 @@ +use anchor_lang::InstructionData; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_create_mint::{instruction::CreateMint, ID}; +use light_token::instruction::{ + config_pda, derive_mint_compressed_address, find_mint_address, rent_sponsor_pda, + SystemAccounts, LIGHT_TOKEN_PROGRAM_ID, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_create_mint() { + let config = + ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_mint", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![light_client::indexer::AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let system_accounts = SystemAccounts::default(); + + // Call the anchor program to create mint + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(mint_seed.pubkey(), true), + AccountMeta::new_readonly(mint_authority, false), + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new(address_tree.tree, false), + AccountMeta::new(output_queue, false), + AccountMeta::new_readonly(system_accounts.light_system_program, false), + AccountMeta::new_readonly(system_accounts.cpi_authority_pda, false), + AccountMeta::new_readonly(system_accounts.registered_program_pda, false), + AccountMeta::new_readonly(system_accounts.account_compression_authority, false), + AccountMeta::new_readonly(system_accounts.account_compression_program, false), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(config_pda(), false), + AccountMeta::new(mint_pda, false), + AccountMeta::new(rent_sponsor_pda(), false), + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + ], + data: CreateMint { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + compression_address: compression_address.into(), + proof: rpc_result.proof.0.unwrap(), + freeze_authority: None, + bump, + rent_payment: Some(16), + write_top_up: Some(766), + } + .data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Verify mint was created + let compressed_account = rpc + .get_compressed_account(compression_address, None) + .await + .unwrap() + .value; + + assert!(compressed_account.is_some(), "Compressed mint should exist"); + println!("Created mint {} via anchor program", mint_pda); +} diff --git a/program-examples/anchor/programs/create-token-account/Cargo.toml b/program-examples/anchor/programs/create-token-account/Cargo.toml new file mode 100644 index 0000000..974dfe4 --- /dev/null +++ b/program-examples/anchor/programs/create-token-account/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-create-token-account" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_create_token_account" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs/create-token-account/keypair.json b/program-examples/anchor/programs/create-token-account/keypair.json new file mode 100644 index 0000000..93e6326 --- /dev/null +++ b/program-examples/anchor/programs/create-token-account/keypair.json @@ -0,0 +1 @@ +[196,52,241,96,50,167,183,75,251,111,133,107,26,185,35,101,19,119,253,19,35,164,230,219,57,197,157,114,110,187,41,190,170,36,163,213,228,94,249,171,13,74,217,229,218,63,175,39,24,177,247,204,140,120,73,245,204,205,44,199,159,204,122,189] \ No newline at end of file diff --git a/program-examples/anchor/programs/create-token-account/src/lib.rs b/program-examples/anchor/programs/create-token-account/src/lib.rs new file mode 100644 index 0000000..9c83291 --- /dev/null +++ b/program-examples/anchor/programs/create-token-account/src/lib.rs @@ -0,0 +1,47 @@ +#![allow(unexpected_cfgs)] + +use anchor_lang::prelude::*; +use light_token::instruction::CreateTokenAccountCpi; + +declare_id!("CTAiNDz2wJrB67HuJYYfooHG1gN3nXnZVfm3QhPgi2Vi"); + +#[program] +pub mod light_token_anchor_create_token_account { + use super::*; + + pub fn create_token_account(ctx: Context, owner: Pubkey) -> Result<()> { + CreateTokenAccountCpi { + payer: ctx.accounts.payer.to_account_info(), + account: ctx.accounts.account.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + owner, + } + .rent_free( + ctx.accounts.compressible_config.to_account_info(), + ctx.accounts.rent_sponsor.to_account_info(), + ctx.accounts.system_program.to_account_info(), + &ctx.accounts.light_token_program.key(), + ) + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CreateTokenAccountAccounts<'info> { + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub compressible_config: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} diff --git a/program-examples/anchor/programs/freeze/Cargo.toml b/program-examples/anchor/programs/freeze/Cargo.toml new file mode 100644 index 0000000..8d0c730 --- /dev/null +++ b/program-examples/anchor/programs/freeze/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-freeze" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_freeze" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs/freeze/src/lib.rs b/program-examples/anchor/programs/freeze/src/lib.rs new file mode 100644 index 0000000..56f6020 --- /dev/null +++ b/program-examples/anchor/programs/freeze/src/lib.rs @@ -0,0 +1,33 @@ +#![allow(unexpected_cfgs)] + +use anchor_lang::prelude::*; +use light_token::instruction::FreezeCpi; + +declare_id!("7ovuM3dD2MZtcWQesVMiSYJef3oh1XH3e8nUk1ArpWX6"); + +#[program] +pub mod light_token_anchor_freeze { + use super::*; + + pub fn freeze(ctx: Context) -> Result<()> { + FreezeCpi { + token_account: ctx.accounts.token_account.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + freeze_authority: ctx.accounts.freeze_authority.to_account_info(), + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct FreezeAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub token_account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + pub freeze_authority: Signer<'info>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} diff --git a/program-examples/anchor/programs/freeze/tests/test.rs b/program-examples/anchor/programs/freeze/tests/test.rs new file mode 100644 index 0000000..84d3468 --- /dev/null +++ b/program-examples/anchor/programs/freeze/tests/test.rs @@ -0,0 +1,117 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_freeze::{instruction::Freeze, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_freeze() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_freeze", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let freeze_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + // Create mint WITH freeze authority + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: Some(freeze_authority), + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: 1_000_000, + authority: mint_authority, + max_top_up: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to freeze account + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(ata, false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new_readonly(freeze_authority, true), + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + ], + data: Freeze {}.data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Frozen account {} via anchor program", ata); +} diff --git a/program-examples/anchor/programs/mint-to/Cargo.toml b/program-examples/anchor/programs/mint-to/Cargo.toml new file mode 100644 index 0000000..65d6646 --- /dev/null +++ b/program-examples/anchor/programs/mint-to/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-mint-to" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_mint_to" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs/mint-to/src/lib.rs b/program-examples/anchor/programs/mint-to/src/lib.rs new file mode 100644 index 0000000..d22b25e --- /dev/null +++ b/program-examples/anchor/programs/mint-to/src/lib.rs @@ -0,0 +1,38 @@ +#![allow(unexpected_cfgs)] + +use anchor_lang::prelude::*; +use light_token::instruction::MintToCpi; + +declare_id!("7SUgjNZYC1h89MuPVYkgEP5A4uYx5GFSjC7mzqMbN8U2"); + +#[program] +pub mod light_token_anchor_mint_to { + use super::*; + + pub fn mint_to(ctx: Context, amount: u64) -> Result<()> { + MintToCpi { + mint: ctx.accounts.mint.to_account_info(), + destination: ctx.accounts.destination.to_account_info(), + amount, + authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + max_top_up: None, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct MintToAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub authority: Signer<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} diff --git a/program-examples/anchor/programs/mint-to/tests/test.rs b/program-examples/anchor/programs/mint-to/tests/test.rs new file mode 100644 index 0000000..ce70811 --- /dev/null +++ b/program-examples/anchor/programs/mint-to/tests/test.rs @@ -0,0 +1,103 @@ +use anchor_lang::InstructionData; +use anchor_lang::system_program; +use light_client::indexer::{AddressWithTree, Indexer}; +use light_program_test::{LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_mint_to::{instruction::MintTo, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, derive_mint_compressed_address, + derive_token_ata, find_mint_address, LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test(flavor = "multi_thread")] +async fn test_mint_to() { + let config = ProgramTestConfig::new_v2(false, Some(vec![("light_token_anchor_mint_to", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + let amount = 1_000_000u64; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(mint, false), + AccountMeta::new(ata, false), + AccountMeta::new_readonly(mint_authority, true), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + ], + data: MintTo { amount }.data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Verify the account exists and has data + let ata_data = rpc.get_account(ata).await.unwrap().unwrap(); + assert!(!ata_data.data.is_empty(), "ATA account should have data"); +} diff --git a/program-examples/anchor/programs/revoke/Cargo.toml b/program-examples/anchor/programs/revoke/Cargo.toml new file mode 100644 index 0000000..3ca6657 --- /dev/null +++ b/program-examples/anchor/programs/revoke/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-revoke" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_revoke" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs/revoke/src/lib.rs b/program-examples/anchor/programs/revoke/src/lib.rs new file mode 100644 index 0000000..dae1349 --- /dev/null +++ b/program-examples/anchor/programs/revoke/src/lib.rs @@ -0,0 +1,32 @@ +#![allow(unexpected_cfgs)] + +use anchor_lang::prelude::*; +use light_token::instruction::RevokeCpi; + +declare_id!("Dvq3UxQUDEF3B6khoJTdcbm3UutDsvxkdkTvxoJvegfg"); + +#[program] +pub mod light_token_anchor_revoke { + use super::*; + + pub fn revoke(ctx: Context) -> Result<()> { + RevokeCpi { + token_account: ctx.accounts.token_account.to_account_info(), + owner: ctx.accounts.owner.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct RevokeAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub token_account: AccountInfo<'info>, + pub owner: Signer<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} diff --git a/program-examples/anchor/programs/revoke/tests/test.rs b/program-examples/anchor/programs/revoke/tests/test.rs new file mode 100644 index 0000000..0cfb40c --- /dev/null +++ b/program-examples/anchor/programs/revoke/tests/test.rs @@ -0,0 +1,132 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_revoke::{instruction::Revoke, ID}; +use light_token::instruction::{ + Approve, CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_revoke() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_revoke", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Approve delegate first using SDK + let delegate = Keypair::new(); + let approve_ix = Approve { + token_account: ata, + delegate: delegate.pubkey(), + owner: payer.pubkey(), + amount: 500_000, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[approve_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to revoke delegation + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(ata, false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + ], + data: Revoke {}.data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Revoked delegation via anchor program"); +} diff --git a/program-examples/anchor/programs/thaw/Cargo.toml b/program-examples/anchor/programs/thaw/Cargo.toml new file mode 100644 index 0000000..d114a52 --- /dev/null +++ b/program-examples/anchor/programs/thaw/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-thaw" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_thaw" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs/thaw/src/lib.rs b/program-examples/anchor/programs/thaw/src/lib.rs new file mode 100644 index 0000000..57c0de7 --- /dev/null +++ b/program-examples/anchor/programs/thaw/src/lib.rs @@ -0,0 +1,33 @@ +#![allow(unexpected_cfgs)] + +use anchor_lang::prelude::*; +use light_token::instruction::ThawCpi; + +declare_id!("FL4MY6v5mTqncytUeuPoGroo6DHSsmBCPirckygGbcip"); + +#[program] +pub mod light_token_anchor_thaw { + use super::*; + + pub fn thaw(ctx: Context) -> Result<()> { + ThawCpi { + token_account: ctx.accounts.token_account.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + freeze_authority: ctx.accounts.freeze_authority.to_account_info(), + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct ThawAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub token_account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + pub freeze_authority: Signer<'info>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} diff --git a/program-examples/anchor/programs/thaw/tests/test.rs b/program-examples/anchor/programs/thaw/tests/test.rs new file mode 100644 index 0000000..2205719 --- /dev/null +++ b/program-examples/anchor/programs/thaw/tests/test.rs @@ -0,0 +1,130 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_thaw::{instruction::Thaw, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, Freeze, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_thaw() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_thaw", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let freeze_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + // Create mint WITH freeze authority + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: Some(freeze_authority), + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: 1_000_000, + authority: mint_authority, + max_top_up: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Freeze account first using SDK + let freeze_ix = Freeze { + token_account: ata, + mint: mint_pda, + freeze_authority, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[freeze_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to thaw account + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(ata, false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new_readonly(freeze_authority, true), + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + ], + data: Thaw {}.data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Thawed account {} via anchor program", ata); +} diff --git a/program-examples/anchor/programs/transfer-interface/Cargo.toml b/program-examples/anchor/programs/transfer-interface/Cargo.toml new file mode 100644 index 0000000..7944b7d --- /dev/null +++ b/program-examples/anchor/programs/transfer-interface/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "light-token-anchor-transfer-interface" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_transfer_interface" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +light-token-types = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs/transfer-interface/src/lib.rs b/program-examples/anchor/programs/transfer-interface/src/lib.rs new file mode 100644 index 0000000..f7a7580 --- /dev/null +++ b/program-examples/anchor/programs/transfer-interface/src/lib.rs @@ -0,0 +1,44 @@ +#![allow(unexpected_cfgs)] + +use anchor_lang::prelude::*; +use light_token::instruction::TransferInterfaceCpi; + +declare_id!("ChkDqFsvNNT5CGrV2YCkmK4DiVSATnXc98mNozPbhC6u"); + +#[program] +pub mod light_token_anchor_transfer_interface { + use super::*; + + pub fn transfer(ctx: Context, amount: u64, decimals: u8) -> Result<()> { + TransferInterfaceCpi::new( + amount, + decimals, + ctx.accounts.source.to_account_info(), + ctx.accounts.destination.to_account_info(), + ctx.accounts.authority.to_account_info(), + ctx.accounts.payer.to_account_info(), + ctx.accounts.cpi_authority.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ) + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct TransferAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub source: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub authority: Signer<'info>, + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + pub cpi_authority: AccountInfo<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} diff --git a/program-examples/anchor/programs/transfer-interface/tests/test.rs b/program-examples/anchor/programs/transfer-interface/tests/test.rs new file mode 100644 index 0000000..e600b19 --- /dev/null +++ b/program-examples/anchor/programs/transfer-interface/tests/test.rs @@ -0,0 +1,146 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_transfer_interface::{instruction::Transfer, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, +}; +use light_token_types::CPI_AUTHORITY_PDA; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + pubkey::Pubkey, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_transfer() { + let config = ProgramTestConfig::new_v2( + true, + Some(vec![("light_token_anchor_transfer_interface", ID)]), + ); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Create source ATA + let (source_ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_source_ata = + CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_source_ata], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens to source + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: source_ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Create destination ATA for recipient + let recipient = Keypair::new(); + let (dest_ata, _) = derive_token_ata(&recipient.pubkey(), &mint_pda); + let create_dest_ata = + CreateAssociatedTokenAccount::new(payer.pubkey(), recipient.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_dest_ata], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to transfer tokens + let transfer_amount = 100_000u64; + let cpi_authority_pda = Pubkey::new_from_array(CPI_AUTHORITY_PDA); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(source_ata, false), + AccountMeta::new(dest_ata, false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new_readonly(cpi_authority_pda, false), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + ], + data: Transfer { + amount: transfer_amount, + decimals, + } + .data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Transferred {} tokens via anchor program", transfer_amount); +} diff --git a/program-examples/anchor/rust-toolchain.toml b/program-examples/anchor/rust-toolchain.toml new file mode 100644 index 0000000..43e5784 --- /dev/null +++ b/program-examples/anchor/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "1.90.0" +components = ["rustfmt", "clippy"] From 904ae217b49204c3da148f538e9fa2ab3b9a8a20 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Thu, 22 Jan 2026 01:03:10 +0000 Subject: [PATCH 02/23] fix: address PR #9 review comments - Remove AI index line from README.md - Delete keypair.json from create-token-account program - Simplify test println statements to only output transaction signature The transaction signature provides all necessary information for verification and is more useful than verbose descriptive text. --- program-examples/anchor/README.md | 2 -- program-examples/anchor/programs/approve/tests/test.rs | 8 ++------ program-examples/anchor/programs/burn/tests/test.rs | 4 ++-- program-examples/anchor/programs/close/tests/test.rs | 4 ++-- program-examples/anchor/programs/create-ata/tests/test.rs | 4 ++-- .../anchor/programs/create-mint/tests/test.rs | 4 ++-- .../anchor/programs/create-token-account/keypair.json | 1 - program-examples/anchor/programs/freeze/tests/test.rs | 4 ++-- program-examples/anchor/programs/revoke/tests/test.rs | 4 ++-- program-examples/anchor/programs/thaw/tests/test.rs | 4 ++-- .../anchor/programs/transfer-interface/tests/test.rs | 4 ++-- 11 files changed, 18 insertions(+), 25 deletions(-) delete mode 100644 program-examples/anchor/programs/create-token-account/keypair.json diff --git a/program-examples/anchor/README.md b/program-examples/anchor/README.md index a2b5f6c..8affceb 100644 --- a/program-examples/anchor/README.md +++ b/program-examples/anchor/README.md @@ -59,5 +59,3 @@ The Light Protocol programs are audited and deployed on Solana devnet and mainne ## Documentation Learn more [about Light-Token here](https://www.zkcompression.com/light-token/welcome). - -For your AI to index this repo: [AI Index](CLAUDE.md), [Flow Diagram](flow.mermaid), [State Machine Diagram](states.mermaid) diff --git a/program-examples/anchor/programs/approve/tests/test.rs b/program-examples/anchor/programs/approve/tests/test.rs index 70bbbca..fb7cfe0 100644 --- a/program-examples/anchor/programs/approve/tests/test.rs +++ b/program-examples/anchor/programs/approve/tests/test.rs @@ -113,13 +113,9 @@ async fn test_approve() { data: Approve { amount: approve_amount }.data(), }; - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) .await .unwrap(); - println!( - "Approved {} tokens to delegate {} via anchor program", - approve_amount, - delegate.pubkey() - ); + println!("Tx: {}", sig); } diff --git a/program-examples/anchor/programs/burn/tests/test.rs b/program-examples/anchor/programs/burn/tests/test.rs index b0cec86..9097a7b 100644 --- a/program-examples/anchor/programs/burn/tests/test.rs +++ b/program-examples/anchor/programs/burn/tests/test.rs @@ -109,9 +109,9 @@ async fn test_burn() { data: Burn { amount: burn_amount }.data(), }; - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) .await .unwrap(); - println!("Burned {} tokens via anchor program", burn_amount); + println!("Tx: {}", sig); } diff --git a/program-examples/anchor/programs/close/tests/test.rs b/program-examples/anchor/programs/close/tests/test.rs index 5204d97..7dd4fc2 100644 --- a/program-examples/anchor/programs/close/tests/test.rs +++ b/program-examples/anchor/programs/close/tests/test.rs @@ -96,9 +96,9 @@ async fn test_close() { data: CloseAccount {}.data(), }; - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) .await .unwrap(); - println!("Closed account {} via anchor program", ata); + println!("Tx: {}", sig); } diff --git a/program-examples/anchor/programs/create-ata/tests/test.rs b/program-examples/anchor/programs/create-ata/tests/test.rs index 6e1909d..b966fc3 100644 --- a/program-examples/anchor/programs/create-ata/tests/test.rs +++ b/program-examples/anchor/programs/create-ata/tests/test.rs @@ -98,9 +98,9 @@ async fn test_create_ata() { .data(), }; - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) .await .unwrap(); - println!("Created ATA {} via anchor program", ata); + println!("Tx: {}", sig); } diff --git a/program-examples/anchor/programs/create-mint/tests/test.rs b/program-examples/anchor/programs/create-mint/tests/test.rs index a753e6d..79a2fff 100644 --- a/program-examples/anchor/programs/create-mint/tests/test.rs +++ b/program-examples/anchor/programs/create-mint/tests/test.rs @@ -79,7 +79,7 @@ async fn test_create_mint() { .data(), }; - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &mint_seed]) + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &mint_seed]) .await .unwrap(); @@ -91,5 +91,5 @@ async fn test_create_mint() { .value; assert!(compressed_account.is_some(), "Compressed mint should exist"); - println!("Created mint {} via anchor program", mint_pda); + println!("Tx: {}", sig); } diff --git a/program-examples/anchor/programs/create-token-account/keypair.json b/program-examples/anchor/programs/create-token-account/keypair.json deleted file mode 100644 index 93e6326..0000000 --- a/program-examples/anchor/programs/create-token-account/keypair.json +++ /dev/null @@ -1 +0,0 @@ -[196,52,241,96,50,167,183,75,251,111,133,107,26,185,35,101,19,119,253,19,35,164,230,219,57,197,157,114,110,187,41,190,170,36,163,213,228,94,249,171,13,74,217,229,218,63,175,39,24,177,247,204,140,120,73,245,204,205,44,199,159,204,122,189] \ No newline at end of file diff --git a/program-examples/anchor/programs/freeze/tests/test.rs b/program-examples/anchor/programs/freeze/tests/test.rs index 84d3468..ad201a6 100644 --- a/program-examples/anchor/programs/freeze/tests/test.rs +++ b/program-examples/anchor/programs/freeze/tests/test.rs @@ -109,9 +109,9 @@ async fn test_freeze() { data: Freeze {}.data(), }; - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) .await .unwrap(); - println!("Frozen account {} via anchor program", ata); + println!("Tx: {}", sig); } diff --git a/program-examples/anchor/programs/revoke/tests/test.rs b/program-examples/anchor/programs/revoke/tests/test.rs index 0cfb40c..2f66b5c 100644 --- a/program-examples/anchor/programs/revoke/tests/test.rs +++ b/program-examples/anchor/programs/revoke/tests/test.rs @@ -124,9 +124,9 @@ async fn test_revoke() { data: Revoke {}.data(), }; - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) .await .unwrap(); - println!("Revoked delegation via anchor program"); + println!("Tx: {}", sig); } diff --git a/program-examples/anchor/programs/thaw/tests/test.rs b/program-examples/anchor/programs/thaw/tests/test.rs index 2205719..0daf196 100644 --- a/program-examples/anchor/programs/thaw/tests/test.rs +++ b/program-examples/anchor/programs/thaw/tests/test.rs @@ -122,9 +122,9 @@ async fn test_thaw() { data: Thaw {}.data(), }; - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) .await .unwrap(); - println!("Thawed account {} via anchor program", ata); + println!("Tx: {}", sig); } diff --git a/program-examples/anchor/programs/transfer-interface/tests/test.rs b/program-examples/anchor/programs/transfer-interface/tests/test.rs index e600b19..81393a6 100644 --- a/program-examples/anchor/programs/transfer-interface/tests/test.rs +++ b/program-examples/anchor/programs/transfer-interface/tests/test.rs @@ -138,9 +138,9 @@ async fn test_transfer() { .data(), }; - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) .await .unwrap(); - println!("Transferred {} tokens via anchor program", transfer_amount); + println!("Tx: {}", sig); } From e71da64e5d7f849a8100057e1fc1ef6625bb3dcd Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Fri, 23 Jan 2026 09:45:44 +0000 Subject: [PATCH 03/23] ts tests1 --- ...2Akwa8qLrMj9.light_token_anchor_freeze.log | 0 ...WD163VrhQAKD5q.light_token_anchor_burn.log | 0 ....light_token_anchor_transfer_interface.log | 0 ...1Wz17iYD6SND.light_token_anchor_revoke.log | 1 + ...Bdm3PZY8.light_token_anchor_create_ata.log | 1 + ...Le1jArkDQDB.light_token_anchor_mint_to.log | 1 + ...zXzvdbnVGES621.light_token_anchor_thaw.log | 1 + ...7gSc3sNjv1g.light_token_anchor_approve.log | 0 ...ight_token_anchor_create_token_account.log | 1 + ...aLALB6j.light_token_anchor_create_mint.log | 1 + ...taQ9LMsdB3BNG.light_token_anchor_close.log | 1 + program-examples/anchor/.claude/settings.json | 7 + program-examples/anchor/Anchor.toml | 2 +- program-examples/anchor/BURN_ARCHITECTURE.md | 215 +++++++++++++++ program-examples/anchor/Cargo.lock | 152 +++++------ program-examples/anchor/package.json | 33 +++ .../anchor/programs/create-mint/tests/test.rs | 4 +- .../anchor/programs/freeze/tests/test.rs | 3 +- program-examples/anchor/tests/approve.ts | 162 +++++++++++ program-examples/anchor/tests/burn.ts | 233 ++++++++++++++++ program-examples/anchor/tests/close.ts | 163 ++++++++++++ program-examples/anchor/tests/create-ata.ts | 251 ++++++++++++++++++ program-examples/anchor/tests/create-mint.ts | 235 ++++++++++++++++ .../anchor/tests/create-token-account.ts | 202 ++++++++++++++ program-examples/anchor/tests/freeze.ts | 156 +++++++++++ program-examples/anchor/tests/mint-to.ts | 148 +++++++++++ program-examples/anchor/tests/revoke.ts | 213 +++++++++++++++ .../anchor/tests/shared/constants.ts | 78 ++++++ program-examples/anchor/tests/shared/index.ts | 14 + .../anchor/tests/shared/mint-helpers.ts | 183 +++++++++++++ program-examples/anchor/tests/shared/setup.ts | 107 ++++++++ program-examples/anchor/tests/thaw.ts | 174 ++++++++++++ program-examples/anchor/tests/transfer.ts | 233 ++++++++++++++++ program-examples/anchor/tsconfig.json | 29 ++ 34 files changed, 2924 insertions(+), 80 deletions(-) create mode 100644 program-examples/anchor/.anchor/program-logs/4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9.light_token_anchor_freeze.log create mode 100644 program-examples/anchor/.anchor/program-logs/5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q.light_token_anchor_burn.log create mode 100644 program-examples/anchor/.anchor/program-logs/7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6.light_token_anchor_transfer_interface.log create mode 100644 program-examples/anchor/.anchor/program-logs/7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND.light_token_anchor_revoke.log create mode 100644 program-examples/anchor/.anchor/program-logs/8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8.light_token_anchor_create_ata.log create mode 100644 program-examples/anchor/.anchor/program-logs/DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB.light_token_anchor_mint_to.log create mode 100644 program-examples/anchor/.anchor/program-logs/DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621.light_token_anchor_thaw.log create mode 100644 program-examples/anchor/.anchor/program-logs/DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g.light_token_anchor_approve.log create mode 100644 program-examples/anchor/.anchor/program-logs/FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn.light_token_anchor_create_token_account.log create mode 100644 program-examples/anchor/.anchor/program-logs/JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j.light_token_anchor_create_mint.log create mode 100644 program-examples/anchor/.anchor/program-logs/gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG.light_token_anchor_close.log create mode 100644 program-examples/anchor/.claude/settings.json create mode 100644 program-examples/anchor/BURN_ARCHITECTURE.md create mode 100644 program-examples/anchor/package.json create mode 100644 program-examples/anchor/tests/approve.ts create mode 100644 program-examples/anchor/tests/burn.ts create mode 100644 program-examples/anchor/tests/close.ts create mode 100644 program-examples/anchor/tests/create-ata.ts create mode 100644 program-examples/anchor/tests/create-mint.ts create mode 100644 program-examples/anchor/tests/create-token-account.ts create mode 100644 program-examples/anchor/tests/freeze.ts create mode 100644 program-examples/anchor/tests/mint-to.ts create mode 100644 program-examples/anchor/tests/revoke.ts create mode 100644 program-examples/anchor/tests/shared/constants.ts create mode 100644 program-examples/anchor/tests/shared/index.ts create mode 100644 program-examples/anchor/tests/shared/mint-helpers.ts create mode 100644 program-examples/anchor/tests/shared/setup.ts create mode 100644 program-examples/anchor/tests/thaw.ts create mode 100644 program-examples/anchor/tests/transfer.ts create mode 100644 program-examples/anchor/tsconfig.json diff --git a/program-examples/anchor/.anchor/program-logs/4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9.light_token_anchor_freeze.log b/program-examples/anchor/.anchor/program-logs/4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9.light_token_anchor_freeze.log new file mode 100644 index 0000000..e69de29 diff --git a/program-examples/anchor/.anchor/program-logs/5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q.light_token_anchor_burn.log b/program-examples/anchor/.anchor/program-logs/5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q.light_token_anchor_burn.log new file mode 100644 index 0000000..e69de29 diff --git a/program-examples/anchor/.anchor/program-logs/7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6.light_token_anchor_transfer_interface.log b/program-examples/anchor/.anchor/program-logs/7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6.light_token_anchor_transfer_interface.log new file mode 100644 index 0000000..e69de29 diff --git a/program-examples/anchor/.anchor/program-logs/7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND.light_token_anchor_revoke.log b/program-examples/anchor/.anchor/program-logs/7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND.light_token_anchor_revoke.log new file mode 100644 index 0000000..e961b71 --- /dev/null +++ b/program-examples/anchor/.anchor/program-logs/7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND.light_token_anchor_revoke.log @@ -0,0 +1 @@ +Streaming transaction logs mentioning 7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8.light_token_anchor_create_ata.log b/program-examples/anchor/.anchor/program-logs/8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8.light_token_anchor_create_ata.log new file mode 100644 index 0000000..00d312b --- /dev/null +++ b/program-examples/anchor/.anchor/program-logs/8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8.light_token_anchor_create_ata.log @@ -0,0 +1 @@ +Streaming transaction logs mentioning 8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB.light_token_anchor_mint_to.log b/program-examples/anchor/.anchor/program-logs/DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB.light_token_anchor_mint_to.log new file mode 100644 index 0000000..b9e15a5 --- /dev/null +++ b/program-examples/anchor/.anchor/program-logs/DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB.light_token_anchor_mint_to.log @@ -0,0 +1 @@ +Streaming transaction logs mentioning DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621.light_token_anchor_thaw.log b/program-examples/anchor/.anchor/program-logs/DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621.light_token_anchor_thaw.log new file mode 100644 index 0000000..7a12946 --- /dev/null +++ b/program-examples/anchor/.anchor/program-logs/DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621.light_token_anchor_thaw.log @@ -0,0 +1 @@ +Streaming transaction logs mentioning DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g.light_token_anchor_approve.log b/program-examples/anchor/.anchor/program-logs/DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g.light_token_anchor_approve.log new file mode 100644 index 0000000..e69de29 diff --git a/program-examples/anchor/.anchor/program-logs/FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn.light_token_anchor_create_token_account.log b/program-examples/anchor/.anchor/program-logs/FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn.light_token_anchor_create_token_account.log new file mode 100644 index 0000000..9125706 --- /dev/null +++ b/program-examples/anchor/.anchor/program-logs/FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn.light_token_anchor_create_token_account.log @@ -0,0 +1 @@ +Streaming transaction logs mentioning FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j.light_token_anchor_create_mint.log b/program-examples/anchor/.anchor/program-logs/JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j.light_token_anchor_create_mint.log new file mode 100644 index 0000000..f024802 --- /dev/null +++ b/program-examples/anchor/.anchor/program-logs/JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j.light_token_anchor_create_mint.log @@ -0,0 +1 @@ +Streaming transaction logs mentioning JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG.light_token_anchor_close.log b/program-examples/anchor/.anchor/program-logs/gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG.light_token_anchor_close.log new file mode 100644 index 0000000..b249ef9 --- /dev/null +++ b/program-examples/anchor/.anchor/program-logs/gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG.light_token_anchor_close.log @@ -0,0 +1 @@ +Streaming transaction logs mentioning gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG. Confirmed commitment diff --git a/program-examples/anchor/.claude/settings.json b/program-examples/anchor/.claude/settings.json new file mode 100644 index 0000000..9914e0d --- /dev/null +++ b/program-examples/anchor/.claude/settings.json @@ -0,0 +1,7 @@ +{ + "permissions": { + "allow": [ + "Bash(rustc:*)" + ] + } +} diff --git a/program-examples/anchor/Anchor.toml b/program-examples/anchor/Anchor.toml index 089095b..f5d1afd 100644 --- a/program-examples/anchor/Anchor.toml +++ b/program-examples/anchor/Anchor.toml @@ -33,4 +33,4 @@ cluster = "Localnet" wallet = "~/.config/solana/id.json" [scripts] -test = "ts-mocha -p ./tsconfig.json -t 1000000 ts-tests/**/*.ts" +test = "ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" diff --git a/program-examples/anchor/BURN_ARCHITECTURE.md b/program-examples/anchor/BURN_ARCHITECTURE.md new file mode 100644 index 0000000..384ea2b --- /dev/null +++ b/program-examples/anchor/BURN_ARCHITECTURE.md @@ -0,0 +1,215 @@ +# Burn Program Architecture Analysis + +## Executive Summary + +The burn Anchor program delegates to Light Protocol's `BurnCpi` instruction to reduce token account balances. Full end-to-end testing requires Rust because: + +1. The burn CPI operates on **decompressed Mint PDAs** (Solana accounts) +2. The TypeScript SDK only provides APIs to create **light/compressed mints** (state trees) +3. This is by design - the TypeScript SDK is optimized for compressed token operations + +## Core Technical Issue + +### Account Type Mismatch + +The burn instruction requires these account types: + +```rust +#[derive(Accounts)] +pub struct BurnAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub source: AccountInfo<'info>, // Decompressed token account (ATA) + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub mint: AccountInfo<'info>, // Decompressed Mint PDA ← KEY REQUIREMENT + #[account(mut)] + pub authority: Signer<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} +``` + +The `mint` account **must be a decompressed Mint PDA**, not a light/compressed mint. + +### Mint Type Definitions + +**Light/Compressed Mint** +- Storage: Merkle tree in state tree +- Created by: TypeScript `createMintInterface()` +- Represented as: `PublicKey` pointing to tree +- Use case: Compressed token operations +- Can be used with: `transfer()`, `decompress()` + +**Decompressed Mint PDA** +- Storage: Solana ledger (rent-exempt account) +- Created by: Rust `light_token::instruction::CreateMint` +- Represented as: `PublicKey` of account on-chain +- Use case: Traditional token operations +- Can be used with: `BurnCpi`, `MintTo`, `CreateAssociatedTokenAccount` + +## The Rust Solution + +The Rust test setup (`shared.rs`) creates both account types: + +```rust +// Derive the Mint PDA - this is the decompressed account needed by burn +let (mint_pda, bump) = light_token::instruction::find_mint_address(&mint_seed.pubkey()); + +// Create both the compressed mint AND the Mint PDA +let create_mint_builder = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, +); +let instruction = create_mint_builder.instruction().unwrap(); + +// This single instruction creates: +// 1. A compressed mint in the state tree +// 2. A Mint PDA on the Solana ledger +rpc.create_and_send_transaction(&[instruction], &payer.pubkey(), &[payer, &mint_seed]) + .await + .unwrap(); +``` + +Key insight: **`CreateMint` creates both the compressed mint AND the Mint PDA in a single transaction.** + +## TypeScript SDK Limitation + +The `@lightprotocol/compressed-token` SDK v0.22.1-alpha.9 provides: + +```typescript +// Available - creates light/compressed mint +const { mint } = await createMintInterface(rpc, payer, payer, null, 9); + +// Available - creates compressed token account +await createAtaInterface(rpc, payer, mint, recipient.publicKey); + +// Available - transfers compressed tokens +await transfer(rpc, payer, mint, amount, owner, destination); + +// NOT AVAILABLE - no way to create Mint PDA +// The SDK doesn't expose methods to: +// 1. Create decompressed Mint PDAs +// 2. Create decompressed token accounts (ATAs) +// 3. Mint to decompressed accounts +``` + +This is intentional. The TypeScript SDK is designed for: +- Client-side token operations +- Compressed token workflows +- State tree interactions + +### Why This Design? + +1. **Solana account creation is expensive** - Rust SDK handles this for contract operations +2. **Compressed tokens are the primary use case** - TypeScript focuses here +3. **On-chain setup vs client operations** - Different SDKs for different purposes +4. **Complexity management** - TypeScript SDK keeps the surface area small + +## How to Create Decompressed Mints (If Needed) + +If you need decompressed Mint PDAs from TypeScript, you would need to: + +1. Build a Rust helper program that creates them +2. Call it from TypeScript via RPC +3. Wait for the transaction to complete +4. Query back the Mint PDA address + +This is impractical compared to using Rust directly for integration testing. + +## Program Implementation + +The burn program itself is straightforward: + +```rust +pub fn burn(ctx: Context, amount: u64) -> Result<()> { + BurnCpi { + source: ctx.accounts.source.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + amount, + authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + max_top_up: None, + fee_payer: None, + } + .invoke()?; + Ok(()) +} +``` + +It delegates entirely to Light Protocol's burn implementation. The testing bottleneck is not the program logic but the account setup required to call it. + +## Testing Strategy + +### Rust Integration Tests ✓ +```bash +cargo test-sbf +``` + +- Sets up Mint PDA + compressed mint +- Creates decompressed token accounts +- Mints tokens +- Calls burn program +- Verifies results + +**Status:** FULLY TESTED + +### TypeScript Demonstration Tests ✓ +```bash +npm run test:burn +``` + +- Documents architecture +- Explains account type requirements +- Points to full Rust tests +- Verifies program compilation + +**Status:** PROGRAM VERIFICATION ONLY + +## Comparison with Other Programs + +| Program | Account Type | Test Approach | Why | +|---------|--------------|---------------|-----| +| CreateMint | Compressed | Rust + TS | TS can demo SDK patterns, Rust tests full flow | +| Approve | Compressed | Rust | Requires decompressed accounts | +| Burn | Compressed | Rust | Requires decompressed Mint PDA | +| Freeze | Compressed | Rust | Requires decompressed accounts | +| Transfer Interface | Compressed | Rust | Requires decompressed accounts | + +The pattern is clear: **Operations on decompressed accounts require Rust testing**. + +## Future SDK Enhancements + +If the TypeScript SDK adds: +1. `createDecompressedMint()` - Create Mint PDA +2. `createDecompressedAta()` - Create token account +3. `mintToDecompressed()` - Mint to token account +4. `burnDecompressed()` - Burn from token account + +Then full TypeScript testing could be added. However, this would require significant SDK changes and may not be a priority given: +- Compressed tokens are the primary use case +- Rust SDK already handles this well +- Mixing compression types increases complexity + +## Recommendation + +**Status: WORKING AS DESIGNED** + +The current architecture correctly uses: +- ✓ Rust for full integration testing +- ✓ TypeScript for SDK demonstrations +- ✓ Documentation to explain the separation + +No changes needed. The test structure accurately reflects Light Protocol's design principles. + +## References + +- Burn Program: `/programs/burn/` +- Rust Tests: `/programs/burn/tests/test.rs` +- TypeScript Test: `/ts-tests/burn.ts` +- SDK Docs: https://www.zkcompression.com/light-token/cookbook/create-mint +- Full Testing: Run `cargo test-sbf` diff --git a/program-examples/anchor/Cargo.lock b/program-examples/anchor/Cargo.lock index eba225c..df11b3f 100644 --- a/program-examples/anchor/Cargo.lock +++ b/program-examples/anchor/Cargo.lock @@ -920,9 +920,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.53" +version = "1.2.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932" +checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583" dependencies = [ "find-msvc-tools", "jobserver", @@ -2428,7 +2428,7 @@ dependencies = [ "solana-program-error", "solana-pubkey", "solana-sysvar", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2461,7 +2461,7 @@ dependencies = [ "solana-program-error", "solana-pubkey", "solana-sysvar", - "thiserror 2.0.17", + "thiserror 2.0.18", "zerocopy", ] @@ -2475,7 +2475,7 @@ dependencies = [ "num-bigint 0.4.6", "solana-nostd-keccak", "solana-program-error", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2540,7 +2540,7 @@ dependencies = [ "solana-transaction-status-client-types", "spl-pod", "spl-token-2022-interface", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", ] @@ -2556,7 +2556,7 @@ dependencies = [ "light-macros", "light-program-profiler", "light-zero-copy 0.5.0", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "zerocopy", ] @@ -2578,7 +2578,7 @@ dependencies = [ "solana-msg", "solana-program-error", "solana-pubkey", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "zerocopy", ] @@ -2602,7 +2602,7 @@ dependencies = [ "light-zero-copy 0.6.0", "pinocchio-pubkey", "solana-pubkey", - "thiserror 2.0.17", + "thiserror 2.0.18", "zerocopy", ] @@ -2617,7 +2617,7 @@ dependencies = [ "light-hasher", "memoffset", "solana-program-error", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2630,7 +2630,7 @@ dependencies = [ "light-compressed-account 0.8.0", "light-hasher", "light-zero-copy 0.6.0", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2647,7 +2647,7 @@ dependencies = [ "sha2 0.10.9", "sha3", "solana-program-error", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", ] @@ -2660,7 +2660,7 @@ dependencies = [ "light-hasher", "num-bigint 0.4.6", "num-traits", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2676,7 +2676,7 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "solana-program-error", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2705,7 +2705,7 @@ dependencies = [ "solana-msg", "solana-program-error", "solana-sysvar", - "thiserror 2.0.17", + "thiserror 2.0.18", "zerocopy", ] @@ -2719,7 +2719,7 @@ dependencies = [ "light-indexed-array", "num-bigint 0.4.6", "num-traits", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2837,7 +2837,7 @@ dependencies = [ "serde", "serde_json", "solana-bn254", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", ] @@ -2871,7 +2871,7 @@ dependencies = [ "solana-pubkey", "solana-system-interface", "solana-sysvar", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2902,7 +2902,7 @@ dependencies = [ "light-hasher", "light-macros", "solana-msg", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2915,7 +2915,7 @@ dependencies = [ "light-indexed-array", "num-bigint 0.4.6", "num-traits", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2946,7 +2946,7 @@ dependencies = [ "solana-program-error", "solana-pubkey", "spl-pod", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3138,7 +3138,7 @@ dependencies = [ "solana-pubkey", "spl-pod", "spl-token-2022 7.0.0", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "zerocopy", ] @@ -3156,7 +3156,7 @@ dependencies = [ "light-macros", "light-sdk-types", "solana-msg", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3167,7 +3167,7 @@ checksum = "0f35f47736be493b60d8b56ef0c8e94afd6a99efafebb257f62b0b545e9aacab" dependencies = [ "groth16-solana", "light-compressed-account 0.8.0", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3287,7 +3287,7 @@ dependencies = [ "solana-transaction-context", "solana-transaction-error", "solana-vote-program", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3836,9 +3836,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.105" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -3877,7 +3877,7 @@ dependencies = [ "rustc-hash", "rustls 0.23.36", "socket2 0.6.1", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", "web-time", @@ -3898,7 +3898,7 @@ dependencies = [ "rustls 0.23.36", "rustls-pki-types", "slab", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "tracing", "web-time", @@ -3920,9 +3920,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.43" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" dependencies = [ "proc-macro2", ] @@ -4723,7 +4723,7 @@ dependencies = [ "spl-token-2022 8.0.1", "spl-token-group-interface 0.6.0", "spl-token-metadata-interface 0.7.0", - "thiserror 2.0.17", + "thiserror 2.0.18", "zstd", ] @@ -4805,7 +4805,7 @@ dependencies = [ "solana-transaction-context", "solana-transaction-error", "tarpc", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-serde", ] @@ -4877,7 +4877,7 @@ dependencies = [ "ark-serialize 0.4.2", "bytemuck", "solana-define-syscall", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -4934,7 +4934,7 @@ dependencies = [ "solana-timings", "solana-transaction-context", "solana-type-overrides", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -5060,7 +5060,7 @@ dependencies = [ "solana-sdk-ids", "solana-svm-transaction", "solana-transaction-error", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -5123,7 +5123,7 @@ dependencies = [ "curve25519-dalek 4.1.3", "solana-define-syscall", "subtle", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -5233,7 +5233,7 @@ dependencies = [ "solana-pubkey", "solana-sdk-ids", "solana-system-interface", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -5584,7 +5584,7 @@ dependencies = [ "solana-cluster-type", "solana-sha256-hasher", "solana-time-utils", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -5692,7 +5692,7 @@ dependencies = [ "ark-bn254 0.4.0", "light-poseidon 0.2.0", "solana-define-syscall", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -5809,7 +5809,7 @@ dependencies = [ "solana-sysvar", "solana-sysvar-id", "solana-vote-interface", - "thiserror 2.0.17", + "thiserror 2.0.18", "wasm-bindgen", ] @@ -5905,7 +5905,7 @@ dependencies = [ "solana-timings", "solana-transaction-context", "solana-type-overrides", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -6065,7 +6065,7 @@ dependencies = [ "solana-signer", "solana-transaction-error", "solana-transaction-status-client-types", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -6091,7 +6091,7 @@ dependencies = [ "solana-transaction-status-client-types", "solana-version", "spl-generic-token", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -6113,7 +6113,7 @@ dependencies = [ "log", "rand 0.8.5", "rustc-demangle", - "thiserror 2.0.17", + "thiserror 2.0.18", "winapi", ] @@ -6184,7 +6184,7 @@ dependencies = [ "solana-transaction-context", "solana-transaction-error", "solana-validator-exit", - "thiserror 2.0.17", + "thiserror 2.0.18", "wasm-bindgen", ] @@ -6237,7 +6237,7 @@ dependencies = [ "borsh 1.6.0", "libsecp256k1", "solana-define-syscall", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -6705,7 +6705,7 @@ dependencies = [ "spl-token-2022 8.0.1", "spl-token-group-interface 0.6.0", "spl-token-metadata-interface 0.7.0", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -6728,7 +6728,7 @@ dependencies = [ "solana-transaction", "solana-transaction-context", "solana-transaction-error", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -6816,7 +6816,7 @@ dependencies = [ "solana-transaction", "solana-transaction-context", "solana-vote-interface", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -6867,7 +6867,7 @@ dependencies = [ "solana-signature", "solana-signer", "subtle", - "thiserror 2.0.17", + "thiserror 2.0.18", "wasm-bindgen", "zeroize", ] @@ -6920,7 +6920,7 @@ dependencies = [ "solana-signature", "solana-signer", "subtle", - "thiserror 2.0.17", + "thiserror 2.0.18", "zeroize", ] @@ -6937,7 +6937,7 @@ dependencies = [ "spl-associated-token-account-client", "spl-token 8.0.0", "spl-token-2022 8.0.1", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7063,7 +7063,7 @@ dependencies = [ "solana-program-option", "solana-pubkey", "solana-zk-sdk", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7091,7 +7091,7 @@ dependencies = [ "solana-msg", "solana-program-error", "spl-program-error-derive 0.5.0", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7159,7 +7159,7 @@ dependencies = [ "spl-pod", "spl-program-error 0.7.0", "spl-type-length-value 0.8.0", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7202,7 +7202,7 @@ dependencies = [ "solana-rent", "solana-sdk-ids", "solana-sysvar", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7230,7 +7230,7 @@ dependencies = [ "spl-token-metadata-interface 0.6.0", "spl-transfer-hook-interface 0.9.0", "spl-type-length-value 0.7.0", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7274,7 +7274,7 @@ dependencies = [ "spl-token-metadata-interface 0.7.0", "spl-transfer-hook-interface 0.10.0", "spl-type-length-value 0.8.0", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7304,7 +7304,7 @@ dependencies = [ "spl-token-group-interface 0.6.0", "spl-token-metadata-interface 0.7.0", "spl-type-length-value 0.8.0", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7342,7 +7342,7 @@ dependencies = [ "solana-program", "solana-zk-sdk", "spl-pod", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7362,7 +7362,7 @@ dependencies = [ "solana-sdk-ids", "solana-zk-sdk", "spl-pod", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7382,7 +7382,7 @@ dependencies = [ "solana-sdk-ids", "solana-zk-sdk", "spl-pod", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7393,7 +7393,7 @@ checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" dependencies = [ "curve25519-dalek 4.1.3", "solana-zk-sdk", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7404,7 +7404,7 @@ checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" dependencies = [ "curve25519-dalek 4.1.3", "solana-zk-sdk", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7442,7 +7442,7 @@ dependencies = [ "solana-pubkey", "spl-discriminator", "spl-pod", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7484,7 +7484,7 @@ dependencies = [ "spl-discriminator", "spl-pod", "spl-type-length-value 0.8.0", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7534,7 +7534,7 @@ dependencies = [ "spl-program-error 0.7.0", "spl-tlv-account-resolution 0.10.0", "spl-type-length-value 0.8.0", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7570,7 +7570,7 @@ dependencies = [ "solana-program-error", "spl-discriminator", "spl-pod", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7794,11 +7794,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.18", ] [[package]] @@ -7814,9 +7814,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", @@ -8917,9 +8917,9 @@ dependencies = [ [[package]] name = "zmij" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd8f3f50b848df28f887acb68e41201b5aea6bc8a8dacc00fb40635ff9a72fea" +checksum = "dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65" [[package]] name = "zstd" diff --git a/program-examples/anchor/package.json b/program-examples/anchor/package.json new file mode 100644 index 0000000..4aca32a --- /dev/null +++ b/program-examples/anchor/package.json @@ -0,0 +1,33 @@ +{ + "name": "light-token-anchor-tests", + "type": "module", + "dependencies": { + "@coral-xyz/anchor": "0.31.1", + "@lightprotocol/compressed-token": "0.22.1-alpha.9", + "@lightprotocol/stateless.js": "0.22.1-alpha.8", + "@solana/web3.js": "^1.98.0", + "dotenv": "^16.0.0" + }, + "devDependencies": { + "@types/chai": "^4.3.0", + "@types/mocha": "^10.0.0", + "chai": "^4.3.0", + "ts-mocha": "^10.1.0", + "tsx": "^4.0.0", + "typescript": "^5.0.0" + }, + "scripts": { + "test": "ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts", + "test:approve": "ts-mocha -p ./tsconfig.json -t 1000000 tests/approve.ts", + "test:burn": "ts-mocha -p ./tsconfig.json -t 1000000 tests/burn.ts", + "test:close": "ts-mocha -p ./tsconfig.json -t 1000000 tests/close.ts", + "test:create-ata": "ts-mocha -p ./tsconfig.json -t 1000000 tests/create-ata.ts", + "test:create-mint": "ts-mocha -p ./tsconfig.json -t 1000000 tests/create-mint.ts", + "test:create-token-account": "ts-mocha -p ./tsconfig.json -t 1000000 tests/create-token-account.ts", + "test:freeze": "ts-mocha -p ./tsconfig.json -t 1000000 tests/freeze.ts", + "test:mint-to": "ts-mocha -p ./tsconfig.json -t 1000000 tests/mint-to.ts", + "test:revoke": "ts-mocha -p ./tsconfig.json -t 1000000 tests/revoke.ts", + "test:thaw": "ts-mocha -p ./tsconfig.json -t 1000000 tests/thaw.ts", + "test:transfer": "ts-mocha -p ./tsconfig.json -t 1000000 tests/transfer.ts" + } +} diff --git a/program-examples/anchor/programs/create-mint/tests/test.rs b/program-examples/anchor/programs/create-mint/tests/test.rs index 79a2fff..09ea612 100644 --- a/program-examples/anchor/programs/create-mint/tests/test.rs +++ b/program-examples/anchor/programs/create-mint/tests/test.rs @@ -79,11 +79,11 @@ async fn test_create_mint() { .data(), }; - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &mint_seed]) + let sig = rpc + .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &mint_seed]) .await .unwrap(); - // Verify mint was created let compressed_account = rpc .get_compressed_account(compression_address, None) .await diff --git a/program-examples/anchor/programs/freeze/tests/test.rs b/program-examples/anchor/programs/freeze/tests/test.rs index ad201a6..7c222e4 100644 --- a/program-examples/anchor/programs/freeze/tests/test.rs +++ b/program-examples/anchor/programs/freeze/tests/test.rs @@ -109,7 +109,8 @@ async fn test_freeze() { data: Freeze {}.data(), }; - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + let sig = rpc + .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) .await .unwrap(); diff --git a/program-examples/anchor/tests/approve.ts b/program-examples/anchor/tests/approve.ts new file mode 100644 index 0000000..1c43a0b --- /dev/null +++ b/program-examples/anchor/tests/approve.ts @@ -0,0 +1,162 @@ +import * as anchor from "@coral-xyz/anchor"; +import { Program, BN } from "@coral-xyz/anchor"; +import { LightTokenAnchorApprove } from "../target/types/light_token_anchor_approve"; +import { + Keypair, + PublicKey, + SystemProgram, +} from "@solana/web3.js"; +import { + createRpc, + Rpc, + sleep, + selectStateTreeInfo, +} from "@lightprotocol/stateless.js"; +import { + createMintInterface, + createAssociatedTokenAccount, + getAssociatedTokenAddressSync, + mintTo, +} from "@lightprotocol/compressed-token"; +import * as assert from "assert"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +const path = require("path"); +const os = require("os"); + +const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); +process.env.ANCHOR_WALLET = anchorWalletPath; + +const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( + "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" +); + +describe("approve", () => { + const program = anchor.workspace + .LightTokenAnchorApprove as Program; + + let rpc: Rpc; + let payer: Keypair; + let mint: PublicKey; + let ata: PublicKey; + + before(async () => { + payer = Keypair.fromSecretKey( + new Uint8Array( + JSON.parse( + readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") + ) + ) + ); + + rpc = createRpc( + "http://127.0.0.1:8899", + "http://127.0.0.1:8784", + "http://127.0.0.1:3001", + { commitment: "confirmed" } + ); + + // Airdrop SOL to payer + await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); + await sleep(2000); + + // Create compressed mint via SDK + const mintSigner = Keypair.generate(); + const { mint: createdMint, transactionSignature } = await createMintInterface( + rpc, + payer, + payer, + null, + 9, + mintSigner, + { commitment: "confirmed" } + ); + mint = createdMint; + console.log("Mint created:", mint.toBase58()); + console.log("Mint tx:", transactionSignature); + + await sleep(2000); + + // Create ATA via SDK + const stateTreeInfos = await rpc.getStateTreeInfos(); + const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); + + await createAssociatedTokenAccount( + rpc, + payer, + mint, + payer.publicKey, + stateTreeInfo, + 3, + { commitment: "confirmed" } + ); + + ata = getAssociatedTokenAddressSync(mint, payer.publicKey); + console.log("ATA created:", ata.toBase58()); + + // Mint tokens so we have something to approve + const mintAmount = new BN(1_000_000); + await mintTo(rpc, payer, mint, ata, payer, mintAmount); + console.log("Minted tokens:", mintAmount.toString()); + + // Wait for indexer + const slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + }); + + it("approves a delegate for compressed tokens via anchor program", async () => { + // Create a delegate keypair + const delegate = Keypair.generate(); + const approveAmount = new BN(500_000); + + const tx = await program.methods + .approve(approveAmount) + .accounts({ + tokenAccount: ata, + delegate: delegate.publicKey, + owner: payer.publicKey, + systemProgram: SystemProgram.programId, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer]) + .rpc(); + + console.log("Approve tx:", tx); + + // Wait for indexer to process + await sleep(3000); + const slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + + // Verify the delegation was set by checking the token account + const compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + + assert.ok( + compressedAccounts.items.length > 0, + "Should have at least one compressed token account" + ); + + // Find the account with the delegate set + const accountWithDelegate = compressedAccounts.items.find( + (acc) => acc.parsed.delegate !== null + ); + + assert.ok( + accountWithDelegate, + "Should have a token account with delegate set" + ); + + assert.ok( + accountWithDelegate.parsed.delegate?.equals(delegate.publicKey), + "Delegate should match the approved delegate" + ); + + console.log("Delegation verified:"); + console.log(" Delegate:", accountWithDelegate.parsed.delegate?.toBase58()); + console.log(" Delegated amount:", accountWithDelegate.parsed.delegatedAmount?.toString()); + }); +}); diff --git a/program-examples/anchor/tests/burn.ts b/program-examples/anchor/tests/burn.ts new file mode 100644 index 0000000..c74ec49 --- /dev/null +++ b/program-examples/anchor/tests/burn.ts @@ -0,0 +1,233 @@ +import * as anchor from "@coral-xyz/anchor"; +import { Program, BN } from "@coral-xyz/anchor"; +import { LightTokenAnchorBurn } from "../target/types/light_token_anchor_burn"; +import { + Keypair, + PublicKey, +} from "@solana/web3.js"; +import { + createRpc, + Rpc, + sleep, + selectStateTreeInfo, +} from "@lightprotocol/stateless.js"; +import { + createMintInterface, + createAssociatedTokenAccount, + getAssociatedTokenAddressSync, + mintToCompressed, +} from "@lightprotocol/compressed-token"; +import * as assert from "assert"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +const path = require("path"); +const os = require("os"); + +const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); +process.env.ANCHOR_WALLET = anchorWalletPath; + +const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( + "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" +); + +describe("burn", () => { + const program = anchor.workspace + .LightTokenAnchorBurn as Program; + + let rpc: Rpc; + let payer: Keypair; + let mint: PublicKey; + let ata: PublicKey; + const mintAmount = 1_000_000; + + before(async () => { + payer = Keypair.fromSecretKey( + new Uint8Array( + JSON.parse( + readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") + ) + ) + ); + + rpc = createRpc( + "http://127.0.0.1:8899", + "http://127.0.0.1:8784", + "http://127.0.0.1:3001", + { commitment: "confirmed" } + ); + + // Airdrop SOL to payer + await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); + await sleep(2000); + + // Create compressed mint via SDK + const mintSigner = Keypair.generate(); + const { mint: createdMint, transactionSignature } = await createMintInterface( + rpc, + payer, + payer, + null, + 9, + mintSigner, + { commitment: "confirmed" } + ); + mint = createdMint; + console.log("Mint created:", mint.toBase58()); + console.log("Mint tx:", transactionSignature); + + await sleep(2000); + + // Create ATA via SDK + const stateTreeInfos = await rpc.getStateTreeInfos(); + const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); + + await createAssociatedTokenAccount( + rpc, + payer, + mint, + payer.publicKey, + stateTreeInfo, + 3, + { commitment: "confirmed" } + ); + + ata = getAssociatedTokenAddressSync(mint, payer.publicKey); + console.log("ATA created:", ata.toBase58()); + + await sleep(2000); + + // Mint tokens to the ATA + await mintToCompressed( + rpc, + payer, + mint, + payer, + [{ recipient: payer.publicKey, amount: mintAmount }], + stateTreeInfo, + 3, + { commitment: "confirmed" } + ); + console.log("Minted", mintAmount, "tokens to ATA"); + + // Wait for indexer + const slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + }); + + it("burns compressed tokens via anchor program", async () => { + // Verify initial balance + const initialAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + + const initialBalance = initialAccounts.items.reduce( + (sum, acc) => sum + Number(acc.parsed.amount), + 0 + ); + + console.log("Initial balance:", initialBalance); + assert.strictEqual( + initialBalance, + mintAmount, + `Initial balance should be ${mintAmount}` + ); + + // Burn tokens via anchor program + const burnAmount = new BN(250_000); + + const tx = await program.methods + .burn(burnAmount) + .accounts({ + source: ata, + mint: mint, + authority: payer.publicKey, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer]) + .rpc(); + + console.log("Burn tx:", tx); + + // Wait for indexer to process + await sleep(3000); + const slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + + // Verify token balance decreased + const finalAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + + const finalBalance = finalAccounts.items.reduce( + (sum, acc) => sum + Number(acc.parsed.amount), + 0 + ); + + console.log("Final balance:", finalBalance); + + const expectedBalance = mintAmount - burnAmount.toNumber(); + assert.strictEqual( + finalBalance, + expectedBalance, + `Token balance should be ${expectedBalance} after burning ${burnAmount.toNumber()}` + ); + }); + + it("burns all remaining tokens", async () => { + // Get current balance + const currentAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + + const currentBalance = currentAccounts.items.reduce( + (sum, acc) => sum + Number(acc.parsed.amount), + 0 + ); + + console.log("Current balance before burning all:", currentBalance); + + // Burn all remaining tokens + const burnAmount = new BN(currentBalance); + + const tx = await program.methods + .burn(burnAmount) + .accounts({ + source: ata, + mint: mint, + authority: payer.publicKey, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer]) + .rpc(); + + console.log("Burn all tx:", tx); + + // Wait for indexer to process + await sleep(3000); + const slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + + // Verify token balance is zero + const finalAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + + const finalBalance = finalAccounts.items.reduce( + (sum, acc) => sum + Number(acc.parsed.amount), + 0 + ); + + console.log("Final balance after burning all:", finalBalance); + + assert.strictEqual( + finalBalance, + 0, + "Token balance should be 0 after burning all tokens" + ); + }); +}); diff --git a/program-examples/anchor/tests/close.ts b/program-examples/anchor/tests/close.ts new file mode 100644 index 0000000..46e52c3 --- /dev/null +++ b/program-examples/anchor/tests/close.ts @@ -0,0 +1,163 @@ +import * as anchor from "@coral-xyz/anchor"; +import { Program } from "@coral-xyz/anchor"; +import { LightTokenAnchorClose } from "../target/types/light_token_anchor_close"; +import { + Keypair, + PublicKey, + SystemProgram, +} from "@solana/web3.js"; +import { + createRpc, + Rpc, + sleep, + selectStateTreeInfo, +} from "@lightprotocol/stateless.js"; +import { + createMintInterface, + createAssociatedTokenAccount, + getAssociatedTokenAddressSync, +} from "@lightprotocol/compressed-token"; +import * as assert from "assert"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +const path = require("path"); +const os = require("os"); + +const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); +process.env.ANCHOR_WALLET = anchorWalletPath; + +const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( + "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" +); + +// Rent sponsor PDA seed +const RENT_SPONSOR_SEED = Buffer.from("rent_sponsor"); + +/** + * Derive the rent sponsor PDA + */ +function getRentSponsorPda(): PublicKey { + const [pda] = PublicKey.findProgramAddressSync( + [RENT_SPONSOR_SEED], + LIGHT_TOKEN_PROGRAM_ID + ); + return pda; +} + +describe("close", () => { + const closeProgram = anchor.workspace + .LightTokenAnchorClose as Program; + + let rpc: Rpc; + let payer: Keypair; + + before(async () => { + payer = Keypair.fromSecretKey( + new Uint8Array( + JSON.parse( + readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") + ) + ) + ); + + rpc = createRpc( + "http://127.0.0.1:8899", + "http://127.0.0.1:8784", + "http://127.0.0.1:3001", + { commitment: "confirmed" } + ); + + // Airdrop SOL to payer + await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); + await sleep(2000); + }); + + it("closes an empty token account via anchor program", async () => { + // Step 1: Create a compressed mint via SDK + const mintSigner = Keypair.generate(); + const { mint, transactionSignature } = await createMintInterface( + rpc, + payer, + payer, + null, + 9, + mintSigner, + { commitment: "confirmed" } + ); + console.log("Mint created:", mint.toBase58()); + console.log("Mint tx:", transactionSignature); + + await sleep(2000); + + // Step 2: Create ATA via SDK (empty - no tokens minted) + const stateTreeInfos = await rpc.getStateTreeInfos(); + const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); + + await createAssociatedTokenAccount( + rpc, + payer, + mint, + payer.publicKey, + stateTreeInfo, + 3, + { commitment: "confirmed" } + ); + + const ata = getAssociatedTokenAddressSync(mint, payer.publicKey); + console.log("ATA created:", ata.toBase58()); + + // Wait for indexer + let slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + + // Verify ATA exists before close + let compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + + assert.ok( + compressedAccounts.items.length > 0, + "ATA should exist before close" + ); + + console.log("Token accounts before close:", compressedAccounts.items.length); + + // Step 3: Close the account via the close anchor program + const rentSponsor = getRentSponsorPda(); + + const closeTx = await closeProgram.methods + .closeAccount() + .accounts({ + tokenProgram: LIGHT_TOKEN_PROGRAM_ID, + account: ata, + destination: payer.publicKey, + owner: payer.publicKey, + rentSponsor: rentSponsor, + }) + .signers([payer]) + .rpc(); + + console.log("Close tx:", closeTx); + + // Wait for indexer to process + await sleep(3000); + slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + + // Step 4: Verify account was closed + compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + + assert.strictEqual( + compressedAccounts.items.length, + 0, + "Token account should be closed - no accounts expected" + ); + + console.log("Token account successfully closed!"); + }); +}); diff --git a/program-examples/anchor/tests/create-ata.ts b/program-examples/anchor/tests/create-ata.ts new file mode 100644 index 0000000..1d492eb --- /dev/null +++ b/program-examples/anchor/tests/create-ata.ts @@ -0,0 +1,251 @@ +import * as anchor from "@coral-xyz/anchor"; +import { Program } from "@coral-xyz/anchor"; +import { Keypair, PublicKey, SystemProgram } from "@solana/web3.js"; +import { + createRpc, + Rpc, + sleep, +} from "@lightprotocol/stateless.js"; +import { + createMintInterface, + getAssociatedTokenAddressInterface, +} from "@lightprotocol/compressed-token"; +import * as assert from "assert"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +// Import IDL for Anchor program +import idl from "../target/idl/light_token_anchor_create_ata.json"; +import { LightTokenAnchorCreateAta } from "../target/types/light_token_anchor_create_ata"; + +const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( + "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" +); + +// PDA seeds for compressible config and rent sponsor +const CONFIG_SEED = Buffer.from("compressible_config"); +const RENT_SPONSOR_SEED = Buffer.from("rent_sponsor"); + +/** + * Derive the compressible config PDA + */ +function getCompressibleConfigPda(): PublicKey { + const [pda] = PublicKey.findProgramAddressSync( + [CONFIG_SEED], + LIGHT_TOKEN_PROGRAM_ID + ); + return pda; +} + +/** + * Derive the rent sponsor PDA + */ +function getRentSponsorPda(): PublicKey { + const [pda] = PublicKey.findProgramAddressSync( + [RENT_SPONSOR_SEED], + LIGHT_TOKEN_PROGRAM_ID + ); + return pda; +} + +/** + * Load payer keypair from default Solana config + */ +function loadPayer(): Keypair { + return Keypair.fromSecretKey( + new Uint8Array( + JSON.parse( + readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") + ) + ) + ); +} + +describe("create-ata", () => { + const payer = loadPayer(); + let rpc: Rpc; + let program: Program; + + before(async () => { + // Create RPC client for localnet + rpc = createRpc( + "http://127.0.0.1:8899", + "http://127.0.0.1:8784", + "http://127.0.0.1:3001", + { commitment: "confirmed" } + ); + + // Load program from workspace + const provider = new anchor.AnchorProvider( + rpc as any, + new anchor.Wallet(payer), + { commitment: "confirmed" } + ); + anchor.setProvider(provider); + program = new Program(idl as anchor.Idl, provider) as Program; + }); + + it("creates an associated token account via CPI", async () => { + // Step 1: Create a compressed mint via SDK + const mintSigner = Keypair.generate(); + + const { mint, transactionSignature: mintTxId } = await createMintInterface( + rpc, + payer, + payer, + null, + 9, + mintSigner, + { commitment: "confirmed" } + ); + + console.log("Mint created:", mint.toBase58()); + console.log("Mint tx:", mintTxId); + + // Wait for indexer to process + await sleep(2000); + + // Step 2: Derive ATA address and bump + const { address: ata, bump: ataBump } = getAssociatedTokenAddressInterface( + mint, + payer.publicKey + ); + + console.log("ATA address:", ata.toBase58()); + console.log("ATA bump:", ataBump); + + // Step 3: Get PDAs for config and rent sponsor + const compressibleConfig = getCompressibleConfigPda(); + const rentSponsor = getRentSponsorPda(); + + // Step 4: Call the Anchor program to create ATA + const txId = await program.methods + .createAta(ataBump, false) // bump, idempotent=false + .accounts({ + owner: payer.publicKey, + mint: mint, + payer: payer.publicKey, + associatedTokenAccount: ata, + systemProgram: SystemProgram.programId, + compressibleConfig: compressibleConfig, + rentSponsor: rentSponsor, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer]) + .rpc(); + + console.log("Create ATA tx:", txId); + + // Wait for indexer to process + await sleep(3000); + + // Step 5: Verify ATA was created + const compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + + assert.ok( + compressedAccounts.items.length > 0, + "ATA was not created - no accounts found" + ); + + const ataAccount = compressedAccounts.items[0]; + + assert.ok( + ataAccount.parsed.mint.equals(mint), + "ATA mint should match created mint" + ); + + assert.ok( + ataAccount.parsed.owner.equals(payer.publicKey), + "ATA owner should match payer" + ); + + console.log("ATA verified:"); + console.log(" Address:", ataAccount.address.toBase58()); + console.log(" Owner:", ataAccount.parsed.owner.toBase58()); + console.log(" Mint:", ataAccount.parsed.mint.toBase58()); + console.log(" Balance:", ataAccount.parsed.amount.toString()); + }); + + it("creates ATA idempotently (does not fail if already exists)", async () => { + // Step 1: Create a compressed mint via SDK + const mintSigner = Keypair.generate(); + + const { mint } = await createMintInterface( + rpc, + payer, + payer, + null, + 9, + mintSigner, + { commitment: "confirmed" } + ); + + await sleep(2000); + + // Step 2: Derive ATA address and bump + const { address: ata, bump: ataBump } = getAssociatedTokenAddressInterface( + mint, + payer.publicKey + ); + + const compressibleConfig = getCompressibleConfigPda(); + const rentSponsor = getRentSponsorPda(); + + // Step 3: Create ATA first time (non-idempotent) + await program.methods + .createAta(ataBump, false) + .accounts({ + owner: payer.publicKey, + mint: mint, + payer: payer.publicKey, + associatedTokenAccount: ata, + systemProgram: SystemProgram.programId, + compressibleConfig: compressibleConfig, + rentSponsor: rentSponsor, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer]) + .rpc(); + + await sleep(2000); + + // Step 4: Create ATA second time with idempotent=true (should not fail) + const txId = await program.methods + .createAta(ataBump, true) // idempotent=true + .accounts({ + owner: payer.publicKey, + mint: mint, + payer: payer.publicKey, + associatedTokenAccount: ata, + systemProgram: SystemProgram.programId, + compressibleConfig: compressibleConfig, + rentSponsor: rentSponsor, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer]) + .rpc(); + + console.log("Idempotent create ATA tx:", txId); + + // Verify account still exists + await sleep(2000); + + const compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + + assert.ok( + compressedAccounts.items.length > 0, + "ATA should still exist after idempotent call" + ); + + assert.ok( + compressedAccounts.items[0].parsed.mint.equals(mint), + "ATA mint should match" + ); + }); +}); diff --git a/program-examples/anchor/tests/create-mint.ts b/program-examples/anchor/tests/create-mint.ts new file mode 100644 index 0000000..9899450 --- /dev/null +++ b/program-examples/anchor/tests/create-mint.ts @@ -0,0 +1,235 @@ +import * as anchor from "@coral-xyz/anchor"; +import { Program, web3 } from "@coral-xyz/anchor"; +import { LightTokenAnchorCreateMint } from "../target/types/light_token_anchor_create_mint"; +import { + bn, + confirmTx, + createRpc, + deriveAddressV2, + batchAddressTree, + Rpc, + sleep, + featureFlags, + VERSION, + selectStateTreeInfo, + TreeInfo, +} from "@lightprotocol/stateless.js"; +import { assert } from "chai"; +import { PublicKey, SystemProgram } from "@solana/web3.js"; + +// Force V2 mode +(featureFlags as any).version = VERSION.V2; + +const path = require("path"); +const os = require("os"); +require("dotenv").config(); + +const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); +process.env.ANCHOR_WALLET = anchorWalletPath; + +// Light Protocol system account constants +const LIGHT_SYSTEM_PROGRAM_ID = new PublicKey( + "SySTEM1eSU2p4BGQfQpimFEWWSC1XDFeun3Nqzz3rT7" +); +const ACCOUNT_COMPRESSION_PROGRAM_ID = new PublicKey( + "compr6CUsB5m2jS4Y3831ztGSTnDpnKJTKS95d64XVq" +); +const ACCOUNT_COMPRESSION_AUTHORITY_PDA = new PublicKey( + "HwXnGK3tPkkVY6P439H2p68AxpeuWXd5PcrAxFpbmfbA" +); +const CPI_AUTHORITY_PDA = new PublicKey( + "GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy" +); +const REGISTERED_PROGRAM_PDA = new PublicKey( + "35hkDgaAKwMCaxRz2ocSZ6NaUrtKkyNqU6c4RV3tYJRh" +); +const COMPRESSIBLE_CONFIG_V1 = new PublicKey( + "ACXg8a7VaqecBWrSbdu73W4Pg9gsqXJ3EXAqkHyhvVXg" +); +const RENT_SPONSOR = new PublicKey( + "r18WwUxfG8kQ69bQPAB2jV6zGNKy3GosFGctjQoV4ti" +); +const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( + "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" +); + +// Compressed mint seed constant (matches COMPRESSED_MINT_SEED in Rust) +const COMPRESSED_MINT_SEED = Buffer.from("compressed_mint"); + +/** + * Derives the mint PDA from a mint seed keypair. + * Equivalent to find_mint_address in Rust. + */ +function findMintAddress(mintSeed: PublicKey): [PublicKey, number] { + return PublicKey.findProgramAddressSync( + [COMPRESSED_MINT_SEED, mintSeed.toBytes()], + LIGHT_TOKEN_PROGRAM_ID + ); +} + +/** + * Derives the compressed mint address from the mint seed and address tree. + * Equivalent to derive_mint_compressed_address in Rust. + */ +function deriveMintCompressedAddress( + mintSeed: PublicKey, + addressTree: PublicKey +): PublicKey { + const [mintPda] = findMintAddress(mintSeed); + // deriveAddressV2 takes (seed, addressTree, programId) + // The seed is the mint PDA bytes + return deriveAddressV2( + mintPda.toBytes(), + addressTree, + LIGHT_TOKEN_PROGRAM_ID + ); +} + +describe("create-mint", () => { + const program = anchor.workspace + .LightTokenAnchorCreateMint as Program; + + it("creates a compressed mint", async () => { + const signer = new web3.Keypair(); + const rpc = createRpc( + "http://127.0.0.1:8899", + "http://127.0.0.1:8784", + "http://127.0.0.1:3001", + { + commitment: "confirmed", + } + ); + + // Airdrop SOL to signer + const lamports = web3.LAMPORTS_PER_SOL; + await rpc.requestAirdrop(signer.publicKey, lamports); + await sleep(2000); + + // Get tree info + const stateTreeInfos = await rpc.getStateTreeInfos(); + const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); + const addressTree = new PublicKey(batchAddressTree); + + // Create mint seed keypair + const mintSeed = new web3.Keypair(); + const decimals = 9; + + // Derive mint PDA and compression address + const [mintPda, bump] = findMintAddress(mintSeed.publicKey); + const compressionAddress = deriveMintCompressedAddress( + mintSeed.publicKey, + addressTree + ); + + console.log("Mint seed:", mintSeed.publicKey.toBase58()); + console.log("Mint PDA:", mintPda.toBase58()); + console.log("Compression address:", compressionAddress.toBase58()); + + // Create compressed mint + const txId = await createCompressedMint( + rpc, + addressTree, + compressionAddress, + mintPda, + bump, + mintSeed, + program, + stateTreeInfo, + signer, + decimals + ); + console.log("Transaction ID:", txId); + + // Wait for indexer to process the transaction + const slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + + // Verify the compressed account exists + const compressedAccount = await rpc.getCompressedAccount( + bn(compressionAddress.toBytes()) + ); + + assert.ok(compressedAccount, "Compressed mint account should exist"); + assert.ok( + compressedAccount.data, + "Compressed mint account should have data" + ); + + console.log("Compressed mint created successfully!"); + console.log("Discriminator:", compressedAccount.data.discriminator); + }); +}); + +async function createCompressedMint( + rpc: Rpc, + addressTree: PublicKey, + compressionAddress: PublicKey, + mintPda: PublicKey, + bump: number, + mintSeed: web3.Keypair, + program: Program, + stateTreeInfo: TreeInfo, + signer: web3.Keypair, + decimals: number +): Promise { + // Get validity proof for the new address + const proofRpcResult = await rpc.getValidityProofV0( + [], + [ + { + tree: addressTree, + queue: addressTree, + address: bn(compressionAddress.toBytes()), + }, + ] + ); + + const addressMerkleTreeRootIndex = proofRpcResult.rootIndices[0]; + const proof = proofRpcResult.compressedProof; + + // Compute budget instruction for sufficient CU + const computeBudgetIx = web3.ComputeBudgetProgram.setComputeUnitLimit({ + units: 1_000_000, + }); + + // Build the transaction + const tx = await program.methods + .createMint( + decimals, + addressMerkleTreeRootIndex, + Array.from(compressionAddress.toBytes()) as number[], + proof, + null, // freeze_authority + bump, + 16, // rent_payment + 766 // write_top_up + ) + .accounts({ + mintSeed: mintSeed.publicKey, + authority: signer.publicKey, + payer: signer.publicKey, + addressTree: addressTree, + outputQueue: stateTreeInfo.queue, + lightSystemProgram: LIGHT_SYSTEM_PROGRAM_ID, + cpiAuthorityPda: CPI_AUTHORITY_PDA, + registeredProgramPda: REGISTERED_PROGRAM_PDA, + accountCompressionAuthority: ACCOUNT_COMPRESSION_AUTHORITY_PDA, + accountCompressionProgram: ACCOUNT_COMPRESSION_PROGRAM_ID, + systemProgram: SystemProgram.programId, + compressibleConfig: COMPRESSIBLE_CONFIG_V1, + mint: mintPda, + rentSponsor: RENT_SPONSOR, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .preInstructions([computeBudgetIx]) + .signers([signer, mintSeed]) + .transaction(); + + tx.recentBlockhash = (await rpc.getRecentBlockhash()).blockhash; + tx.sign(signer, mintSeed); + + const sig = await rpc.sendTransaction(tx, [signer, mintSeed]); + await confirmTx(rpc, sig); + + return sig; +} diff --git a/program-examples/anchor/tests/create-token-account.ts b/program-examples/anchor/tests/create-token-account.ts new file mode 100644 index 0000000..198a0a5 --- /dev/null +++ b/program-examples/anchor/tests/create-token-account.ts @@ -0,0 +1,202 @@ +import * as anchor from "@coral-xyz/anchor"; +import { Program } from "@coral-xyz/anchor"; +import { Keypair, PublicKey, SystemProgram } from "@solana/web3.js"; +import { Rpc, sleep } from "@lightprotocol/stateless.js"; +import * as assert from "assert"; + +// Import IDL for Anchor program +import idl from "../target/idl/light_token_anchor_create_token_account.json"; +import { LightTokenAnchorCreateTokenAccount } from "../target/types/light_token_anchor_create_token_account"; + +import { + createLocalnetRpc, + loadPayer, + setupMintViaSDK, + waitForIndexer, + LIGHT_TOKEN_PROGRAM_ID, +} from "./shared"; + +// PDA seeds for compressible config and rent sponsor +const CONFIG_SEED = Buffer.from("compressible_config"); +const RENT_SPONSOR_SEED = Buffer.from("rent_sponsor"); + +/** + * Derive the compressible config PDA + */ +function getCompressibleConfigPda(): PublicKey { + const [pda] = PublicKey.findProgramAddressSync( + [CONFIG_SEED], + LIGHT_TOKEN_PROGRAM_ID + ); + return pda; +} + +/** + * Derive the rent sponsor PDA + */ +function getRentSponsorPda(): PublicKey { + const [pda] = PublicKey.findProgramAddressSync( + [RENT_SPONSOR_SEED], + LIGHT_TOKEN_PROGRAM_ID + ); + return pda; +} + +describe("create-token-account", () => { + const payer = loadPayer(); + let rpc: Rpc; + let program: Program; + + before(async () => { + // Create RPC client for localnet + rpc = createLocalnetRpc(); + + // Load program from workspace + const provider = new anchor.AnchorProvider( + rpc as any, + new anchor.Wallet(payer), + { commitment: "confirmed" } + ); + anchor.setProvider(provider); + program = new Program(idl as anchor.Idl, provider) as Program; + }); + + it("creates a compressed token account via CPI", async () => { + // Step 1: Create a compressed mint via SDK + const { mint, transactionSignature: mintTxId } = await setupMintViaSDK( + rpc, + payer, + { decimals: 9 } + ); + + console.log("Mint created:", mint.toBase58()); + console.log("Mint tx:", mintTxId); + + // Wait for indexer to process + await waitForIndexer(rpc); + + // Step 2: Generate a new keypair for the token account + // Token accounts (unlike ATAs) use a generated keypair as their address + const tokenAccountKeypair = Keypair.generate(); + + // Step 3: Get PDAs for config and rent sponsor + const compressibleConfig = getCompressibleConfigPda(); + const rentSponsor = getRentSponsorPda(); + + // Step 4: Call the Anchor program to create token account + // The owner parameter specifies who owns the token account + const owner = payer.publicKey; + + const txId = await program.methods + .createTokenAccount(owner) + .accounts({ + payer: payer.publicKey, + account: tokenAccountKeypair.publicKey, + mint: mint, + compressibleConfig: compressibleConfig, + rentSponsor: rentSponsor, + systemProgram: SystemProgram.programId, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer, tokenAccountKeypair]) + .rpc(); + + console.log("Create token account tx:", txId); + + // Wait for indexer to process + await sleep(3000); + + // Step 5: Verify the token account was created + const compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( + owner, + { mint } + ); + + assert.ok( + compressedAccounts.items.length > 0, + "Token account was not created - no accounts found" + ); + + const tokenAccount = compressedAccounts.items[0]; + + assert.ok( + tokenAccount.parsed.mint.equals(mint), + "Token account mint should match created mint" + ); + + assert.ok( + tokenAccount.parsed.owner.equals(owner), + "Token account owner should match specified owner" + ); + + console.log("Token account verified:"); + console.log(" Address:", tokenAccount.address.toBase58()); + console.log(" Owner:", tokenAccount.parsed.owner.toBase58()); + console.log(" Mint:", tokenAccount.parsed.mint.toBase58()); + console.log(" Balance:", tokenAccount.parsed.amount.toString()); + }); + + it("creates a token account for a different owner", async () => { + // Step 1: Create a compressed mint via SDK + const { mint } = await setupMintViaSDK(rpc, payer, { decimals: 6 }); + + await waitForIndexer(rpc); + + // Step 2: Generate a new keypair for the token account + const tokenAccountKeypair = Keypair.generate(); + + // Step 3: Generate a different owner (not the payer) + const differentOwner = Keypair.generate(); + + // Step 4: Get PDAs + const compressibleConfig = getCompressibleConfigPda(); + const rentSponsor = getRentSponsorPda(); + + // Step 5: Create token account with different owner + const txId = await program.methods + .createTokenAccount(differentOwner.publicKey) + .accounts({ + payer: payer.publicKey, + account: tokenAccountKeypair.publicKey, + mint: mint, + compressibleConfig: compressibleConfig, + rentSponsor: rentSponsor, + systemProgram: SystemProgram.programId, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer, tokenAccountKeypair]) + .rpc(); + + console.log("Create token account for different owner tx:", txId); + + // Wait for indexer to process + await sleep(3000); + + // Step 6: Verify the token account was created with the correct owner + const compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( + differentOwner.publicKey, + { mint } + ); + + assert.ok( + compressedAccounts.items.length > 0, + "Token account for different owner was not created" + ); + + const tokenAccount = compressedAccounts.items[0]; + + assert.ok( + tokenAccount.parsed.mint.equals(mint), + "Token account mint should match" + ); + + assert.ok( + tokenAccount.parsed.owner.equals(differentOwner.publicKey), + "Token account owner should match specified different owner" + ); + + console.log("Token account for different owner verified:"); + console.log(" Owner:", tokenAccount.parsed.owner.toBase58()); + console.log(" Mint:", tokenAccount.parsed.mint.toBase58()); + }); +}); diff --git a/program-examples/anchor/tests/freeze.ts b/program-examples/anchor/tests/freeze.ts new file mode 100644 index 0000000..767f3d7 --- /dev/null +++ b/program-examples/anchor/tests/freeze.ts @@ -0,0 +1,156 @@ +/** + * Freeze Test + * + * Tests the freeze anchor program that freezes a compressed token account via CPI. + * + * Flow: + * 1. Create compressed mint WITH freeze authority via SDK + * 2. Create associated token account via SDK + * 3. Mint tokens via SDK + * 4. Call anchor program to freeze account via CPI + * 5. Verify account is frozen + */ +import * as anchor from "@coral-xyz/anchor"; +import { Program } from "@coral-xyz/anchor"; +import { LightTokenAnchorFreeze } from "../target/types/light_token_anchor_freeze"; +import { + Keypair, + PublicKey, +} from "@solana/web3.js"; +import { + Rpc, + sleep, + selectStateTreeInfo, +} from "@lightprotocol/stateless.js"; +import { + createAssociatedTokenAccount, + getAssociatedTokenAddressSync, +} from "@lightprotocol/compressed-token"; +import * as assert from "assert"; +import { + createLocalnetRpc, + loadPayer, + waitForIndexer, + setupMintViaSDK, + mintTokensViaSDK, + getCompressedTokenBalance, + LIGHT_TOKEN_PROGRAM_ID, +} from "./shared"; + +const path = require("path"); +const os = require("os"); + +const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); +process.env.ANCHOR_WALLET = anchorWalletPath; + +describe("freeze", () => { + const program = anchor.workspace + .LightTokenAnchorFreeze as Program; + + let rpc: Rpc; + let payer: Keypair; + + before(async () => { + payer = loadPayer(); + rpc = createLocalnetRpc(); + + // Airdrop SOL to payer + await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); + await sleep(2000); + }); + + it("freezes a compressed token account via CPI", async () => { + // Step 1: Create compressed mint WITH freeze authority + const { mint, transactionSignature: mintTxId } = await setupMintViaSDK( + rpc, + payer, + { + decimals: 9, + freezeAuthority: payer.publicKey, // Enable freeze authority + } + ); + + console.log("Mint created:", mint.toBase58()); + console.log("Mint tx:", mintTxId); + + await sleep(2000); + + // Step 2: Create ATA via SDK + const stateTreeInfos = await rpc.getStateTreeInfos(); + const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); + + await createAssociatedTokenAccount( + rpc, + payer, + mint, + payer.publicKey, + stateTreeInfo, + 3, + { commitment: "confirmed" } + ); + + const ata = getAssociatedTokenAddressSync(mint, payer.publicKey); + console.log("ATA created:", ata.toBase58()); + + await waitForIndexer(rpc); + + // Step 3: Mint tokens via SDK + const mintAmount = 1_000_000; + await mintTokensViaSDK(rpc, payer, mint, payer.publicKey, mintAmount); + console.log("Minted tokens:", mintAmount); + + await waitForIndexer(rpc); + + // Verify initial balance + const beforeFreeze = await getCompressedTokenBalance(rpc, payer.publicKey, mint); + assert.strictEqual( + Number(beforeFreeze.totalBalance), + mintAmount, + "Initial balance should match minted amount" + ); + + // Step 4: Call the Anchor program to freeze account via CPI + const tx = await program.methods + .freeze() + .accounts({ + tokenAccount: ata, + mint: mint, + freezeAuthority: payer.publicKey, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer]) + .rpc(); + + console.log("Freeze tx:", tx); + + await waitForIndexer(rpc); + + // Step 5: Verify account is frozen + // The token account should still exist with the same balance + const afterFreeze = await getCompressedTokenBalance(rpc, payer.publicKey, mint); + + assert.strictEqual( + Number(afterFreeze.totalBalance), + mintAmount, + "Balance should remain unchanged after freeze" + ); + + assert.ok( + afterFreeze.accounts.length > 0, + "Token account should still exist after freeze" + ); + + // Check that the account state indicates frozen + // The compressed token account should have isFrozen = true + const frozenAccount = afterFreeze.accounts[0]; + assert.ok( + frozenAccount.parsed.state === 2 || frozenAccount.parsed.isFrozen === true, + "Token account should be in frozen state" + ); + + console.log("Token account frozen successfully!"); + console.log(" Account address:", frozenAccount.address?.toBase58() || "N/A"); + console.log(" Balance:", frozenAccount.parsed.amount.toString()); + console.log(" State:", frozenAccount.parsed.state); + }); +}); diff --git a/program-examples/anchor/tests/mint-to.ts b/program-examples/anchor/tests/mint-to.ts new file mode 100644 index 0000000..d35eb4c --- /dev/null +++ b/program-examples/anchor/tests/mint-to.ts @@ -0,0 +1,148 @@ +import * as anchor from "@coral-xyz/anchor"; +import { Program, BN } from "@coral-xyz/anchor"; +import { LightTokenAnchorMintTo } from "../target/types/light_token_anchor_mint_to"; +import { + Keypair, + PublicKey, + SystemProgram, +} from "@solana/web3.js"; +import { + createRpc, + Rpc, + sleep, + selectStateTreeInfo, +} from "@lightprotocol/stateless.js"; +import { + createMintInterface, + createAssociatedTokenAccount, + getAssociatedTokenAddressSync, +} from "@lightprotocol/compressed-token"; +import * as assert from "assert"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +const path = require("path"); +const os = require("os"); + +const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); +process.env.ANCHOR_WALLET = anchorWalletPath; + +const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( + "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" +); + +describe("mint-to", () => { + const program = anchor.workspace + .LightTokenAnchorMintTo as Program; + + let rpc: Rpc; + let payer: Keypair; + let mint: PublicKey; + let ata: PublicKey; + + before(async () => { + payer = Keypair.fromSecretKey( + new Uint8Array( + JSON.parse( + readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") + ) + ) + ); + + rpc = createRpc( + "http://127.0.0.1:8899", + "http://127.0.0.1:8784", + "http://127.0.0.1:3001", + { commitment: "confirmed" } + ); + + // Airdrop SOL to payer + await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); + await sleep(2000); + + // Create compressed mint via SDK + const mintSigner = Keypair.generate(); + const { mint: createdMint, transactionSignature } = await createMintInterface( + rpc, + payer, + payer, + null, + 9, + mintSigner, + { commitment: "confirmed" } + ); + mint = createdMint; + console.log("Mint created:", mint.toBase58()); + console.log("Mint tx:", transactionSignature); + + await sleep(2000); + + // Create ATA via SDK + const stateTreeInfos = await rpc.getStateTreeInfos(); + const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); + + await createAssociatedTokenAccount( + rpc, + payer, + mint, + payer.publicKey, + stateTreeInfo, + 3, + { commitment: "confirmed" } + ); + + ata = getAssociatedTokenAddressSync(mint, payer.publicKey); + console.log("ATA created:", ata.toBase58()); + + // Wait for indexer + const slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + }); + + it("mints compressed tokens via anchor program", async () => { + const amount = new BN(1_000_000); + + const tx = await program.methods + .mintTo(amount) + .accounts({ + mint: mint, + destination: ata, + authority: payer.publicKey, + systemProgram: SystemProgram.programId, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer]) + .rpc(); + + console.log("Mint-to tx:", tx); + + // Wait for indexer to process + await sleep(3000); + const slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + + // Verify token balance + const compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + + assert.ok( + compressedAccounts.items.length > 0, + "Should have at least one compressed token account" + ); + + const totalBalance = compressedAccounts.items.reduce( + (sum, acc) => sum + Number(acc.parsed.amount), + 0 + ); + + assert.strictEqual( + totalBalance, + amount.toNumber(), + `Token balance should be ${amount.toNumber()}` + ); + + console.log("Total balance:", totalBalance); + }); +}); diff --git a/program-examples/anchor/tests/revoke.ts b/program-examples/anchor/tests/revoke.ts new file mode 100644 index 0000000..455d745 --- /dev/null +++ b/program-examples/anchor/tests/revoke.ts @@ -0,0 +1,213 @@ +import * as anchor from "@coral-xyz/anchor"; +import { Program, BN } from "@coral-xyz/anchor"; +import { LightTokenAnchorRevoke } from "../target/types/light_token_anchor_revoke"; +import { LightTokenAnchorApprove } from "../target/types/light_token_anchor_approve"; +import { + Keypair, + PublicKey, + SystemProgram, +} from "@solana/web3.js"; +import { + createRpc, + Rpc, + sleep, + selectStateTreeInfo, +} from "@lightprotocol/stateless.js"; +import { + createMintInterface, + createAssociatedTokenAccount, + getAssociatedTokenAddressSync, + mintToCompressed, +} from "@lightprotocol/compressed-token"; +import * as assert from "assert"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +const path = require("path"); +const os = require("os"); + +const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); +process.env.ANCHOR_WALLET = anchorWalletPath; + +const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( + "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" +); + +describe("revoke", () => { + const revokeProgram = anchor.workspace + .LightTokenAnchorRevoke as Program; + const approveProgram = anchor.workspace + .LightTokenAnchorApprove as Program; + + let rpc: Rpc; + let payer: Keypair; + let mint: PublicKey; + let ata: PublicKey; + + before(async () => { + payer = Keypair.fromSecretKey( + new Uint8Array( + JSON.parse( + readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") + ) + ) + ); + + rpc = createRpc( + "http://127.0.0.1:8899", + "http://127.0.0.1:8784", + "http://127.0.0.1:3001", + { commitment: "confirmed" } + ); + + // Airdrop SOL to payer + await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); + await sleep(2000); + + // Create compressed mint via SDK + const mintSigner = Keypair.generate(); + const { mint: createdMint, transactionSignature } = await createMintInterface( + rpc, + payer, + payer, + null, + 9, + mintSigner, + { commitment: "confirmed" } + ); + mint = createdMint; + console.log("Mint created:", mint.toBase58()); + console.log("Mint tx:", transactionSignature); + + await sleep(2000); + + // Create ATA via SDK + const stateTreeInfos = await rpc.getStateTreeInfos(); + const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); + + await createAssociatedTokenAccount( + rpc, + payer, + mint, + payer.publicKey, + stateTreeInfo, + 3, + { commitment: "confirmed" } + ); + + ata = getAssociatedTokenAddressSync(mint, payer.publicKey); + console.log("ATA created:", ata.toBase58()); + + // Mint tokens to the ATA + const mintAmount = 1_000_000; + await mintToCompressed( + rpc, + payer, + mint, + payer, // mint authority + [{ recipient: payer.publicKey, amount: mintAmount }], + stateTreeInfo, + 3, + { commitment: "confirmed" } + ); + console.log("Minted", mintAmount, "tokens to ATA"); + + // Wait for indexer + const slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + }); + + it("revokes delegation via anchor program", async () => { + // Step 1: Approve a delegate first using the approve anchor program + const delegate = Keypair.generate(); + const approveAmount = new BN(500_000); + + console.log("Delegate pubkey:", delegate.publicKey.toBase58()); + console.log("Approving amount:", approveAmount.toString()); + + const approveTx = await approveProgram.methods + .approve(approveAmount) + .accounts({ + tokenAccount: ata, + delegate: delegate.publicKey, + owner: payer.publicKey, + systemProgram: SystemProgram.programId, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer]) + .rpc(); + + console.log("Approve tx:", approveTx); + + // Wait for indexer to process + await sleep(3000); + let slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + + // Verify delegation was set + let compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + + assert.ok( + compressedAccounts.items.length > 0, + "Should have at least one compressed token account" + ); + + // Find the account with delegation + const accountWithDelegate = compressedAccounts.items.find( + (acc) => acc.parsed.delegate !== null + ); + + assert.ok( + accountWithDelegate, + "Should have an account with delegate set" + ); + + console.log("Delegate set to:", accountWithDelegate.parsed.delegate?.toBase58()); + + // Step 2: Revoke the delegation via the revoke anchor program + const revokeTx = await revokeProgram.methods + .revoke() + .accounts({ + tokenAccount: ata, + owner: payer.publicKey, + systemProgram: SystemProgram.programId, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer]) + .rpc(); + + console.log("Revoke tx:", revokeTx); + + // Wait for indexer to process + await sleep(3000); + slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + + // Step 3: Verify delegation was revoked + compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + + assert.ok( + compressedAccounts.items.length > 0, + "Should still have at least one compressed token account" + ); + + // Check that no account has a delegate anymore + const accountsWithDelegate = compressedAccounts.items.filter( + (acc) => acc.parsed.delegate !== null + ); + + assert.strictEqual( + accountsWithDelegate.length, + 0, + "No accounts should have a delegate after revoke" + ); + + console.log("Delegation successfully revoked!"); + }); +}); diff --git a/program-examples/anchor/tests/shared/constants.ts b/program-examples/anchor/tests/shared/constants.ts new file mode 100644 index 0000000..8b55bd3 --- /dev/null +++ b/program-examples/anchor/tests/shared/constants.ts @@ -0,0 +1,78 @@ +/** + * Program IDs and Constants + * + * Light Protocol program IDs and constants for CPI operations. + */ +import { PublicKey } from "@solana/web3.js"; + +/** + * Light Protocol Compressed Token Program ID. + * The main program for compressed SPL token operations. + */ +export const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( + "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" +); + +/** + * Light System Program ID. + * Core program for compressed account operations. + */ +export const LIGHT_SYSTEM_PROGRAM_ID = new PublicKey( + "SySTEM1eSU2p4BGQfQpimFEWWSC1XDFeun3Nqzz3rT7" +); + +/** + * Account Compression Program ID. + * Manages Merkle trees for compressed accounts. + */ +export const ACCOUNT_COMPRESSION_PROGRAM_ID = new PublicKey( + "compr6CUsB5m2jS4Y3831ztGSTnDpnKJTKS95d64XVq" +); + +/** + * Noop Program ID. + * Used for logging compressed account data on-chain. + */ +export const NOOP_PROGRAM_ID = new PublicKey( + "noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV" +); + +/** + * Registered Program PDA seed. + */ +export const REGISTERED_PROGRAM_PDA_SEED = Buffer.from("registered_program_pda"); + +/** + * CPI Authority PDA seed. + */ +export const CPI_AUTHORITY_PDA_SEED = Buffer.from("cpi_authority"); + +/** + * Derive CPI authority PDA for a program. + * + * @param programId - The program deriving the CPI authority + * @returns The CPI authority PDA and bump + */ +export function deriveCpiAuthorityPda( + programId: PublicKey +): [PublicKey, number] { + return PublicKey.findProgramAddressSync( + [CPI_AUTHORITY_PDA_SEED], + programId + ); +} + +/** + * Derive registered program PDA. + * + * @param programId - The program ID to derive for + * @returns The registered program PDA and bump + */ +export function deriveRegisteredProgramPda( + programId: PublicKey +): [PublicKey, number] { + return PublicKey.findProgramAddressSync( + [REGISTERED_PROGRAM_PDA_SEED, programId.toBytes()], + LIGHT_SYSTEM_PROGRAM_ID + ); +} diff --git a/program-examples/anchor/tests/shared/index.ts b/program-examples/anchor/tests/shared/index.ts new file mode 100644 index 0000000..dcc02c7 --- /dev/null +++ b/program-examples/anchor/tests/shared/index.ts @@ -0,0 +1,14 @@ +/** + * Shared Test Utilities + * + * Re-exports all shared utilities for convenient importing. + * + * Usage: + * ```typescript + * import { createLocalnetRpc, loadPayer, setupMintViaSDK } from "./shared"; + * ``` + */ + +export * from "./setup"; +export * from "./constants"; +export * from "./mint-helpers"; diff --git a/program-examples/anchor/tests/shared/mint-helpers.ts b/program-examples/anchor/tests/shared/mint-helpers.ts new file mode 100644 index 0000000..fb59b76 --- /dev/null +++ b/program-examples/anchor/tests/shared/mint-helpers.ts @@ -0,0 +1,183 @@ +/** + * Mint Helper Utilities + * + * Helper functions for creating compressed mints and minting tokens + * using the Light Protocol compressed-token SDK. + */ +import { + Rpc, + selectStateTreeInfo, +} from "@lightprotocol/stateless.js"; +import { + createMintInterface, + mintToCompressed, +} from "@lightprotocol/compressed-token"; +import { + Keypair, + PublicKey, +} from "@solana/web3.js"; + +/** + * Options for creating a compressed mint. + */ +export interface CreateMintOptions { + /** Number of decimal places (default: 9) */ + decimals?: number; + /** Freeze authority pubkey (default: null - no freeze authority) */ + freezeAuthority?: PublicKey | null; + /** Keypair to use as mint seed (default: generates new keypair) */ + mintSigner?: Keypair; +} + +/** + * Result from creating a compressed mint. + */ +export interface CreateMintResult { + /** The mint public key */ + mint: PublicKey; + /** The keypair used as mint seed */ + mintSigner: Keypair; + /** Transaction signature */ + transactionSignature: string; +} + +/** + * Create a compressed mint using the Light Protocol SDK. + * + * @param rpc - RPC connection + * @param payer - Fee payer and mint authority + * @param options - Optional configuration for the mint + * @returns Mint public key, signer keypair, and transaction signature + */ +export async function setupMintViaSDK( + rpc: Rpc, + payer: Keypair, + options: CreateMintOptions = {} +): Promise { + const { + decimals = 9, + freezeAuthority = null, + mintSigner = Keypair.generate(), + } = options; + + const { mint, transactionSignature } = await createMintInterface( + rpc, + payer, + payer, // mint authority + freezeAuthority, + decimals, + mintSigner, + { commitment: "confirmed" } + ); + + return { + mint, + mintSigner, + transactionSignature, + }; +} + +/** + * Recipient for minting tokens. + */ +export interface MintRecipient { + /** Recipient public key */ + recipient: PublicKey; + /** Amount to mint */ + amount: number; +} + +/** + * Mint compressed tokens to one or more recipients. + * + * @param rpc - RPC connection + * @param payer - Fee payer + * @param mint - Mint public key + * @param mintAuthority - Mint authority keypair + * @param recipient - Recipient public key + * @param amount - Amount to mint + * @returns Transaction signature + */ +export async function mintTokensViaSDK( + rpc: Rpc, + payer: Keypair, + mint: PublicKey, + recipient: PublicKey, + amount: number +): Promise { + const stateTreeInfos = await rpc.getStateTreeInfos(); + const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); + + const txId = await mintToCompressed( + rpc, + payer, + mint, + payer, // mint authority (assumes payer is mint authority) + [{ recipient, amount }], + stateTreeInfo, + 3, // number of output accounts + { commitment: "confirmed" } + ); + + return txId; +} + +/** + * Mint compressed tokens to multiple recipients in a single transaction. + * + * @param rpc - RPC connection + * @param payer - Fee payer + * @param mint - Mint public key + * @param mintAuthority - Mint authority keypair + * @param recipients - Array of recipients with amounts + * @returns Transaction signature + */ +export async function mintTokensToMultipleViaSDK( + rpc: Rpc, + payer: Keypair, + mint: PublicKey, + mintAuthority: Keypair, + recipients: MintRecipient[] +): Promise { + const stateTreeInfos = await rpc.getStateTreeInfos(); + const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); + + const txId = await mintToCompressed( + rpc, + payer, + mint, + mintAuthority, + recipients, + stateTreeInfo, + recipients.length + 1, // number of output accounts + { commitment: "confirmed" } + ); + + return txId; +} + +/** + * Get compressed token accounts for an owner. + * + * @param rpc - RPC connection + * @param owner - Owner public key + * @param mint - Mint to filter by + * @returns Compressed token accounts + */ +export async function getCompressedTokenBalance( + rpc: Rpc, + owner: PublicKey, + mint: PublicKey +): Promise<{ accounts: any[]; totalBalance: bigint }> { + const result = await rpc.getCompressedTokenAccountsByOwner(owner, { mint }); + + const totalBalance = result.items.reduce( + (sum, acc) => sum + BigInt(acc.parsed.amount), + BigInt(0) + ); + + return { + accounts: result.items, + totalBalance, + }; +} diff --git a/program-examples/anchor/tests/shared/setup.ts b/program-examples/anchor/tests/shared/setup.ts new file mode 100644 index 0000000..9b8ee4d --- /dev/null +++ b/program-examples/anchor/tests/shared/setup.ts @@ -0,0 +1,107 @@ +/** + * RPC Connection and Wallet Utilities + * + * Setup utilities for Light Protocol compressed token tests. + * Provides RPC connections, wallet loading, and airdrop helpers. + */ +import { + createRpc, + Rpc, + confirmTx, +} from "@lightprotocol/stateless.js"; +import { + Keypair, + PublicKey, + LAMPORTS_PER_SOL, +} from "@solana/web3.js"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +/** + * Create RPC client for localnet with Light Protocol indexer endpoints. + * + * Connects to: + * - Solana RPC: http://127.0.0.1:8899 + * - Prover: http://127.0.0.1:8784 + * - Indexer: http://127.0.0.1:3001 + */ +export function createLocalnetRpc(): Rpc { + return createRpc( + "http://127.0.0.1:8899", + "http://127.0.0.1:8784", + "http://127.0.0.1:3001", + { commitment: "confirmed" } + ); +} + +/** + * Create RPC client for devnet using default Light Protocol endpoints. + */ +export function createDevnetRpc(): Rpc { + return createRpc(); +} + +/** + * Load payer keypair from default Solana CLI config location. + * + * Reads from: ~/.config/solana/id.json + */ +export function loadPayer(): Keypair { + const keyPath = `${homedir()}/.config/solana/id.json`; + return Keypair.fromSecretKey( + new Uint8Array( + JSON.parse(readFileSync(keyPath, "utf8")) + ) + ); +} + +/** + * Load keypair from a specific file path. + */ +export function loadKeypairFromFile(path: string): Keypair { + return Keypair.fromSecretKey( + new Uint8Array( + JSON.parse(readFileSync(path, "utf8")) + ) + ); +} + +/** + * Airdrop SOL to a public key. + * + * @param rpc - RPC connection + * @param pubkey - Recipient public key + * @param lamports - Amount in lamports (default: 1 SOL) + */ +export async function airdrop( + rpc: Rpc, + pubkey: PublicKey, + lamports: number = LAMPORTS_PER_SOL +): Promise { + const sig = await rpc.requestAirdrop(pubkey, lamports); + await confirmTx(rpc, sig); + return sig; +} + +/** + * Wait for the Light Protocol indexer to process transactions up to the given slot. + * + * Calls rpc.confirmTransactionIndexed() which blocks until the indexer + * has processed all transactions up to the specified slot. + * + * @param rpc - RPC connection + * @param slot - Slot number to wait for (if not provided, uses current slot) + */ +export async function waitForIndexer(rpc: Rpc, slot?: number): Promise { + const targetSlot = slot ?? await rpc.getSlot(); + await rpc.confirmTransactionIndexed(targetSlot); +} + +/** + * Sleep for a specified duration. + * + * @param ms - Milliseconds to sleep + */ +export async function sleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} diff --git a/program-examples/anchor/tests/thaw.ts b/program-examples/anchor/tests/thaw.ts new file mode 100644 index 0000000..dbd7ab1 --- /dev/null +++ b/program-examples/anchor/tests/thaw.ts @@ -0,0 +1,174 @@ +/** + * Thaw Test + * + * Tests the thaw anchor program that thaws a frozen compressed token account via CPI. + * + * Flow: + * 1. Create compressed mint WITH freeze authority via SDK + * 2. Create associated token account via SDK + * 3. Mint tokens via SDK + * 4. Freeze account via SDK + * 5. Call anchor program to thaw account via CPI + * 6. Verify account is thawed + */ +import * as anchor from "@coral-xyz/anchor"; +import { Program } from "@coral-xyz/anchor"; +import { LightTokenAnchorThaw } from "../target/types/light_token_anchor_thaw"; +import { + Keypair, + PublicKey, +} from "@solana/web3.js"; +import { + Rpc, + sleep, + selectStateTreeInfo, +} from "@lightprotocol/stateless.js"; +import { + createAssociatedTokenAccount, + getAssociatedTokenAddressSync, + freezeCompressed, +} from "@lightprotocol/compressed-token"; +import * as assert from "assert"; +import { + createLocalnetRpc, + loadPayer, + waitForIndexer, + setupMintViaSDK, + mintTokensViaSDK, + getCompressedTokenBalance, + LIGHT_TOKEN_PROGRAM_ID, +} from "./shared"; + +const path = require("path"); +const os = require("os"); + +const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); +process.env.ANCHOR_WALLET = anchorWalletPath; + +describe("thaw", () => { + const program = anchor.workspace + .LightTokenAnchorThaw as Program; + + let rpc: Rpc; + let payer: Keypair; + + before(async () => { + payer = loadPayer(); + rpc = createLocalnetRpc(); + + // Airdrop SOL to payer + await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); + await sleep(2000); + }); + + it("thaws a frozen compressed token account via CPI", async () => { + // Step 1: Create compressed mint WITH freeze authority + const { mint, transactionSignature: mintTxId } = await setupMintViaSDK( + rpc, + payer, + { + decimals: 9, + freezeAuthority: payer.publicKey, // Enable freeze authority + } + ); + + console.log("Mint created:", mint.toBase58()); + console.log("Mint tx:", mintTxId); + + await sleep(2000); + + // Step 2: Create ATA via SDK + const stateTreeInfos = await rpc.getStateTreeInfos(); + const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); + + await createAssociatedTokenAccount( + rpc, + payer, + mint, + payer.publicKey, + stateTreeInfo, + 3, + { commitment: "confirmed" } + ); + + const ata = getAssociatedTokenAddressSync(mint, payer.publicKey); + console.log("ATA created:", ata.toBase58()); + + await waitForIndexer(rpc); + + // Step 3: Mint tokens via SDK + const mintAmount = 1_000_000; + await mintTokensViaSDK(rpc, payer, mint, payer.publicKey, mintAmount); + console.log("Minted tokens:", mintAmount); + + await waitForIndexer(rpc); + + // Step 4: Freeze account via SDK + const freezeTx = await freezeCompressed( + rpc, + payer, + mint, + payer, // freeze authority + ata + ); + console.log("Freeze tx (SDK):", freezeTx); + + await waitForIndexer(rpc); + + // Verify account is frozen + const frozenState = await getCompressedTokenBalance(rpc, payer.publicKey, mint); + assert.ok( + frozenState.accounts.length > 0, + "Token account should exist after freeze" + ); + + const frozenAccount = frozenState.accounts[0]; + assert.ok( + frozenAccount.parsed.state === 2 || frozenAccount.parsed.isFrozen === true, + "Token account should be frozen before thaw" + ); + console.log("Account frozen, state:", frozenAccount.parsed.state); + + // Step 5: Call the Anchor program to thaw account via CPI + const tx = await program.methods + .thaw() + .accounts({ + tokenAccount: ata, + mint: mint, + freezeAuthority: payer.publicKey, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer]) + .rpc(); + + console.log("Thaw tx:", tx); + + await waitForIndexer(rpc); + + // Step 6: Verify account is thawed + const afterThaw = await getCompressedTokenBalance(rpc, payer.publicKey, mint); + + assert.strictEqual( + Number(afterThaw.totalBalance), + mintAmount, + "Balance should remain unchanged after thaw" + ); + + assert.ok( + afterThaw.accounts.length > 0, + "Token account should still exist after thaw" + ); + + // Check that the account state indicates initialized (not frozen) + const thawedAccount = afterThaw.accounts[0]; + assert.ok( + thawedAccount.parsed.state === 1 || thawedAccount.parsed.isFrozen === false, + "Token account should be in initialized (thawed) state" + ); + + console.log("Token account thawed successfully!"); + console.log(" Account address:", thawedAccount.address?.toBase58() || "N/A"); + console.log(" Balance:", thawedAccount.parsed.amount.toString()); + console.log(" State:", thawedAccount.parsed.state); + }); +}); diff --git a/program-examples/anchor/tests/transfer.ts b/program-examples/anchor/tests/transfer.ts new file mode 100644 index 0000000..b4bc02c --- /dev/null +++ b/program-examples/anchor/tests/transfer.ts @@ -0,0 +1,233 @@ +import * as anchor from "@coral-xyz/anchor"; +import { Program, BN } from "@coral-xyz/anchor"; +import { LightTokenAnchorTransferInterface } from "../target/types/light_token_anchor_transfer_interface"; +import { + Keypair, + PublicKey, + SystemProgram, +} from "@solana/web3.js"; +import { + createRpc, + Rpc, + sleep, + selectStateTreeInfo, +} from "@lightprotocol/stateless.js"; +import { + createMintInterface, + createAssociatedTokenAccount, + getAssociatedTokenAddressSync, + mintToInterface, +} from "@lightprotocol/compressed-token"; +import * as assert from "assert"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +const path = require("path"); +const os = require("os"); + +const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); +process.env.ANCHOR_WALLET = anchorWalletPath; + +const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( + "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" +); + +// CPI authority PDA for light-token program +const CPI_AUTHORITY_PDA = new PublicKey( + "GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy" +); + +/** + * Load payer keypair from default Solana config + */ +function loadPayer(): Keypair { + return Keypair.fromSecretKey( + new Uint8Array( + JSON.parse( + readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") + ) + ) + ); +} + +describe("transfer", () => { + const program = anchor.workspace + .LightTokenAnchorTransferInterface as Program; + + let rpc: Rpc; + let payer: Keypair; + let mint: PublicKey; + let sourceAta: PublicKey; + let destAta: PublicKey; + let recipient: Keypair; + const decimals = 9; + const mintAmount = 1_000_000; + + before(async () => { + payer = loadPayer(); + + rpc = createRpc( + "http://127.0.0.1:8899", + "http://127.0.0.1:8784", + "http://127.0.0.1:3001", + { commitment: "confirmed" } + ); + + // Airdrop SOL to payer + await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); + await sleep(2000); + + // Create compressed mint via SDK + const mintSigner = Keypair.generate(); + const { mint: createdMint, transactionSignature } = await createMintInterface( + rpc, + payer, + payer, + null, + decimals, + mintSigner, + { commitment: "confirmed" } + ); + mint = createdMint; + console.log("Mint created:", mint.toBase58()); + console.log("Mint tx:", transactionSignature); + + await sleep(2000); + + // Create source ATA for payer + const stateTreeInfos = await rpc.getStateTreeInfos(); + const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); + + await createAssociatedTokenAccount( + rpc, + payer, + mint, + payer.publicKey, + stateTreeInfo, + 3, + { commitment: "confirmed" } + ); + + sourceAta = getAssociatedTokenAddressSync(mint, payer.publicKey); + console.log("Source ATA created:", sourceAta.toBase58()); + + // Mint tokens to source ATA + await mintToInterface( + rpc, + payer, + mint, + sourceAta, + payer, + mintAmount, + { commitment: "confirmed" } + ); + console.log("Minted", mintAmount, "tokens to source ATA"); + + await sleep(2000); + + // Create destination ATA for recipient + recipient = Keypair.generate(); + + await createAssociatedTokenAccount( + rpc, + payer, + mint, + recipient.publicKey, + stateTreeInfo, + 3, + { commitment: "confirmed" } + ); + + destAta = getAssociatedTokenAddressSync(mint, recipient.publicKey); + console.log("Destination ATA created:", destAta.toBase58()); + + // Wait for indexer to process + const slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + }); + + it("transfers compressed tokens via anchor program", async () => { + const transferAmount = new BN(100_000); + + // Get initial balances + const initialSourceAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + const initialSourceBalance = initialSourceAccounts.items.reduce( + (sum, acc) => sum + Number(acc.parsed.amount), + 0 + ); + + const initialDestAccounts = await rpc.getCompressedTokenAccountsByOwner( + recipient.publicKey, + { mint } + ); + const initialDestBalance = initialDestAccounts.items.reduce( + (sum, acc) => sum + Number(acc.parsed.amount), + 0 + ); + + console.log("Initial source balance:", initialSourceBalance); + console.log("Initial destination balance:", initialDestBalance); + + // Call the anchor program to transfer tokens + const tx = await program.methods + .transfer(transferAmount, decimals) + .accounts({ + source: sourceAta, + destination: destAta, + authority: payer.publicKey, + payer: payer.publicKey, + cpiAuthority: CPI_AUTHORITY_PDA, + systemProgram: SystemProgram.programId, + lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, + }) + .signers([payer]) + .rpc(); + + console.log("Transfer tx:", tx); + + // Wait for indexer to process + await sleep(3000); + const slot = await rpc.getSlot(); + await rpc.confirmTransactionIndexed(slot); + + // Verify balances changed correctly + const finalSourceAccounts = await rpc.getCompressedTokenAccountsByOwner( + payer.publicKey, + { mint } + ); + const finalSourceBalance = finalSourceAccounts.items.reduce( + (sum, acc) => sum + Number(acc.parsed.amount), + 0 + ); + + const finalDestAccounts = await rpc.getCompressedTokenAccountsByOwner( + recipient.publicKey, + { mint } + ); + const finalDestBalance = finalDestAccounts.items.reduce( + (sum, acc) => sum + Number(acc.parsed.amount), + 0 + ); + + console.log("Final source balance:", finalSourceBalance); + console.log("Final destination balance:", finalDestBalance); + + // Assert balances changed correctly + assert.strictEqual( + finalSourceBalance, + initialSourceBalance - transferAmount.toNumber(), + "Source balance should decrease by transfer amount" + ); + + assert.strictEqual( + finalDestBalance, + initialDestBalance + transferAmount.toNumber(), + "Destination balance should increase by transfer amount" + ); + + console.log("Transfer verified successfully!"); + }); +}); diff --git a/program-examples/anchor/tsconfig.json b/program-examples/anchor/tsconfig.json new file mode 100644 index 0000000..d3ddbe8 --- /dev/null +++ b/program-examples/anchor/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "types": [ + "mocha", + "chai" + ], + "typeRoots": [ + "./node_modules/@types" + ], + "lib": [ + "es2015" + ], + "module": "commonjs", + "target": "es6", + "esModuleInterop": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "noEmit": true, + "noUnusedLocals": false, + "noUnusedParameters": false + }, + "include": [ + "ts-tests/**/*" + ], + "exclude": [ + "node_modules", + "target" + ] +} From c0d3197189f0194ec7349ede45272de2c0ecbcb2 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Fri, 23 Jan 2026 11:02:48 +0000 Subject: [PATCH 04/23] chore: remove TypeScript tests and add .gitignore - Remove all TypeScript test files (tests/*.ts) - Remove package.json and tsconfig.json - Remove .claude/settings.json and BURN_ARCHITECTURE.md - Add .gitignore for node_modules, target, TS files - Update Anchor.toml test script to use cargo test-sbf Rust integration tests remain in programs/*/tests/test.rs --- program-examples/anchor/.claude/settings.json | 7 - program-examples/anchor/.gitignore | 29 ++ program-examples/anchor/Anchor.toml | 43 +-- program-examples/anchor/BURN_ARCHITECTURE.md | 215 --------------- program-examples/anchor/package.json | 33 --- .../anchor/programs/approve/src/lib.rs | 2 +- .../anchor/programs/burn/src/lib.rs | 2 +- .../anchor/programs/close/src/lib.rs | 2 +- .../anchor/programs/create-ata/src/lib.rs | 2 +- .../anchor/programs/create-mint/src/lib.rs | 2 +- .../programs/create-token-account/src/lib.rs | 2 +- .../anchor/programs/freeze/src/lib.rs | 2 +- .../anchor/programs/mint-to/src/lib.rs | 2 +- .../anchor/programs/revoke/src/lib.rs | 2 +- .../anchor/programs/thaw/src/lib.rs | 2 +- .../programs/transfer-interface/src/lib.rs | 2 +- program-examples/anchor/tests/approve.ts | 162 ----------- program-examples/anchor/tests/burn.ts | 233 ---------------- program-examples/anchor/tests/close.ts | 163 ------------ program-examples/anchor/tests/create-ata.ts | 251 ------------------ program-examples/anchor/tests/create-mint.ts | 235 ---------------- .../anchor/tests/create-token-account.ts | 202 -------------- program-examples/anchor/tests/freeze.ts | 156 ----------- program-examples/anchor/tests/mint-to.ts | 148 ----------- program-examples/anchor/tests/revoke.ts | 213 --------------- .../anchor/tests/shared/constants.ts | 78 ------ program-examples/anchor/tests/shared/index.ts | 14 - .../anchor/tests/shared/mint-helpers.ts | 183 ------------- program-examples/anchor/tests/shared/setup.ts | 107 -------- program-examples/anchor/tests/thaw.ts | 174 ------------ program-examples/anchor/tests/transfer.ts | 233 ---------------- program-examples/anchor/tsconfig.json | 29 -- 32 files changed, 64 insertions(+), 2866 deletions(-) delete mode 100644 program-examples/anchor/.claude/settings.json create mode 100644 program-examples/anchor/.gitignore delete mode 100644 program-examples/anchor/BURN_ARCHITECTURE.md delete mode 100644 program-examples/anchor/package.json delete mode 100644 program-examples/anchor/tests/approve.ts delete mode 100644 program-examples/anchor/tests/burn.ts delete mode 100644 program-examples/anchor/tests/close.ts delete mode 100644 program-examples/anchor/tests/create-ata.ts delete mode 100644 program-examples/anchor/tests/create-mint.ts delete mode 100644 program-examples/anchor/tests/create-token-account.ts delete mode 100644 program-examples/anchor/tests/freeze.ts delete mode 100644 program-examples/anchor/tests/mint-to.ts delete mode 100644 program-examples/anchor/tests/revoke.ts delete mode 100644 program-examples/anchor/tests/shared/constants.ts delete mode 100644 program-examples/anchor/tests/shared/index.ts delete mode 100644 program-examples/anchor/tests/shared/mint-helpers.ts delete mode 100644 program-examples/anchor/tests/shared/setup.ts delete mode 100644 program-examples/anchor/tests/thaw.ts delete mode 100644 program-examples/anchor/tests/transfer.ts delete mode 100644 program-examples/anchor/tsconfig.json diff --git a/program-examples/anchor/.claude/settings.json b/program-examples/anchor/.claude/settings.json deleted file mode 100644 index 9914e0d..0000000 --- a/program-examples/anchor/.claude/settings.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "permissions": { - "allow": [ - "Bash(rustc:*)" - ] - } -} diff --git a/program-examples/anchor/.gitignore b/program-examples/anchor/.gitignore new file mode 100644 index 0000000..267284c --- /dev/null +++ b/program-examples/anchor/.gitignore @@ -0,0 +1,29 @@ +# Dependencies +node_modules/ + +# Build artifacts +target/ +.anchor/ + +# Test artifacts +test-ledger/ + +# TypeScript +*.ts +tsconfig.json + +# Package files +package.json +package-lock.json + +# Documentation (internal) +BURN_ARCHITECTURE.md + +# IDE/Editor +.claude/ +.vscode/ +.idea/ + +# Environment +.env +.env.* diff --git a/program-examples/anchor/Anchor.toml b/program-examples/anchor/Anchor.toml index f5d1afd..f3e916e 100644 --- a/program-examples/anchor/Anchor.toml +++ b/program-examples/anchor/Anchor.toml @@ -1,36 +1,41 @@ +[toolchain] + [features] -seeds = false +resolution = true skip-lint = false +[programs.devnet] +light_token_anchor_approve = "DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g" +light_token_anchor_burn = "5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q" +light_token_anchor_close = "gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG" +light_token_anchor_create_ata = "8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8" +light_token_anchor_create_mint = "JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j" +light_token_anchor_create_token_account = "FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn" +light_token_anchor_freeze = "4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9" +light_token_anchor_mint_to = "DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB" +light_token_anchor_revoke = "7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND" +light_token_anchor_thaw = "DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621" +light_token_anchor_transfer_interface = "7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6" + [programs.localnet] -light_token_anchor_create_ata = "77bt3j6A3g9s1WtwYnRFTGP9y8H1nigW7mLtywGKPmMi" -light_token_anchor_create_mint = "Ev7tKaozVxbZLVGcKcVcz8A9yKZjUf5ATqoNSe5BDkjj" -light_token_anchor_create_token_account = "CTAiNDz2wJrB67HuJYYfooHG1gN3nXnZVfm3QhPgi2Vi" -light_token_anchor_mint_to = "7SUgjNZYC1h89MuPVYkgEP5A4uYx5GFSjC7mzqMbN8U2" -light_token_anchor_transfer_interface = "ChkDqFsvNNT5CGrV2YCkmK4DiVSATnXc98mNozPbhC6u" -light_token_anchor_close = "4fi27siKEvKXJYN5WCzWuHdAw1rLed6Tprv9ZARv3Gxu" light_token_anchor_approve = "A9b9t3qNQmYTpbui7TXLQbTJPXbNaV5dW11vxn2M7eC5" -light_token_anchor_revoke = "Dvq3UxQUDEF3B6khoJTdcbm3UutDsvxkdkTvxoJvegfg" light_token_anchor_burn = "BHTGZDjDw9Gpz8oYm7CRMg2WtKwW65YAYHXXMKv4dpr6" -light_token_anchor_freeze = "7ovuM3dD2MZtcWQesVMiSYJef3oh1XH3e8nUk1ArpWX6" -light_token_anchor_thaw = "FL4MY6v5mTqncytUeuPoGroo6DHSsmBCPirckygGbcip" - -[programs.devnet] +light_token_anchor_close = "4fi27siKEvKXJYN5WCzWuHdAw1rLed6Tprv9ZARv3Gxu" light_token_anchor_create_ata = "77bt3j6A3g9s1WtwYnRFTGP9y8H1nigW7mLtywGKPmMi" light_token_anchor_create_mint = "Ev7tKaozVxbZLVGcKcVcz8A9yKZjUf5ATqoNSe5BDkjj" light_token_anchor_create_token_account = "CTAiNDz2wJrB67HuJYYfooHG1gN3nXnZVfm3QhPgi2Vi" +light_token_anchor_freeze = "7ovuM3dD2MZtcWQesVMiSYJef3oh1XH3e8nUk1ArpWX6" light_token_anchor_mint_to = "7SUgjNZYC1h89MuPVYkgEP5A4uYx5GFSjC7mzqMbN8U2" -light_token_anchor_transfer_interface = "ChkDqFsvNNT5CGrV2YCkmK4DiVSATnXc98mNozPbhC6u" -light_token_anchor_close = "4fi27siKEvKXJYN5WCzWuHdAw1rLed6Tprv9ZARv3Gxu" -light_token_anchor_approve = "A9b9t3qNQmYTpbui7TXLQbTJPXbNaV5dW11vxn2M7eC5" light_token_anchor_revoke = "Dvq3UxQUDEF3B6khoJTdcbm3UutDsvxkdkTvxoJvegfg" -light_token_anchor_burn = "BHTGZDjDw9Gpz8oYm7CRMg2WtKwW65YAYHXXMKv4dpr6" -light_token_anchor_freeze = "7ovuM3dD2MZtcWQesVMiSYJef3oh1XH3e8nUk1ArpWX6" light_token_anchor_thaw = "FL4MY6v5mTqncytUeuPoGroo6DHSsmBCPirckygGbcip" +light_token_anchor_transfer_interface = "ChkDqFsvNNT5CGrV2YCkmK4DiVSATnXc98mNozPbhC6u" + +[registry] +url = "https://api.apr.dev" [provider] -cluster = "Localnet" +cluster = "localnet" wallet = "~/.config/solana/id.json" [scripts] -test = "ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" +test = "cargo test-sbf" diff --git a/program-examples/anchor/BURN_ARCHITECTURE.md b/program-examples/anchor/BURN_ARCHITECTURE.md deleted file mode 100644 index 384ea2b..0000000 --- a/program-examples/anchor/BURN_ARCHITECTURE.md +++ /dev/null @@ -1,215 +0,0 @@ -# Burn Program Architecture Analysis - -## Executive Summary - -The burn Anchor program delegates to Light Protocol's `BurnCpi` instruction to reduce token account balances. Full end-to-end testing requires Rust because: - -1. The burn CPI operates on **decompressed Mint PDAs** (Solana accounts) -2. The TypeScript SDK only provides APIs to create **light/compressed mints** (state trees) -3. This is by design - the TypeScript SDK is optimized for compressed token operations - -## Core Technical Issue - -### Account Type Mismatch - -The burn instruction requires these account types: - -```rust -#[derive(Accounts)] -pub struct BurnAccounts<'info> { - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub source: AccountInfo<'info>, // Decompressed token account (ATA) - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub mint: AccountInfo<'info>, // Decompressed Mint PDA ← KEY REQUIREMENT - #[account(mut)] - pub authority: Signer<'info>, - pub system_program: Program<'info, System>, - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, -} -``` - -The `mint` account **must be a decompressed Mint PDA**, not a light/compressed mint. - -### Mint Type Definitions - -**Light/Compressed Mint** -- Storage: Merkle tree in state tree -- Created by: TypeScript `createMintInterface()` -- Represented as: `PublicKey` pointing to tree -- Use case: Compressed token operations -- Can be used with: `transfer()`, `decompress()` - -**Decompressed Mint PDA** -- Storage: Solana ledger (rent-exempt account) -- Created by: Rust `light_token::instruction::CreateMint` -- Represented as: `PublicKey` of account on-chain -- Use case: Traditional token operations -- Can be used with: `BurnCpi`, `MintTo`, `CreateAssociatedTokenAccount` - -## The Rust Solution - -The Rust test setup (`shared.rs`) creates both account types: - -```rust -// Derive the Mint PDA - this is the decompressed account needed by burn -let (mint_pda, bump) = light_token::instruction::find_mint_address(&mint_seed.pubkey()); - -// Create both the compressed mint AND the Mint PDA -let create_mint_builder = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, -); -let instruction = create_mint_builder.instruction().unwrap(); - -// This single instruction creates: -// 1. A compressed mint in the state tree -// 2. A Mint PDA on the Solana ledger -rpc.create_and_send_transaction(&[instruction], &payer.pubkey(), &[payer, &mint_seed]) - .await - .unwrap(); -``` - -Key insight: **`CreateMint` creates both the compressed mint AND the Mint PDA in a single transaction.** - -## TypeScript SDK Limitation - -The `@lightprotocol/compressed-token` SDK v0.22.1-alpha.9 provides: - -```typescript -// Available - creates light/compressed mint -const { mint } = await createMintInterface(rpc, payer, payer, null, 9); - -// Available - creates compressed token account -await createAtaInterface(rpc, payer, mint, recipient.publicKey); - -// Available - transfers compressed tokens -await transfer(rpc, payer, mint, amount, owner, destination); - -// NOT AVAILABLE - no way to create Mint PDA -// The SDK doesn't expose methods to: -// 1. Create decompressed Mint PDAs -// 2. Create decompressed token accounts (ATAs) -// 3. Mint to decompressed accounts -``` - -This is intentional. The TypeScript SDK is designed for: -- Client-side token operations -- Compressed token workflows -- State tree interactions - -### Why This Design? - -1. **Solana account creation is expensive** - Rust SDK handles this for contract operations -2. **Compressed tokens are the primary use case** - TypeScript focuses here -3. **On-chain setup vs client operations** - Different SDKs for different purposes -4. **Complexity management** - TypeScript SDK keeps the surface area small - -## How to Create Decompressed Mints (If Needed) - -If you need decompressed Mint PDAs from TypeScript, you would need to: - -1. Build a Rust helper program that creates them -2. Call it from TypeScript via RPC -3. Wait for the transaction to complete -4. Query back the Mint PDA address - -This is impractical compared to using Rust directly for integration testing. - -## Program Implementation - -The burn program itself is straightforward: - -```rust -pub fn burn(ctx: Context, amount: u64) -> Result<()> { - BurnCpi { - source: ctx.accounts.source.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - amount, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) -} -``` - -It delegates entirely to Light Protocol's burn implementation. The testing bottleneck is not the program logic but the account setup required to call it. - -## Testing Strategy - -### Rust Integration Tests ✓ -```bash -cargo test-sbf -``` - -- Sets up Mint PDA + compressed mint -- Creates decompressed token accounts -- Mints tokens -- Calls burn program -- Verifies results - -**Status:** FULLY TESTED - -### TypeScript Demonstration Tests ✓ -```bash -npm run test:burn -``` - -- Documents architecture -- Explains account type requirements -- Points to full Rust tests -- Verifies program compilation - -**Status:** PROGRAM VERIFICATION ONLY - -## Comparison with Other Programs - -| Program | Account Type | Test Approach | Why | -|---------|--------------|---------------|-----| -| CreateMint | Compressed | Rust + TS | TS can demo SDK patterns, Rust tests full flow | -| Approve | Compressed | Rust | Requires decompressed accounts | -| Burn | Compressed | Rust | Requires decompressed Mint PDA | -| Freeze | Compressed | Rust | Requires decompressed accounts | -| Transfer Interface | Compressed | Rust | Requires decompressed accounts | - -The pattern is clear: **Operations on decompressed accounts require Rust testing**. - -## Future SDK Enhancements - -If the TypeScript SDK adds: -1. `createDecompressedMint()` - Create Mint PDA -2. `createDecompressedAta()` - Create token account -3. `mintToDecompressed()` - Mint to token account -4. `burnDecompressed()` - Burn from token account - -Then full TypeScript testing could be added. However, this would require significant SDK changes and may not be a priority given: -- Compressed tokens are the primary use case -- Rust SDK already handles this well -- Mixing compression types increases complexity - -## Recommendation - -**Status: WORKING AS DESIGNED** - -The current architecture correctly uses: -- ✓ Rust for full integration testing -- ✓ TypeScript for SDK demonstrations -- ✓ Documentation to explain the separation - -No changes needed. The test structure accurately reflects Light Protocol's design principles. - -## References - -- Burn Program: `/programs/burn/` -- Rust Tests: `/programs/burn/tests/test.rs` -- TypeScript Test: `/ts-tests/burn.ts` -- SDK Docs: https://www.zkcompression.com/light-token/cookbook/create-mint -- Full Testing: Run `cargo test-sbf` diff --git a/program-examples/anchor/package.json b/program-examples/anchor/package.json deleted file mode 100644 index 4aca32a..0000000 --- a/program-examples/anchor/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "light-token-anchor-tests", - "type": "module", - "dependencies": { - "@coral-xyz/anchor": "0.31.1", - "@lightprotocol/compressed-token": "0.22.1-alpha.9", - "@lightprotocol/stateless.js": "0.22.1-alpha.8", - "@solana/web3.js": "^1.98.0", - "dotenv": "^16.0.0" - }, - "devDependencies": { - "@types/chai": "^4.3.0", - "@types/mocha": "^10.0.0", - "chai": "^4.3.0", - "ts-mocha": "^10.1.0", - "tsx": "^4.0.0", - "typescript": "^5.0.0" - }, - "scripts": { - "test": "ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts", - "test:approve": "ts-mocha -p ./tsconfig.json -t 1000000 tests/approve.ts", - "test:burn": "ts-mocha -p ./tsconfig.json -t 1000000 tests/burn.ts", - "test:close": "ts-mocha -p ./tsconfig.json -t 1000000 tests/close.ts", - "test:create-ata": "ts-mocha -p ./tsconfig.json -t 1000000 tests/create-ata.ts", - "test:create-mint": "ts-mocha -p ./tsconfig.json -t 1000000 tests/create-mint.ts", - "test:create-token-account": "ts-mocha -p ./tsconfig.json -t 1000000 tests/create-token-account.ts", - "test:freeze": "ts-mocha -p ./tsconfig.json -t 1000000 tests/freeze.ts", - "test:mint-to": "ts-mocha -p ./tsconfig.json -t 1000000 tests/mint-to.ts", - "test:revoke": "ts-mocha -p ./tsconfig.json -t 1000000 tests/revoke.ts", - "test:thaw": "ts-mocha -p ./tsconfig.json -t 1000000 tests/thaw.ts", - "test:transfer": "ts-mocha -p ./tsconfig.json -t 1000000 tests/transfer.ts" - } -} diff --git a/program-examples/anchor/programs/approve/src/lib.rs b/program-examples/anchor/programs/approve/src/lib.rs index 8b1008d..2fdc84b 100644 --- a/program-examples/anchor/programs/approve/src/lib.rs +++ b/program-examples/anchor/programs/approve/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::ApproveCpi; -declare_id!("A9b9t3qNQmYTpbui7TXLQbTJPXbNaV5dW11vxn2M7eC5"); +declare_id!("DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g"); #[program] pub mod light_token_anchor_approve { diff --git a/program-examples/anchor/programs/burn/src/lib.rs b/program-examples/anchor/programs/burn/src/lib.rs index 16f22cd..3843fe2 100644 --- a/program-examples/anchor/programs/burn/src/lib.rs +++ b/program-examples/anchor/programs/burn/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::BurnCpi; -declare_id!("BHTGZDjDw9Gpz8oYm7CRMg2WtKwW65YAYHXXMKv4dpr6"); +declare_id!("5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q"); #[program] pub mod light_token_anchor_burn { diff --git a/program-examples/anchor/programs/close/src/lib.rs b/program-examples/anchor/programs/close/src/lib.rs index ddc768e..bfa3c58 100644 --- a/program-examples/anchor/programs/close/src/lib.rs +++ b/program-examples/anchor/programs/close/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::CloseAccountCpi; -declare_id!("4fi27siKEvKXJYN5WCzWuHdAw1rLed6Tprv9ZARv3Gxu"); +declare_id!("gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG"); #[program] pub mod light_token_anchor_close { diff --git a/program-examples/anchor/programs/create-ata/src/lib.rs b/program-examples/anchor/programs/create-ata/src/lib.rs index 86ab404..c0faf1c 100644 --- a/program-examples/anchor/programs/create-ata/src/lib.rs +++ b/program-examples/anchor/programs/create-ata/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::CreateAssociatedAccountCpi; -declare_id!("77bt3j6A3g9s1WtwYnRFTGP9y8H1nigW7mLtywGKPmMi"); +declare_id!("8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8"); #[program] pub mod light_token_anchor_create_ata { diff --git a/program-examples/anchor/programs/create-mint/src/lib.rs b/program-examples/anchor/programs/create-mint/src/lib.rs index 98891aa..83cffa5 100644 --- a/program-examples/anchor/programs/create-mint/src/lib.rs +++ b/program-examples/anchor/programs/create-mint/src/lib.rs @@ -4,7 +4,7 @@ use anchor_lang::prelude::*; use light_token::instruction::{CreateMintCpi, CreateMintParams, SystemAccountInfos}; use light_token::CompressedProof; -declare_id!("Ev7tKaozVxbZLVGcKcVcz8A9yKZjUf5ATqoNSe5BDkjj"); +declare_id!("JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j"); #[program] pub mod light_token_anchor_create_mint { diff --git a/program-examples/anchor/programs/create-token-account/src/lib.rs b/program-examples/anchor/programs/create-token-account/src/lib.rs index 9c83291..662e0e9 100644 --- a/program-examples/anchor/programs/create-token-account/src/lib.rs +++ b/program-examples/anchor/programs/create-token-account/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::CreateTokenAccountCpi; -declare_id!("CTAiNDz2wJrB67HuJYYfooHG1gN3nXnZVfm3QhPgi2Vi"); +declare_id!("FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn"); #[program] pub mod light_token_anchor_create_token_account { diff --git a/program-examples/anchor/programs/freeze/src/lib.rs b/program-examples/anchor/programs/freeze/src/lib.rs index 56f6020..b61531b 100644 --- a/program-examples/anchor/programs/freeze/src/lib.rs +++ b/program-examples/anchor/programs/freeze/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::FreezeCpi; -declare_id!("7ovuM3dD2MZtcWQesVMiSYJef3oh1XH3e8nUk1ArpWX6"); +declare_id!("4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9"); #[program] pub mod light_token_anchor_freeze { diff --git a/program-examples/anchor/programs/mint-to/src/lib.rs b/program-examples/anchor/programs/mint-to/src/lib.rs index d22b25e..74cebe5 100644 --- a/program-examples/anchor/programs/mint-to/src/lib.rs +++ b/program-examples/anchor/programs/mint-to/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::MintToCpi; -declare_id!("7SUgjNZYC1h89MuPVYkgEP5A4uYx5GFSjC7mzqMbN8U2"); +declare_id!("DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB"); #[program] pub mod light_token_anchor_mint_to { diff --git a/program-examples/anchor/programs/revoke/src/lib.rs b/program-examples/anchor/programs/revoke/src/lib.rs index dae1349..6e90da9 100644 --- a/program-examples/anchor/programs/revoke/src/lib.rs +++ b/program-examples/anchor/programs/revoke/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::RevokeCpi; -declare_id!("Dvq3UxQUDEF3B6khoJTdcbm3UutDsvxkdkTvxoJvegfg"); +declare_id!("7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND"); #[program] pub mod light_token_anchor_revoke { diff --git a/program-examples/anchor/programs/thaw/src/lib.rs b/program-examples/anchor/programs/thaw/src/lib.rs index 57c0de7..ab35935 100644 --- a/program-examples/anchor/programs/thaw/src/lib.rs +++ b/program-examples/anchor/programs/thaw/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::ThawCpi; -declare_id!("FL4MY6v5mTqncytUeuPoGroo6DHSsmBCPirckygGbcip"); +declare_id!("DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621"); #[program] pub mod light_token_anchor_thaw { diff --git a/program-examples/anchor/programs/transfer-interface/src/lib.rs b/program-examples/anchor/programs/transfer-interface/src/lib.rs index f7a7580..8968522 100644 --- a/program-examples/anchor/programs/transfer-interface/src/lib.rs +++ b/program-examples/anchor/programs/transfer-interface/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::TransferInterfaceCpi; -declare_id!("ChkDqFsvNNT5CGrV2YCkmK4DiVSATnXc98mNozPbhC6u"); +declare_id!("7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6"); #[program] pub mod light_token_anchor_transfer_interface { diff --git a/program-examples/anchor/tests/approve.ts b/program-examples/anchor/tests/approve.ts deleted file mode 100644 index 1c43a0b..0000000 --- a/program-examples/anchor/tests/approve.ts +++ /dev/null @@ -1,162 +0,0 @@ -import * as anchor from "@coral-xyz/anchor"; -import { Program, BN } from "@coral-xyz/anchor"; -import { LightTokenAnchorApprove } from "../target/types/light_token_anchor_approve"; -import { - Keypair, - PublicKey, - SystemProgram, -} from "@solana/web3.js"; -import { - createRpc, - Rpc, - sleep, - selectStateTreeInfo, -} from "@lightprotocol/stateless.js"; -import { - createMintInterface, - createAssociatedTokenAccount, - getAssociatedTokenAddressSync, - mintTo, -} from "@lightprotocol/compressed-token"; -import * as assert from "assert"; -import { homedir } from "os"; -import { readFileSync } from "fs"; - -const path = require("path"); -const os = require("os"); - -const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); -process.env.ANCHOR_WALLET = anchorWalletPath; - -const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( - "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" -); - -describe("approve", () => { - const program = anchor.workspace - .LightTokenAnchorApprove as Program; - - let rpc: Rpc; - let payer: Keypair; - let mint: PublicKey; - let ata: PublicKey; - - before(async () => { - payer = Keypair.fromSecretKey( - new Uint8Array( - JSON.parse( - readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") - ) - ) - ); - - rpc = createRpc( - "http://127.0.0.1:8899", - "http://127.0.0.1:8784", - "http://127.0.0.1:3001", - { commitment: "confirmed" } - ); - - // Airdrop SOL to payer - await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); - await sleep(2000); - - // Create compressed mint via SDK - const mintSigner = Keypair.generate(); - const { mint: createdMint, transactionSignature } = await createMintInterface( - rpc, - payer, - payer, - null, - 9, - mintSigner, - { commitment: "confirmed" } - ); - mint = createdMint; - console.log("Mint created:", mint.toBase58()); - console.log("Mint tx:", transactionSignature); - - await sleep(2000); - - // Create ATA via SDK - const stateTreeInfos = await rpc.getStateTreeInfos(); - const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); - - await createAssociatedTokenAccount( - rpc, - payer, - mint, - payer.publicKey, - stateTreeInfo, - 3, - { commitment: "confirmed" } - ); - - ata = getAssociatedTokenAddressSync(mint, payer.publicKey); - console.log("ATA created:", ata.toBase58()); - - // Mint tokens so we have something to approve - const mintAmount = new BN(1_000_000); - await mintTo(rpc, payer, mint, ata, payer, mintAmount); - console.log("Minted tokens:", mintAmount.toString()); - - // Wait for indexer - const slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - }); - - it("approves a delegate for compressed tokens via anchor program", async () => { - // Create a delegate keypair - const delegate = Keypair.generate(); - const approveAmount = new BN(500_000); - - const tx = await program.methods - .approve(approveAmount) - .accounts({ - tokenAccount: ata, - delegate: delegate.publicKey, - owner: payer.publicKey, - systemProgram: SystemProgram.programId, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer]) - .rpc(); - - console.log("Approve tx:", tx); - - // Wait for indexer to process - await sleep(3000); - const slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - - // Verify the delegation was set by checking the token account - const compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - - assert.ok( - compressedAccounts.items.length > 0, - "Should have at least one compressed token account" - ); - - // Find the account with the delegate set - const accountWithDelegate = compressedAccounts.items.find( - (acc) => acc.parsed.delegate !== null - ); - - assert.ok( - accountWithDelegate, - "Should have a token account with delegate set" - ); - - assert.ok( - accountWithDelegate.parsed.delegate?.equals(delegate.publicKey), - "Delegate should match the approved delegate" - ); - - console.log("Delegation verified:"); - console.log(" Delegate:", accountWithDelegate.parsed.delegate?.toBase58()); - console.log(" Delegated amount:", accountWithDelegate.parsed.delegatedAmount?.toString()); - }); -}); diff --git a/program-examples/anchor/tests/burn.ts b/program-examples/anchor/tests/burn.ts deleted file mode 100644 index c74ec49..0000000 --- a/program-examples/anchor/tests/burn.ts +++ /dev/null @@ -1,233 +0,0 @@ -import * as anchor from "@coral-xyz/anchor"; -import { Program, BN } from "@coral-xyz/anchor"; -import { LightTokenAnchorBurn } from "../target/types/light_token_anchor_burn"; -import { - Keypair, - PublicKey, -} from "@solana/web3.js"; -import { - createRpc, - Rpc, - sleep, - selectStateTreeInfo, -} from "@lightprotocol/stateless.js"; -import { - createMintInterface, - createAssociatedTokenAccount, - getAssociatedTokenAddressSync, - mintToCompressed, -} from "@lightprotocol/compressed-token"; -import * as assert from "assert"; -import { homedir } from "os"; -import { readFileSync } from "fs"; - -const path = require("path"); -const os = require("os"); - -const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); -process.env.ANCHOR_WALLET = anchorWalletPath; - -const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( - "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" -); - -describe("burn", () => { - const program = anchor.workspace - .LightTokenAnchorBurn as Program; - - let rpc: Rpc; - let payer: Keypair; - let mint: PublicKey; - let ata: PublicKey; - const mintAmount = 1_000_000; - - before(async () => { - payer = Keypair.fromSecretKey( - new Uint8Array( - JSON.parse( - readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") - ) - ) - ); - - rpc = createRpc( - "http://127.0.0.1:8899", - "http://127.0.0.1:8784", - "http://127.0.0.1:3001", - { commitment: "confirmed" } - ); - - // Airdrop SOL to payer - await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); - await sleep(2000); - - // Create compressed mint via SDK - const mintSigner = Keypair.generate(); - const { mint: createdMint, transactionSignature } = await createMintInterface( - rpc, - payer, - payer, - null, - 9, - mintSigner, - { commitment: "confirmed" } - ); - mint = createdMint; - console.log("Mint created:", mint.toBase58()); - console.log("Mint tx:", transactionSignature); - - await sleep(2000); - - // Create ATA via SDK - const stateTreeInfos = await rpc.getStateTreeInfos(); - const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); - - await createAssociatedTokenAccount( - rpc, - payer, - mint, - payer.publicKey, - stateTreeInfo, - 3, - { commitment: "confirmed" } - ); - - ata = getAssociatedTokenAddressSync(mint, payer.publicKey); - console.log("ATA created:", ata.toBase58()); - - await sleep(2000); - - // Mint tokens to the ATA - await mintToCompressed( - rpc, - payer, - mint, - payer, - [{ recipient: payer.publicKey, amount: mintAmount }], - stateTreeInfo, - 3, - { commitment: "confirmed" } - ); - console.log("Minted", mintAmount, "tokens to ATA"); - - // Wait for indexer - const slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - }); - - it("burns compressed tokens via anchor program", async () => { - // Verify initial balance - const initialAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - - const initialBalance = initialAccounts.items.reduce( - (sum, acc) => sum + Number(acc.parsed.amount), - 0 - ); - - console.log("Initial balance:", initialBalance); - assert.strictEqual( - initialBalance, - mintAmount, - `Initial balance should be ${mintAmount}` - ); - - // Burn tokens via anchor program - const burnAmount = new BN(250_000); - - const tx = await program.methods - .burn(burnAmount) - .accounts({ - source: ata, - mint: mint, - authority: payer.publicKey, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer]) - .rpc(); - - console.log("Burn tx:", tx); - - // Wait for indexer to process - await sleep(3000); - const slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - - // Verify token balance decreased - const finalAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - - const finalBalance = finalAccounts.items.reduce( - (sum, acc) => sum + Number(acc.parsed.amount), - 0 - ); - - console.log("Final balance:", finalBalance); - - const expectedBalance = mintAmount - burnAmount.toNumber(); - assert.strictEqual( - finalBalance, - expectedBalance, - `Token balance should be ${expectedBalance} after burning ${burnAmount.toNumber()}` - ); - }); - - it("burns all remaining tokens", async () => { - // Get current balance - const currentAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - - const currentBalance = currentAccounts.items.reduce( - (sum, acc) => sum + Number(acc.parsed.amount), - 0 - ); - - console.log("Current balance before burning all:", currentBalance); - - // Burn all remaining tokens - const burnAmount = new BN(currentBalance); - - const tx = await program.methods - .burn(burnAmount) - .accounts({ - source: ata, - mint: mint, - authority: payer.publicKey, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer]) - .rpc(); - - console.log("Burn all tx:", tx); - - // Wait for indexer to process - await sleep(3000); - const slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - - // Verify token balance is zero - const finalAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - - const finalBalance = finalAccounts.items.reduce( - (sum, acc) => sum + Number(acc.parsed.amount), - 0 - ); - - console.log("Final balance after burning all:", finalBalance); - - assert.strictEqual( - finalBalance, - 0, - "Token balance should be 0 after burning all tokens" - ); - }); -}); diff --git a/program-examples/anchor/tests/close.ts b/program-examples/anchor/tests/close.ts deleted file mode 100644 index 46e52c3..0000000 --- a/program-examples/anchor/tests/close.ts +++ /dev/null @@ -1,163 +0,0 @@ -import * as anchor from "@coral-xyz/anchor"; -import { Program } from "@coral-xyz/anchor"; -import { LightTokenAnchorClose } from "../target/types/light_token_anchor_close"; -import { - Keypair, - PublicKey, - SystemProgram, -} from "@solana/web3.js"; -import { - createRpc, - Rpc, - sleep, - selectStateTreeInfo, -} from "@lightprotocol/stateless.js"; -import { - createMintInterface, - createAssociatedTokenAccount, - getAssociatedTokenAddressSync, -} from "@lightprotocol/compressed-token"; -import * as assert from "assert"; -import { homedir } from "os"; -import { readFileSync } from "fs"; - -const path = require("path"); -const os = require("os"); - -const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); -process.env.ANCHOR_WALLET = anchorWalletPath; - -const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( - "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" -); - -// Rent sponsor PDA seed -const RENT_SPONSOR_SEED = Buffer.from("rent_sponsor"); - -/** - * Derive the rent sponsor PDA - */ -function getRentSponsorPda(): PublicKey { - const [pda] = PublicKey.findProgramAddressSync( - [RENT_SPONSOR_SEED], - LIGHT_TOKEN_PROGRAM_ID - ); - return pda; -} - -describe("close", () => { - const closeProgram = anchor.workspace - .LightTokenAnchorClose as Program; - - let rpc: Rpc; - let payer: Keypair; - - before(async () => { - payer = Keypair.fromSecretKey( - new Uint8Array( - JSON.parse( - readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") - ) - ) - ); - - rpc = createRpc( - "http://127.0.0.1:8899", - "http://127.0.0.1:8784", - "http://127.0.0.1:3001", - { commitment: "confirmed" } - ); - - // Airdrop SOL to payer - await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); - await sleep(2000); - }); - - it("closes an empty token account via anchor program", async () => { - // Step 1: Create a compressed mint via SDK - const mintSigner = Keypair.generate(); - const { mint, transactionSignature } = await createMintInterface( - rpc, - payer, - payer, - null, - 9, - mintSigner, - { commitment: "confirmed" } - ); - console.log("Mint created:", mint.toBase58()); - console.log("Mint tx:", transactionSignature); - - await sleep(2000); - - // Step 2: Create ATA via SDK (empty - no tokens minted) - const stateTreeInfos = await rpc.getStateTreeInfos(); - const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); - - await createAssociatedTokenAccount( - rpc, - payer, - mint, - payer.publicKey, - stateTreeInfo, - 3, - { commitment: "confirmed" } - ); - - const ata = getAssociatedTokenAddressSync(mint, payer.publicKey); - console.log("ATA created:", ata.toBase58()); - - // Wait for indexer - let slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - - // Verify ATA exists before close - let compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - - assert.ok( - compressedAccounts.items.length > 0, - "ATA should exist before close" - ); - - console.log("Token accounts before close:", compressedAccounts.items.length); - - // Step 3: Close the account via the close anchor program - const rentSponsor = getRentSponsorPda(); - - const closeTx = await closeProgram.methods - .closeAccount() - .accounts({ - tokenProgram: LIGHT_TOKEN_PROGRAM_ID, - account: ata, - destination: payer.publicKey, - owner: payer.publicKey, - rentSponsor: rentSponsor, - }) - .signers([payer]) - .rpc(); - - console.log("Close tx:", closeTx); - - // Wait for indexer to process - await sleep(3000); - slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - - // Step 4: Verify account was closed - compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - - assert.strictEqual( - compressedAccounts.items.length, - 0, - "Token account should be closed - no accounts expected" - ); - - console.log("Token account successfully closed!"); - }); -}); diff --git a/program-examples/anchor/tests/create-ata.ts b/program-examples/anchor/tests/create-ata.ts deleted file mode 100644 index 1d492eb..0000000 --- a/program-examples/anchor/tests/create-ata.ts +++ /dev/null @@ -1,251 +0,0 @@ -import * as anchor from "@coral-xyz/anchor"; -import { Program } from "@coral-xyz/anchor"; -import { Keypair, PublicKey, SystemProgram } from "@solana/web3.js"; -import { - createRpc, - Rpc, - sleep, -} from "@lightprotocol/stateless.js"; -import { - createMintInterface, - getAssociatedTokenAddressInterface, -} from "@lightprotocol/compressed-token"; -import * as assert from "assert"; -import { homedir } from "os"; -import { readFileSync } from "fs"; - -// Import IDL for Anchor program -import idl from "../target/idl/light_token_anchor_create_ata.json"; -import { LightTokenAnchorCreateAta } from "../target/types/light_token_anchor_create_ata"; - -const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( - "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" -); - -// PDA seeds for compressible config and rent sponsor -const CONFIG_SEED = Buffer.from("compressible_config"); -const RENT_SPONSOR_SEED = Buffer.from("rent_sponsor"); - -/** - * Derive the compressible config PDA - */ -function getCompressibleConfigPda(): PublicKey { - const [pda] = PublicKey.findProgramAddressSync( - [CONFIG_SEED], - LIGHT_TOKEN_PROGRAM_ID - ); - return pda; -} - -/** - * Derive the rent sponsor PDA - */ -function getRentSponsorPda(): PublicKey { - const [pda] = PublicKey.findProgramAddressSync( - [RENT_SPONSOR_SEED], - LIGHT_TOKEN_PROGRAM_ID - ); - return pda; -} - -/** - * Load payer keypair from default Solana config - */ -function loadPayer(): Keypair { - return Keypair.fromSecretKey( - new Uint8Array( - JSON.parse( - readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") - ) - ) - ); -} - -describe("create-ata", () => { - const payer = loadPayer(); - let rpc: Rpc; - let program: Program; - - before(async () => { - // Create RPC client for localnet - rpc = createRpc( - "http://127.0.0.1:8899", - "http://127.0.0.1:8784", - "http://127.0.0.1:3001", - { commitment: "confirmed" } - ); - - // Load program from workspace - const provider = new anchor.AnchorProvider( - rpc as any, - new anchor.Wallet(payer), - { commitment: "confirmed" } - ); - anchor.setProvider(provider); - program = new Program(idl as anchor.Idl, provider) as Program; - }); - - it("creates an associated token account via CPI", async () => { - // Step 1: Create a compressed mint via SDK - const mintSigner = Keypair.generate(); - - const { mint, transactionSignature: mintTxId } = await createMintInterface( - rpc, - payer, - payer, - null, - 9, - mintSigner, - { commitment: "confirmed" } - ); - - console.log("Mint created:", mint.toBase58()); - console.log("Mint tx:", mintTxId); - - // Wait for indexer to process - await sleep(2000); - - // Step 2: Derive ATA address and bump - const { address: ata, bump: ataBump } = getAssociatedTokenAddressInterface( - mint, - payer.publicKey - ); - - console.log("ATA address:", ata.toBase58()); - console.log("ATA bump:", ataBump); - - // Step 3: Get PDAs for config and rent sponsor - const compressibleConfig = getCompressibleConfigPda(); - const rentSponsor = getRentSponsorPda(); - - // Step 4: Call the Anchor program to create ATA - const txId = await program.methods - .createAta(ataBump, false) // bump, idempotent=false - .accounts({ - owner: payer.publicKey, - mint: mint, - payer: payer.publicKey, - associatedTokenAccount: ata, - systemProgram: SystemProgram.programId, - compressibleConfig: compressibleConfig, - rentSponsor: rentSponsor, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer]) - .rpc(); - - console.log("Create ATA tx:", txId); - - // Wait for indexer to process - await sleep(3000); - - // Step 5: Verify ATA was created - const compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - - assert.ok( - compressedAccounts.items.length > 0, - "ATA was not created - no accounts found" - ); - - const ataAccount = compressedAccounts.items[0]; - - assert.ok( - ataAccount.parsed.mint.equals(mint), - "ATA mint should match created mint" - ); - - assert.ok( - ataAccount.parsed.owner.equals(payer.publicKey), - "ATA owner should match payer" - ); - - console.log("ATA verified:"); - console.log(" Address:", ataAccount.address.toBase58()); - console.log(" Owner:", ataAccount.parsed.owner.toBase58()); - console.log(" Mint:", ataAccount.parsed.mint.toBase58()); - console.log(" Balance:", ataAccount.parsed.amount.toString()); - }); - - it("creates ATA idempotently (does not fail if already exists)", async () => { - // Step 1: Create a compressed mint via SDK - const mintSigner = Keypair.generate(); - - const { mint } = await createMintInterface( - rpc, - payer, - payer, - null, - 9, - mintSigner, - { commitment: "confirmed" } - ); - - await sleep(2000); - - // Step 2: Derive ATA address and bump - const { address: ata, bump: ataBump } = getAssociatedTokenAddressInterface( - mint, - payer.publicKey - ); - - const compressibleConfig = getCompressibleConfigPda(); - const rentSponsor = getRentSponsorPda(); - - // Step 3: Create ATA first time (non-idempotent) - await program.methods - .createAta(ataBump, false) - .accounts({ - owner: payer.publicKey, - mint: mint, - payer: payer.publicKey, - associatedTokenAccount: ata, - systemProgram: SystemProgram.programId, - compressibleConfig: compressibleConfig, - rentSponsor: rentSponsor, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer]) - .rpc(); - - await sleep(2000); - - // Step 4: Create ATA second time with idempotent=true (should not fail) - const txId = await program.methods - .createAta(ataBump, true) // idempotent=true - .accounts({ - owner: payer.publicKey, - mint: mint, - payer: payer.publicKey, - associatedTokenAccount: ata, - systemProgram: SystemProgram.programId, - compressibleConfig: compressibleConfig, - rentSponsor: rentSponsor, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer]) - .rpc(); - - console.log("Idempotent create ATA tx:", txId); - - // Verify account still exists - await sleep(2000); - - const compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - - assert.ok( - compressedAccounts.items.length > 0, - "ATA should still exist after idempotent call" - ); - - assert.ok( - compressedAccounts.items[0].parsed.mint.equals(mint), - "ATA mint should match" - ); - }); -}); diff --git a/program-examples/anchor/tests/create-mint.ts b/program-examples/anchor/tests/create-mint.ts deleted file mode 100644 index 9899450..0000000 --- a/program-examples/anchor/tests/create-mint.ts +++ /dev/null @@ -1,235 +0,0 @@ -import * as anchor from "@coral-xyz/anchor"; -import { Program, web3 } from "@coral-xyz/anchor"; -import { LightTokenAnchorCreateMint } from "../target/types/light_token_anchor_create_mint"; -import { - bn, - confirmTx, - createRpc, - deriveAddressV2, - batchAddressTree, - Rpc, - sleep, - featureFlags, - VERSION, - selectStateTreeInfo, - TreeInfo, -} from "@lightprotocol/stateless.js"; -import { assert } from "chai"; -import { PublicKey, SystemProgram } from "@solana/web3.js"; - -// Force V2 mode -(featureFlags as any).version = VERSION.V2; - -const path = require("path"); -const os = require("os"); -require("dotenv").config(); - -const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); -process.env.ANCHOR_WALLET = anchorWalletPath; - -// Light Protocol system account constants -const LIGHT_SYSTEM_PROGRAM_ID = new PublicKey( - "SySTEM1eSU2p4BGQfQpimFEWWSC1XDFeun3Nqzz3rT7" -); -const ACCOUNT_COMPRESSION_PROGRAM_ID = new PublicKey( - "compr6CUsB5m2jS4Y3831ztGSTnDpnKJTKS95d64XVq" -); -const ACCOUNT_COMPRESSION_AUTHORITY_PDA = new PublicKey( - "HwXnGK3tPkkVY6P439H2p68AxpeuWXd5PcrAxFpbmfbA" -); -const CPI_AUTHORITY_PDA = new PublicKey( - "GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy" -); -const REGISTERED_PROGRAM_PDA = new PublicKey( - "35hkDgaAKwMCaxRz2ocSZ6NaUrtKkyNqU6c4RV3tYJRh" -); -const COMPRESSIBLE_CONFIG_V1 = new PublicKey( - "ACXg8a7VaqecBWrSbdu73W4Pg9gsqXJ3EXAqkHyhvVXg" -); -const RENT_SPONSOR = new PublicKey( - "r18WwUxfG8kQ69bQPAB2jV6zGNKy3GosFGctjQoV4ti" -); -const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( - "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" -); - -// Compressed mint seed constant (matches COMPRESSED_MINT_SEED in Rust) -const COMPRESSED_MINT_SEED = Buffer.from("compressed_mint"); - -/** - * Derives the mint PDA from a mint seed keypair. - * Equivalent to find_mint_address in Rust. - */ -function findMintAddress(mintSeed: PublicKey): [PublicKey, number] { - return PublicKey.findProgramAddressSync( - [COMPRESSED_MINT_SEED, mintSeed.toBytes()], - LIGHT_TOKEN_PROGRAM_ID - ); -} - -/** - * Derives the compressed mint address from the mint seed and address tree. - * Equivalent to derive_mint_compressed_address in Rust. - */ -function deriveMintCompressedAddress( - mintSeed: PublicKey, - addressTree: PublicKey -): PublicKey { - const [mintPda] = findMintAddress(mintSeed); - // deriveAddressV2 takes (seed, addressTree, programId) - // The seed is the mint PDA bytes - return deriveAddressV2( - mintPda.toBytes(), - addressTree, - LIGHT_TOKEN_PROGRAM_ID - ); -} - -describe("create-mint", () => { - const program = anchor.workspace - .LightTokenAnchorCreateMint as Program; - - it("creates a compressed mint", async () => { - const signer = new web3.Keypair(); - const rpc = createRpc( - "http://127.0.0.1:8899", - "http://127.0.0.1:8784", - "http://127.0.0.1:3001", - { - commitment: "confirmed", - } - ); - - // Airdrop SOL to signer - const lamports = web3.LAMPORTS_PER_SOL; - await rpc.requestAirdrop(signer.publicKey, lamports); - await sleep(2000); - - // Get tree info - const stateTreeInfos = await rpc.getStateTreeInfos(); - const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); - const addressTree = new PublicKey(batchAddressTree); - - // Create mint seed keypair - const mintSeed = new web3.Keypair(); - const decimals = 9; - - // Derive mint PDA and compression address - const [mintPda, bump] = findMintAddress(mintSeed.publicKey); - const compressionAddress = deriveMintCompressedAddress( - mintSeed.publicKey, - addressTree - ); - - console.log("Mint seed:", mintSeed.publicKey.toBase58()); - console.log("Mint PDA:", mintPda.toBase58()); - console.log("Compression address:", compressionAddress.toBase58()); - - // Create compressed mint - const txId = await createCompressedMint( - rpc, - addressTree, - compressionAddress, - mintPda, - bump, - mintSeed, - program, - stateTreeInfo, - signer, - decimals - ); - console.log("Transaction ID:", txId); - - // Wait for indexer to process the transaction - const slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - - // Verify the compressed account exists - const compressedAccount = await rpc.getCompressedAccount( - bn(compressionAddress.toBytes()) - ); - - assert.ok(compressedAccount, "Compressed mint account should exist"); - assert.ok( - compressedAccount.data, - "Compressed mint account should have data" - ); - - console.log("Compressed mint created successfully!"); - console.log("Discriminator:", compressedAccount.data.discriminator); - }); -}); - -async function createCompressedMint( - rpc: Rpc, - addressTree: PublicKey, - compressionAddress: PublicKey, - mintPda: PublicKey, - bump: number, - mintSeed: web3.Keypair, - program: Program, - stateTreeInfo: TreeInfo, - signer: web3.Keypair, - decimals: number -): Promise { - // Get validity proof for the new address - const proofRpcResult = await rpc.getValidityProofV0( - [], - [ - { - tree: addressTree, - queue: addressTree, - address: bn(compressionAddress.toBytes()), - }, - ] - ); - - const addressMerkleTreeRootIndex = proofRpcResult.rootIndices[0]; - const proof = proofRpcResult.compressedProof; - - // Compute budget instruction for sufficient CU - const computeBudgetIx = web3.ComputeBudgetProgram.setComputeUnitLimit({ - units: 1_000_000, - }); - - // Build the transaction - const tx = await program.methods - .createMint( - decimals, - addressMerkleTreeRootIndex, - Array.from(compressionAddress.toBytes()) as number[], - proof, - null, // freeze_authority - bump, - 16, // rent_payment - 766 // write_top_up - ) - .accounts({ - mintSeed: mintSeed.publicKey, - authority: signer.publicKey, - payer: signer.publicKey, - addressTree: addressTree, - outputQueue: stateTreeInfo.queue, - lightSystemProgram: LIGHT_SYSTEM_PROGRAM_ID, - cpiAuthorityPda: CPI_AUTHORITY_PDA, - registeredProgramPda: REGISTERED_PROGRAM_PDA, - accountCompressionAuthority: ACCOUNT_COMPRESSION_AUTHORITY_PDA, - accountCompressionProgram: ACCOUNT_COMPRESSION_PROGRAM_ID, - systemProgram: SystemProgram.programId, - compressibleConfig: COMPRESSIBLE_CONFIG_V1, - mint: mintPda, - rentSponsor: RENT_SPONSOR, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .preInstructions([computeBudgetIx]) - .signers([signer, mintSeed]) - .transaction(); - - tx.recentBlockhash = (await rpc.getRecentBlockhash()).blockhash; - tx.sign(signer, mintSeed); - - const sig = await rpc.sendTransaction(tx, [signer, mintSeed]); - await confirmTx(rpc, sig); - - return sig; -} diff --git a/program-examples/anchor/tests/create-token-account.ts b/program-examples/anchor/tests/create-token-account.ts deleted file mode 100644 index 198a0a5..0000000 --- a/program-examples/anchor/tests/create-token-account.ts +++ /dev/null @@ -1,202 +0,0 @@ -import * as anchor from "@coral-xyz/anchor"; -import { Program } from "@coral-xyz/anchor"; -import { Keypair, PublicKey, SystemProgram } from "@solana/web3.js"; -import { Rpc, sleep } from "@lightprotocol/stateless.js"; -import * as assert from "assert"; - -// Import IDL for Anchor program -import idl from "../target/idl/light_token_anchor_create_token_account.json"; -import { LightTokenAnchorCreateTokenAccount } from "../target/types/light_token_anchor_create_token_account"; - -import { - createLocalnetRpc, - loadPayer, - setupMintViaSDK, - waitForIndexer, - LIGHT_TOKEN_PROGRAM_ID, -} from "./shared"; - -// PDA seeds for compressible config and rent sponsor -const CONFIG_SEED = Buffer.from("compressible_config"); -const RENT_SPONSOR_SEED = Buffer.from("rent_sponsor"); - -/** - * Derive the compressible config PDA - */ -function getCompressibleConfigPda(): PublicKey { - const [pda] = PublicKey.findProgramAddressSync( - [CONFIG_SEED], - LIGHT_TOKEN_PROGRAM_ID - ); - return pda; -} - -/** - * Derive the rent sponsor PDA - */ -function getRentSponsorPda(): PublicKey { - const [pda] = PublicKey.findProgramAddressSync( - [RENT_SPONSOR_SEED], - LIGHT_TOKEN_PROGRAM_ID - ); - return pda; -} - -describe("create-token-account", () => { - const payer = loadPayer(); - let rpc: Rpc; - let program: Program; - - before(async () => { - // Create RPC client for localnet - rpc = createLocalnetRpc(); - - // Load program from workspace - const provider = new anchor.AnchorProvider( - rpc as any, - new anchor.Wallet(payer), - { commitment: "confirmed" } - ); - anchor.setProvider(provider); - program = new Program(idl as anchor.Idl, provider) as Program; - }); - - it("creates a compressed token account via CPI", async () => { - // Step 1: Create a compressed mint via SDK - const { mint, transactionSignature: mintTxId } = await setupMintViaSDK( - rpc, - payer, - { decimals: 9 } - ); - - console.log("Mint created:", mint.toBase58()); - console.log("Mint tx:", mintTxId); - - // Wait for indexer to process - await waitForIndexer(rpc); - - // Step 2: Generate a new keypair for the token account - // Token accounts (unlike ATAs) use a generated keypair as their address - const tokenAccountKeypair = Keypair.generate(); - - // Step 3: Get PDAs for config and rent sponsor - const compressibleConfig = getCompressibleConfigPda(); - const rentSponsor = getRentSponsorPda(); - - // Step 4: Call the Anchor program to create token account - // The owner parameter specifies who owns the token account - const owner = payer.publicKey; - - const txId = await program.methods - .createTokenAccount(owner) - .accounts({ - payer: payer.publicKey, - account: tokenAccountKeypair.publicKey, - mint: mint, - compressibleConfig: compressibleConfig, - rentSponsor: rentSponsor, - systemProgram: SystemProgram.programId, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer, tokenAccountKeypair]) - .rpc(); - - console.log("Create token account tx:", txId); - - // Wait for indexer to process - await sleep(3000); - - // Step 5: Verify the token account was created - const compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( - owner, - { mint } - ); - - assert.ok( - compressedAccounts.items.length > 0, - "Token account was not created - no accounts found" - ); - - const tokenAccount = compressedAccounts.items[0]; - - assert.ok( - tokenAccount.parsed.mint.equals(mint), - "Token account mint should match created mint" - ); - - assert.ok( - tokenAccount.parsed.owner.equals(owner), - "Token account owner should match specified owner" - ); - - console.log("Token account verified:"); - console.log(" Address:", tokenAccount.address.toBase58()); - console.log(" Owner:", tokenAccount.parsed.owner.toBase58()); - console.log(" Mint:", tokenAccount.parsed.mint.toBase58()); - console.log(" Balance:", tokenAccount.parsed.amount.toString()); - }); - - it("creates a token account for a different owner", async () => { - // Step 1: Create a compressed mint via SDK - const { mint } = await setupMintViaSDK(rpc, payer, { decimals: 6 }); - - await waitForIndexer(rpc); - - // Step 2: Generate a new keypair for the token account - const tokenAccountKeypair = Keypair.generate(); - - // Step 3: Generate a different owner (not the payer) - const differentOwner = Keypair.generate(); - - // Step 4: Get PDAs - const compressibleConfig = getCompressibleConfigPda(); - const rentSponsor = getRentSponsorPda(); - - // Step 5: Create token account with different owner - const txId = await program.methods - .createTokenAccount(differentOwner.publicKey) - .accounts({ - payer: payer.publicKey, - account: tokenAccountKeypair.publicKey, - mint: mint, - compressibleConfig: compressibleConfig, - rentSponsor: rentSponsor, - systemProgram: SystemProgram.programId, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer, tokenAccountKeypair]) - .rpc(); - - console.log("Create token account for different owner tx:", txId); - - // Wait for indexer to process - await sleep(3000); - - // Step 6: Verify the token account was created with the correct owner - const compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( - differentOwner.publicKey, - { mint } - ); - - assert.ok( - compressedAccounts.items.length > 0, - "Token account for different owner was not created" - ); - - const tokenAccount = compressedAccounts.items[0]; - - assert.ok( - tokenAccount.parsed.mint.equals(mint), - "Token account mint should match" - ); - - assert.ok( - tokenAccount.parsed.owner.equals(differentOwner.publicKey), - "Token account owner should match specified different owner" - ); - - console.log("Token account for different owner verified:"); - console.log(" Owner:", tokenAccount.parsed.owner.toBase58()); - console.log(" Mint:", tokenAccount.parsed.mint.toBase58()); - }); -}); diff --git a/program-examples/anchor/tests/freeze.ts b/program-examples/anchor/tests/freeze.ts deleted file mode 100644 index 767f3d7..0000000 --- a/program-examples/anchor/tests/freeze.ts +++ /dev/null @@ -1,156 +0,0 @@ -/** - * Freeze Test - * - * Tests the freeze anchor program that freezes a compressed token account via CPI. - * - * Flow: - * 1. Create compressed mint WITH freeze authority via SDK - * 2. Create associated token account via SDK - * 3. Mint tokens via SDK - * 4. Call anchor program to freeze account via CPI - * 5. Verify account is frozen - */ -import * as anchor from "@coral-xyz/anchor"; -import { Program } from "@coral-xyz/anchor"; -import { LightTokenAnchorFreeze } from "../target/types/light_token_anchor_freeze"; -import { - Keypair, - PublicKey, -} from "@solana/web3.js"; -import { - Rpc, - sleep, - selectStateTreeInfo, -} from "@lightprotocol/stateless.js"; -import { - createAssociatedTokenAccount, - getAssociatedTokenAddressSync, -} from "@lightprotocol/compressed-token"; -import * as assert from "assert"; -import { - createLocalnetRpc, - loadPayer, - waitForIndexer, - setupMintViaSDK, - mintTokensViaSDK, - getCompressedTokenBalance, - LIGHT_TOKEN_PROGRAM_ID, -} from "./shared"; - -const path = require("path"); -const os = require("os"); - -const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); -process.env.ANCHOR_WALLET = anchorWalletPath; - -describe("freeze", () => { - const program = anchor.workspace - .LightTokenAnchorFreeze as Program; - - let rpc: Rpc; - let payer: Keypair; - - before(async () => { - payer = loadPayer(); - rpc = createLocalnetRpc(); - - // Airdrop SOL to payer - await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); - await sleep(2000); - }); - - it("freezes a compressed token account via CPI", async () => { - // Step 1: Create compressed mint WITH freeze authority - const { mint, transactionSignature: mintTxId } = await setupMintViaSDK( - rpc, - payer, - { - decimals: 9, - freezeAuthority: payer.publicKey, // Enable freeze authority - } - ); - - console.log("Mint created:", mint.toBase58()); - console.log("Mint tx:", mintTxId); - - await sleep(2000); - - // Step 2: Create ATA via SDK - const stateTreeInfos = await rpc.getStateTreeInfos(); - const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); - - await createAssociatedTokenAccount( - rpc, - payer, - mint, - payer.publicKey, - stateTreeInfo, - 3, - { commitment: "confirmed" } - ); - - const ata = getAssociatedTokenAddressSync(mint, payer.publicKey); - console.log("ATA created:", ata.toBase58()); - - await waitForIndexer(rpc); - - // Step 3: Mint tokens via SDK - const mintAmount = 1_000_000; - await mintTokensViaSDK(rpc, payer, mint, payer.publicKey, mintAmount); - console.log("Minted tokens:", mintAmount); - - await waitForIndexer(rpc); - - // Verify initial balance - const beforeFreeze = await getCompressedTokenBalance(rpc, payer.publicKey, mint); - assert.strictEqual( - Number(beforeFreeze.totalBalance), - mintAmount, - "Initial balance should match minted amount" - ); - - // Step 4: Call the Anchor program to freeze account via CPI - const tx = await program.methods - .freeze() - .accounts({ - tokenAccount: ata, - mint: mint, - freezeAuthority: payer.publicKey, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer]) - .rpc(); - - console.log("Freeze tx:", tx); - - await waitForIndexer(rpc); - - // Step 5: Verify account is frozen - // The token account should still exist with the same balance - const afterFreeze = await getCompressedTokenBalance(rpc, payer.publicKey, mint); - - assert.strictEqual( - Number(afterFreeze.totalBalance), - mintAmount, - "Balance should remain unchanged after freeze" - ); - - assert.ok( - afterFreeze.accounts.length > 0, - "Token account should still exist after freeze" - ); - - // Check that the account state indicates frozen - // The compressed token account should have isFrozen = true - const frozenAccount = afterFreeze.accounts[0]; - assert.ok( - frozenAccount.parsed.state === 2 || frozenAccount.parsed.isFrozen === true, - "Token account should be in frozen state" - ); - - console.log("Token account frozen successfully!"); - console.log(" Account address:", frozenAccount.address?.toBase58() || "N/A"); - console.log(" Balance:", frozenAccount.parsed.amount.toString()); - console.log(" State:", frozenAccount.parsed.state); - }); -}); diff --git a/program-examples/anchor/tests/mint-to.ts b/program-examples/anchor/tests/mint-to.ts deleted file mode 100644 index d35eb4c..0000000 --- a/program-examples/anchor/tests/mint-to.ts +++ /dev/null @@ -1,148 +0,0 @@ -import * as anchor from "@coral-xyz/anchor"; -import { Program, BN } from "@coral-xyz/anchor"; -import { LightTokenAnchorMintTo } from "../target/types/light_token_anchor_mint_to"; -import { - Keypair, - PublicKey, - SystemProgram, -} from "@solana/web3.js"; -import { - createRpc, - Rpc, - sleep, - selectStateTreeInfo, -} from "@lightprotocol/stateless.js"; -import { - createMintInterface, - createAssociatedTokenAccount, - getAssociatedTokenAddressSync, -} from "@lightprotocol/compressed-token"; -import * as assert from "assert"; -import { homedir } from "os"; -import { readFileSync } from "fs"; - -const path = require("path"); -const os = require("os"); - -const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); -process.env.ANCHOR_WALLET = anchorWalletPath; - -const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( - "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" -); - -describe("mint-to", () => { - const program = anchor.workspace - .LightTokenAnchorMintTo as Program; - - let rpc: Rpc; - let payer: Keypair; - let mint: PublicKey; - let ata: PublicKey; - - before(async () => { - payer = Keypair.fromSecretKey( - new Uint8Array( - JSON.parse( - readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") - ) - ) - ); - - rpc = createRpc( - "http://127.0.0.1:8899", - "http://127.0.0.1:8784", - "http://127.0.0.1:3001", - { commitment: "confirmed" } - ); - - // Airdrop SOL to payer - await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); - await sleep(2000); - - // Create compressed mint via SDK - const mintSigner = Keypair.generate(); - const { mint: createdMint, transactionSignature } = await createMintInterface( - rpc, - payer, - payer, - null, - 9, - mintSigner, - { commitment: "confirmed" } - ); - mint = createdMint; - console.log("Mint created:", mint.toBase58()); - console.log("Mint tx:", transactionSignature); - - await sleep(2000); - - // Create ATA via SDK - const stateTreeInfos = await rpc.getStateTreeInfos(); - const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); - - await createAssociatedTokenAccount( - rpc, - payer, - mint, - payer.publicKey, - stateTreeInfo, - 3, - { commitment: "confirmed" } - ); - - ata = getAssociatedTokenAddressSync(mint, payer.publicKey); - console.log("ATA created:", ata.toBase58()); - - // Wait for indexer - const slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - }); - - it("mints compressed tokens via anchor program", async () => { - const amount = new BN(1_000_000); - - const tx = await program.methods - .mintTo(amount) - .accounts({ - mint: mint, - destination: ata, - authority: payer.publicKey, - systemProgram: SystemProgram.programId, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer]) - .rpc(); - - console.log("Mint-to tx:", tx); - - // Wait for indexer to process - await sleep(3000); - const slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - - // Verify token balance - const compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - - assert.ok( - compressedAccounts.items.length > 0, - "Should have at least one compressed token account" - ); - - const totalBalance = compressedAccounts.items.reduce( - (sum, acc) => sum + Number(acc.parsed.amount), - 0 - ); - - assert.strictEqual( - totalBalance, - amount.toNumber(), - `Token balance should be ${amount.toNumber()}` - ); - - console.log("Total balance:", totalBalance); - }); -}); diff --git a/program-examples/anchor/tests/revoke.ts b/program-examples/anchor/tests/revoke.ts deleted file mode 100644 index 455d745..0000000 --- a/program-examples/anchor/tests/revoke.ts +++ /dev/null @@ -1,213 +0,0 @@ -import * as anchor from "@coral-xyz/anchor"; -import { Program, BN } from "@coral-xyz/anchor"; -import { LightTokenAnchorRevoke } from "../target/types/light_token_anchor_revoke"; -import { LightTokenAnchorApprove } from "../target/types/light_token_anchor_approve"; -import { - Keypair, - PublicKey, - SystemProgram, -} from "@solana/web3.js"; -import { - createRpc, - Rpc, - sleep, - selectStateTreeInfo, -} from "@lightprotocol/stateless.js"; -import { - createMintInterface, - createAssociatedTokenAccount, - getAssociatedTokenAddressSync, - mintToCompressed, -} from "@lightprotocol/compressed-token"; -import * as assert from "assert"; -import { homedir } from "os"; -import { readFileSync } from "fs"; - -const path = require("path"); -const os = require("os"); - -const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); -process.env.ANCHOR_WALLET = anchorWalletPath; - -const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( - "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" -); - -describe("revoke", () => { - const revokeProgram = anchor.workspace - .LightTokenAnchorRevoke as Program; - const approveProgram = anchor.workspace - .LightTokenAnchorApprove as Program; - - let rpc: Rpc; - let payer: Keypair; - let mint: PublicKey; - let ata: PublicKey; - - before(async () => { - payer = Keypair.fromSecretKey( - new Uint8Array( - JSON.parse( - readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") - ) - ) - ); - - rpc = createRpc( - "http://127.0.0.1:8899", - "http://127.0.0.1:8784", - "http://127.0.0.1:3001", - { commitment: "confirmed" } - ); - - // Airdrop SOL to payer - await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); - await sleep(2000); - - // Create compressed mint via SDK - const mintSigner = Keypair.generate(); - const { mint: createdMint, transactionSignature } = await createMintInterface( - rpc, - payer, - payer, - null, - 9, - mintSigner, - { commitment: "confirmed" } - ); - mint = createdMint; - console.log("Mint created:", mint.toBase58()); - console.log("Mint tx:", transactionSignature); - - await sleep(2000); - - // Create ATA via SDK - const stateTreeInfos = await rpc.getStateTreeInfos(); - const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); - - await createAssociatedTokenAccount( - rpc, - payer, - mint, - payer.publicKey, - stateTreeInfo, - 3, - { commitment: "confirmed" } - ); - - ata = getAssociatedTokenAddressSync(mint, payer.publicKey); - console.log("ATA created:", ata.toBase58()); - - // Mint tokens to the ATA - const mintAmount = 1_000_000; - await mintToCompressed( - rpc, - payer, - mint, - payer, // mint authority - [{ recipient: payer.publicKey, amount: mintAmount }], - stateTreeInfo, - 3, - { commitment: "confirmed" } - ); - console.log("Minted", mintAmount, "tokens to ATA"); - - // Wait for indexer - const slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - }); - - it("revokes delegation via anchor program", async () => { - // Step 1: Approve a delegate first using the approve anchor program - const delegate = Keypair.generate(); - const approveAmount = new BN(500_000); - - console.log("Delegate pubkey:", delegate.publicKey.toBase58()); - console.log("Approving amount:", approveAmount.toString()); - - const approveTx = await approveProgram.methods - .approve(approveAmount) - .accounts({ - tokenAccount: ata, - delegate: delegate.publicKey, - owner: payer.publicKey, - systemProgram: SystemProgram.programId, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer]) - .rpc(); - - console.log("Approve tx:", approveTx); - - // Wait for indexer to process - await sleep(3000); - let slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - - // Verify delegation was set - let compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - - assert.ok( - compressedAccounts.items.length > 0, - "Should have at least one compressed token account" - ); - - // Find the account with delegation - const accountWithDelegate = compressedAccounts.items.find( - (acc) => acc.parsed.delegate !== null - ); - - assert.ok( - accountWithDelegate, - "Should have an account with delegate set" - ); - - console.log("Delegate set to:", accountWithDelegate.parsed.delegate?.toBase58()); - - // Step 2: Revoke the delegation via the revoke anchor program - const revokeTx = await revokeProgram.methods - .revoke() - .accounts({ - tokenAccount: ata, - owner: payer.publicKey, - systemProgram: SystemProgram.programId, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer]) - .rpc(); - - console.log("Revoke tx:", revokeTx); - - // Wait for indexer to process - await sleep(3000); - slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - - // Step 3: Verify delegation was revoked - compressedAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - - assert.ok( - compressedAccounts.items.length > 0, - "Should still have at least one compressed token account" - ); - - // Check that no account has a delegate anymore - const accountsWithDelegate = compressedAccounts.items.filter( - (acc) => acc.parsed.delegate !== null - ); - - assert.strictEqual( - accountsWithDelegate.length, - 0, - "No accounts should have a delegate after revoke" - ); - - console.log("Delegation successfully revoked!"); - }); -}); diff --git a/program-examples/anchor/tests/shared/constants.ts b/program-examples/anchor/tests/shared/constants.ts deleted file mode 100644 index 8b55bd3..0000000 --- a/program-examples/anchor/tests/shared/constants.ts +++ /dev/null @@ -1,78 +0,0 @@ -/** - * Program IDs and Constants - * - * Light Protocol program IDs and constants for CPI operations. - */ -import { PublicKey } from "@solana/web3.js"; - -/** - * Light Protocol Compressed Token Program ID. - * The main program for compressed SPL token operations. - */ -export const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( - "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" -); - -/** - * Light System Program ID. - * Core program for compressed account operations. - */ -export const LIGHT_SYSTEM_PROGRAM_ID = new PublicKey( - "SySTEM1eSU2p4BGQfQpimFEWWSC1XDFeun3Nqzz3rT7" -); - -/** - * Account Compression Program ID. - * Manages Merkle trees for compressed accounts. - */ -export const ACCOUNT_COMPRESSION_PROGRAM_ID = new PublicKey( - "compr6CUsB5m2jS4Y3831ztGSTnDpnKJTKS95d64XVq" -); - -/** - * Noop Program ID. - * Used for logging compressed account data on-chain. - */ -export const NOOP_PROGRAM_ID = new PublicKey( - "noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV" -); - -/** - * Registered Program PDA seed. - */ -export const REGISTERED_PROGRAM_PDA_SEED = Buffer.from("registered_program_pda"); - -/** - * CPI Authority PDA seed. - */ -export const CPI_AUTHORITY_PDA_SEED = Buffer.from("cpi_authority"); - -/** - * Derive CPI authority PDA for a program. - * - * @param programId - The program deriving the CPI authority - * @returns The CPI authority PDA and bump - */ -export function deriveCpiAuthorityPda( - programId: PublicKey -): [PublicKey, number] { - return PublicKey.findProgramAddressSync( - [CPI_AUTHORITY_PDA_SEED], - programId - ); -} - -/** - * Derive registered program PDA. - * - * @param programId - The program ID to derive for - * @returns The registered program PDA and bump - */ -export function deriveRegisteredProgramPda( - programId: PublicKey -): [PublicKey, number] { - return PublicKey.findProgramAddressSync( - [REGISTERED_PROGRAM_PDA_SEED, programId.toBytes()], - LIGHT_SYSTEM_PROGRAM_ID - ); -} diff --git a/program-examples/anchor/tests/shared/index.ts b/program-examples/anchor/tests/shared/index.ts deleted file mode 100644 index dcc02c7..0000000 --- a/program-examples/anchor/tests/shared/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Shared Test Utilities - * - * Re-exports all shared utilities for convenient importing. - * - * Usage: - * ```typescript - * import { createLocalnetRpc, loadPayer, setupMintViaSDK } from "./shared"; - * ``` - */ - -export * from "./setup"; -export * from "./constants"; -export * from "./mint-helpers"; diff --git a/program-examples/anchor/tests/shared/mint-helpers.ts b/program-examples/anchor/tests/shared/mint-helpers.ts deleted file mode 100644 index fb59b76..0000000 --- a/program-examples/anchor/tests/shared/mint-helpers.ts +++ /dev/null @@ -1,183 +0,0 @@ -/** - * Mint Helper Utilities - * - * Helper functions for creating compressed mints and minting tokens - * using the Light Protocol compressed-token SDK. - */ -import { - Rpc, - selectStateTreeInfo, -} from "@lightprotocol/stateless.js"; -import { - createMintInterface, - mintToCompressed, -} from "@lightprotocol/compressed-token"; -import { - Keypair, - PublicKey, -} from "@solana/web3.js"; - -/** - * Options for creating a compressed mint. - */ -export interface CreateMintOptions { - /** Number of decimal places (default: 9) */ - decimals?: number; - /** Freeze authority pubkey (default: null - no freeze authority) */ - freezeAuthority?: PublicKey | null; - /** Keypair to use as mint seed (default: generates new keypair) */ - mintSigner?: Keypair; -} - -/** - * Result from creating a compressed mint. - */ -export interface CreateMintResult { - /** The mint public key */ - mint: PublicKey; - /** The keypair used as mint seed */ - mintSigner: Keypair; - /** Transaction signature */ - transactionSignature: string; -} - -/** - * Create a compressed mint using the Light Protocol SDK. - * - * @param rpc - RPC connection - * @param payer - Fee payer and mint authority - * @param options - Optional configuration for the mint - * @returns Mint public key, signer keypair, and transaction signature - */ -export async function setupMintViaSDK( - rpc: Rpc, - payer: Keypair, - options: CreateMintOptions = {} -): Promise { - const { - decimals = 9, - freezeAuthority = null, - mintSigner = Keypair.generate(), - } = options; - - const { mint, transactionSignature } = await createMintInterface( - rpc, - payer, - payer, // mint authority - freezeAuthority, - decimals, - mintSigner, - { commitment: "confirmed" } - ); - - return { - mint, - mintSigner, - transactionSignature, - }; -} - -/** - * Recipient for minting tokens. - */ -export interface MintRecipient { - /** Recipient public key */ - recipient: PublicKey; - /** Amount to mint */ - amount: number; -} - -/** - * Mint compressed tokens to one or more recipients. - * - * @param rpc - RPC connection - * @param payer - Fee payer - * @param mint - Mint public key - * @param mintAuthority - Mint authority keypair - * @param recipient - Recipient public key - * @param amount - Amount to mint - * @returns Transaction signature - */ -export async function mintTokensViaSDK( - rpc: Rpc, - payer: Keypair, - mint: PublicKey, - recipient: PublicKey, - amount: number -): Promise { - const stateTreeInfos = await rpc.getStateTreeInfos(); - const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); - - const txId = await mintToCompressed( - rpc, - payer, - mint, - payer, // mint authority (assumes payer is mint authority) - [{ recipient, amount }], - stateTreeInfo, - 3, // number of output accounts - { commitment: "confirmed" } - ); - - return txId; -} - -/** - * Mint compressed tokens to multiple recipients in a single transaction. - * - * @param rpc - RPC connection - * @param payer - Fee payer - * @param mint - Mint public key - * @param mintAuthority - Mint authority keypair - * @param recipients - Array of recipients with amounts - * @returns Transaction signature - */ -export async function mintTokensToMultipleViaSDK( - rpc: Rpc, - payer: Keypair, - mint: PublicKey, - mintAuthority: Keypair, - recipients: MintRecipient[] -): Promise { - const stateTreeInfos = await rpc.getStateTreeInfos(); - const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); - - const txId = await mintToCompressed( - rpc, - payer, - mint, - mintAuthority, - recipients, - stateTreeInfo, - recipients.length + 1, // number of output accounts - { commitment: "confirmed" } - ); - - return txId; -} - -/** - * Get compressed token accounts for an owner. - * - * @param rpc - RPC connection - * @param owner - Owner public key - * @param mint - Mint to filter by - * @returns Compressed token accounts - */ -export async function getCompressedTokenBalance( - rpc: Rpc, - owner: PublicKey, - mint: PublicKey -): Promise<{ accounts: any[]; totalBalance: bigint }> { - const result = await rpc.getCompressedTokenAccountsByOwner(owner, { mint }); - - const totalBalance = result.items.reduce( - (sum, acc) => sum + BigInt(acc.parsed.amount), - BigInt(0) - ); - - return { - accounts: result.items, - totalBalance, - }; -} diff --git a/program-examples/anchor/tests/shared/setup.ts b/program-examples/anchor/tests/shared/setup.ts deleted file mode 100644 index 9b8ee4d..0000000 --- a/program-examples/anchor/tests/shared/setup.ts +++ /dev/null @@ -1,107 +0,0 @@ -/** - * RPC Connection and Wallet Utilities - * - * Setup utilities for Light Protocol compressed token tests. - * Provides RPC connections, wallet loading, and airdrop helpers. - */ -import { - createRpc, - Rpc, - confirmTx, -} from "@lightprotocol/stateless.js"; -import { - Keypair, - PublicKey, - LAMPORTS_PER_SOL, -} from "@solana/web3.js"; -import { homedir } from "os"; -import { readFileSync } from "fs"; - -/** - * Create RPC client for localnet with Light Protocol indexer endpoints. - * - * Connects to: - * - Solana RPC: http://127.0.0.1:8899 - * - Prover: http://127.0.0.1:8784 - * - Indexer: http://127.0.0.1:3001 - */ -export function createLocalnetRpc(): Rpc { - return createRpc( - "http://127.0.0.1:8899", - "http://127.0.0.1:8784", - "http://127.0.0.1:3001", - { commitment: "confirmed" } - ); -} - -/** - * Create RPC client for devnet using default Light Protocol endpoints. - */ -export function createDevnetRpc(): Rpc { - return createRpc(); -} - -/** - * Load payer keypair from default Solana CLI config location. - * - * Reads from: ~/.config/solana/id.json - */ -export function loadPayer(): Keypair { - const keyPath = `${homedir()}/.config/solana/id.json`; - return Keypair.fromSecretKey( - new Uint8Array( - JSON.parse(readFileSync(keyPath, "utf8")) - ) - ); -} - -/** - * Load keypair from a specific file path. - */ -export function loadKeypairFromFile(path: string): Keypair { - return Keypair.fromSecretKey( - new Uint8Array( - JSON.parse(readFileSync(path, "utf8")) - ) - ); -} - -/** - * Airdrop SOL to a public key. - * - * @param rpc - RPC connection - * @param pubkey - Recipient public key - * @param lamports - Amount in lamports (default: 1 SOL) - */ -export async function airdrop( - rpc: Rpc, - pubkey: PublicKey, - lamports: number = LAMPORTS_PER_SOL -): Promise { - const sig = await rpc.requestAirdrop(pubkey, lamports); - await confirmTx(rpc, sig); - return sig; -} - -/** - * Wait for the Light Protocol indexer to process transactions up to the given slot. - * - * Calls rpc.confirmTransactionIndexed() which blocks until the indexer - * has processed all transactions up to the specified slot. - * - * @param rpc - RPC connection - * @param slot - Slot number to wait for (if not provided, uses current slot) - */ -export async function waitForIndexer(rpc: Rpc, slot?: number): Promise { - const targetSlot = slot ?? await rpc.getSlot(); - await rpc.confirmTransactionIndexed(targetSlot); -} - -/** - * Sleep for a specified duration. - * - * @param ms - Milliseconds to sleep - */ -export async function sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, ms)); -} diff --git a/program-examples/anchor/tests/thaw.ts b/program-examples/anchor/tests/thaw.ts deleted file mode 100644 index dbd7ab1..0000000 --- a/program-examples/anchor/tests/thaw.ts +++ /dev/null @@ -1,174 +0,0 @@ -/** - * Thaw Test - * - * Tests the thaw anchor program that thaws a frozen compressed token account via CPI. - * - * Flow: - * 1. Create compressed mint WITH freeze authority via SDK - * 2. Create associated token account via SDK - * 3. Mint tokens via SDK - * 4. Freeze account via SDK - * 5. Call anchor program to thaw account via CPI - * 6. Verify account is thawed - */ -import * as anchor from "@coral-xyz/anchor"; -import { Program } from "@coral-xyz/anchor"; -import { LightTokenAnchorThaw } from "../target/types/light_token_anchor_thaw"; -import { - Keypair, - PublicKey, -} from "@solana/web3.js"; -import { - Rpc, - sleep, - selectStateTreeInfo, -} from "@lightprotocol/stateless.js"; -import { - createAssociatedTokenAccount, - getAssociatedTokenAddressSync, - freezeCompressed, -} from "@lightprotocol/compressed-token"; -import * as assert from "assert"; -import { - createLocalnetRpc, - loadPayer, - waitForIndexer, - setupMintViaSDK, - mintTokensViaSDK, - getCompressedTokenBalance, - LIGHT_TOKEN_PROGRAM_ID, -} from "./shared"; - -const path = require("path"); -const os = require("os"); - -const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); -process.env.ANCHOR_WALLET = anchorWalletPath; - -describe("thaw", () => { - const program = anchor.workspace - .LightTokenAnchorThaw as Program; - - let rpc: Rpc; - let payer: Keypair; - - before(async () => { - payer = loadPayer(); - rpc = createLocalnetRpc(); - - // Airdrop SOL to payer - await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); - await sleep(2000); - }); - - it("thaws a frozen compressed token account via CPI", async () => { - // Step 1: Create compressed mint WITH freeze authority - const { mint, transactionSignature: mintTxId } = await setupMintViaSDK( - rpc, - payer, - { - decimals: 9, - freezeAuthority: payer.publicKey, // Enable freeze authority - } - ); - - console.log("Mint created:", mint.toBase58()); - console.log("Mint tx:", mintTxId); - - await sleep(2000); - - // Step 2: Create ATA via SDK - const stateTreeInfos = await rpc.getStateTreeInfos(); - const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); - - await createAssociatedTokenAccount( - rpc, - payer, - mint, - payer.publicKey, - stateTreeInfo, - 3, - { commitment: "confirmed" } - ); - - const ata = getAssociatedTokenAddressSync(mint, payer.publicKey); - console.log("ATA created:", ata.toBase58()); - - await waitForIndexer(rpc); - - // Step 3: Mint tokens via SDK - const mintAmount = 1_000_000; - await mintTokensViaSDK(rpc, payer, mint, payer.publicKey, mintAmount); - console.log("Minted tokens:", mintAmount); - - await waitForIndexer(rpc); - - // Step 4: Freeze account via SDK - const freezeTx = await freezeCompressed( - rpc, - payer, - mint, - payer, // freeze authority - ata - ); - console.log("Freeze tx (SDK):", freezeTx); - - await waitForIndexer(rpc); - - // Verify account is frozen - const frozenState = await getCompressedTokenBalance(rpc, payer.publicKey, mint); - assert.ok( - frozenState.accounts.length > 0, - "Token account should exist after freeze" - ); - - const frozenAccount = frozenState.accounts[0]; - assert.ok( - frozenAccount.parsed.state === 2 || frozenAccount.parsed.isFrozen === true, - "Token account should be frozen before thaw" - ); - console.log("Account frozen, state:", frozenAccount.parsed.state); - - // Step 5: Call the Anchor program to thaw account via CPI - const tx = await program.methods - .thaw() - .accounts({ - tokenAccount: ata, - mint: mint, - freezeAuthority: payer.publicKey, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer]) - .rpc(); - - console.log("Thaw tx:", tx); - - await waitForIndexer(rpc); - - // Step 6: Verify account is thawed - const afterThaw = await getCompressedTokenBalance(rpc, payer.publicKey, mint); - - assert.strictEqual( - Number(afterThaw.totalBalance), - mintAmount, - "Balance should remain unchanged after thaw" - ); - - assert.ok( - afterThaw.accounts.length > 0, - "Token account should still exist after thaw" - ); - - // Check that the account state indicates initialized (not frozen) - const thawedAccount = afterThaw.accounts[0]; - assert.ok( - thawedAccount.parsed.state === 1 || thawedAccount.parsed.isFrozen === false, - "Token account should be in initialized (thawed) state" - ); - - console.log("Token account thawed successfully!"); - console.log(" Account address:", thawedAccount.address?.toBase58() || "N/A"); - console.log(" Balance:", thawedAccount.parsed.amount.toString()); - console.log(" State:", thawedAccount.parsed.state); - }); -}); diff --git a/program-examples/anchor/tests/transfer.ts b/program-examples/anchor/tests/transfer.ts deleted file mode 100644 index b4bc02c..0000000 --- a/program-examples/anchor/tests/transfer.ts +++ /dev/null @@ -1,233 +0,0 @@ -import * as anchor from "@coral-xyz/anchor"; -import { Program, BN } from "@coral-xyz/anchor"; -import { LightTokenAnchorTransferInterface } from "../target/types/light_token_anchor_transfer_interface"; -import { - Keypair, - PublicKey, - SystemProgram, -} from "@solana/web3.js"; -import { - createRpc, - Rpc, - sleep, - selectStateTreeInfo, -} from "@lightprotocol/stateless.js"; -import { - createMintInterface, - createAssociatedTokenAccount, - getAssociatedTokenAddressSync, - mintToInterface, -} from "@lightprotocol/compressed-token"; -import * as assert from "assert"; -import { homedir } from "os"; -import { readFileSync } from "fs"; - -const path = require("path"); -const os = require("os"); - -const anchorWalletPath = path.join(os.homedir(), ".config/solana/id.json"); -process.env.ANCHOR_WALLET = anchorWalletPath; - -const LIGHT_TOKEN_PROGRAM_ID = new PublicKey( - "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m" -); - -// CPI authority PDA for light-token program -const CPI_AUTHORITY_PDA = new PublicKey( - "GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy" -); - -/** - * Load payer keypair from default Solana config - */ -function loadPayer(): Keypair { - return Keypair.fromSecretKey( - new Uint8Array( - JSON.parse( - readFileSync(`${homedir()}/.config/solana/id.json`, "utf8") - ) - ) - ); -} - -describe("transfer", () => { - const program = anchor.workspace - .LightTokenAnchorTransferInterface as Program; - - let rpc: Rpc; - let payer: Keypair; - let mint: PublicKey; - let sourceAta: PublicKey; - let destAta: PublicKey; - let recipient: Keypair; - const decimals = 9; - const mintAmount = 1_000_000; - - before(async () => { - payer = loadPayer(); - - rpc = createRpc( - "http://127.0.0.1:8899", - "http://127.0.0.1:8784", - "http://127.0.0.1:3001", - { commitment: "confirmed" } - ); - - // Airdrop SOL to payer - await rpc.requestAirdrop(payer.publicKey, 10 * anchor.web3.LAMPORTS_PER_SOL); - await sleep(2000); - - // Create compressed mint via SDK - const mintSigner = Keypair.generate(); - const { mint: createdMint, transactionSignature } = await createMintInterface( - rpc, - payer, - payer, - null, - decimals, - mintSigner, - { commitment: "confirmed" } - ); - mint = createdMint; - console.log("Mint created:", mint.toBase58()); - console.log("Mint tx:", transactionSignature); - - await sleep(2000); - - // Create source ATA for payer - const stateTreeInfos = await rpc.getStateTreeInfos(); - const stateTreeInfo = selectStateTreeInfo(stateTreeInfos); - - await createAssociatedTokenAccount( - rpc, - payer, - mint, - payer.publicKey, - stateTreeInfo, - 3, - { commitment: "confirmed" } - ); - - sourceAta = getAssociatedTokenAddressSync(mint, payer.publicKey); - console.log("Source ATA created:", sourceAta.toBase58()); - - // Mint tokens to source ATA - await mintToInterface( - rpc, - payer, - mint, - sourceAta, - payer, - mintAmount, - { commitment: "confirmed" } - ); - console.log("Minted", mintAmount, "tokens to source ATA"); - - await sleep(2000); - - // Create destination ATA for recipient - recipient = Keypair.generate(); - - await createAssociatedTokenAccount( - rpc, - payer, - mint, - recipient.publicKey, - stateTreeInfo, - 3, - { commitment: "confirmed" } - ); - - destAta = getAssociatedTokenAddressSync(mint, recipient.publicKey); - console.log("Destination ATA created:", destAta.toBase58()); - - // Wait for indexer to process - const slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - }); - - it("transfers compressed tokens via anchor program", async () => { - const transferAmount = new BN(100_000); - - // Get initial balances - const initialSourceAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - const initialSourceBalance = initialSourceAccounts.items.reduce( - (sum, acc) => sum + Number(acc.parsed.amount), - 0 - ); - - const initialDestAccounts = await rpc.getCompressedTokenAccountsByOwner( - recipient.publicKey, - { mint } - ); - const initialDestBalance = initialDestAccounts.items.reduce( - (sum, acc) => sum + Number(acc.parsed.amount), - 0 - ); - - console.log("Initial source balance:", initialSourceBalance); - console.log("Initial destination balance:", initialDestBalance); - - // Call the anchor program to transfer tokens - const tx = await program.methods - .transfer(transferAmount, decimals) - .accounts({ - source: sourceAta, - destination: destAta, - authority: payer.publicKey, - payer: payer.publicKey, - cpiAuthority: CPI_AUTHORITY_PDA, - systemProgram: SystemProgram.programId, - lightTokenProgram: LIGHT_TOKEN_PROGRAM_ID, - }) - .signers([payer]) - .rpc(); - - console.log("Transfer tx:", tx); - - // Wait for indexer to process - await sleep(3000); - const slot = await rpc.getSlot(); - await rpc.confirmTransactionIndexed(slot); - - // Verify balances changed correctly - const finalSourceAccounts = await rpc.getCompressedTokenAccountsByOwner( - payer.publicKey, - { mint } - ); - const finalSourceBalance = finalSourceAccounts.items.reduce( - (sum, acc) => sum + Number(acc.parsed.amount), - 0 - ); - - const finalDestAccounts = await rpc.getCompressedTokenAccountsByOwner( - recipient.publicKey, - { mint } - ); - const finalDestBalance = finalDestAccounts.items.reduce( - (sum, acc) => sum + Number(acc.parsed.amount), - 0 - ); - - console.log("Final source balance:", finalSourceBalance); - console.log("Final destination balance:", finalDestBalance); - - // Assert balances changed correctly - assert.strictEqual( - finalSourceBalance, - initialSourceBalance - transferAmount.toNumber(), - "Source balance should decrease by transfer amount" - ); - - assert.strictEqual( - finalDestBalance, - initialDestBalance + transferAmount.toNumber(), - "Destination balance should increase by transfer amount" - ); - - console.log("Transfer verified successfully!"); - }); -}); diff --git a/program-examples/anchor/tsconfig.json b/program-examples/anchor/tsconfig.json deleted file mode 100644 index d3ddbe8..0000000 --- a/program-examples/anchor/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "compilerOptions": { - "types": [ - "mocha", - "chai" - ], - "typeRoots": [ - "./node_modules/@types" - ], - "lib": [ - "es2015" - ], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "noEmit": true, - "noUnusedLocals": false, - "noUnusedParameters": false - }, - "include": [ - "ts-tests/**/*" - ], - "exclude": [ - "node_modules", - "target" - ] -} From 036be18a34fdd91578aa2257109183f0d4a68522 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Fri, 23 Jan 2026 20:13:10 +0000 Subject: [PATCH 05/23] must still cleanup --- ...2Akwa8qLrMj9.light_token_anchor_freeze.log | 1 + ...WD163VrhQAKD5q.light_token_anchor_burn.log | 1 + ....light_token_anchor_transfer_interface.log | 1 + ...7gSc3sNjv1g.light_token_anchor_approve.log | 1 + program-examples/anchor/Cargo.lock | 163 ++++-------------- program-examples/anchor/Cargo.toml | 16 +- .../anchor/programs/approve/src/lib.rs | 2 +- .../anchor/programs/approve/tests/test.rs | 1 + .../anchor/programs/burn/src/lib.rs | 5 +- .../anchor/programs/burn/tests/test.rs | 3 + .../anchor/programs/close/src/lib.rs | 2 +- .../anchor/programs/create-ata/src/lib.rs | 2 +- .../anchor/programs/create-mint/src/lib.rs | 2 +- .../programs/create-token-account/src/lib.rs | 2 +- .../anchor/programs/freeze/src/lib.rs | 2 +- .../anchor/programs/freeze/tests/test.rs | 1 + .../anchor/programs/mint-to/src/lib.rs | 3 +- .../anchor/programs/revoke/src/lib.rs | 2 +- .../anchor/programs/revoke/tests/test.rs | 1 + .../anchor/programs/thaw/src/lib.rs | 2 +- .../anchor/programs/thaw/tests/test.rs | 1 + .../programs/transfer-interface/src/lib.rs | 2 +- .../programs/transfer-interface/tests/test.rs | 1 + 23 files changed, 68 insertions(+), 149 deletions(-) diff --git a/program-examples/anchor/.anchor/program-logs/4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9.light_token_anchor_freeze.log b/program-examples/anchor/.anchor/program-logs/4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9.light_token_anchor_freeze.log index e69de29..276a730 100644 --- a/program-examples/anchor/.anchor/program-logs/4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9.light_token_anchor_freeze.log +++ b/program-examples/anchor/.anchor/program-logs/4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9.light_token_anchor_freeze.log @@ -0,0 +1 @@ +Streaming transaction logs mentioning 4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q.light_token_anchor_burn.log b/program-examples/anchor/.anchor/program-logs/5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q.light_token_anchor_burn.log index e69de29..4a60269 100644 --- a/program-examples/anchor/.anchor/program-logs/5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q.light_token_anchor_burn.log +++ b/program-examples/anchor/.anchor/program-logs/5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q.light_token_anchor_burn.log @@ -0,0 +1 @@ +Streaming transaction logs mentioning 5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6.light_token_anchor_transfer_interface.log b/program-examples/anchor/.anchor/program-logs/7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6.light_token_anchor_transfer_interface.log index e69de29..671b29f 100644 --- a/program-examples/anchor/.anchor/program-logs/7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6.light_token_anchor_transfer_interface.log +++ b/program-examples/anchor/.anchor/program-logs/7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6.light_token_anchor_transfer_interface.log @@ -0,0 +1 @@ +Streaming transaction logs mentioning 7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g.light_token_anchor_approve.log b/program-examples/anchor/.anchor/program-logs/DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g.light_token_anchor_approve.log index e69de29..79873bd 100644 --- a/program-examples/anchor/.anchor/program-logs/DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g.light_token_anchor_approve.log +++ b/program-examples/anchor/.anchor/program-logs/DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g.light_token_anchor_approve.log @@ -0,0 +1 @@ +Streaming transaction logs mentioning DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g. Confirmed commitment diff --git a/program-examples/anchor/Cargo.lock b/program-examples/anchor/Cargo.lock index df11b3f..4a1de3b 100644 --- a/program-examples/anchor/Cargo.lock +++ b/program-examples/anchor/Cargo.lock @@ -126,8 +126,6 @@ dependencies = [ [[package]] name = "aligned-sized" version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a526ec4434d531d488af59fe866f36b310fe8906691c75dffa664450a3800a" dependencies = [ "proc-macro2", "quote", @@ -2420,8 +2418,6 @@ dependencies = [ [[package]] name = "light-account-checks" version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0785da22cd4a7667583141ca56c790a5c8afa2b22ad2a08204d78881035524e8" dependencies = [ "solana-account-info", "solana-msg", @@ -2434,8 +2430,6 @@ dependencies = [ [[package]] name = "light-array-map" version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859dc5b406a8bf0b114f686e6f2e36d0e939bad6f579492a520d309b52fde1f8" dependencies = [ "tinyvec", ] @@ -2443,19 +2437,17 @@ dependencies = [ [[package]] name = "light-batched-merkle-tree" version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13cb8bc778065ee71d1990fdc94112e35dc63a5e387a323284a49f40d123d8e0" dependencies = [ "aligned-sized", "borsh 0.10.4", "light-account-checks", "light-bloom-filter", - "light-compressed-account 0.8.0", + "light-compressed-account", "light-hasher", "light-macros", "light-merkle-tree-metadata", "light-verifier", - "light-zero-copy 0.6.0", + "light-zero-copy", "solana-account-info", "solana-msg", "solana-program-error", @@ -2468,8 +2460,6 @@ dependencies = [ [[package]] name = "light-bloom-filter" version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a609e3c9179f0ae8488cc70c5413c86dfd97dad7ad85fee2ad8da2d0a11e61" dependencies = [ "bitvec", "num-bigint 0.4.6", @@ -2493,8 +2483,6 @@ dependencies = [ [[package]] name = "light-client" version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b1f3cd013364dbe5c45a9e9a8faee1af30dccb600cd56a41e296ed8d5684768" dependencies = [ "anchor-lang", "async-trait", @@ -2503,7 +2491,7 @@ dependencies = [ "bs58", "futures", "lazy_static", - "light-compressed-account 0.8.0", + "light-compressed-account", "light-compressible", "light-concurrent-merkle-tree", "light-event", @@ -2545,27 +2533,9 @@ dependencies = [ "tracing", ] -[[package]] -name = "light-compressed-account" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058df2733fa6a3e4bda6f162a6c5d41f10fc8c6f6ddb992af1de76b60214e4a6" -dependencies = [ - "borsh 0.10.4", - "light-hasher", - "light-macros", - "light-program-profiler", - "light-zero-copy 0.5.0", - "thiserror 2.0.18", - "tinyvec", - "zerocopy", -] - [[package]] name = "light-compressed-account" version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "768ae5a56d8c9cf315d132b3faa5b067f95b3d6a294c579e82f8f0e0bf29c7cc" dependencies = [ "anchor-lang", "borsh 0.10.4", @@ -2574,7 +2544,7 @@ dependencies = [ "light-macros", "light-poseidon 0.3.0", "light-program-profiler", - "light-zero-copy 0.6.0", + "light-zero-copy", "solana-msg", "solana-program-error", "solana-pubkey", @@ -2586,20 +2556,17 @@ dependencies = [ [[package]] name = "light-compressible" version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff0f0065beb8d16df587b3ea17082e11dea3f67c98813b4bcc061eecd94561f" dependencies = [ "aligned-sized", "anchor-lang", "borsh 0.10.4", "bytemuck", "light-account-checks", - "light-compressed-account 0.8.0", + "light-compressed-account", "light-hasher", "light-macros", "light-program-profiler", - "light-sdk-types", - "light-zero-copy 0.6.0", + "light-zero-copy", "pinocchio-pubkey", "solana-pubkey", "thiserror 2.0.18", @@ -2609,8 +2576,6 @@ dependencies = [ [[package]] name = "light-concurrent-merkle-tree" version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db96f47253a0907aaa46dac15cecb27b5510130e48da0b36690dcd2e99a6d558" dependencies = [ "borsh 0.10.4", "light-bounded-vec", @@ -2623,21 +2588,17 @@ dependencies = [ [[package]] name = "light-event" version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1674c9d85b32a9e8abb90cccdee18e35ae29daa1126fdb81a8a28c0a54802096" dependencies = [ "borsh 0.10.4", - "light-compressed-account 0.8.0", + "light-compressed-account", "light-hasher", - "light-zero-copy 0.6.0", + "light-zero-copy", "thiserror 2.0.18", ] [[package]] name = "light-hasher" version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c822662e6e109bac0e132a43fd52a4ef684811245a794e048cf9cda001e934c8" dependencies = [ "ark-bn254 0.5.0", "ark-ff 0.5.0", @@ -2654,8 +2615,6 @@ dependencies = [ [[package]] name = "light-indexed-array" version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f14f984030d86b6f07bd8f5ae04e2c40fcd0c3bdfcc7a291fff1ed59c9e6554" dependencies = [ "light-hasher", "num-bigint 0.4.6", @@ -2666,8 +2625,6 @@ dependencies = [ [[package]] name = "light-indexed-merkle-tree" version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0824755289075f28de2820fc7d4ec4e6b9e99d404e033c07338b91cce8c71fb8" dependencies = [ "light-bounded-vec", "light-concurrent-merkle-tree", @@ -2682,8 +2639,6 @@ dependencies = [ [[package]] name = "light-macros" version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "179ac51cadc1d0ca047b4d6265a7cc245ca3affc16a20a2749585aa6464d39c2" dependencies = [ "bs58", "proc-macro2", @@ -2695,13 +2650,11 @@ dependencies = [ [[package]] name = "light-merkle-tree-metadata" version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17d08edcc194eef61b0f499934ce398122d54ac57505d44480e5f079a4220566" dependencies = [ "anchor-lang", "borsh 0.10.4", "bytemuck", - "light-compressed-account 0.8.0", + "light-compressed-account", "solana-msg", "solana-program-error", "solana-sysvar", @@ -2712,8 +2665,6 @@ dependencies = [ [[package]] name = "light-merkle-tree-reference" version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8d480f62ca32b38a6231bbc5310d693f91d6b5bdcc18bb13c2d9aab7a1c90e8" dependencies = [ "light-hasher", "light-indexed-array", @@ -2769,8 +2720,6 @@ dependencies = [ [[package]] name = "light-program-test" version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a981dfbc19c529543ab1dd8d100319b89aac053b81415a681d1474c986218307" dependencies = [ "anchor-lang", "async-trait", @@ -2780,7 +2729,7 @@ dependencies = [ "bytemuck", "chrono", "light-client", - "light-compressed-account 0.8.0", + "light-compressed-account", "light-compressible", "light-event", "light-hasher", @@ -2793,7 +2742,7 @@ dependencies = [ "light-sdk-types", "light-token", "light-token-interface", - "light-zero-copy 0.6.0", + "light-zero-copy", "litesvm", "log", "num-bigint 0.4.6", @@ -2821,13 +2770,11 @@ dependencies = [ [[package]] name = "light-prover-client" version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75d8c9b8b6e9d445b9ef27467da592ee231e614282c3c0bd2f30f567eb904845" dependencies = [ "ark-bn254 0.5.0", "ark-serialize 0.5.0", "ark-std 0.5.0", - "light-compressed-account 0.7.0", + "light-compressed-account", "light-hasher", "light-indexed-array", "light-sparse-merkle-tree", @@ -2845,20 +2792,18 @@ dependencies = [ [[package]] name = "light-sdk" version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dece106ebd0897bd23a12bad040e0999d93b54447d0473739f91b1f83b1d331" dependencies = [ "anchor-lang", "bincode", "borsh 0.10.4", "light-account-checks", - "light-compressed-account 0.8.0", + "light-compressed-account", "light-compressible", "light-hasher", "light-macros", "light-sdk-macros", "light-sdk-types", - "light-zero-copy 0.6.0", + "light-zero-copy", "num-bigint 0.4.6", "solana-account-info", "solana-clock", @@ -2877,8 +2822,6 @@ dependencies = [ [[package]] name = "light-sdk-macros" version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "315633f6d8bf736dd2f6cec318b662f1dc507f9d66e52ad35d91270870f6acb6" dependencies = [ "darling", "light-hasher", @@ -2892,13 +2835,11 @@ dependencies = [ [[package]] name = "light-sdk-types" version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b765f0a39428a137b8d449fa60ba147194cdbff08aa0add598c6047fff2cb7d2" dependencies = [ "anchor-lang", "borsh 0.10.4", "light-account-checks", - "light-compressed-account 0.8.0", + "light-compressed-account", "light-hasher", "light-macros", "solana-msg", @@ -2908,8 +2849,6 @@ dependencies = [ [[package]] name = "light-sparse-merkle-tree" version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4251e79b6c63f4946572dcfd7623680ad0f9e0efe1a761a944733333c5645063" dependencies = [ "light-hasher", "light-indexed-array", @@ -2921,15 +2860,13 @@ dependencies = [ [[package]] name = "light-token" version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62907a12a9801200e5f4c03bb7f2dbdd9aa679223a959167c456a06005291d79" dependencies = [ "anchor-lang", "arrayvec", "borsh 0.10.4", "light-account-checks", "light-batched-merkle-tree", - "light-compressed-account 0.8.0", + "light-compressed-account", "light-compressible", "light-macros", "light-program-profiler", @@ -2938,7 +2875,7 @@ dependencies = [ "light-sdk-types", "light-token-interface", "light-token-types", - "light-zero-copy 0.6.0", + "light-zero-copy", "solana-account-info", "solana-cpi", "solana-instruction", @@ -2954,7 +2891,7 @@ name = "light-token-anchor-approve" version = "0.1.0" dependencies = [ "anchor-lang", - "borsh 1.6.0", + "borsh 0.10.4", "light-client", "light-program-test", "light-sdk", @@ -2969,7 +2906,7 @@ name = "light-token-anchor-burn" version = "0.1.0" dependencies = [ "anchor-lang", - "borsh 1.6.0", + "borsh 0.10.4", "light-client", "light-program-test", "light-sdk", @@ -2984,7 +2921,7 @@ name = "light-token-anchor-close" version = "0.1.0" dependencies = [ "anchor-lang", - "borsh 1.6.0", + "borsh 0.10.4", "light-client", "light-program-test", "light-sdk", @@ -2999,7 +2936,7 @@ name = "light-token-anchor-create-ata" version = "0.1.0" dependencies = [ "anchor-lang", - "borsh 1.6.0", + "borsh 0.10.4", "light-client", "light-program-test", "light-sdk", @@ -3014,7 +2951,7 @@ name = "light-token-anchor-create-mint" version = "0.1.0" dependencies = [ "anchor-lang", - "borsh 1.6.0", + "borsh 0.10.4", "light-client", "light-program-test", "light-sdk", @@ -3029,7 +2966,7 @@ name = "light-token-anchor-create-token-account" version = "0.1.0" dependencies = [ "anchor-lang", - "borsh 1.6.0", + "borsh 0.10.4", "light-client", "light-program-test", "light-sdk", @@ -3044,7 +2981,7 @@ name = "light-token-anchor-freeze" version = "0.1.0" dependencies = [ "anchor-lang", - "borsh 1.6.0", + "borsh 0.10.4", "light-client", "light-program-test", "light-sdk", @@ -3059,7 +2996,7 @@ name = "light-token-anchor-mint-to" version = "0.1.0" dependencies = [ "anchor-lang", - "borsh 1.6.0", + "borsh 0.10.4", "light-client", "light-program-test", "light-sdk", @@ -3074,7 +3011,7 @@ name = "light-token-anchor-revoke" version = "0.1.0" dependencies = [ "anchor-lang", - "borsh 1.6.0", + "borsh 0.10.4", "light-client", "light-program-test", "light-sdk", @@ -3089,7 +3026,7 @@ name = "light-token-anchor-thaw" version = "0.1.0" dependencies = [ "anchor-lang", - "borsh 1.6.0", + "borsh 0.10.4", "light-client", "light-program-test", "light-sdk", @@ -3104,7 +3041,7 @@ name = "light-token-anchor-transfer-interface" version = "0.1.0" dependencies = [ "anchor-lang", - "borsh 1.6.0", + "borsh 0.10.4", "light-client", "light-program-test", "light-sdk", @@ -3118,20 +3055,18 @@ dependencies = [ [[package]] name = "light-token-interface" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fb19b8e268a0154a8e13b3a8f6f43fa4928643e2de102d98a90b2af21f482ba" dependencies = [ "aligned-sized", "anchor-lang", "borsh 0.10.4", "bytemuck", "light-array-map", - "light-compressed-account 0.8.0", + "light-compressed-account", "light-compressible", "light-hasher", "light-macros", "light-program-profiler", - "light-zero-copy 0.6.0", + "light-zero-copy", "pinocchio", "pinocchio-pubkey", "solana-account-info", @@ -3146,13 +3081,11 @@ dependencies = [ [[package]] name = "light-token-types" version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "278dddbf18d104f1225c480ca6d7b8710e1f9ff4104f24be70c522ecb6ed1dfc" dependencies = [ "anchor-lang", "borsh 0.10.4", "light-account-checks", - "light-compressed-account 0.8.0", + "light-compressed-account", "light-macros", "light-sdk-types", "solana-msg", @@ -3162,52 +3095,24 @@ dependencies = [ [[package]] name = "light-verifier" version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f35f47736be493b60d8b56ef0c8e94afd6a99efafebb257f62b0b545e9aacab" dependencies = [ "groth16-solana", - "light-compressed-account 0.8.0", + "light-compressed-account", "thiserror 2.0.18", ] -[[package]] -name = "light-zero-copy" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8862f463792fd60ae8f5dc418150c16213e302e19d54fba0694cf8515be5ff" -dependencies = [ - "light-zero-copy-derive 0.5.0", - "zerocopy", -] - [[package]] name = "light-zero-copy" version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5621fb515e14af46148699c0b65334aabe230a1d2cbd06736ccc7a408c8a4af" dependencies = [ - "light-zero-copy-derive 0.6.0", + "light-zero-copy-derive", "solana-program-error", "zerocopy", ] -[[package]] -name = "light-zero-copy-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8af086d52100b3cab1f2993b146adc7a69fa6aaa878ae4c19514c77c50304379" -dependencies = [ - "lazy_static", - "proc-macro2", - "quote", - "syn 2.0.114", -] - [[package]] name = "light-zero-copy-derive" version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c46425e5c7ab5203ff5c86ae2615b169cca55f9283f5f60f5dd74143be6934" dependencies = [ "lazy_static", "proc-macro2", @@ -3685,8 +3590,6 @@ dependencies = [ [[package]] name = "photon-api" version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e572dba0c255f5b8176f15b9e849330d915a8927804f7f9702d5bbbc70e4a1ad" dependencies = [ "reqwest 0.12.28", "serde", diff --git a/program-examples/anchor/Cargo.toml b/program-examples/anchor/Cargo.toml index f03abab..4dfa0ee 100644 --- a/program-examples/anchor/Cargo.toml +++ b/program-examples/anchor/Cargo.toml @@ -21,17 +21,17 @@ blake3 = "=1.5.5" # Common dependencies anchor-lang = "0.31.1" -borsh = "1.6" +borsh = "0.10.4" tokio = "1.43.0" solana-sdk = "2.2" -# Light Protocol SDK -light-sdk = { version = "0.18.0", features = ["anchor", "v2"] } -light-token = "0.3.0" -light-program-test = { version = "0.18.0", features = ["v2"] } -light-client = { version = "0.18.0", features = ["v2"] } -light-token-interface = "0.2.0" -light-token-types = "0.3.0" +# Light Protocol SDK (path dependencies to local light-protocol repo) +light-sdk = { path = "../../../light-protocol/sdk-libs/sdk", features = ["anchor", "v2"] } +light-token = { path = "../../../light-protocol/sdk-libs/token-sdk" } +light-program-test = { path = "../../../light-protocol/sdk-libs/program-test", features = ["v2"] } +light-client = { path = "../../../light-protocol/sdk-libs/client", features = ["v2"] } +light-token-interface = { path = "../../../light-protocol/program-libs/token-interface" } +light-token-types = { path = "../../../light-protocol/sdk-libs/token-types" } [profile.release] overflow-checks = true diff --git a/program-examples/anchor/programs/approve/src/lib.rs b/program-examples/anchor/programs/approve/src/lib.rs index 2fdc84b..9753daa 100644 --- a/program-examples/anchor/programs/approve/src/lib.rs +++ b/program-examples/anchor/programs/approve/src/lib.rs @@ -1,4 +1,4 @@ -#![allow(unexpected_cfgs)] +#![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; use light_token::instruction::ApproveCpi; diff --git a/program-examples/anchor/programs/approve/tests/test.rs b/program-examples/anchor/programs/approve/tests/test.rs index fb7cfe0..a22c95e 100644 --- a/program-examples/anchor/programs/approve/tests/test.rs +++ b/program-examples/anchor/programs/approve/tests/test.rs @@ -89,6 +89,7 @@ async fn test_approve() { amount: mint_amount, authority: mint_authority, max_top_up: None, + fee_payer: None, } .instruction() .unwrap(); diff --git a/program-examples/anchor/programs/burn/src/lib.rs b/program-examples/anchor/programs/burn/src/lib.rs index 3843fe2..128e541 100644 --- a/program-examples/anchor/programs/burn/src/lib.rs +++ b/program-examples/anchor/programs/burn/src/lib.rs @@ -1,4 +1,4 @@ -#![allow(unexpected_cfgs)] +#![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; use light_token::instruction::BurnCpi; @@ -15,7 +15,9 @@ pub mod light_token_anchor_burn { mint: ctx.accounts.mint.to_account_info(), amount, authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), max_top_up: None, + fee_payer: None, } .invoke()?; Ok(()) @@ -33,4 +35,5 @@ pub struct BurnAccounts<'info> { pub authority: Signer<'info>, /// CHECK: Light token program for CPI pub light_token_program: AccountInfo<'info>, + pub system_program: Program<'info, System>, } diff --git a/program-examples/anchor/programs/burn/tests/test.rs b/program-examples/anchor/programs/burn/tests/test.rs index 9097a7b..1b854c5 100644 --- a/program-examples/anchor/programs/burn/tests/test.rs +++ b/program-examples/anchor/programs/burn/tests/test.rs @@ -11,6 +11,7 @@ use solana_sdk::{ instruction::{AccountMeta, Instruction}, signature::Keypair, signer::Signer, + system_program, }; #[tokio::test] @@ -88,6 +89,7 @@ async fn test_burn() { amount: mint_amount, authority: mint_authority, max_top_up: None, + fee_payer: None, } .instruction() .unwrap(); @@ -105,6 +107,7 @@ async fn test_burn() { AccountMeta::new(mint_pda, false), AccountMeta::new_readonly(payer.pubkey(), true), AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new_readonly(system_program::ID, false), ], data: Burn { amount: burn_amount }.data(), }; diff --git a/program-examples/anchor/programs/close/src/lib.rs b/program-examples/anchor/programs/close/src/lib.rs index bfa3c58..5497cf1 100644 --- a/program-examples/anchor/programs/close/src/lib.rs +++ b/program-examples/anchor/programs/close/src/lib.rs @@ -1,4 +1,4 @@ -#![allow(unexpected_cfgs)] +#![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; use light_token::instruction::CloseAccountCpi; diff --git a/program-examples/anchor/programs/create-ata/src/lib.rs b/program-examples/anchor/programs/create-ata/src/lib.rs index c0faf1c..d7e285b 100644 --- a/program-examples/anchor/programs/create-ata/src/lib.rs +++ b/program-examples/anchor/programs/create-ata/src/lib.rs @@ -1,4 +1,4 @@ -#![allow(unexpected_cfgs)] +#![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; use light_token::instruction::CreateAssociatedAccountCpi; diff --git a/program-examples/anchor/programs/create-mint/src/lib.rs b/program-examples/anchor/programs/create-mint/src/lib.rs index 83cffa5..eaca16e 100644 --- a/program-examples/anchor/programs/create-mint/src/lib.rs +++ b/program-examples/anchor/programs/create-mint/src/lib.rs @@ -1,4 +1,4 @@ -#![allow(unexpected_cfgs)] +#![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; use light_token::instruction::{CreateMintCpi, CreateMintParams, SystemAccountInfos}; diff --git a/program-examples/anchor/programs/create-token-account/src/lib.rs b/program-examples/anchor/programs/create-token-account/src/lib.rs index 662e0e9..0420874 100644 --- a/program-examples/anchor/programs/create-token-account/src/lib.rs +++ b/program-examples/anchor/programs/create-token-account/src/lib.rs @@ -1,4 +1,4 @@ -#![allow(unexpected_cfgs)] +#![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; use light_token::instruction::CreateTokenAccountCpi; diff --git a/program-examples/anchor/programs/freeze/src/lib.rs b/program-examples/anchor/programs/freeze/src/lib.rs index b61531b..9dd5397 100644 --- a/program-examples/anchor/programs/freeze/src/lib.rs +++ b/program-examples/anchor/programs/freeze/src/lib.rs @@ -1,4 +1,4 @@ -#![allow(unexpected_cfgs)] +#![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; use light_token::instruction::FreezeCpi; diff --git a/program-examples/anchor/programs/freeze/tests/test.rs b/program-examples/anchor/programs/freeze/tests/test.rs index 7c222e4..02b21bd 100644 --- a/program-examples/anchor/programs/freeze/tests/test.rs +++ b/program-examples/anchor/programs/freeze/tests/test.rs @@ -89,6 +89,7 @@ async fn test_freeze() { amount: 1_000_000, authority: mint_authority, max_top_up: None, + fee_payer: None, } .instruction() .unwrap(); diff --git a/program-examples/anchor/programs/mint-to/src/lib.rs b/program-examples/anchor/programs/mint-to/src/lib.rs index 74cebe5..1497986 100644 --- a/program-examples/anchor/programs/mint-to/src/lib.rs +++ b/program-examples/anchor/programs/mint-to/src/lib.rs @@ -1,4 +1,4 @@ -#![allow(unexpected_cfgs)] +#![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; use light_token::instruction::MintToCpi; @@ -17,6 +17,7 @@ pub mod light_token_anchor_mint_to { authority: ctx.accounts.authority.to_account_info(), system_program: ctx.accounts.system_program.to_account_info(), max_top_up: None, + fee_payer: None, } .invoke()?; Ok(()) diff --git a/program-examples/anchor/programs/revoke/src/lib.rs b/program-examples/anchor/programs/revoke/src/lib.rs index 6e90da9..d7f5a8e 100644 --- a/program-examples/anchor/programs/revoke/src/lib.rs +++ b/program-examples/anchor/programs/revoke/src/lib.rs @@ -1,4 +1,4 @@ -#![allow(unexpected_cfgs)] +#![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; use light_token::instruction::RevokeCpi; diff --git a/program-examples/anchor/programs/revoke/tests/test.rs b/program-examples/anchor/programs/revoke/tests/test.rs index 2f66b5c..cd43c6e 100644 --- a/program-examples/anchor/programs/revoke/tests/test.rs +++ b/program-examples/anchor/programs/revoke/tests/test.rs @@ -89,6 +89,7 @@ async fn test_revoke() { amount: mint_amount, authority: mint_authority, max_top_up: None, + fee_payer: None, } .instruction() .unwrap(); diff --git a/program-examples/anchor/programs/thaw/src/lib.rs b/program-examples/anchor/programs/thaw/src/lib.rs index ab35935..f3cf250 100644 --- a/program-examples/anchor/programs/thaw/src/lib.rs +++ b/program-examples/anchor/programs/thaw/src/lib.rs @@ -1,4 +1,4 @@ -#![allow(unexpected_cfgs)] +#![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; use light_token::instruction::ThawCpi; diff --git a/program-examples/anchor/programs/thaw/tests/test.rs b/program-examples/anchor/programs/thaw/tests/test.rs index 0daf196..371f4be 100644 --- a/program-examples/anchor/programs/thaw/tests/test.rs +++ b/program-examples/anchor/programs/thaw/tests/test.rs @@ -89,6 +89,7 @@ async fn test_thaw() { amount: 1_000_000, authority: mint_authority, max_top_up: None, + fee_payer: None, } .instruction() .unwrap(); diff --git a/program-examples/anchor/programs/transfer-interface/src/lib.rs b/program-examples/anchor/programs/transfer-interface/src/lib.rs index 8968522..60d565e 100644 --- a/program-examples/anchor/programs/transfer-interface/src/lib.rs +++ b/program-examples/anchor/programs/transfer-interface/src/lib.rs @@ -1,4 +1,4 @@ -#![allow(unexpected_cfgs)] +#![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; use light_token::instruction::TransferInterfaceCpi; diff --git a/program-examples/anchor/programs/transfer-interface/tests/test.rs b/program-examples/anchor/programs/transfer-interface/tests/test.rs index 81393a6..4b53a14 100644 --- a/program-examples/anchor/programs/transfer-interface/tests/test.rs +++ b/program-examples/anchor/programs/transfer-interface/tests/test.rs @@ -96,6 +96,7 @@ async fn test_transfer() { amount: mint_amount, authority: mint_authority, max_top_up: None, + fee_payer: None, } .instruction() .unwrap(); From 7e131fbad0e5d0517f2c0387d8032083499bf291 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Sun, 25 Jan 2026 17:06:52 +0000 Subject: [PATCH 06/23] add metadata --- .../anchor/programs/create-mint/src/lib.rs | 28 +++++++++++++++++-- .../anchor/programs/create-mint/tests/test.rs | 1 + 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/program-examples/anchor/programs/create-mint/src/lib.rs b/program-examples/anchor/programs/create-mint/src/lib.rs index eaca16e..d10939a 100644 --- a/program-examples/anchor/programs/create-mint/src/lib.rs +++ b/program-examples/anchor/programs/create-mint/src/lib.rs @@ -2,10 +2,19 @@ use anchor_lang::prelude::*; use light_token::instruction::{CreateMintCpi, CreateMintParams, SystemAccountInfos}; -use light_token::CompressedProof; +use light_token::{CompressedProof, ExtensionInstructionData, TokenMetadataInstructionData}; declare_id!("JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j"); +/// Token metadata parameters for creating a mint with metadata. +#[derive(AnchorSerialize, AnchorDeserialize, Clone)] +pub struct TokenMetadataParams { + pub name: Vec, + pub symbol: Vec, + pub uri: Vec, + pub update_authority: Option, +} + #[program] pub mod light_token_anchor_create_mint { use super::*; @@ -20,9 +29,24 @@ pub mod light_token_anchor_create_mint { bump: u8, rent_payment: Option, write_top_up: Option, + metadata: Option, ) -> Result<()> { let mint = light_token::instruction::find_mint_address(ctx.accounts.mint_seed.key).0; + let extensions = metadata.map(|m| { + vec![ExtensionInstructionData::TokenMetadata( + TokenMetadataInstructionData { + update_authority: m + .update_authority + .map(|p| p.to_bytes().into()), + name: m.name, + symbol: m.symbol, + uri: m.uri, + additional_metadata: None, + }, + )] + }); + let params = CreateMintParams { decimals, address_merkle_tree_root_index, @@ -32,7 +56,7 @@ pub mod light_token_anchor_create_mint { mint, bump, freeze_authority, - extensions: None, + extensions, rent_payment: rent_payment.unwrap_or(16), // Default: ~24 hours write_top_up: write_top_up.unwrap_or(766), // Default: ~3 hours per write }; diff --git a/program-examples/anchor/programs/create-mint/tests/test.rs b/program-examples/anchor/programs/create-mint/tests/test.rs index 09ea612..8aa651f 100644 --- a/program-examples/anchor/programs/create-mint/tests/test.rs +++ b/program-examples/anchor/programs/create-mint/tests/test.rs @@ -75,6 +75,7 @@ async fn test_create_mint() { bump, rent_payment: Some(16), write_top_up: Some(766), + metadata: None, } .data(), }; From b7fb0349910a6e9535ec884011ca3eea91a42b84 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Sun, 25 Jan 2026 22:34:32 +0000 Subject: [PATCH 07/23] add macros --- program-examples/anchor/Cargo.lock | 167 +++++++++++++-- program-examples/anchor/Cargo.toml | 53 +++-- .../anchor/programs/create-ata/Cargo.toml | 12 ++ .../anchor/programs/create-ata/src/lib.rs | 105 ++++++---- .../anchor/programs/create-ata/tests/test.rs | 140 +++++++++---- .../anchor/programs/create-mint/Cargo.toml | 22 +- .../anchor/programs/create-mint/src/lib.rs | 170 ++++++--------- .../anchor/programs/create-mint/tests/test.rs | 195 +++++++++++------- .../programs/create-token-account/Cargo.toml | 12 ++ .../programs/create-token-account/src/lib.rs | 119 ++++++++--- .../create-token-account/tests/test.rs | 174 ++++++++++++++++ 11 files changed, 823 insertions(+), 346 deletions(-) create mode 100644 program-examples/anchor/programs/create-token-account/tests/test.rs diff --git a/program-examples/anchor/Cargo.lock b/program-examples/anchor/Cargo.lock index 4a1de3b..f5b6626 100644 --- a/program-examples/anchor/Cargo.lock +++ b/program-examples/anchor/Cargo.lock @@ -126,6 +126,8 @@ dependencies = [ [[package]] name = "aligned-sized" version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48a526ec4434d531d488af59fe866f36b310fe8906691c75dffa664450a3800a" dependencies = [ "proc-macro2", "quote", @@ -2417,7 +2419,9 @@ dependencies = [ [[package]] name = "light-account-checks" -version = "0.6.0" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f20b8640212dd450e18d452a247e28d8ba6fdce3c713fd8b69f1e95874d1b7ab" dependencies = [ "solana-account-info", "solana-msg", @@ -2429,14 +2433,18 @@ dependencies = [ [[package]] name = "light-array-map" -version = "0.1.1" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bdd13b18028ac9d80d0a987551c0dad7fe81be8140e87cc9d568b80f3728203" dependencies = [ "tinyvec", ] [[package]] name = "light-batched-merkle-tree" -version = "0.8.0" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e838c523b49371097f948cd5662bd9a89d9dca037fb61fd38001e99f485702" dependencies = [ "aligned-sized", "borsh 0.10.4", @@ -2459,7 +2467,9 @@ dependencies = [ [[package]] name = "light-bloom-filter" -version = "0.5.0" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b8cf734ccf5fbc1f5fed8e5308b57ebde6774d9304c167bcb0de2854412d8" dependencies = [ "bitvec", "num-bigint 0.4.6", @@ -2482,7 +2492,9 @@ dependencies = [ [[package]] name = "light-client" -version = "0.18.0" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33203f596d48d28d1cb67dee5762b151e0073207a5e828c63ec68f9efb9a5ee8" dependencies = [ "anchor-lang", "async-trait", @@ -2535,7 +2547,9 @@ dependencies = [ [[package]] name = "light-compressed-account" -version = "0.8.0" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c3537bbad9df133ca97fc191b164bba93dba1de4da01a92d979ef63f8ce106" dependencies = [ "anchor-lang", "borsh 0.10.4", @@ -2555,7 +2569,9 @@ dependencies = [ [[package]] name = "light-compressible" -version = "0.3.1" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00d1dc14271907009f4ca23ae99c49279f7d2acc5a83f0f8d7362834b37e2e16" dependencies = [ "aligned-sized", "anchor-lang", @@ -2568,7 +2584,11 @@ dependencies = [ "light-program-profiler", "light-zero-copy", "pinocchio-pubkey", + "solana-msg", + "solana-program-error", "solana-pubkey", + "solana-rent", + "solana-sysvar", "thiserror 2.0.18", "zerocopy", ] @@ -2576,6 +2596,8 @@ dependencies = [ [[package]] name = "light-concurrent-merkle-tree" version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db96f47253a0907aaa46dac15cecb27b5510130e48da0b36690dcd2e99a6d558" dependencies = [ "borsh 0.10.4", "light-bounded-vec", @@ -2587,7 +2609,9 @@ dependencies = [ [[package]] name = "light-event" -version = "0.3.0" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4bae725ee1d4d944d442ac0bfdf2031b1b2379c04c7e39c475277aaaea08fb1" dependencies = [ "borsh 0.10.4", "light-compressed-account", @@ -2599,6 +2623,8 @@ dependencies = [ [[package]] name = "light-hasher" version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c822662e6e109bac0e132a43fd52a4ef684811245a794e048cf9cda001e934c8" dependencies = [ "ark-bn254 0.5.0", "ark-ff 0.5.0", @@ -2615,6 +2641,8 @@ dependencies = [ [[package]] name = "light-indexed-array" version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f14f984030d86b6f07bd8f5ae04e2c40fcd0c3bdfcc7a291fff1ed59c9e6554" dependencies = [ "light-hasher", "num-bigint 0.4.6", @@ -2625,6 +2653,8 @@ dependencies = [ [[package]] name = "light-indexed-merkle-tree" version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0824755289075f28de2820fc7d4ec4e6b9e99d404e033c07338b91cce8c71fb8" dependencies = [ "light-bounded-vec", "light-concurrent-merkle-tree", @@ -2636,9 +2666,45 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "light-instruction-decoder" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f4bd98e842f21b754ec28020a56de37cb0b1089952ef24340d21c2d5afd5c5" +dependencies = [ + "borsh 0.10.4", + "bs58", + "light-compressed-account", + "light-instruction-decoder-derive", + "light-sdk-types", + "light-token-interface", + "serde", + "solana-instruction", + "solana-pubkey", + "solana-signature", + "tabled", +] + +[[package]] +name = "light-instruction-decoder-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2035d04a0a1590da05634efcac149a2ac852565e28c9a55bd07a6620c0e90bff" +dependencies = [ + "bs58", + "darling", + "heck 0.5.0", + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.114", +] + [[package]] name = "light-macros" version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "179ac51cadc1d0ca047b4d6265a7cc245ca3affc16a20a2749585aa6464d39c2" dependencies = [ "bs58", "proc-macro2", @@ -2649,7 +2715,9 @@ dependencies = [ [[package]] name = "light-merkle-tree-metadata" -version = "0.8.0" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c2e63e8345dcfb80efac69136fdcc6c36a12354675aca6e3daf13ec40422d1" dependencies = [ "anchor-lang", "borsh 0.10.4", @@ -2665,6 +2733,8 @@ dependencies = [ [[package]] name = "light-merkle-tree-reference" version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8d480f62ca32b38a6231bbc5310d693f91d6b5bdcc18bb13c2d9aab7a1c90e8" dependencies = [ "light-hasher", "light-indexed-array", @@ -2719,7 +2789,9 @@ dependencies = [ [[package]] name = "light-program-test" -version = "0.18.0" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e85916a9da34a44971e1a30badaf04cb75213fbfa9f61a139ea6ebd0f021bdde" dependencies = [ "anchor-lang", "async-trait", @@ -2735,6 +2807,7 @@ dependencies = [ "light-hasher", "light-indexed-array", "light-indexed-merkle-tree", + "light-instruction-decoder", "light-merkle-tree-metadata", "light-merkle-tree-reference", "light-prover-client", @@ -2769,7 +2842,9 @@ dependencies = [ [[package]] name = "light-prover-client" -version = "5.0.1" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd2195f4573628a8aaca37504cde1b1903b8ed20e2706acbad875b7d41acbeab" dependencies = [ "ark-bn254 0.5.0", "ark-serialize 0.5.0", @@ -2791,7 +2866,9 @@ dependencies = [ [[package]] name = "light-sdk" -version = "0.18.0" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f523c64a6fcdafe6df81d647560770529896f2707be8ffcf048d909b7e2b30" dependencies = [ "anchor-lang", "bincode", @@ -2821,7 +2898,9 @@ dependencies = [ [[package]] name = "light-sdk-macros" -version = "0.18.1" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d12bb13b84df21a4871dc0837aafc0b48464d3e9b17e2773c0719b6cc724c5" dependencies = [ "darling", "light-hasher", @@ -2834,7 +2913,9 @@ dependencies = [ [[package]] name = "light-sdk-types" -version = "0.18.0" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8153b27d057ded7b2b6bbd78c643e3f20bd9a9718ca1a8d4183169ccd812c3" dependencies = [ "anchor-lang", "borsh 0.10.4", @@ -2849,6 +2930,8 @@ dependencies = [ [[package]] name = "light-sparse-merkle-tree" version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4251e79b6c63f4946572dcfd7623680ad0f9e0efe1a761a944733333c5645063" dependencies = [ "light-hasher", "light-indexed-array", @@ -2859,7 +2942,9 @@ dependencies = [ [[package]] name = "light-token" -version = "0.3.0" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fd2e8ca6d7d70c77658010e1ae6ed6d4fe23e29054964b053f51e5c4676e49" dependencies = [ "anchor-lang", "arrayvec", @@ -2938,11 +3023,22 @@ dependencies = [ "anchor-lang", "borsh 0.10.4", "light-client", + "light-compressible", "light-program-test", "light-sdk", + "light-sdk-macros", + "light-sdk-types", "light-token", "light-token-interface", + "light-token-types", + "solana-account-info", + "solana-instruction", + "solana-keypair", + "solana-msg", + "solana-program-error", + "solana-pubkey", "solana-sdk", + "solana-signer", "tokio", ] @@ -2953,11 +3049,23 @@ dependencies = [ "anchor-lang", "borsh 0.10.4", "light-client", + "light-compressible", "light-program-test", "light-sdk", + "light-sdk-macros", + "light-sdk-types", "light-token", "light-token-interface", + "light-token-types", + "solana-account-info", + "solana-instruction", + "solana-keypair", + "solana-msg", + "solana-program", + "solana-program-error", + "solana-pubkey", "solana-sdk", + "solana-signer", "tokio", ] @@ -2968,11 +3076,22 @@ dependencies = [ "anchor-lang", "borsh 0.10.4", "light-client", + "light-compressible", "light-program-test", "light-sdk", + "light-sdk-macros", + "light-sdk-types", "light-token", "light-token-interface", + "light-token-types", + "solana-account-info", + "solana-instruction", + "solana-keypair", + "solana-msg", + "solana-program-error", + "solana-pubkey", "solana-sdk", + "solana-signer", "tokio", ] @@ -3054,7 +3173,9 @@ dependencies = [ [[package]] name = "light-token-interface" -version = "0.2.0" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46decebc2a13ec984e2ba7f1e691c0d46b9061875c6bdd12636b7c100a60e6c" dependencies = [ "aligned-sized", "anchor-lang", @@ -3080,7 +3201,9 @@ dependencies = [ [[package]] name = "light-token-types" -version = "0.3.0" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "411481fe2e04b1241235c2572480c153c5669507e227f5e3327057b0d2ba5734" dependencies = [ "anchor-lang", "borsh 0.10.4", @@ -3094,7 +3217,9 @@ dependencies = [ [[package]] name = "light-verifier" -version = "7.0.0" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecba4c14ac08b078a9d84033d628b12bb2577141f405140d506bacd392a830bc" dependencies = [ "groth16-solana", "light-compressed-account", @@ -3104,6 +3229,8 @@ dependencies = [ [[package]] name = "light-zero-copy" version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5621fb515e14af46148699c0b65334aabe230a1d2cbd06736ccc7a408c8a4af" dependencies = [ "light-zero-copy-derive", "solana-program-error", @@ -3113,6 +3240,8 @@ dependencies = [ [[package]] name = "light-zero-copy-derive" version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41c46425e5c7ab5203ff5c86ae2615b169cca55f9283f5f60f5dd74143be6934" dependencies = [ "lazy_static", "proc-macro2", @@ -3590,6 +3719,8 @@ dependencies = [ [[package]] name = "photon-api" version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e572dba0c255f5b8176f15b9e849330d915a8927804f7f9702d5bbbc70e4a1ad" dependencies = [ "reqwest 0.12.28", "serde", diff --git a/program-examples/anchor/Cargo.toml b/program-examples/anchor/Cargo.toml index 4dfa0ee..0df4e5b 100644 --- a/program-examples/anchor/Cargo.toml +++ b/program-examples/anchor/Cargo.toml @@ -14,32 +14,45 @@ members = [ ] resolver = "2" -[workspace.dependencies] -# Pin to match light-protocol Cargo.lock -constant_time_eq = "=0.3.1" -blake3 = "=1.5.5" - -# Common dependencies -anchor-lang = "0.31.1" -borsh = "0.10.4" -tokio = "1.43.0" -solana-sdk = "2.2" - -# Light Protocol SDK (path dependencies to local light-protocol repo) -light-sdk = { path = "../../../light-protocol/sdk-libs/sdk", features = ["anchor", "v2"] } -light-token = { path = "../../../light-protocol/sdk-libs/token-sdk" } -light-program-test = { path = "../../../light-protocol/sdk-libs/program-test", features = ["v2"] } -light-client = { path = "../../../light-protocol/sdk-libs/client", features = ["v2"] } -light-token-interface = { path = "../../../light-protocol/program-libs/token-interface" } -light-token-types = { path = "../../../light-protocol/sdk-libs/token-types" } - [profile.release] -overflow-checks = true lto = "fat" codegen-units = 1 +panic = "abort" +overflow-checks = true [profile.release.build-override] opt-level = 3 incremental = false codegen-units = 1 +[workspace.dependencies] +# Pin blake3 version for solana-program compatibility +blake3 = { version = "=1.8.2", default-features = false } + +# Common dependencies +anchor-lang = "0.31.1" +borsh = "0.10.4" +tokio = "1.43.0" +solana-sdk = "2.2" +solana-program = "2.2" +solana-instruction = "2.2" +solana-keypair = "2.2" +solana-pubkey = "2.2" +solana-signer = "2.2" +solana-msg = "2.2" +solana-program-error = "2.2" +solana-account-info = "2.2" + +# Light Protocol dependencies from crates.io +light-sdk = { version = "0.19.0", features = ["anchor", "idl-build", "v2", "anchor-discriminator", "cpi-context"] } +light-sdk-macros = "0.19.0" +light-sdk-types = { version = "0.19.0", features = ["v2", "cpi-context"] } +light-compressible = { version = "0.4.0", features = ["anchor"] } +light-hasher = "5.0.0" +light-token = { version = "0.4.0", features = ["anchor"] } +light-token-types = { version = "0.4.0", features = ["anchor"] } +light-token-interface = "0.3.0" +light-program-test = "0.19.0" +light-client = { version = "0.19.0", features = ["v2", "anchor"] } +light-anchor-spl = { version = "0.31.1", features = ["idl-build"] } + diff --git a/program-examples/anchor/programs/create-ata/Cargo.toml b/program-examples/anchor/programs/create-ata/Cargo.toml index 9df7fd1..5fb4a71 100644 --- a/program-examples/anchor/programs/create-ata/Cargo.toml +++ b/program-examples/anchor/programs/create-ata/Cargo.toml @@ -16,15 +16,27 @@ idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] [dependencies] anchor-lang = { workspace = true } light-sdk = { workspace = true } +light-sdk-macros = { workspace = true } +light-sdk-types = { workspace = true } +light-compressible = { workspace = true } light-token = { workspace = true } +solana-pubkey = { workspace = true } +solana-msg = { workspace = true } +solana-program-error = { workspace = true } +solana-account-info = { workspace = true } [dev-dependencies] light-program-test = { workspace = true } light-client = { workspace = true } light-token-interface = { workspace = true } +light-token-types = { workspace = true } borsh = { workspace = true } tokio = { workspace = true } solana-sdk = { workspace = true } +solana-instruction = { workspace = true } +solana-keypair = { workspace = true } +solana-pubkey = { workspace = true } +solana-signer = { workspace = true } [lints.rust.unexpected_cfgs] level = "allow" diff --git a/program-examples/anchor/programs/create-ata/src/lib.rs b/program-examples/anchor/programs/create-ata/src/lib.rs index d7e285b..48e0f76 100644 --- a/program-examples/anchor/programs/create-ata/src/lib.rs +++ b/program-examples/anchor/programs/create-ata/src/lib.rs @@ -1,58 +1,75 @@ +//! Example: Create a compressed associated token account using the Light SDK macros. +//! +//! Demonstrates the `#[light_account(init, associated_token, ...)]` macro attribute +//! for creating compressed ATAs with automatic CPI generation. + #![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; -use light_token::instruction::CreateAssociatedAccountCpi; +use light_compressible::CreateAccountsProof; +use light_sdk::derive_light_cpi_signer; +use light_sdk_macros::{light_program, LightAccounts}; +use light_sdk_types::{CpiSigner, LIGHT_TOKEN_PROGRAM_ID}; +use light_token::instruction::{COMPRESSIBLE_CONFIG_V1, RENT_SPONSOR as LIGHT_TOKEN_RENT_SPONSOR}; declare_id!("8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8"); -#[program] -pub mod light_token_anchor_create_ata { - use super::*; +pub const LIGHT_CPI_SIGNER: CpiSigner = + derive_light_cpi_signer!("8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8"); - pub fn create_ata(ctx: Context, bump: u8, idempotent: bool) -> Result<()> { - let cpi = CreateAssociatedAccountCpi { - payer: ctx.accounts.payer.to_account_info(), - owner: ctx.accounts.owner.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - ata: ctx.accounts.associated_token_account.to_account_info(), - bump, - }; - - if idempotent { - cpi.idempotent().rent_free( - ctx.accounts.compressible_config.to_account_info(), - ctx.accounts.rent_sponsor.to_account_info(), - ctx.accounts.system_program.to_account_info(), - ) - } else { - cpi.rent_free( - ctx.accounts.compressible_config.to_account_info(), - ctx.accounts.rent_sponsor.to_account_info(), - ctx.accounts.system_program.to_account_info(), - ) - } - .invoke()?; - Ok(()) - } +#[derive(AnchorSerialize, AnchorDeserialize, Clone)] +pub struct CreateAtaParams { + pub create_accounts_proof: CreateAccountsProof, + pub ata_bump: u8, } -#[derive(Accounts)] -pub struct CreateAtaAccounts<'info> { - /// CHECK: Validated by light-token CPI - pub owner: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, +#[derive(Accounts, LightAccounts)] +#[instruction(params: CreateAtaParams)] +pub struct CreateAta<'info> { #[account(mut)] pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub associated_token_account: AccountInfo<'info>, - pub system_program: Program<'info, System>, - /// CHECK: Validated by light-token CPI - pub compressible_config: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI + + /// CHECK: Token mint for the ATA. + pub mint: AccountInfo<'info>, + + /// CHECK: Owner of the ATA. + pub owner: AccountInfo<'info>, + + /// CHECK: Initialized by light_account macro. #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, - /// CHECK: Light token program for CPI + #[light_account(init, associated_token::authority = owner, associated_token::mint = mint, associated_token::bump = params.ata_bump)] + pub ata: UncheckedAccount<'info>, + + /// CHECK: Light token compressible config. + #[account(address = COMPRESSIBLE_CONFIG_V1)] + pub light_token_compressible_config: AccountInfo<'info>, + + /// CHECK: Light token rent sponsor. + #[account(mut, address = LIGHT_TOKEN_RENT_SPONSOR)] + pub light_token_rent_sponsor: AccountInfo<'info>, + + /// CHECK: Light Token Program for CPI. + #[account(address = LIGHT_TOKEN_PROGRAM_ID.into())] pub light_token_program: AccountInfo<'info>, + + pub system_program: Program<'info, System>, +} + +#[light_program] +#[program] +pub mod light_token_anchor_create_ata { + use super::*; + + /// Create a compressed associated token account. + /// + /// The ATA is created by the LightFinalize trait implementation + /// generated by the `#[light_account(init, associated_token, ...)]` macro. + #[allow(unused_variables)] + pub fn create_ata<'info>( + ctx: Context<'_, '_, '_, 'info, CreateAta<'info>>, + params: CreateAtaParams, + ) -> Result<()> { + // ATA creation is handled by the macro-generated LightFinalize implementation. + Ok(()) + } } diff --git a/program-examples/anchor/programs/create-ata/tests/test.rs b/program-examples/anchor/programs/create-ata/tests/test.rs index b966fc3..1e08112 100644 --- a/program-examples/anchor/programs/create-ata/tests/test.rs +++ b/program-examples/anchor/programs/create-ata/tests/test.rs @@ -1,35 +1,34 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_create_ata::{instruction::CreateAta, ID}; +use anchor_lang::{InstructionData, ToAccountMetas}; +use light_client::indexer::{AddressWithTree, Indexer}; +use light_client::interface::{get_create_accounts_proof, InitializeRentFreeConfig}; +use light_program_test::program_test::{setup_mock_program_data, LightProgramTest}; +use light_program_test::{ProgramTestConfig, Rpc}; +use light_sdk_types::LIGHT_TOKEN_PROGRAM_ID; use light_token::instruction::{ - CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, derive_token_ata, - find_mint_address, rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, + CreateMint, CreateMintParams, COMPRESSIBLE_CONFIG_V1, RENT_SPONSOR, + derive_mint_compressed_address, derive_token_ata, find_mint_address, }; -use anchor_lang::system_program; +use light_token_anchor_create_ata::{CreateAtaParams, ID}; use solana_sdk::{ - instruction::{AccountMeta, Instruction}, + instruction::Instruction, signature::Keypair, signer::Signer, + system_program, }; -#[tokio::test] -async fn test_create_ata() { - let config = - ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_ata", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - +async fn setup_create_mint( + rpc: &mut (impl Rpc + Indexer), + payer: &Keypair, + mint_authority: solana_sdk::pubkey::Pubkey, + decimals: u8, +) -> (solana_sdk::pubkey::Pubkey, Keypair) { let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - let address_tree = rpc.get_address_tree_v2(); let output_queue = rpc.get_random_state_tree_info().unwrap().queue; let compression_address = derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + let (mint, bump) = find_mint_address(&mint_seed.pubkey()); let rpc_result = rpc .get_validity_proof( @@ -50,7 +49,7 @@ async fn test_create_ata() { mint_authority, proof: rpc_result.proof.0.unwrap(), compression_address, - mint: mint_pda, + mint, bump, freeze_authority: None, extensions: None, @@ -58,49 +57,100 @@ async fn test_create_ata() { write_top_up: 766, }; - let create_mint_ix = CreateMint::new( + let create_mint_builder = CreateMint::new( params, mint_seed.pubkey(), payer.pubkey(), address_tree.tree, output_queue, - ) - .instruction() - .unwrap(); + ); + let instruction = create_mint_builder.instruction().unwrap(); - rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) + rpc.create_and_send_transaction(&[instruction], &payer.pubkey(), &[payer, &mint_seed]) .await .unwrap(); - // Derive ATA address and bump + (mint, mint_seed) +} + +#[tokio::test] +async fn test_create_ata() { + let mut config = + ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_ata", ID)])); + config = config.with_light_protocol_events(); + + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let program_data_pda = setup_mock_program_data(&mut rpc, &payer, &ID); + + let (init_config_ix, _config_pda) = InitializeRentFreeConfig::new( + &ID, + &payer.pubkey(), + &program_data_pda, + RENT_SPONSOR, + payer.pubkey(), + ) + .build(); + + rpc.create_and_send_transaction(&[init_config_ix], &payer.pubkey(), &[&payer]) + .await + .expect("Initialize config should succeed"); + + let (mint_pda, _mint_seed) = setup_create_mint(&mut rpc, &payer, payer.pubkey(), 9).await; + let (ata, ata_bump) = derive_token_ata(&payer.pubkey(), &mint_pda); - // Call the anchor program to create ATA - let compressible_config = config_pda(); - let rent_sponsor = rent_sponsor_pda(); + let proof_result = get_create_accounts_proof(&rpc, &ID, vec![]) + .await + .unwrap(); + + let accounts = light_token_anchor_create_ata::accounts::CreateAta { + payer: payer.pubkey(), + mint: mint_pda, + owner: payer.pubkey(), + ata, + light_token_compressible_config: COMPRESSIBLE_CONFIG_V1, + light_token_rent_sponsor: RENT_SPONSOR, + light_token_program: LIGHT_TOKEN_PROGRAM_ID.into(), + system_program: system_program::ID, + }; + + let instruction_data = light_token_anchor_create_ata::instruction::CreateAta { + params: CreateAtaParams { + create_accounts_proof: proof_result.create_accounts_proof, + ata_bump, + }, + }; let ix = Instruction { program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(payer.pubkey(), false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(compressible_config, false), - AccountMeta::new(rent_sponsor, false), - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - ], - data: CreateAta { - bump: ata_bump, - idempotent: false, - } - .data(), + accounts: [ + accounts.to_account_metas(None), + proof_result.remaining_accounts, + ] + .concat(), + data: instruction_data.data(), }; - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + let sig = rpc + .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) .await .unwrap(); println!("Tx: {}", sig); + + let ata_account = rpc + .get_account(ata) + .await + .unwrap() + .expect("ATA should exist on-chain"); + + use light_token_interface::state::Token; + let token: Token = borsh::BorshDeserialize::deserialize(&mut &ata_account.data[..]) + .expect("Failed to deserialize Token"); + + assert_eq!(token.owner, payer.pubkey().to_bytes(), "ATA owner should match"); + assert_eq!(token.mint, mint_pda.to_bytes(), "ATA mint should match"); + assert_eq!(token.amount, 0, "ATA amount should be 0 initially"); } diff --git a/program-examples/anchor/programs/create-mint/Cargo.toml b/program-examples/anchor/programs/create-mint/Cargo.toml index 42d8ad7..3288ede 100644 --- a/program-examples/anchor/programs/create-mint/Cargo.toml +++ b/program-examples/anchor/programs/create-mint/Cargo.toml @@ -9,22 +9,40 @@ name = "light_token_anchor_create_mint" [features] no-entrypoint = [] +no-idl = [] +no-log-ix-name = [] cpi = ["no-entrypoint"] -default = ["idl-build"] +default = [] idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] +test-sbf = [] [dependencies] anchor-lang = { workspace = true } light-sdk = { workspace = true } +light-sdk-types = { workspace = true } +light-sdk-macros = { workspace = true } +light-compressible = { workspace = true } light-token = { workspace = true } +light-token-types = { workspace = true } +solana-program = { workspace = true } +solana-pubkey = { workspace = true } +solana-msg = { workspace = true } +solana-program-error = { workspace = true } +solana-account-info = { workspace = true } [dev-dependencies] light-program-test = { workspace = true } light-client = { workspace = true } +light-token = { workspace = true } +light-token-types = { workspace = true } light-token-interface = { workspace = true } -borsh = { workspace = true } tokio = { workspace = true } solana-sdk = { workspace = true } +solana-instruction = { workspace = true } +solana-keypair = { workspace = true } +solana-pubkey = { workspace = true } +solana-signer = { workspace = true } +borsh = { workspace = true } [lints.rust.unexpected_cfgs] level = "allow" diff --git a/program-examples/anchor/programs/create-mint/src/lib.rs b/program-examples/anchor/programs/create-mint/src/lib.rs index d10939a..4ee3943 100644 --- a/program-examples/anchor/programs/create-mint/src/lib.rs +++ b/program-examples/anchor/programs/create-mint/src/lib.rs @@ -1,126 +1,78 @@ #![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; -use light_token::instruction::{CreateMintCpi, CreateMintParams, SystemAccountInfos}; -use light_token::{CompressedProof, ExtensionInstructionData, TokenMetadataInstructionData}; +use light_compressible::CreateAccountsProof; +use light_sdk::derive_light_cpi_signer; +use light_sdk_macros::{light_program, LightAccounts}; +use light_sdk_types::CpiSigner; declare_id!("JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j"); -/// Token metadata parameters for creating a mint with metadata. +pub const LIGHT_CPI_SIGNER: CpiSigner = + derive_light_cpi_signer!("JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j"); + +pub const MINT_SIGNER_SEED: &[u8] = b"mint_signer"; + #[derive(AnchorSerialize, AnchorDeserialize, Clone)] -pub struct TokenMetadataParams { - pub name: Vec, - pub symbol: Vec, - pub uri: Vec, - pub update_authority: Option, +pub struct CreateMintParams { + pub create_accounts_proof: CreateAccountsProof, + pub mint_signer_bump: u8, } +#[derive(Accounts, LightAccounts)] +#[instruction(params: CreateMintParams)] +pub struct CreateMint<'info> { + #[account(mut)] + pub fee_payer: Signer<'info>, + + pub authority: Signer<'info>, + + /// CHECK: PDA derived from authority + #[account( + seeds = [MINT_SIGNER_SEED, authority.key().as_ref()], + bump, + )] + pub mint_signer: UncheckedAccount<'info>, + + /// CHECK: Initialized by light_mint CPI + #[account(mut)] + #[light_account(init, + mint::signer = mint_signer, + mint::authority = fee_payer, + mint::decimals = 9, + mint::seeds = &[MINT_SIGNER_SEED, self.authority.to_account_info().key.as_ref(), &[params.mint_signer_bump]] + )] + pub mint: UncheckedAccount<'info>, + + /// CHECK: Compression config + pub compression_config: AccountInfo<'info>, + + /// CHECK: CToken config + pub light_token_compressible_config: AccountInfo<'info>, + + /// CHECK: CToken rent sponsor + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, + + /// CHECK: CToken program + pub light_token_program: AccountInfo<'info>, + + /// CHECK: CToken CPI authority + pub light_token_cpi_authority: AccountInfo<'info>, + + pub system_program: Program<'info, System>, +} + +#[light_program] #[program] pub mod light_token_anchor_create_mint { use super::*; - pub fn create_mint( - ctx: Context, - decimals: u8, - address_merkle_tree_root_index: u16, - compression_address: [u8; 32], - proof: CompressedProof, - freeze_authority: Option, - bump: u8, - rent_payment: Option, - write_top_up: Option, - metadata: Option, + #[allow(unused_variables)] + pub fn create_mint<'info>( + ctx: Context<'_, '_, '_, 'info, CreateMint<'info>>, + params: CreateMintParams, ) -> Result<()> { - let mint = light_token::instruction::find_mint_address(ctx.accounts.mint_seed.key).0; - - let extensions = metadata.map(|m| { - vec![ExtensionInstructionData::TokenMetadata( - TokenMetadataInstructionData { - update_authority: m - .update_authority - .map(|p| p.to_bytes().into()), - name: m.name, - symbol: m.symbol, - uri: m.uri, - additional_metadata: None, - }, - )] - }); - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index, - mint_authority: *ctx.accounts.authority.key, - proof, - compression_address, - mint, - bump, - freeze_authority, - extensions, - rent_payment: rent_payment.unwrap_or(16), // Default: ~24 hours - write_top_up: write_top_up.unwrap_or(766), // Default: ~3 hours per write - }; - - let system_accounts = SystemAccountInfos { - light_system_program: ctx.accounts.light_system_program.to_account_info(), - cpi_authority_pda: ctx.accounts.cpi_authority_pda.to_account_info(), - registered_program_pda: ctx.accounts.registered_program_pda.to_account_info(), - account_compression_authority: ctx.accounts.account_compression_authority.to_account_info(), - account_compression_program: ctx.accounts.account_compression_program.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - }; - - CreateMintCpi { - mint_seed: ctx.accounts.mint_seed.to_account_info(), - authority: ctx.accounts.authority.to_account_info(), - payer: ctx.accounts.payer.to_account_info(), - address_tree: ctx.accounts.address_tree.to_account_info(), - output_queue: ctx.accounts.output_queue.to_account_info(), - compressible_config: ctx.accounts.compressible_config.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), - system_accounts, - cpi_context: None, - cpi_context_account: None, - params, - } - .invoke()?; Ok(()) } } - -#[derive(Accounts)] -pub struct CreateMintAccounts<'info> { - pub mint_seed: Signer<'info>, - /// CHECK: Validated by light-token CPI - pub authority: AccountInfo<'info>, - #[account(mut)] - pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub address_tree: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub output_queue: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub light_system_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub cpi_authority_pda: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub registered_program_pda: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub account_compression_authority: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub account_compression_program: AccountInfo<'info>, - pub system_program: Program<'info, System>, - /// CHECK: Validated by light-token CPI - use light_token::token::config_pda() - pub compressible_config: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - derived from find_mint_address(mint_seed) - #[account(mut)] - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - use light_token::token::rent_sponsor_pda() - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, -} diff --git a/program-examples/anchor/programs/create-mint/tests/test.rs b/program-examples/anchor/programs/create-mint/tests/test.rs index 8aa651f..2966517 100644 --- a/program-examples/anchor/programs/create-mint/tests/test.rs +++ b/program-examples/anchor/programs/create-mint/tests/test.rs @@ -1,96 +1,139 @@ -use anchor_lang::InstructionData; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_create_mint::{instruction::CreateMint, ID}; -use light_token::instruction::{ - config_pda, derive_mint_compressed_address, find_mint_address, rent_sponsor_pda, - SystemAccounts, LIGHT_TOKEN_PROGRAM_ID, +//! Integration tests for Light mint creation using #[light_account(init, mint::...)] macro. + +use anchor_lang::{InstructionData, ToAccountMetas}; +use light_client::interface::{ + get_create_accounts_proof, CreateAccountsProofInput, InitializeRentFreeConfig, }; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, +use light_program_test::{ + program_test::{setup_mock_program_data, LightProgramTest}, + ProgramTestConfig, Rpc, }; +use light_sdk_types::LIGHT_TOKEN_PROGRAM_ID; +use light_token::instruction::{find_mint_address, COMPRESSIBLE_CONFIG_V1, RENT_SPONSOR}; +use solana_instruction::Instruction; +use solana_keypair::Keypair; +use solana_pubkey::Pubkey; +use solana_signer::Signer; + +use light_token_anchor_create_mint::{CreateMintParams, MINT_SIGNER_SEED, ID}; +/// Test creating a Light mint using the #[light_account(init, mint::...)] macro. #[tokio::test] async fn test_create_mint() { - let config = - ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_mint", ID)])); + let program_id = ID; + let mut config = ProgramTestConfig::new_v2( + true, + Some(vec![("light_token_anchor_create_mint", program_id)]), + ); + config = config.with_light_protocol_events(); + let mut rpc = LightProgramTest::new(config).await.unwrap(); let payer = rpc.get_payer().insecure_clone(); - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; + // Setup program data for rent-free config + let program_data_pda = setup_mock_program_data(&mut rpc, &payer, &program_id); - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + // Initialize rent-free config + let (init_config_ix, config_pda) = InitializeRentFreeConfig::new( + &program_id, + &payer.pubkey(), + &program_data_pda, + RENT_SPONSOR, + payer.pubkey(), + ) + .build(); - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + rpc.create_and_send_transaction(&[init_config_ix], &payer.pubkey(), &[&payer]) + .await + .expect("Initialize config should succeed"); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + // Authority keypair (mint authority) + let authority = Keypair::new(); - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![light_client::indexer::AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let system_accounts = SystemAccounts::default(); - - // Call the anchor program to create mint - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new(mint_seed.pubkey(), true), - AccountMeta::new_readonly(mint_authority, false), - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new(address_tree.tree, false), - AccountMeta::new(output_queue, false), - AccountMeta::new_readonly(system_accounts.light_system_program, false), - AccountMeta::new_readonly(system_accounts.cpi_authority_pda, false), - AccountMeta::new_readonly(system_accounts.registered_program_pda, false), - AccountMeta::new_readonly(system_accounts.account_compression_authority, false), - AccountMeta::new_readonly(system_accounts.account_compression_program, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(config_pda(), false), - AccountMeta::new(mint_pda, false), - AccountMeta::new(rent_sponsor_pda(), false), - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - ], - data: CreateMint { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - compression_address: compression_address.into(), - proof: rpc_result.proof.0.unwrap(), - freeze_authority: None, - bump, - rent_payment: Some(16), - write_top_up: Some(766), - metadata: None, - } - .data(), + // Derive mint signer PDA + let (mint_signer_pda, mint_signer_bump) = Pubkey::find_program_address( + &[MINT_SIGNER_SEED, authority.pubkey().as_ref()], + &program_id, + ); + + // Derive mint PDA from mint signer + let (mint_pda, _) = find_mint_address(&mint_signer_pda); + + // Get proof for the mint + let proof_result = get_create_accounts_proof( + &rpc, + &program_id, + vec![CreateAccountsProofInput::mint(mint_signer_pda)], + ) + .await + .unwrap(); + + println!("Light Mint test setup completed"); + println!("Program ID: {:?}", program_id); + println!( + "Mint Signer PDA: {:?} (bump: {})", + mint_signer_pda, mint_signer_bump + ); + println!("Light Mint PDA: {:?}", mint_pda); + + // Build create_mint instruction + let accounts = light_token_anchor_create_mint::accounts::CreateMint { + fee_payer: payer.pubkey(), + authority: authority.pubkey(), + mint_signer: mint_signer_pda, + mint: mint_pda, + compression_config: config_pda, + light_token_compressible_config: COMPRESSIBLE_CONFIG_V1, + rent_sponsor: RENT_SPONSOR, + light_token_program: LIGHT_TOKEN_PROGRAM_ID.into(), + light_token_cpi_authority: light_token_types::CPI_AUTHORITY_PDA.into(), + system_program: solana_sdk::system_program::ID, + }; + + let instruction_data = light_token_anchor_create_mint::instruction::CreateMint { + params: CreateMintParams { + create_accounts_proof: proof_result.create_accounts_proof, + mint_signer_bump, + }, + }; + + let instruction = Instruction { + program_id, + accounts: [ + accounts.to_account_metas(None), + proof_result.remaining_accounts, + ] + .concat(), + data: instruction_data.data(), }; - let sig = rpc - .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &mint_seed]) + rpc.create_and_send_transaction(&[instruction], &payer.pubkey(), &[&payer, &authority]) .await - .unwrap(); + .expect("CreateMint should succeed"); - let compressed_account = rpc - .get_compressed_account(compression_address, None) + // Verify mint exists on-chain + let mint_account = rpc + .get_account(mint_pda) .await .unwrap() - .value; + .expect("Mint should exist on-chain"); + + // Parse and verify mint data + use light_token_interface::state::Mint; + let mint: Mint = borsh::BorshDeserialize::deserialize(&mut &mint_account.data[..]) + .expect("Failed to deserialize Mint"); + + // Verify decimals match what was specified in #[light_account(init)] + assert_eq!(mint.base.decimals, 9, "Mint should have 9 decimals"); + + // Verify mint authority + assert_eq!( + mint.base.mint_authority, + Some(payer.pubkey().to_bytes().into()), + "Mint authority should be fee_payer" + ); - assert!(compressed_account.is_some(), "Compressed mint should exist"); - println!("Tx: {}", sig); + println!("Light Mint created and verified successfully!"); + println!("Mint account size: {} bytes", mint_account.data.len()); + println!("Mint PDA: {}", mint_pda); } diff --git a/program-examples/anchor/programs/create-token-account/Cargo.toml b/program-examples/anchor/programs/create-token-account/Cargo.toml index 974dfe4..dac4327 100644 --- a/program-examples/anchor/programs/create-token-account/Cargo.toml +++ b/program-examples/anchor/programs/create-token-account/Cargo.toml @@ -15,8 +15,16 @@ idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] [dependencies] anchor-lang = { workspace = true } +light-compressible = { workspace = true } light-sdk = { workspace = true } +light-sdk-macros = { workspace = true } +light-sdk-types = { workspace = true } light-token = { workspace = true } +light-token-types = { workspace = true } +solana-pubkey = { workspace = true } +solana-msg = { workspace = true } +solana-program-error = { workspace = true } +solana-account-info = { workspace = true } [dev-dependencies] light-program-test = { workspace = true } @@ -25,6 +33,10 @@ light-token-interface = { workspace = true } borsh = { workspace = true } tokio = { workspace = true } solana-sdk = { workspace = true } +solana-keypair = { workspace = true } +solana-pubkey = { workspace = true } +solana-signer = { workspace = true } +solana-instruction = { workspace = true } [lints.rust.unexpected_cfgs] level = "allow" diff --git a/program-examples/anchor/programs/create-token-account/src/lib.rs b/program-examples/anchor/programs/create-token-account/src/lib.rs index 0420874..87f8d00 100644 --- a/program-examples/anchor/programs/create-token-account/src/lib.rs +++ b/program-examples/anchor/programs/create-token-account/src/lib.rs @@ -1,47 +1,102 @@ +//! Example: Create a compressed token account using the Light SDK macros. +//! +//! Demonstrates the `#[light_account(init, token, ...)]` macro attribute +//! for creating compressed token accounts with automatic CPI generation. +//! +//! This example creates a token vault owned by a PDA authority. + #![allow(unexpected_cfgs, deprecated)] use anchor_lang::prelude::*; -use light_token::instruction::CreateTokenAccountCpi; +use light_compressible::CreateAccountsProof; +use light_sdk::derive_light_cpi_signer; +use light_sdk_macros::{light_program, LightAccounts}; +use light_sdk_types::CpiSigner; +use light_token::instruction::{COMPRESSIBLE_CONFIG_V1, RENT_SPONSOR as LIGHT_TOKEN_RENT_SPONSOR}; declare_id!("FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn"); -#[program] -pub mod light_token_anchor_create_token_account { - use super::*; +pub const LIGHT_CPI_SIGNER: CpiSigner = + derive_light_cpi_signer!("FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn"); - pub fn create_token_account(ctx: Context, owner: Pubkey) -> Result<()> { - CreateTokenAccountCpi { - payer: ctx.accounts.payer.to_account_info(), - account: ctx.accounts.account.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - owner, - } - .rent_free( - ctx.accounts.compressible_config.to_account_info(), - ctx.accounts.rent_sponsor.to_account_info(), - ctx.accounts.system_program.to_account_info(), - &ctx.accounts.light_token_program.key(), - ) - .invoke()?; - Ok(()) - } +/// Seed for the token account authority PDA. +pub const TOKEN_AUTH_SEED: &[u8] = b"token_auth"; +/// Seed for the token account PDA. +pub const TOKEN_ACCOUNT_SEED: &[u8] = b"token_account"; + +#[derive(AnchorSerialize, AnchorDeserialize, Clone)] +pub struct CreateTokenAccountParams { + pub create_accounts_proof: CreateAccountsProof, + /// Bump for the token account PDA (needed for invoke_signed). + pub account_bump: u8, } -#[derive(Accounts)] +/// Accounts for creating a compressed token account using the Light SDK macros. +/// +/// The token account is owned by a PDA authority derived from the program. +#[derive(Accounts, LightAccounts)] +#[instruction(params: CreateTokenAccountParams)] pub struct CreateTokenAccountAccounts<'info> { #[account(mut)] pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI + + /// CHECK: Token mint for the account. pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub compressible_config: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, - pub system_program: Program<'info, System>, - /// CHECK: Light token program for CPI + + /// CHECK: PDA authority that owns the token account. + #[account( + seeds = [TOKEN_AUTH_SEED], + bump, + )] + pub token_authority: UncheckedAccount<'info>, + + /// CHECK: Initialized by light_account macro. + #[account( + mut, + seeds = [TOKEN_ACCOUNT_SEED, mint.key().as_ref()], + bump, + )] + #[light_account(init, token, + token::authority = [TOKEN_ACCOUNT_SEED, self.mint.key()], + token::mint = mint, + token::owner = token_authority, + token::bump = params.account_bump + )] + pub account: UncheckedAccount<'info>, + + /// CHECK: Light token compressible config. + #[account(address = COMPRESSIBLE_CONFIG_V1)] + pub light_token_compressible_config: AccountInfo<'info>, + + /// CHECK: Light token rent sponsor. + #[account(mut, address = LIGHT_TOKEN_RENT_SPONSOR)] + pub light_token_rent_sponsor: AccountInfo<'info>, + + /// CHECK: Light token CPI authority (required for token account creation). + pub light_token_cpi_authority: AccountInfo<'info>, + + /// CHECK: Light token program for CPI. pub light_token_program: AccountInfo<'info>, + + pub system_program: Program<'info, System>, +} + +#[light_program] +#[program] +pub mod light_token_anchor_create_token_account { + use super::*; + + /// Create a compressed token account. + /// + /// The token account is created by the LightFinalize trait implementation + /// generated by the `#[light_account(init, token, ...)]` macro. + /// The account is owned by the `token_authority` PDA. + #[allow(unused_variables)] + pub fn create_token_account<'info>( + ctx: Context<'_, '_, '_, 'info, CreateTokenAccountAccounts<'info>>, + params: CreateTokenAccountParams, + ) -> Result<()> { + // Token account creation is handled by the macro-generated LightFinalize implementation. + Ok(()) + } } diff --git a/program-examples/anchor/programs/create-token-account/tests/test.rs b/program-examples/anchor/programs/create-token-account/tests/test.rs new file mode 100644 index 0000000..22cb83a --- /dev/null +++ b/program-examples/anchor/programs/create-token-account/tests/test.rs @@ -0,0 +1,174 @@ +//! Integration test for compressed token account creation using macros. + +use anchor_lang::{InstructionData, ToAccountMetas}; +use light_client::indexer::AddressWithTree; +use light_client::interface::{get_create_accounts_proof, InitializeRentFreeConfig}; +use light_program_test::program_test::{setup_mock_program_data, LightProgramTest}; +use light_program_test::{Indexer, ProgramTestConfig, Rpc}; +use light_sdk_types::LIGHT_TOKEN_PROGRAM_ID; +use light_token::instruction::{ + CreateMint, CreateMintParams, COMPRESSIBLE_CONFIG_V1, RENT_SPONSOR, + derive_mint_compressed_address, find_mint_address, +}; +use light_token_anchor_create_token_account::{ + CreateTokenAccountParams, TOKEN_AUTH_SEED, TOKEN_ACCOUNT_SEED, ID, +}; +use solana_instruction::Instruction; +use solana_keypair::Keypair; +use solana_pubkey::Pubkey; +use solana_signer::Signer; + +/// Setup helper: Creates a compressed mint directly using the ctoken SDK. +/// Returns (mint_pda, mint_seed_keypair) +async fn setup_create_mint( + rpc: &mut (impl Rpc + Indexer), + payer: &Keypair, + mint_authority: Pubkey, + decimals: u8, +) -> (Pubkey, Keypair) { + let mint_seed = Keypair::new(); + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_mint_builder = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ); + let instruction = create_mint_builder.instruction().unwrap(); + + rpc.create_and_send_transaction(&[instruction], &payer.pubkey(), &[payer, &mint_seed]) + .await + .unwrap(); + + (mint, mint_seed) +} + +#[tokio::test] +async fn test_create_token_account() { + let mut config = + ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_token_account", ID)])); + config = config.with_light_protocol_events(); + + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let program_data_pda = setup_mock_program_data(&mut rpc, &payer, &ID); + + let (init_config_ix, _config_pda) = InitializeRentFreeConfig::new( + &ID, + &payer.pubkey(), + &program_data_pda, + RENT_SPONSOR, + payer.pubkey(), + ) + .build(); + + rpc.create_and_send_transaction(&[init_config_ix], &payer.pubkey(), &[&payer]) + .await + .expect("Initialize config should succeed"); + + // Create a mint first + let (mint_pda, _mint_seed) = setup_create_mint(&mut rpc, &payer, payer.pubkey(), 9).await; + + // Derive the token authority PDA (owner of the token account) + let (token_authority, _auth_bump) = Pubkey::find_program_address(&[TOKEN_AUTH_SEED], &ID); + + // Derive the token account PDA + let (account_pda, account_bump) = + Pubkey::find_program_address(&[TOKEN_ACCOUNT_SEED, mint_pda.as_ref()], &ID); + + // Get proof for account creation + let proof_result = get_create_accounts_proof(&rpc, &ID, vec![]) + .await + .unwrap(); + + let accounts = light_token_anchor_create_token_account::accounts::CreateTokenAccountAccounts { + payer: payer.pubkey(), + mint: mint_pda, + token_authority, + account: account_pda, + light_token_compressible_config: COMPRESSIBLE_CONFIG_V1, + light_token_rent_sponsor: RENT_SPONSOR, + light_token_cpi_authority: light_token_types::CPI_AUTHORITY_PDA.into(), + light_token_program: LIGHT_TOKEN_PROGRAM_ID.into(), + system_program: solana_sdk::system_program::ID, + }; + + let instruction_data = light_token_anchor_create_token_account::instruction::CreateTokenAccount { + params: CreateTokenAccountParams { + create_accounts_proof: proof_result.create_accounts_proof, + account_bump, + }, + }; + + let ix = Instruction { + program_id: ID, + accounts: [ + accounts.to_account_metas(None), + proof_result.remaining_accounts, + ] + .concat(), + data: instruction_data.data(), + }; + + let sig = rpc + .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); + + // Verify token account exists on-chain + let token_account = rpc + .get_account(account_pda) + .await + .unwrap() + .expect("Token account should exist on-chain"); + + // Parse and verify token data + use light_token_interface::state::Token; + let token: Token = borsh::BorshDeserialize::deserialize(&mut &token_account.data[..]) + .expect("Failed to deserialize Token"); + + assert_eq!( + token.owner, + token_authority.to_bytes(), + "Token owner should be token_authority PDA" + ); + assert_eq!(token.mint, mint_pda.to_bytes(), "Token mint should match"); + assert_eq!(token.amount, 0, "Token amount should be 0 initially"); +} From 7180d85ae3a9e0e537500d3087204fd8556fe673 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Sun, 25 Jan 2026 22:52:59 +0000 Subject: [PATCH 08/23] rm log --- ...vhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9.light_token_anchor_freeze.log | 1 - ...1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q.light_token_anchor_burn.log | 1 - ...HNdQE6edgUi63kpZrV6.light_token_anchor_transfer_interface.log | 1 - ...4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND.light_token_anchor_revoke.log | 1 - ...MsvBscwPUgDuNjJA93QBdm3PZY8.light_token_anchor_create_ata.log | 1 - ...bgQN22avg96k8YteFmDLe1jArkDQDB.light_token_anchor_mint_to.log | 1 - ...JjqaEoBG6osPYNVxHoBzXzvdbnVGES621.light_token_anchor_thaw.log | 1 - ...Q6hdPqtGKG45awRNuVS7gSc3sNjv1g.light_token_anchor_approve.log | 1 - ...qYrkSwYdLmztgmvKn.light_token_anchor_create_token_account.log | 1 - ...RHgpPdrBXf3R9kmhFC7aLALB6j.light_token_anchor_create_mint.log | 1 - ...XNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG.light_token_anchor_close.log | 1 - 11 files changed, 11 deletions(-) delete mode 100644 program-examples/anchor/.anchor/program-logs/4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9.light_token_anchor_freeze.log delete mode 100644 program-examples/anchor/.anchor/program-logs/5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q.light_token_anchor_burn.log delete mode 100644 program-examples/anchor/.anchor/program-logs/7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6.light_token_anchor_transfer_interface.log delete mode 100644 program-examples/anchor/.anchor/program-logs/7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND.light_token_anchor_revoke.log delete mode 100644 program-examples/anchor/.anchor/program-logs/8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8.light_token_anchor_create_ata.log delete mode 100644 program-examples/anchor/.anchor/program-logs/DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB.light_token_anchor_mint_to.log delete mode 100644 program-examples/anchor/.anchor/program-logs/DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621.light_token_anchor_thaw.log delete mode 100644 program-examples/anchor/.anchor/program-logs/DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g.light_token_anchor_approve.log delete mode 100644 program-examples/anchor/.anchor/program-logs/FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn.light_token_anchor_create_token_account.log delete mode 100644 program-examples/anchor/.anchor/program-logs/JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j.light_token_anchor_create_mint.log delete mode 100644 program-examples/anchor/.anchor/program-logs/gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG.light_token_anchor_close.log diff --git a/program-examples/anchor/.anchor/program-logs/4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9.light_token_anchor_freeze.log b/program-examples/anchor/.anchor/program-logs/4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9.light_token_anchor_freeze.log deleted file mode 100644 index 276a730..0000000 --- a/program-examples/anchor/.anchor/program-logs/4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9.light_token_anchor_freeze.log +++ /dev/null @@ -1 +0,0 @@ -Streaming transaction logs mentioning 4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q.light_token_anchor_burn.log b/program-examples/anchor/.anchor/program-logs/5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q.light_token_anchor_burn.log deleted file mode 100644 index 4a60269..0000000 --- a/program-examples/anchor/.anchor/program-logs/5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q.light_token_anchor_burn.log +++ /dev/null @@ -1 +0,0 @@ -Streaming transaction logs mentioning 5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6.light_token_anchor_transfer_interface.log b/program-examples/anchor/.anchor/program-logs/7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6.light_token_anchor_transfer_interface.log deleted file mode 100644 index 671b29f..0000000 --- a/program-examples/anchor/.anchor/program-logs/7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6.light_token_anchor_transfer_interface.log +++ /dev/null @@ -1 +0,0 @@ -Streaming transaction logs mentioning 7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND.light_token_anchor_revoke.log b/program-examples/anchor/.anchor/program-logs/7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND.light_token_anchor_revoke.log deleted file mode 100644 index e961b71..0000000 --- a/program-examples/anchor/.anchor/program-logs/7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND.light_token_anchor_revoke.log +++ /dev/null @@ -1 +0,0 @@ -Streaming transaction logs mentioning 7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8.light_token_anchor_create_ata.log b/program-examples/anchor/.anchor/program-logs/8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8.light_token_anchor_create_ata.log deleted file mode 100644 index 00d312b..0000000 --- a/program-examples/anchor/.anchor/program-logs/8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8.light_token_anchor_create_ata.log +++ /dev/null @@ -1 +0,0 @@ -Streaming transaction logs mentioning 8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB.light_token_anchor_mint_to.log b/program-examples/anchor/.anchor/program-logs/DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB.light_token_anchor_mint_to.log deleted file mode 100644 index b9e15a5..0000000 --- a/program-examples/anchor/.anchor/program-logs/DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB.light_token_anchor_mint_to.log +++ /dev/null @@ -1 +0,0 @@ -Streaming transaction logs mentioning DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621.light_token_anchor_thaw.log b/program-examples/anchor/.anchor/program-logs/DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621.light_token_anchor_thaw.log deleted file mode 100644 index 7a12946..0000000 --- a/program-examples/anchor/.anchor/program-logs/DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621.light_token_anchor_thaw.log +++ /dev/null @@ -1 +0,0 @@ -Streaming transaction logs mentioning DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g.light_token_anchor_approve.log b/program-examples/anchor/.anchor/program-logs/DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g.light_token_anchor_approve.log deleted file mode 100644 index 79873bd..0000000 --- a/program-examples/anchor/.anchor/program-logs/DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g.light_token_anchor_approve.log +++ /dev/null @@ -1 +0,0 @@ -Streaming transaction logs mentioning DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn.light_token_anchor_create_token_account.log b/program-examples/anchor/.anchor/program-logs/FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn.light_token_anchor_create_token_account.log deleted file mode 100644 index 9125706..0000000 --- a/program-examples/anchor/.anchor/program-logs/FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn.light_token_anchor_create_token_account.log +++ /dev/null @@ -1 +0,0 @@ -Streaming transaction logs mentioning FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j.light_token_anchor_create_mint.log b/program-examples/anchor/.anchor/program-logs/JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j.light_token_anchor_create_mint.log deleted file mode 100644 index f024802..0000000 --- a/program-examples/anchor/.anchor/program-logs/JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j.light_token_anchor_create_mint.log +++ /dev/null @@ -1 +0,0 @@ -Streaming transaction logs mentioning JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j. Confirmed commitment diff --git a/program-examples/anchor/.anchor/program-logs/gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG.light_token_anchor_close.log b/program-examples/anchor/.anchor/program-logs/gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG.light_token_anchor_close.log deleted file mode 100644 index b249ef9..0000000 --- a/program-examples/anchor/.anchor/program-logs/gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG.light_token_anchor_close.log +++ /dev/null @@ -1 +0,0 @@ -Streaming transaction logs mentioning gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG. Confirmed commitment From 44d660387fd69ddcad5d61c94331f08c1b284754 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Sun, 25 Jan 2026 23:32:58 +0000 Subject: [PATCH 09/23] add macro sdk separation --- program-examples/anchor/Anchor.toml | 41 - program-examples/anchor/README.md | 68 +- program-examples/anchor/macros/Anchor.toml | 20 + program-examples/anchor/macros/Cargo.lock | 8864 +++++++++++++++++ .../anchor/{ => macros}/Cargo.toml | 16 +- program-examples/anchor/macros/README.md | 66 + .../programs/create-ata/Cargo.toml | 0 .../programs/create-ata/src/lib.rs | 0 .../programs/create-ata/tests/test.rs | 0 .../programs/create-mint/Cargo.toml | 0 .../programs/create-mint/src/lib.rs | 0 .../programs/create-mint/tests/test.rs | 0 .../programs/create-token-account/Cargo.toml | 0 .../programs/create-token-account/src/lib.rs | 0 .../create-token-account/tests/test.rs | 0 program-examples/anchor/sdk/Anchor.toml | 29 + program-examples/anchor/{ => sdk}/Cargo.lock | 97 +- program-examples/anchor/sdk/Cargo.toml | 41 + program-examples/anchor/sdk/README.md | 64 + .../{ => sdk}/programs/approve/Cargo.toml | 0 .../{ => sdk}/programs/approve/src/lib.rs | 4 +- .../{ => sdk}/programs/approve/tests/test.rs | 2 - .../anchor/{ => sdk}/programs/burn/Cargo.toml | 0 .../anchor/{ => sdk}/programs/burn/src/lib.rs | 4 +- .../{ => sdk}/programs/burn/tests/test.rs | 2 - .../{ => sdk}/programs/close/Cargo.toml | 0 .../{ => sdk}/programs/close/src/lib.rs | 2 +- .../{ => sdk}/programs/close/tests/test.rs | 0 .../anchor/sdk/programs/create-ata/Cargo.toml | 31 + .../anchor/sdk/programs/create-ata/src/lib.rs | 56 + .../sdk/programs/create-ata/tests/test.rs | 105 + .../sdk/programs/create-mint/Cargo.toml | 31 + .../sdk/programs/create-mint/src/lib.rs | 124 + .../sdk/programs/create-mint/tests/test.rs | 95 + .../programs/create-token-account/Cargo.toml | 31 + .../programs/create-token-account/src/lib.rs | 47 + .../create-token-account/tests/test.rs | 105 + .../{ => sdk}/programs/freeze/Cargo.toml | 0 .../{ => sdk}/programs/freeze/src/lib.rs | 4 +- .../{ => sdk}/programs/freeze/tests/test.rs | 2 - .../{ => sdk}/programs/mint-to/Cargo.toml | 0 .../{ => sdk}/programs/mint-to/src/lib.rs | 4 +- .../{ => sdk}/programs/mint-to/tests/test.rs | 3 +- .../{ => sdk}/programs/revoke/Cargo.toml | 0 .../{ => sdk}/programs/revoke/src/lib.rs | 4 +- .../{ => sdk}/programs/revoke/tests/test.rs | 2 - .../anchor/{ => sdk}/programs/thaw/Cargo.toml | 0 .../anchor/{ => sdk}/programs/thaw/src/lib.rs | 4 +- .../{ => sdk}/programs/thaw/tests/test.rs | 2 - .../sdk/programs/transfer-checked/Cargo.toml | 31 + .../sdk/programs/transfer-checked/src/lib.rs | 45 + .../programs/transfer-checked/tests/test.rs | 140 + .../programs/transfer-interface/Cargo.toml | 0 .../programs/transfer-interface/src/lib.rs | 4 +- .../programs/transfer-interface/tests/test.rs | 2 - ...CjpAirbmcHTukEgWWihiNpzc4qZ4HVYNo1rd2.json | 1 + 56 files changed, 9997 insertions(+), 196 deletions(-) delete mode 100644 program-examples/anchor/Anchor.toml create mode 100644 program-examples/anchor/macros/Anchor.toml create mode 100644 program-examples/anchor/macros/Cargo.lock rename program-examples/anchor/{ => macros}/Cargo.toml (80%) create mode 100644 program-examples/anchor/macros/README.md rename program-examples/anchor/{ => macros}/programs/create-ata/Cargo.toml (100%) rename program-examples/anchor/{ => macros}/programs/create-ata/src/lib.rs (100%) rename program-examples/anchor/{ => macros}/programs/create-ata/tests/test.rs (100%) rename program-examples/anchor/{ => macros}/programs/create-mint/Cargo.toml (100%) rename program-examples/anchor/{ => macros}/programs/create-mint/src/lib.rs (100%) rename program-examples/anchor/{ => macros}/programs/create-mint/tests/test.rs (100%) rename program-examples/anchor/{ => macros}/programs/create-token-account/Cargo.toml (100%) rename program-examples/anchor/{ => macros}/programs/create-token-account/src/lib.rs (100%) rename program-examples/anchor/{ => macros}/programs/create-token-account/tests/test.rs (100%) create mode 100644 program-examples/anchor/sdk/Anchor.toml rename program-examples/anchor/{ => sdk}/Cargo.lock (99%) create mode 100644 program-examples/anchor/sdk/Cargo.toml create mode 100644 program-examples/anchor/sdk/README.md rename program-examples/anchor/{ => sdk}/programs/approve/Cargo.toml (100%) rename program-examples/anchor/{ => sdk}/programs/approve/src/lib.rs (86%) rename program-examples/anchor/{ => sdk}/programs/approve/tests/test.rs (97%) rename program-examples/anchor/{ => sdk}/programs/burn/Cargo.toml (100%) rename program-examples/anchor/{ => sdk}/programs/burn/src/lib.rs (86%) rename program-examples/anchor/{ => sdk}/programs/burn/tests/test.rs (97%) rename program-examples/anchor/{ => sdk}/programs/close/Cargo.toml (100%) rename program-examples/anchor/{ => sdk}/programs/close/src/lib.rs (95%) rename program-examples/anchor/{ => sdk}/programs/close/tests/test.rs (100%) create mode 100644 program-examples/anchor/sdk/programs/create-ata/Cargo.toml create mode 100644 program-examples/anchor/sdk/programs/create-ata/src/lib.rs create mode 100644 program-examples/anchor/sdk/programs/create-ata/tests/test.rs create mode 100644 program-examples/anchor/sdk/programs/create-mint/Cargo.toml create mode 100644 program-examples/anchor/sdk/programs/create-mint/src/lib.rs create mode 100644 program-examples/anchor/sdk/programs/create-mint/tests/test.rs create mode 100644 program-examples/anchor/sdk/programs/create-token-account/Cargo.toml create mode 100644 program-examples/anchor/sdk/programs/create-token-account/src/lib.rs create mode 100644 program-examples/anchor/sdk/programs/create-token-account/tests/test.rs rename program-examples/anchor/{ => sdk}/programs/freeze/Cargo.toml (100%) rename program-examples/anchor/{ => sdk}/programs/freeze/src/lib.rs (84%) rename program-examples/anchor/{ => sdk}/programs/freeze/tests/test.rs (97%) rename program-examples/anchor/{ => sdk}/programs/mint-to/Cargo.toml (100%) rename program-examples/anchor/{ => sdk}/programs/mint-to/src/lib.rs (86%) rename program-examples/anchor/{ => sdk}/programs/mint-to/tests/test.rs (95%) rename program-examples/anchor/{ => sdk}/programs/revoke/Cargo.toml (100%) rename program-examples/anchor/{ => sdk}/programs/revoke/src/lib.rs (83%) rename program-examples/anchor/{ => sdk}/programs/revoke/tests/test.rs (97%) rename program-examples/anchor/{ => sdk}/programs/thaw/Cargo.toml (100%) rename program-examples/anchor/{ => sdk}/programs/thaw/src/lib.rs (83%) rename program-examples/anchor/{ => sdk}/programs/thaw/tests/test.rs (97%) create mode 100644 program-examples/anchor/sdk/programs/transfer-checked/Cargo.toml create mode 100644 program-examples/anchor/sdk/programs/transfer-checked/src/lib.rs create mode 100644 program-examples/anchor/sdk/programs/transfer-checked/tests/test.rs rename program-examples/anchor/{ => sdk}/programs/transfer-interface/Cargo.toml (100%) rename program-examples/anchor/{ => sdk}/programs/transfer-interface/src/lib.rs (89%) rename program-examples/anchor/{ => sdk}/programs/transfer-interface/tests/test.rs (97%) create mode 100644 program-examples/anchor/tRCtRRCjpAirbmcHTukEgWWihiNpzc4qZ4HVYNo1rd2.json diff --git a/program-examples/anchor/Anchor.toml b/program-examples/anchor/Anchor.toml deleted file mode 100644 index f3e916e..0000000 --- a/program-examples/anchor/Anchor.toml +++ /dev/null @@ -1,41 +0,0 @@ -[toolchain] - -[features] -resolution = true -skip-lint = false - -[programs.devnet] -light_token_anchor_approve = "DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g" -light_token_anchor_burn = "5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q" -light_token_anchor_close = "gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG" -light_token_anchor_create_ata = "8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8" -light_token_anchor_create_mint = "JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j" -light_token_anchor_create_token_account = "FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn" -light_token_anchor_freeze = "4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9" -light_token_anchor_mint_to = "DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB" -light_token_anchor_revoke = "7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND" -light_token_anchor_thaw = "DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621" -light_token_anchor_transfer_interface = "7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6" - -[programs.localnet] -light_token_anchor_approve = "A9b9t3qNQmYTpbui7TXLQbTJPXbNaV5dW11vxn2M7eC5" -light_token_anchor_burn = "BHTGZDjDw9Gpz8oYm7CRMg2WtKwW65YAYHXXMKv4dpr6" -light_token_anchor_close = "4fi27siKEvKXJYN5WCzWuHdAw1rLed6Tprv9ZARv3Gxu" -light_token_anchor_create_ata = "77bt3j6A3g9s1WtwYnRFTGP9y8H1nigW7mLtywGKPmMi" -light_token_anchor_create_mint = "Ev7tKaozVxbZLVGcKcVcz8A9yKZjUf5ATqoNSe5BDkjj" -light_token_anchor_create_token_account = "CTAiNDz2wJrB67HuJYYfooHG1gN3nXnZVfm3QhPgi2Vi" -light_token_anchor_freeze = "7ovuM3dD2MZtcWQesVMiSYJef3oh1XH3e8nUk1ArpWX6" -light_token_anchor_mint_to = "7SUgjNZYC1h89MuPVYkgEP5A4uYx5GFSjC7mzqMbN8U2" -light_token_anchor_revoke = "Dvq3UxQUDEF3B6khoJTdcbm3UutDsvxkdkTvxoJvegfg" -light_token_anchor_thaw = "FL4MY6v5mTqncytUeuPoGroo6DHSsmBCPirckygGbcip" -light_token_anchor_transfer_interface = "ChkDqFsvNNT5CGrV2YCkmK4DiVSATnXc98mNozPbhC6u" - -[registry] -url = "https://api.apr.dev" - -[provider] -cluster = "localnet" -wallet = "~/.config/solana/id.json" - -[scripts] -test = "cargo test-sbf" diff --git a/program-examples/anchor/README.md b/program-examples/anchor/README.md index 8affceb..782213a 100644 --- a/program-examples/anchor/README.md +++ b/program-examples/anchor/README.md @@ -1,61 +1,39 @@ # Light Token Anchor Programs -Anchor program examples that CPI the Light Token Program. - -## Programs - -- **approve** - Approve delegate via CPI - - [Program](programs/approve/src/lib.rs) -- **burn** - Burn tokens via CPI - - [Program](programs/burn/src/lib.rs) -- **close** - Close token account via CPI - - [Program](programs/close/src/lib.rs) -- **create-ata** - Create associated token account via CPI - - [Program](programs/create-ata/src/lib.rs) -- **create-mint** - Create light-token mint via CPI - - [Program](programs/create-mint/src/lib.rs) -- **create-token-account** - Create token account via CPI - - [Program](programs/create-token-account/src/lib.rs) -- **freeze** - Freeze token account via CPI - - [Program](programs/freeze/src/lib.rs) -- **mint-to** - Mint tokens via CPI - - [Program](programs/mint-to/src/lib.rs) -- **revoke** - Revoke delegate via CPI - - [Program](programs/revoke/src/lib.rs) -- **thaw** - Thaw token account via CPI - - [Program](programs/thaw/src/lib.rs) -- **transfer-interface** - Transfer tokens via CPI - - [Program](programs/transfer-interface/src/lib.rs) - -## Build +Anchor program examples demonstrating Light Token CPI integration. -```bash -anchor build -``` +## Approaches -## Test +Two different integration approaches, each with its own workspace: -### Requirements +### SDK approach -- light cli version 0.27.0+ (install via npm `i -g @lightprotocol/zk-compression-cli`) -- solana cli version 2.1.16+ -- anchor version 0.31.1+ -- Node.js and npm +Uses explicit CPI structs from `light_token::instruction`. All 12 programs included. -### Running Tests - -#### Rust Tests +- **Location:** [sdk/](sdk/) +- **Programs:** approve, burn, close, create-ata, create-mint, create-token-account, freeze, mint-to, revoke, thaw, transfer-checked, transfer-interface ```bash -cargo test-sbf +cd sdk && cargo test-sbf ``` -## Disclaimer +### Macro approach + +Uses `#[light_account]` macros for automatic compressed account creation. + +- **Location:** [macros/](macros/) +- **Programs:** create-ata, create-mint, create-token-account + +```bash +cd macros && cargo test-sbf +``` -This reference implementation is not audited. +## Requirements -The Light Protocol programs are audited and deployed on Solana devnet and mainnet. +- light cli 0.27.0+ (`npm i -g @lightprotocol/zk-compression-cli`) +- solana cli 2.1.16+ +- anchor 0.31.1+ ## Documentation -Learn more [about Light-Token here](https://www.zkcompression.com/light-token/welcome). +[Light-Token docs](https://www.zkcompression.com/light-token/welcome) diff --git a/program-examples/anchor/macros/Anchor.toml b/program-examples/anchor/macros/Anchor.toml new file mode 100644 index 0000000..75a3388 --- /dev/null +++ b/program-examples/anchor/macros/Anchor.toml @@ -0,0 +1,20 @@ +[toolchain] + +[features] +resolution = true +skip-lint = false + +[programs.devnet] +light_token_anchor_create_ata = "8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8" +light_token_anchor_create_mint = "JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j" +light_token_anchor_create_token_account = "FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn" + +[registry] +url = "https://api.apr.dev" + +[provider] +cluster = "devnet" +wallet = "~/.config/solana/id.json" + +[scripts] +test = "cargo test-sbf" diff --git a/program-examples/anchor/macros/Cargo.lock b/program-examples/anchor/macros/Cargo.lock new file mode 100644 index 0000000..5f39639 --- /dev/null +++ b/program-examples/anchor/macros/Cargo.lock @@ -0,0 +1,8864 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[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 = "agave-feature-set" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a2c365c0245cbb8959de725fc2b44c754b673fdf34c9a7f9d4a25c35a7bf1" +dependencies = [ + "ahash", + "solana-epoch-schedule", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", + "solana-svm-feature-set", +] + +[[package]] +name = "agave-precompiles" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d60d73657792af7f2464e9181d13c3979e94bb09841d9ffa014eef4ef0492b77" +dependencies = [ + "agave-feature-set", + "bincode", + "digest 0.10.7", + "ed25519-dalek", + "libsecp256k1", + "openssl", + "sha3", + "solana-ed25519-program", + "solana-message", + "solana-precompile-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "agave-reserved-account-keys" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8289c8a8a2ef5aa10ce49a070f360f4e035ee3410b8d8f3580fb39d8cf042581" +dependencies = [ + "agave-feature-set", + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.4", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned-sized" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48a526ec4434d531d488af59fe866f36b310fe8906691c75dffa664450a3800a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "anchor-attribute-access-control" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f70fd141a4d18adf11253026b32504f885447048c7494faf5fa83b01af9c0cf" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-account" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715a261c57c7679581e06f07a74fa2af874ac30f86bd8ea07cca4a7e5388a064" +dependencies = [ + "anchor-syn", + "bs58", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-constant" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730d6df8ae120321c5c25e0779e61789e4b70dc8297102248902022f286102e4" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-error" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27e6e449cc3a37b2880b74dcafb8e5a17b954c0e58e376432d7adc646fb333ef" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-event" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7710e4c54adf485affcd9be9adec5ef8846d9c71d7f31e16ba86ff9fc1dd49f" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-program" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ecfd49b2aeadeb32f35262230db402abed76ce87e27562b34f61318b2ec83c" +dependencies = [ + "anchor-lang-idl", + "anchor-syn", + "anyhow", + "bs58", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde_json", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-accounts" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be89d160793a88495af462a7010b3978e48e30a630c91de47ce2c1d3cb7a6149" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-serde" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abc6ee78acb7bfe0c2dd2abc677aaa4789c0281a0c0ef01dbf6fe85e0fd9e6e4" +dependencies = [ + "anchor-syn", + "borsh-derive-internal", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-space" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "134a01c0703f6fd355a0e472c033f6f3e41fac1ef6e370b20c50f4c8d022cea7" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-lang" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6bab117055905e930f762c196e08f861f8dfe7241b92cee46677a3b15561a0a" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e8599d21995f68e296265aa5ab0c3cef582fd58afec014d01bd0bce18a4418" +dependencies = [ + "anchor-lang-idl-spec", + "anyhow", + "heck 0.3.3", + "regex", + "serde", + "serde_json", + "sha2 0.10.9", +] + +[[package]] +name = "anchor-lang-idl-spec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" +dependencies = [ + "anyhow", + "serde", +] + +[[package]] +name = "anchor-syn" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dc7a6d90cc643df0ed2744862cdf180587d1e5d28936538c18fc8908489ed67" +dependencies = [ + "anyhow", + "bs58", + "cargo_toml", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.9", + "syn 1.0.109", + "thiserror 1.0.69", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "ark-bn254" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +dependencies = [ + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff 0.4.2", + "ark-poly 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe 0.6.0", + "fnv", + "hashbrown 0.15.2", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe 0.6.0", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.114", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe 0.6.0", + "fnv", + "hashbrown 0.15.2", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive 0.4.2", + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", + "rayon", +] + +[[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 = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "async-compression" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" +dependencies = [ + "compression-codecs", + "compression-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[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 = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +dependencies = [ + "serde_core", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake3" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures", + "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.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +dependencies = [ + "borsh-derive 1.6.0", + "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.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +dependencies = [ + "once_cell", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[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 = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[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.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" + +[[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 = "bytecount" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[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.23", +] + +[[package]] +name = "cc" +version = "1.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cfg_eval" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "chrono" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[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 = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "compression-codecs" +version = "0.4.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" +dependencies = [ + "brotli", + "compression-core", + "flate2", + "memchr", +] + +[[package]] +name = "compression-core" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + +[[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.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[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 = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[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.114", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.114", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derivation-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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 = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "eager" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek 3.2.0", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek-bip32" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" +dependencies = [ + "derivation-path", + "ed25519-dalek", + "hmac 0.12.1", + "sha2 0.10.9", +] + +[[package]] +name = "educe" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" +dependencies = [ + "enum-ordinalize 3.1.15", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize 4.3.2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-iterator" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "enum-ordinalize" +version = "3.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[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 = "find-msvc-tools" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" + +[[package]] +name = "five8" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_const" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" + +[[package]] +name = "flate2" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[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 = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "groth16-solana" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a6d1ffb18dbf5cfc60b11bd7da88474c672870247c1e5b498619bcb6ba3d8f5" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "num-bigint 0.4.6", + "solana-bn254", + "thiserror 1.0.69", +] + +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.13.0", + "slab", + "tokio", + "tokio-util 0.7.18", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.4.0", + "indexmap 2.13.0", + "slab", + "tokio", + "tokio-util 0.7.18", + "tracing", +] + +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[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" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[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 = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.4.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.4.0", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.5.10", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2 0.4.13", + "http 1.4.0", + "http-body 1.0.1", + "httparse", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper 0.14.32", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http 1.4.0", + "hyper 1.8.1", + "hyper-util", + "rustls 0.23.36", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.4", + "tower-service", + "webpki-roots 1.0.5", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper 0.14.32", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.8.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "hyper 1.8.1", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.6.2", + "system-configuration 0.6.1", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width", + "web-time", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jsonrpc-core" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" +dependencies = [ + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "kaigan" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ba15de5aeb137f0f65aa3bf82187647f1285abfe5b20c80c2c37f7007ad519a" +dependencies = [ + "borsh 0.10.4", + "serde", +] + +[[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.180" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" + +[[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", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "typenum", +] + +[[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 = "light-account-checks" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f20b8640212dd450e18d452a247e28d8ba6fdce3c713fd8b69f1e95874d1b7ab" +dependencies = [ + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sysvar", + "thiserror 2.0.18", +] + +[[package]] +name = "light-array-map" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bdd13b18028ac9d80d0a987551c0dad7fe81be8140e87cc9d568b80f3728203" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "light-batched-merkle-tree" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e838c523b49371097f948cd5662bd9a89d9dca037fb61fd38001e99f485702" +dependencies = [ + "aligned-sized", + "borsh 0.10.4", + "light-account-checks", + "light-bloom-filter", + "light-compressed-account", + "light-hasher", + "light-macros", + "light-merkle-tree-metadata", + "light-verifier", + "light-zero-copy", + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sysvar", + "thiserror 2.0.18", + "zerocopy", +] + +[[package]] +name = "light-bloom-filter" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b8cf734ccf5fbc1f5fed8e5308b57ebde6774d9304c167bcb0de2854412d8" +dependencies = [ + "bitvec", + "num-bigint 0.4.6", + "solana-nostd-keccak", + "solana-program-error", + "thiserror 2.0.18", +] + +[[package]] +name = "light-bounded-vec" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58cfa375d028164719e3ffef93d2e5c27855cc8a5bb5bf257b868d17c12a3e66" +dependencies = [ + "bytemuck", + "memoffset", + "solana-program-error", + "thiserror 1.0.69", +] + +[[package]] +name = "light-client" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33203f596d48d28d1cb67dee5762b151e0073207a5e828c63ec68f9efb9a5ee8" +dependencies = [ + "anchor-lang", + "async-trait", + "base64 0.13.1", + "borsh 0.10.4", + "bs58", + "futures", + "lazy_static", + "light-compressed-account", + "light-compressible", + "light-concurrent-merkle-tree", + "light-event", + "light-hasher", + "light-indexed-merkle-tree", + "light-merkle-tree-metadata", + "light-prover-client", + "light-sdk", + "light-token", + "light-token-interface", + "litesvm", + "num-bigint 0.4.6", + "photon-api", + "rand 0.8.5", + "smallvec", + "solana-account", + "solana-account-decoder-client-types", + "solana-address-lookup-table-interface", + "solana-banks-client", + "solana-clock", + "solana-commitment-config", + "solana-compute-budget-interface", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-program-error", + "solana-pubkey", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-signature", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "spl-pod", + "spl-token-2022-interface", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "light-compressed-account" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c3537bbad9df133ca97fc191b164bba93dba1de4da01a92d979ef63f8ce106" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-hasher", + "light-macros", + "light-poseidon 0.3.0", + "light-program-profiler", + "light-zero-copy", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "thiserror 2.0.18", + "tinyvec", + "zerocopy", +] + +[[package]] +name = "light-compressible" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00d1dc14271907009f4ca23ae99c49279f7d2acc5a83f0f8d7362834b37e2e16" +dependencies = [ + "aligned-sized", + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-account-checks", + "light-compressed-account", + "light-hasher", + "light-macros", + "light-program-profiler", + "light-zero-copy", + "pinocchio-pubkey", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sysvar", + "thiserror 2.0.18", + "zerocopy", +] + +[[package]] +name = "light-concurrent-merkle-tree" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db96f47253a0907aaa46dac15cecb27b5510130e48da0b36690dcd2e99a6d558" +dependencies = [ + "borsh 0.10.4", + "light-bounded-vec", + "light-hasher", + "memoffset", + "solana-program-error", + "thiserror 2.0.18", +] + +[[package]] +name = "light-event" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4bae725ee1d4d944d442ac0bfdf2031b1b2379c04c7e39c475277aaaea08fb1" +dependencies = [ + "borsh 0.10.4", + "light-compressed-account", + "light-hasher", + "light-zero-copy", + "thiserror 2.0.18", +] + +[[package]] +name = "light-hasher" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c822662e6e109bac0e132a43fd52a4ef684811245a794e048cf9cda001e934c8" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "borsh 0.10.4", + "light-poseidon 0.3.0", + "num-bigint 0.4.6", + "sha2 0.10.9", + "sha3", + "solana-program-error", + "thiserror 2.0.18", + "tinyvec", +] + +[[package]] +name = "light-indexed-array" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f14f984030d86b6f07bd8f5ae04e2c40fcd0c3bdfcc7a291fff1ed59c9e6554" +dependencies = [ + "light-hasher", + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.18", +] + +[[package]] +name = "light-indexed-merkle-tree" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0824755289075f28de2820fc7d4ec4e6b9e99d404e033c07338b91cce8c71fb8" +dependencies = [ + "light-bounded-vec", + "light-concurrent-merkle-tree", + "light-hasher", + "light-merkle-tree-reference", + "num-bigint 0.4.6", + "num-traits", + "solana-program-error", + "thiserror 2.0.18", +] + +[[package]] +name = "light-instruction-decoder" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f4bd98e842f21b754ec28020a56de37cb0b1089952ef24340d21c2d5afd5c5" +dependencies = [ + "borsh 0.10.4", + "bs58", + "light-compressed-account", + "light-instruction-decoder-derive", + "light-sdk-types", + "light-token-interface", + "serde", + "solana-instruction", + "solana-pubkey", + "solana-signature", + "tabled", +] + +[[package]] +name = "light-instruction-decoder-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2035d04a0a1590da05634efcac149a2ac852565e28c9a55bd07a6620c0e90bff" +dependencies = [ + "bs58", + "darling", + "heck 0.5.0", + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.114", +] + +[[package]] +name = "light-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "179ac51cadc1d0ca047b4d6265a7cc245ca3affc16a20a2749585aa6464d39c2" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "solana-pubkey", + "syn 2.0.114", +] + +[[package]] +name = "light-merkle-tree-metadata" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c2e63e8345dcfb80efac69136fdcc6c36a12354675aca6e3daf13ec40422d1" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-compressed-account", + "solana-msg", + "solana-program-error", + "solana-sysvar", + "thiserror 2.0.18", + "zerocopy", +] + +[[package]] +name = "light-merkle-tree-reference" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8d480f62ca32b38a6231bbc5310d693f91d6b5bdcc18bb13c2d9aab7a1c90e8" +dependencies = [ + "light-hasher", + "light-indexed-array", + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.18", +] + +[[package]] +name = "light-poseidon" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" +dependencies = [ + "ark-bn254 0.4.0", + "ark-ff 0.4.2", + "num-bigint 0.4.6", + "thiserror 1.0.69", +] + +[[package]] +name = "light-poseidon" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3d87542063daaccbfecd78b60f988079b6ec4e089249658b9455075c78d42" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "num-bigint 0.4.6", + "thiserror 1.0.69", +] + +[[package]] +name = "light-profiler-macro" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a8be18fe4de58a6f754caa74a3fbc6d8a758a26f1f3c24d5b0f5b55df5f5408" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "light-program-profiler" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1d345871581aebd8825868a3f08410290aa1cdddcb189ca7f7e588f61d79fcf" +dependencies = [ + "light-profiler-macro", +] + +[[package]] +name = "light-program-test" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e85916a9da34a44971e1a30badaf04cb75213fbfa9f61a139ea6ebd0f021bdde" +dependencies = [ + "anchor-lang", + "async-trait", + "base64 0.13.1", + "borsh 0.10.4", + "bs58", + "bytemuck", + "chrono", + "light-client", + "light-compressed-account", + "light-compressible", + "light-event", + "light-hasher", + "light-indexed-array", + "light-indexed-merkle-tree", + "light-instruction-decoder", + "light-merkle-tree-metadata", + "light-merkle-tree-reference", + "light-prover-client", + "light-sdk", + "light-sdk-types", + "light-token", + "light-token-interface", + "light-zero-copy", + "litesvm", + "log", + "num-bigint 0.4.6", + "num-traits", + "photon-api", + "rand 0.8.5", + "reqwest 0.12.28", + "serde", + "serde_json", + "solana-account", + "solana-banks-client", + "solana-compute-budget", + "solana-instruction", + "solana-pubkey", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction", + "solana-transaction-status", + "solana-transaction-status-client-types", + "spl-token-2022 7.0.0", + "tabled", + "tokio", +] + +[[package]] +name = "light-prover-client" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd2195f4573628a8aaca37504cde1b1903b8ed20e2706acbad875b7d41acbeab" +dependencies = [ + "ark-bn254 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "light-compressed-account", + "light-hasher", + "light-indexed-array", + "light-sparse-merkle-tree", + "num-bigint 0.4.6", + "num-traits", + "reqwest 0.11.27", + "serde", + "serde_json", + "solana-bn254", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "light-sdk" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f523c64a6fcdafe6df81d647560770529896f2707be8ffcf048d909b7e2b30" +dependencies = [ + "anchor-lang", + "bincode", + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account", + "light-compressible", + "light-hasher", + "light-macros", + "light-sdk-macros", + "light-sdk-types", + "light-zero-copy", + "num-bigint 0.4.6", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-instruction", + "solana-loader-v3-interface", + "solana-msg", + "solana-program", + "solana-program-error", + "solana-pubkey", + "solana-system-interface", + "solana-sysvar", + "thiserror 2.0.18", +] + +[[package]] +name = "light-sdk-macros" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d12bb13b84df21a4871dc0837aafc0b48464d3e9b17e2773c0719b6cc724c5" +dependencies = [ + "darling", + "light-hasher", + "light-sdk-types", + "proc-macro2", + "quote", + "solana-pubkey", + "syn 2.0.114", +] + +[[package]] +name = "light-sdk-types" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8153b27d057ded7b2b6bbd78c643e3f20bd9a9718ca1a8d4183169ccd812c3" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account", + "light-hasher", + "light-macros", + "solana-msg", + "thiserror 2.0.18", +] + +[[package]] +name = "light-sparse-merkle-tree" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4251e79b6c63f4946572dcfd7623680ad0f9e0efe1a761a944733333c5645063" +dependencies = [ + "light-hasher", + "light-indexed-array", + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.18", +] + +[[package]] +name = "light-token" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fd2e8ca6d7d70c77658010e1ae6ed6d4fe23e29054964b053f51e5c4676e49" +dependencies = [ + "anchor-lang", + "arrayvec", + "borsh 0.10.4", + "light-account-checks", + "light-batched-merkle-tree", + "light-compressed-account", + "light-compressible", + "light-macros", + "light-program-profiler", + "light-sdk", + "light-sdk-macros", + "light-sdk-types", + "light-token-interface", + "light-token-types", + "light-zero-copy", + "solana-account-info", + "solana-cpi", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "spl-pod", + "thiserror 2.0.18", +] + +[[package]] +name = "light-token-anchor-create-ata" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-compressible", + "light-program-test", + "light-sdk", + "light-sdk-macros", + "light-sdk-types", + "light-token", + "light-token-interface", + "light-token-types", + "solana-account-info", + "solana-instruction", + "solana-keypair", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk", + "solana-signer", + "tokio", +] + +[[package]] +name = "light-token-anchor-create-mint" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-compressible", + "light-program-test", + "light-sdk", + "light-sdk-macros", + "light-sdk-types", + "light-token", + "light-token-interface", + "light-token-types", + "solana-account-info", + "solana-instruction", + "solana-keypair", + "solana-msg", + "solana-program", + "solana-program-error", + "solana-pubkey", + "solana-sdk", + "solana-signer", + "tokio", +] + +[[package]] +name = "light-token-anchor-create-token-account" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-compressible", + "light-program-test", + "light-sdk", + "light-sdk-macros", + "light-sdk-types", + "light-token", + "light-token-interface", + "light-token-types", + "solana-account-info", + "solana-instruction", + "solana-keypair", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk", + "solana-signer", + "tokio", +] + +[[package]] +name = "light-token-interface" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46decebc2a13ec984e2ba7f1e691c0d46b9061875c6bdd12636b7c100a60e6c" +dependencies = [ + "aligned-sized", + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-array-map", + "light-compressed-account", + "light-compressible", + "light-hasher", + "light-macros", + "light-program-profiler", + "light-zero-copy", + "pinocchio", + "pinocchio-pubkey", + "solana-account-info", + "solana-pubkey", + "spl-pod", + "spl-token-2022 7.0.0", + "thiserror 2.0.18", + "tinyvec", + "zerocopy", +] + +[[package]] +name = "light-token-types" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "411481fe2e04b1241235c2572480c153c5669507e227f5e3327057b0d2ba5734" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account", + "light-macros", + "light-sdk-types", + "solana-msg", + "thiserror 2.0.18", +] + +[[package]] +name = "light-verifier" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecba4c14ac08b078a9d84033d628b12bb2577141f405140d506bacd392a830bc" +dependencies = [ + "groth16-solana", + "light-compressed-account", + "thiserror 2.0.18", +] + +[[package]] +name = "light-zero-copy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5621fb515e14af46148699c0b65334aabe230a1d2cbd06736ccc7a408c8a4af" +dependencies = [ + "light-zero-copy-derive", + "solana-program-error", + "zerocopy", +] + +[[package]] +name = "light-zero-copy-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41c46425e5c7ab5203ff5c86ae2615b169cca55f9283f5f60f5dd74143be6934" +dependencies = [ + "lazy_static", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "litesvm" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23bca37ac374948b348e29c74b324dc36f18bbbd1ccf80e2046d967521cbd143" +dependencies = [ + "agave-feature-set", + "agave-precompiles", + "agave-reserved-account-keys", + "ansi_term", + "bincode", + "indexmap 2.13.0", + "itertools 0.14.0", + "log", + "solana-account", + "solana-address-lookup-table-interface", + "solana-bpf-loader-program", + "solana-builtins", + "solana-clock", + "solana-compute-budget", + "solana-compute-budget-instruction", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee", + "solana-fee-structure", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", + "solana-keypair", + "solana-last-restart-slot", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-log-collector", + "solana-message", + "solana-native-token 3.0.0", + "solana-nonce", + "solana-nonce-account", + "solana-precompile-error", + "solana-program-error", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sha256-hasher", + "solana-signature", + "solana-signer", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-interface", + "solana-svm-callback", + "solana-svm-transaction", + "solana-system-interface", + "solana-system-program", + "solana-sysvar", + "solana-sysvar-id", + "solana-timings", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "solana-vote-program", + "thiserror 2.0.18", +] + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[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 = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.61.2", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "num" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" +dependencies = [ + "num-bigint 0.2.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[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", + "serde", +] + +[[package]] +name = "num-complex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" + +[[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.114", +] + +[[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-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-bigint 0.2.6", + "num-integer", + "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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-src" +version = "300.5.4+3.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror 1.0.69", +] + +[[package]] +name = "papergrid" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6978128c8b51d8f4080631ceb2302ab51e32cc6e8615f735ee2f83fd269ae3f1" +dependencies = [ + "bytecount", + "fnv", + "unicode-width", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "percentage" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" +dependencies = [ + "num", +] + +[[package]] +name = "photon-api" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e572dba0c255f5b8176f15b9e849330d915a8927804f7f9702d5bbbc70e4a1ad" +dependencies = [ + "reqwest 0.12.28", + "serde", + "serde_derive", + "serde_json", + "serde_with", + "url", + "uuid", +] + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pinocchio" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b971851087bc3699b001954ad02389d50c41405ece3548cbcafc88b3e20017a" + +[[package]] +name = "pinocchio-pubkey" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0225638cadcbebae8932cb7f49cb5da7c15c21beb19f048f05a5ca7d93f065" +dependencies = [ + "five8_const", + "pinocchio", + "sha2-const-stable", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[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 = "portable-atomic" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +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.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit 0.23.10+spec-1.0.0", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +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 = "qualifier_attr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls 0.23.36", + "socket2 0.6.2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash", + "rustls 0.23.36", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.6.2", + "tracing", + "windows-sys 0.60.2", +] + +[[package]] +name = "quote" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[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" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + +[[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_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[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.17", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[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 = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-rustls 0.24.2", + "hyper-tls 0.5.0", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.12", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.24.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.13", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.8.1", + "hyper-rustls 0.27.7", + "hyper-tls 0.6.0", + "hyper-util", + "js-sys", + "log", + "mime", + "mime_guess", + "native-tls", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.36", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.26.4", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 1.0.5", +] + +[[package]] +name = "reqwest-middleware" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" +dependencies = [ + "anyhow", + "async-trait", + "http 1.4.0", + "reqwest 0.12.28", + "serde", + "thiserror 1.0.69", + "tower-service", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.23.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki 0.103.9", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" + +[[package]] +name = "schannel" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.10.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.13.0", + "schemars 0.9.0", + "schemars 1.2.0", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2-const-stable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" + +[[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 = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "solana-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" +dependencies = [ + "bincode", + "serde", + "serde_bytes", + "serde_derive", + "solana-account-info", + "solana-clock", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-sysvar", +] + +[[package]] +name = "solana-account-decoder" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba71c97fa4d85ce4a1e0e79044ad0406c419382be598c800202903a7688ce71a" +dependencies = [ + "Inflector", + "base64 0.22.1", + "bincode", + "bs58", + "bv", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-config-program-client", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-instruction", + "solana-loader-v3-interface", + "solana-nonce", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-interface", + "solana-sysvar", + "solana-vote-interface", + "spl-generic-token", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "thiserror 2.0.18", + "zstd", +] + +[[package]] +name = "solana-account-decoder-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5519e8343325b707f17fbed54fcefb325131b692506d0af9e08a539d15e4f8cf" +dependencies = [ + "base64 0.22.1", + "bs58", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-pubkey", + "zstd", +] + +[[package]] +name = "solana-account-info" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" +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-banks-client" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68548570c38a021c724b5aa0112f45a54bdf7ff1b041a042848e034a95a96994" +dependencies = [ + "borsh 1.6.0", + "futures", + "solana-account", + "solana-banks-interface", + "solana-clock", + "solana-commitment-config", + "solana-hash", + "solana-message", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-signature", + "solana-sysvar", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "tarpc", + "thiserror 2.0.18", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-banks-interface" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6d90edc435bf488ef7abed4dcb1f94fa1970102cbabb25688f58417fd948286" +dependencies = [ + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-commitment-config", + "solana-hash", + "solana-message", + "solana-pubkey", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "tarpc", +] + +[[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 0.4.6", + "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-bn254" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4420f125118732833f36facf96a27e7b78314b2d642ba07fa9ffdacd8d79e243" +dependencies = [ + "ark-bn254 0.4.0", + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "bytemuck", + "solana-define-syscall", + "thiserror 2.0.18", +] + +[[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.6.0", +] + +[[package]] +name = "solana-bpf-loader-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aec57dcd80d0f6879956cad28854a6eebaed6b346ce56908ea01a9f36ab259" +dependencies = [ + "bincode", + "libsecp256k1", + "num-traits", + "qualifier_attr", + "scopeguard", + "solana-account", + "solana-account-info", + "solana-big-mod-exp", + "solana-bincode", + "solana-blake3-hasher", + "solana-bn254", + "solana-clock", + "solana-cpi", + "solana-curve25519", + "solana-hash", + "solana-instruction", + "solana-keccak-hasher", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-log-collector", + "solana-measure", + "solana-packet", + "solana-poseidon", + "solana-program-entrypoint", + "solana-program-runtime", + "solana-pubkey", + "solana-sbpf", + "solana-sdk-ids", + "solana-secp256k1-recover", + "solana-sha256-hasher", + "solana-stable-layout", + "solana-svm-feature-set", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", + "solana-timings", + "solana-transaction-context", + "solana-type-overrides", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-builtins" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d61a31b63b52b0d268cbcd56c76f50314867d7f8e07a0f2c62ee7c9886e07b2" +dependencies = [ + "agave-feature-set", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-hash", + "solana-loader-v4-program", + "solana-program-runtime", + "solana-pubkey", + "solana-sdk-ids", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", + "solana-zk-elgamal-proof-program", + "solana-zk-token-proof-program", +] + +[[package]] +name = "solana-builtins-default-costs" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ca69a299a6c969b18ea381a02b40c9e4dda04b2af0d15a007c1184c82163bbb" +dependencies = [ + "agave-feature-set", + "ahash", + "log", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-loader-v4-program", + "solana-pubkey", + "solana-sdk-ids", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", +] + +[[package]] +name = "solana-client-traits" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" +dependencies = [ + "solana-account", + "solana-commitment-config", + "solana-epoch-info", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-pubkey", + "solana-signature", + "solana-signer", + "solana-system-interface", + "solana-transaction", + "solana-transaction-error", +] + +[[package]] +name = "solana-clock" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-cluster-type" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" +dependencies = [ + "serde", + "serde_derive", + "solana-hash", +] + +[[package]] +name = "solana-commitment-config" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-compute-budget" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f4fc63bc2276a1618ca0bfc609da7448534ecb43a1cb387cdf9eaa2dc7bc272" +dependencies = [ + "solana-fee-structure", + "solana-program-runtime", +] + +[[package]] +name = "solana-compute-budget-instruction" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "503d94430f6d3c5ac1e1fa6a342c1c714d5b03c800999e7b6cf235298f0b5341" +dependencies = [ + "agave-feature-set", + "log", + "solana-borsh", + "solana-builtins-default-costs", + "solana-compute-budget", + "solana-compute-budget-interface", + "solana-instruction", + "solana-packet", + "solana-pubkey", + "solana-sdk-ids", + "solana-svm-transaction", + "solana-transaction-error", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-compute-budget-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8432d2c4c22d0499aa06d62e4f7e333f81777b3d7c96050ae9e5cb71a8c3aee4" +dependencies = [ + "borsh 1.6.0", + "serde", + "serde_derive", + "solana-instruction", + "solana-sdk-ids", +] + +[[package]] +name = "solana-compute-budget-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "072b02beed1862c6b7b7a8a699379594c4470a9371c711856a0a3c266dcf57e5" +dependencies = [ + "solana-program-runtime", +] + +[[package]] +name = "solana-config-program-client" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53aceac36f105fd4922e29b4f0c1f785b69d7b3e7e387e384b8985c8e0c3595e" +dependencies = [ + "bincode", + "borsh 0.10.4", + "kaigan", + "serde", + "solana-program", +] + +[[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.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae4261b9a8613d10e77ac831a8fa60b6fa52b9b103df46d641deff9f9812a23" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "solana-define-syscall", + "subtle", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-decode-error" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-define-syscall" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" + +[[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-ed25519-program" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "ed25519-dalek", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", +] + +[[package]] +name = "solana-epoch-info" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" +dependencies = [ + "serde", + "serde_derive", +] + +[[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-rewards-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" +dependencies = [ + "siphasher", + "solana-hash", + "solana-pubkey", +] + +[[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.18", +] + +[[package]] +name = "solana-feature-gate-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" +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-feature-set" +version = "2.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93b93971e289d6425f88e6e3cb6668c4b05df78b3c518c249be55ced8efd6b6d" +dependencies = [ + "ahash", + "lazy_static", + "solana-epoch-schedule", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-fee" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16beda37597046b1edd1cea6fa7caaed033c091f99ec783fe59c82828bc2adb8" +dependencies = [ + "agave-feature-set", + "solana-fee-structure", + "solana-svm-transaction", +] + +[[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-fee-structure" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33adf673581c38e810bf618f745bf31b683a0a4a4377682e6aaac5d9a058dd4e" +dependencies = [ + "serde", + "serde_derive", + "solana-message", + "solana-native-token 2.3.0", +] + +[[package]] +name = "solana-genesis-config" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3725085d47b96d37fef07a29d78d2787fc89a0b9004c66eed7753d1e554989f" +dependencies = [ + "bincode", + "chrono", + "memmap2", + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-cluster-type", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash", + "solana-inflation", + "solana-keypair", + "solana-logger", + "solana-poh-config", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sha256-hasher", + "solana-shred-version", + "solana-signer", + "solana-time-utils", +] + +[[package]] +name = "solana-hard-forks" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-hash" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" +dependencies = [ + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "five8", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-sanitize", + "wasm-bindgen", +] + +[[package]] +name = "solana-inflation" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-instruction" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab5682934bd1f65f8d2c16f21cb532526fcc1a09f796e2cacdb091eee5774ad" +dependencies = [ + "bincode", + "borsh 1.6.0", + "getrandom 0.2.17", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "serde_json", + "solana-define-syscall", + "solana-pubkey", + "wasm-bindgen", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" +dependencies = [ + "bitflags 2.10.0", + "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-keypair" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd3f04aa1a05c535e93e121a95f66e7dcccf57e007282e8255535d24bf1e98bb" +dependencies = [ + "ed25519-dalek", + "ed25519-dalek-bip32", + "five8", + "rand 0.7.3", + "solana-derivation-path", + "solana-pubkey", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "wasm-bindgen", +] + +[[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 = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" +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-loader-v4-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ab01855d851fa2fb6034b0d48de33d77d5c5f5fb4b0353d8e4a934cc03d48a" +dependencies = [ + "log", + "qualifier_attr", + "solana-account", + "solana-bincode", + "solana-bpf-loader-program", + "solana-instruction", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-log-collector", + "solana-measure", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-sbpf", + "solana-sdk-ids", + "solana-transaction-context", + "solana-type-overrides", +] + +[[package]] +name = "solana-log-collector" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d945b1cf5bf7cbd6f5b78795beda7376370c827640df43bb2a1c17b492dc106" +dependencies = [ + "log", +] + +[[package]] +name = "solana-logger" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8e777ec1afd733939b532a42492d888ec7c88d8b4127a5d867eb45c6eb5cd5" +dependencies = [ + "env_logger", + "lazy_static", + "libc", + "log", + "signal-hook", +] + +[[package]] +name = "solana-measure" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11dcd67cd2ae6065e494b64e861e0498d046d95a61cbbf1ae3d58be1ea0f42ed" + +[[package]] +name = "solana-message" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" +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-metrics" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0375159d8460f423d39e5103dcff6e07796a5ec1850ee1fcfacfd2482a8f34b5" +dependencies = [ + "crossbeam-channel", + "gethostname", + "log", + "reqwest 0.12.28", + "solana-cluster-type", + "solana-sha256-hasher", + "solana-time-utils", + "thiserror 2.0.18", +] + +[[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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" + +[[package]] +name = "solana-native-token" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" + +[[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-nonce-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" +dependencies = [ + "solana-account", + "solana-hash", + "solana-nonce", + "solana-sdk-ids", +] + +[[package]] +name = "solana-nostd-keccak" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8ced70920435b1baa58f76e6f84bbc1110ddd1d6161ec76b6d731ae8431e9c4" +dependencies = [ + "sha3", +] + +[[package]] +name = "solana-offchain-message" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" +dependencies = [ + "num_enum", + "solana-hash", + "solana-packet", + "solana-pubkey", + "solana-sanitize", + "solana-sha256-hasher", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-packet" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "004f2d2daf407b3ec1a1ca5ec34b3ccdfd6866dd2d3c7d0715004a96e4b6d127" +dependencies = [ + "bincode", + "bitflags 2.10.0", + "cfg_eval", + "serde", + "serde_derive", + "serde_with", +] + +[[package]] +name = "solana-poh-config" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-poseidon" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbac4eb90016eeb1d37fa36e592d3a64421510c49666f81020736611c319faff" +dependencies = [ + "ark-bn254 0.4.0", + "light-poseidon 0.2.0", + "solana-define-syscall", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-precompile-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d87b2c1f5de77dfe2b175ee8dd318d196aaca4d0f66f02842f80c852811f9f8" +dependencies = [ + "num-traits", + "solana-decode-error", +] + +[[package]] +name = "solana-precompiles" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36e92768a57c652edb0f5d1b30a7d0bc64192139c517967c18600debe9ae3832" +dependencies = [ + "lazy_static", + "solana-ed25519-program", + "solana-feature-set", + "solana-message", + "solana-precompile-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "solana-presigner" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" +dependencies = [ + "solana-pubkey", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-program" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" +dependencies = [ + "bincode", + "blake3", + "borsh 0.10.4", + "borsh 1.6.0", + "bs58", + "bytemuck", + "console_error_panic_hook", + "console_log", + "getrandom 0.2.17", + "lazy_static", + "log", + "memoffset", + "num-bigint 0.4.6", + "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 2.3.0", + "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.18", + "wasm-bindgen", +] + +[[package]] +name = "solana-program-entrypoint" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" +dependencies = [ + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", +] + +[[package]] +name = "solana-program-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" +dependencies = [ + "borsh 1.6.0", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-pubkey", +] + +[[package]] +name = "solana-program-memory" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" +dependencies = [ + "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-program-runtime" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5653001e07b657c9de6f0417cf9add1cf4325903732c480d415655e10cc86704" +dependencies = [ + "base64 0.22.1", + "bincode", + "enum-iterator", + "itertools 0.12.1", + "log", + "percentage", + "rand 0.8.5", + "serde", + "solana-account", + "solana-clock", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-structure", + "solana-hash", + "solana-instruction", + "solana-last-restart-slot", + "solana-log-collector", + "solana-measure", + "solana-metrics", + "solana-program-entrypoint", + "solana-pubkey", + "solana-rent", + "solana-sbpf", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-stable-layout", + "solana-svm-callback", + "solana-svm-feature-set", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", + "solana-timings", + "solana-transaction-context", + "solana-type-overrides", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-pubkey" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" +dependencies = [ + "borsh 0.10.4", + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "five8", + "five8_const", + "getrandom 0.2.17", + "js-sys", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-decode-error", + "solana-define-syscall", + "solana-sanitize", + "solana-sha256-hasher", + "wasm-bindgen", +] + +[[package]] +name = "solana-quic-definitions" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf0d4d5b049eb1d0c35f7b18f305a27c8986fc5c0c9b383e97adaa35334379e" +dependencies = [ + "solana-keypair", +] + +[[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-rent-collector" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "127e6dfa51e8c8ae3aa646d8b2672bc4ac901972a338a9e1cd249e030564fb9d" +dependencies = [ + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-epoch-schedule", + "solana-genesis-config", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", +] + +[[package]] +name = "solana-rent-debits" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" +dependencies = [ + "solana-pubkey", + "solana-reward-info", +] + +[[package]] +name = "solana-reserved-account-keys" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4b22ea19ca2a3f28af7cd047c914abf833486bf7a7c4a10fc652fff09b385b1" +dependencies = [ + "lazy_static", + "solana-feature-set", + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "solana-reward-info" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-rpc-client" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8d3161ac0918178e674c1f7f1bfac40de3e7ed0383bd65747d63113c156eaeb" +dependencies = [ + "async-trait", + "base64 0.22.1", + "bincode", + "bs58", + "futures", + "indicatif", + "log", + "reqwest 0.12.28", + "reqwest-middleware", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-clock", + "solana-commitment-config", + "solana-epoch-info", + "solana-epoch-schedule", + "solana-feature-gate-interface", + "solana-hash", + "solana-instruction", + "solana-message", + "solana-pubkey", + "solana-rpc-client-api", + "solana-signature", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-version", + "solana-vote-interface", + "tokio", +] + +[[package]] +name = "solana-rpc-client-api" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dbc138685c79d88a766a8fd825057a74ea7a21e1dd7f8de275ada899540fff7" +dependencies = [ + "anyhow", + "jsonrpc-core", + "reqwest 0.12.28", + "reqwest-middleware", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder-client-types", + "solana-clock", + "solana-rpc-client-types", + "solana-signer", + "solana-transaction-error", + "solana-transaction-status-client-types", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-rpc-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea428a81729255d895ea47fba9b30fd4dacbfe571a080448121bd0592751676" +dependencies = [ + "base64 0.22.1", + "bs58", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-clock", + "solana-commitment-config", + "solana-fee-calculator", + "solana-inflation", + "solana-pubkey", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-version", + "spl-generic-token", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-sanitize" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" + +[[package]] +name = "solana-sbpf" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "474a2d95dc819898ded08d24f29642d02189d3e1497bbb442a92a3997b7eb55f" +dependencies = [ + "byteorder", + "combine", + "hash32", + "libc", + "log", + "rand 0.8.5", + "rustc-demangle", + "thiserror 2.0.18", + "winapi", +] + +[[package]] +name = "solana-sdk" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc0e4a7635b902791c44b6581bfb82f3ada32c5bc0929a64f39fe4bb384c86a" +dependencies = [ + "bincode", + "bs58", + "getrandom 0.1.16", + "js-sys", + "serde", + "serde_json", + "solana-account", + "solana-bn254", + "solana-client-traits", + "solana-cluster-type", + "solana-commitment-config", + "solana-compute-budget-interface", + "solana-decode-error", + "solana-derivation-path", + "solana-ed25519-program", + "solana-epoch-info", + "solana-epoch-rewards-hasher", + "solana-feature-set", + "solana-fee-structure", + "solana-genesis-config", + "solana-hard-forks", + "solana-inflation", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-native-token 2.3.0", + "solana-nonce-account", + "solana-offchain-message", + "solana-packet", + "solana-poh-config", + "solana-precompile-error", + "solana-precompiles", + "solana-presigner", + "solana-program", + "solana-program-memory", + "solana-pubkey", + "solana-quic-definitions", + "solana-rent-collector", + "solana-rent-debits", + "solana-reserved-account-keys", + "solana-reward-info", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-secp256k1-program", + "solana-secp256k1-recover", + "solana-secp256r1-program", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-serde", + "solana-serde-varint", + "solana-short-vec", + "solana-shred-version", + "solana-signature", + "solana-signer", + "solana-system-transaction", + "solana-time-utils", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "solana-validator-exit", + "thiserror 2.0.18", + "wasm-bindgen", +] + +[[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.114", +] + +[[package]] +name = "solana-secp256k1-program" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f19833e4bc21558fe9ec61f239553abe7d05224347b57d65c2218aeeb82d6149" +dependencies = [ + "bincode", + "digest 0.10.7", + "libsecp256k1", + "serde", + "serde_derive", + "sha3", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", + "solana-signature", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" +dependencies = [ + "borsh 1.6.0", + "libsecp256k1", + "solana-define-syscall", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-secp256r1-program" +version = "2.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce0ae46da3071a900f02d367d99b2f3058fe2e90c5062ac50c4f20cfedad8f0f" +dependencies = [ + "bytemuck", + "openssl", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "156bb61a96c605fa124e052d630dba2f6fb57e08c7d15b757e1e958b3ed7b3fe" +dependencies = [ + "hashbrown 0.15.2", +] + +[[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 0.12.1", + "pbkdf2", + "sha2 0.10.9", +] + +[[package]] +name = "solana-serde" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serde-varint" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" +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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" +dependencies = [ + "sha2 0.10.9", + "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-shred-version" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" +dependencies = [ + "solana-hard-forks", + "solana-hash", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-signature" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" +dependencies = [ + "ed25519-dalek", + "five8", + "rand 0.8.5", + "serde", + "serde-big-array", + "serde_derive", + "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.6.0", + "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-stake-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "500e9b9d11573f12de91e94f9c4459882cd5ffc692776af49b610d6fcc0b167f" +dependencies = [ + "agave-feature-set", + "bincode", + "log", + "solana-account", + "solana-bincode", + "solana-clock", + "solana-config-program-client", + "solana-genesis-config", + "solana-instruction", + "solana-log-collector", + "solana-native-token 2.3.0", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-stake-interface", + "solana-sysvar", + "solana-transaction-context", + "solana-type-overrides", + "solana-vote-interface", +] + +[[package]] +name = "solana-svm-callback" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cef9f7d5cfb5d375081a6c8ad712a6f0e055a15890081f845acf55d8254a7a2" +dependencies = [ + "solana-account", + "solana-precompile-error", + "solana-pubkey", +] + +[[package]] +name = "solana-svm-feature-set" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f24b836eb4d74ec255217bdbe0f24f64a07adeac31aca61f334f91cd4a3b1d5" + +[[package]] +name = "solana-svm-transaction" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab717b9539375ebb088872c6c87d1d8832d19f30f154ecc530154d23f60a6f0c" +dependencies = [ + "solana-hash", + "solana-message", + "solana-pubkey", + "solana-sdk-ids", + "solana-signature", + "solana-transaction", +] + +[[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-system-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23ca36cef39aea7761be58d4108a56a2e27042fb1e913355fdb142a05fc7eab7" +dependencies = [ + "bincode", + "log", + "serde", + "serde_derive", + "solana-account", + "solana-bincode", + "solana-fee-calculator", + "solana-instruction", + "solana-log-collector", + "solana-nonce", + "solana-nonce-account", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "solana-transaction-context", + "solana-type-overrides", +] + +[[package]] +name = "solana-system-transaction" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" +dependencies = [ + "solana-hash", + "solana-keypair", + "solana-message", + "solana-pubkey", + "solana-signer", + "solana-system-interface", + "solana-transaction", +] + +[[package]] +name = "solana-sysvar" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db" +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-time-utils" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" + +[[package]] +name = "solana-timings" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c49b842dfc53c1bf9007eaa6730296dea93b4fce73f457ce1080af43375c0d6" +dependencies = [ + "eager", + "enum-iterator", + "solana-pubkey", +] + +[[package]] +name = "solana-transaction" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80657d6088f721148f5d889c828ca60c7daeedac9a8679f9ec215e0c42bcbf41" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-bincode", + "solana-feature-set", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-precompiles", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-signature", + "solana-signer", + "solana-system-interface", + "solana-transaction-error", + "wasm-bindgen", +] + +[[package]] +name = "solana-transaction-context" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a312304361987a85b2ef2293920558e6612876a639dd1309daf6d0d59ef2fe" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account", + "solana-instruction", + "solana-instructions-sysvar", + "solana-pubkey", + "solana-rent", + "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 = [ + "serde", + "serde_derive", + "solana-instruction", + "solana-sanitize", +] + +[[package]] +name = "solana-transaction-status" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135f92f4192cc68900c665becf97fc0a6500ae5a67ff347bf2cbc20ecfefa821" +dependencies = [ + "Inflector", + "agave-reserved-account-keys", + "base64 0.22.1", + "bincode", + "borsh 1.6.0", + "bs58", + "log", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-hash", + "solana-instruction", + "solana-loader-v2-interface", + "solana-loader-v3-interface", + "solana-message", + "solana-program-option", + "solana-pubkey", + "solana-reward-info", + "solana-sdk-ids", + "solana-signature", + "solana-stake-interface", + "solana-system-interface", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-vote-interface", + "spl-associated-token-account", + "spl-memo", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-transaction-status-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f1d7c2387c35850848212244d2b225847666cb52d3bd59a5c409d2c300303d" +dependencies = [ + "base64 0.22.1", + "bincode", + "bs58", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder-client-types", + "solana-commitment-config", + "solana-message", + "solana-reward-info", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-type-overrides" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d80c44761eb398a157d809a04840865c347e1831ae3859b6100c0ee457bc1a" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "solana-validator-exit" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" + +[[package]] +name = "solana-version" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3324d46c7f7b7f5d34bf7dc71a2883bdc072c7b28ca81d0b2167ecec4cf8da9f" +dependencies = [ + "agave-feature-set", + "rand 0.8.5", + "semver", + "serde", + "serde_derive", + "solana-sanitize", + "solana-serde-varint", +] + +[[package]] +name = "solana-vote-interface" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3" +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-vote-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "908d0e72c8b83e48762eb3e8c9114497cf4b1d66e506e360c46aba9308e71299" +dependencies = [ + "agave-feature-set", + "bincode", + "log", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "solana-account", + "solana-bincode", + "solana-clock", + "solana-epoch-schedule", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-metrics", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-signer", + "solana-slot-hashes", + "solana-transaction", + "solana-transaction-context", + "solana-vote-interface", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-zk-elgamal-proof-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70cea14481d8efede6b115a2581f27bc7c6fdfba0752c20398456c3ac1245fc4" +dependencies = [ + "agave-feature-set", + "bytemuck", + "num-derive", + "num-traits", + "solana-instruction", + "solana-log-collector", + "solana-program-runtime", + "solana-sdk-ids", + "solana-zk-sdk", +] + +[[package]] +name = "solana-zk-sdk" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b9fc6ec37d16d0dccff708ed1dd6ea9ba61796700c3bb7c3b401973f10f63b" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "itertools 0.12.1", + "js-sys", + "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.18", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "solana-zk-token-proof-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579752ad6ea2a671995f13c763bf28288c3c895cb857a518cc4ebab93c9a8dde" +dependencies = [ + "agave-feature-set", + "bytemuck", + "num-derive", + "num-traits", + "solana-instruction", + "solana-log-collector", + "solana-program-runtime", + "solana-sdk-ids", + "solana-zk-token-sdk", +] + +[[package]] +name = "solana-zk-token-sdk" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5055e5df94abd5badf4f947681c893375bdb6f8f543c05d2a7ab9647a6a9d205" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "itertools 0.12.1", + "merlin", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "serde_json", + "sha3", + "solana-curve25519", + "solana-derivation-path", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "subtle", + "thiserror 2.0.18", + "zeroize", +] + +[[package]] +name = "spl-associated-token-account" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae179d4a26b3c7a20c839898e6aed84cb4477adf108a366c95532f058aea041b" +dependencies = [ + "borsh 1.6.0", + "num-derive", + "num-traits", + "solana-program", + "spl-associated-token-account-client", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "thiserror 2.0.18", +] + +[[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.114", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.114", + "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 0.2.1", +] + +[[package]] +name = "spl-elgamal-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65edfeed09cd4231e595616aa96022214f9c9d2be02dea62c2b30d5695a6833a" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-cpi", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "solana-zk-sdk", + "spl-pod", + "spl-token-confidential-transfer-proof-extraction 0.3.0", +] + +[[package]] +name = "spl-generic-token" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741a62a566d97c58d33f9ed32337ceedd4e35109a686e31b1866c5dfa56abddc" +dependencies = [ + "bytemuck", + "solana-pubkey", +] + +[[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.6.0", + "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.18", +] + +[[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 0.4.1", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-program-error" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" +dependencies = [ + "num-derive", + "num-traits", + "solana-decode-error", + "solana-msg", + "solana-program-error", + "spl-program-error-derive 0.5.0", + "thiserror 2.0.18", +] + +[[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.9", + "syn 2.0.114", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.114", +] + +[[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 0.6.0", + "spl-type-length-value 0.7.0", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" +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 0.7.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.18", +] + +[[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" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sysvar", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-2022" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9048b26b0df0290f929ff91317c83db28b3ef99af2b3493dd35baa146774924c" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-program", + "solana-security-txt", + "solana-zk-sdk", + "spl-elgamal-registry 0.1.1", + "spl-memo", + "spl-pod", + "spl-token 7.0.0", + "spl-token-confidential-transfer-ciphertext-arithmetic 0.2.1", + "spl-token-confidential-transfer-proof-extraction 0.2.1", + "spl-token-confidential-transfer-proof-generation 0.3.0", + "spl-token-group-interface 0.5.0", + "spl-token-metadata-interface 0.6.0", + "spl-transfer-hook-interface 0.9.0", + "spl-type-length-value 0.7.0", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-2022" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f0dfbb079eebaee55e793e92ca5f433744f4b71ee04880bfd6beefba5973e5" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-native-token 2.3.0", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-security-txt", + "solana-system-interface", + "solana-sysvar", + "solana-zk-sdk", + "spl-elgamal-registry 0.2.0", + "spl-memo", + "spl-pod", + "spl-token 8.0.0", + "spl-token-confidential-transfer-ciphertext-arithmetic 0.3.1", + "spl-token-confidential-transfer-proof-extraction 0.3.0", + "spl-token-confidential-transfer-proof-generation 0.4.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "spl-transfer-hook-interface 0.10.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-2022-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62d7ae2ee6b856f8ddcbdc3b3a9f4d2141582bbe150f93e5298ee97e0251fa04" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "spl-token-confidential-transfer-proof-extraction 0.4.1", + "spl-token-confidential-transfer-proof-generation 0.4.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.18", +] + +[[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-ciphertext-arithmetic" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cddd52bfc0f1c677b41493dafa3f2dbbb4b47cf0990f08905429e19dc8289b35" +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.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe2629860ff04c17bafa9ba4bed8850a404ecac81074113e1f840dbd0ebb7bd6" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-curve25519", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512c85bdbbb4cbcc2038849a9e164c958b16541f252b53ea1a3933191c0a4a1a" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-curve25519", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" +dependencies = [ + "curve25519-dalek 4.1.3", + "solana-zk-sdk", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" +dependencies = [ + "curve25519-dalek 4.1.3", + "solana-zk-sdk", + "thiserror 2.0.18", +] + +[[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-group-interface" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.18", +] + +[[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.6.0", + "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 0.7.0", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" +dependencies = [ + "borsh 1.6.0", + "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 0.8.0", + "thiserror 2.0.18", +] + +[[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 0.6.0", + "spl-tlv-account-resolution 0.9.0", + "spl-type-length-value 0.7.0", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-transfer-hook-interface" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" +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 0.7.0", + "spl-tlv-account-resolution 0.10.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.18", +] + +[[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 = "spl-type-length-value" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-account-info", + "solana-decode-error", + "solana-msg", + "solana-program-error", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.18", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[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.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.10.0", + "core-foundation", + "system-configuration-sys 0.6.0", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tabled" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e39a2ee1fbcd360805a771e1b300f78cc88fec7b8d3e2f71cd37bbf23e725c7d" +dependencies = [ + "papergrid", + "tabled_derive", + "testing_table", +] + +[[package]] +name = "tabled_derive" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea5d1b13ca6cff1f9231ffd62f15eefd72543dab5e468735f1a456728a02846" +dependencies = [ + "heck 0.5.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tarpc" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" +dependencies = [ + "anyhow", + "fnv", + "futures", + "humantime", + "opentelemetry", + "pin-project", + "rand 0.8.5", + "serde", + "static_assertions", + "tarpc-plugins", + "thiserror 1.0.69", + "tokio", + "tokio-serde", + "tokio-util 0.6.10", + "tracing", + "tracing-opentelemetry", +] + +[[package]] +name = "tarpc-plugins" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tempfile" +version = "3.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" +dependencies = [ + "fastrand", + "getrandom 0.3.4", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "testing_table" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f8daae29995a24f65619e19d8d31dea5b389f3d853d8bf297bbf607cd0014cc" +dependencies = [ + "unicode-width", +] + +[[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.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[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.114", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +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 = "tokio" +version = "1.49.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls 0.23.36", + "tokio", +] + +[[package]] +name = "tokio-serde" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" +dependencies = [ + "bincode", + "bytes", + "educe 0.4.23", + "futures-core", + "futures-sink", + "pin-project", + "serde", + "serde_json", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "slab", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[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.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap 2.13.0", + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.10+spec-1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +dependencies = [ + "indexmap 2.13.0", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "async-compression", + "bitflags 2.10.0", + "bytes", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "iri-string", + "pin-project-lite", + "tokio", + "tokio-util 0.7.18", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[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 = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[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 = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" +dependencies = [ + "getrandom 0.3.4", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[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.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +dependencies = [ + "cfg-if", + "futures-util", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.114", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "webpki-roots" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[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_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[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_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zmij" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439" + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/program-examples/anchor/Cargo.toml b/program-examples/anchor/macros/Cargo.toml similarity index 80% rename from program-examples/anchor/Cargo.toml rename to program-examples/anchor/macros/Cargo.toml index 0df4e5b..bc00ccb 100644 --- a/program-examples/anchor/Cargo.toml +++ b/program-examples/anchor/macros/Cargo.toml @@ -1,15 +1,7 @@ [workspace] members = [ - "programs/mint-to", - "programs/transfer-interface", - "programs/close", - "programs/approve", - "programs/revoke", - "programs/burn", - "programs/freeze", - "programs/thaw", - "programs/create-mint", "programs/create-ata", + "programs/create-mint", "programs/create-token-account", ] resolver = "2" @@ -26,10 +18,7 @@ incremental = false codegen-units = 1 [workspace.dependencies] -# Pin blake3 version for solana-program compatibility blake3 = { version = "=1.8.2", default-features = false } - -# Common dependencies anchor-lang = "0.31.1" borsh = "0.10.4" tokio = "1.43.0" @@ -42,8 +31,6 @@ solana-signer = "2.2" solana-msg = "2.2" solana-program-error = "2.2" solana-account-info = "2.2" - -# Light Protocol dependencies from crates.io light-sdk = { version = "0.19.0", features = ["anchor", "idl-build", "v2", "anchor-discriminator", "cpi-context"] } light-sdk-macros = "0.19.0" light-sdk-types = { version = "0.19.0", features = ["v2", "cpi-context"] } @@ -55,4 +42,3 @@ light-token-interface = "0.3.0" light-program-test = "0.19.0" light-client = { version = "0.19.0", features = ["v2", "anchor"] } light-anchor-spl = { version = "0.31.1", features = ["idl-build"] } - diff --git a/program-examples/anchor/macros/README.md b/program-examples/anchor/macros/README.md new file mode 100644 index 0000000..568ee06 --- /dev/null +++ b/program-examples/anchor/macros/README.md @@ -0,0 +1,66 @@ +# Light Token Anchor Programs (Macro approach) + +Anchor program examples using `#[light_account]` macros for automatic compressed account creation. + +## Programs + +| Program | Description | +|---------|-------------| +| [create-ata](programs/create-ata/src/lib.rs) | Create compressed associated token account | +| [create-mint](programs/create-mint/src/lib.rs) | Create compressed mint with metadata | +| [create-token-account](programs/create-token-account/src/lib.rs) | Create compressed token account (vault pattern) | + +## Pattern + +These programs use Light SDK macros to automatically generate CPI calls: + +```rust +use light_sdk_macros::{derive_light_cpi_signer, light_program}; + +#[light_program] +#[program] +pub mod light_token_anchor_create_ata { + use super::*; + + pub fn create_ata<'info>( + ctx: Context<'_, '_, '_, 'info, CreateAta<'info>>, + params: CreateAtaParams, + ) -> Result<()> { + // Empty body - account creation handled by LightFinalize trait + Ok(()) + } +} + +#[derive(Accounts, LightAccounts)] +pub struct CreateAta<'info> { + #[account(mut)] + pub payer: Signer<'info>, + pub mint: AccountInfo<'info>, + pub owner: AccountInfo<'info>, + #[light_account(init, associated_token::authority = owner, associated_token::mint = mint)] + #[account(mut)] + pub ata: UncheckedAccount<'info>, + // ... other accounts +} +``` + +## How it works + +1. The `#[light_program]` macro generates a `LightFinalize` trait implementation +2. The `#[light_account(init, ...)]` macro marks accounts for automatic creation +3. After the instruction handler returns `Ok(())`, the generated `LightFinalize` implementation runs +4. The `LightFinalize` implementation generates the actual CPI calls to create the accounts + +The empty instruction handler body is intentional - all work happens in the macro-generated epilogue. + +## Build + +```bash +anchor build +``` + +## Test + +```bash +cargo test-sbf +``` diff --git a/program-examples/anchor/programs/create-ata/Cargo.toml b/program-examples/anchor/macros/programs/create-ata/Cargo.toml similarity index 100% rename from program-examples/anchor/programs/create-ata/Cargo.toml rename to program-examples/anchor/macros/programs/create-ata/Cargo.toml diff --git a/program-examples/anchor/programs/create-ata/src/lib.rs b/program-examples/anchor/macros/programs/create-ata/src/lib.rs similarity index 100% rename from program-examples/anchor/programs/create-ata/src/lib.rs rename to program-examples/anchor/macros/programs/create-ata/src/lib.rs diff --git a/program-examples/anchor/programs/create-ata/tests/test.rs b/program-examples/anchor/macros/programs/create-ata/tests/test.rs similarity index 100% rename from program-examples/anchor/programs/create-ata/tests/test.rs rename to program-examples/anchor/macros/programs/create-ata/tests/test.rs diff --git a/program-examples/anchor/programs/create-mint/Cargo.toml b/program-examples/anchor/macros/programs/create-mint/Cargo.toml similarity index 100% rename from program-examples/anchor/programs/create-mint/Cargo.toml rename to program-examples/anchor/macros/programs/create-mint/Cargo.toml diff --git a/program-examples/anchor/programs/create-mint/src/lib.rs b/program-examples/anchor/macros/programs/create-mint/src/lib.rs similarity index 100% rename from program-examples/anchor/programs/create-mint/src/lib.rs rename to program-examples/anchor/macros/programs/create-mint/src/lib.rs diff --git a/program-examples/anchor/programs/create-mint/tests/test.rs b/program-examples/anchor/macros/programs/create-mint/tests/test.rs similarity index 100% rename from program-examples/anchor/programs/create-mint/tests/test.rs rename to program-examples/anchor/macros/programs/create-mint/tests/test.rs diff --git a/program-examples/anchor/programs/create-token-account/Cargo.toml b/program-examples/anchor/macros/programs/create-token-account/Cargo.toml similarity index 100% rename from program-examples/anchor/programs/create-token-account/Cargo.toml rename to program-examples/anchor/macros/programs/create-token-account/Cargo.toml diff --git a/program-examples/anchor/programs/create-token-account/src/lib.rs b/program-examples/anchor/macros/programs/create-token-account/src/lib.rs similarity index 100% rename from program-examples/anchor/programs/create-token-account/src/lib.rs rename to program-examples/anchor/macros/programs/create-token-account/src/lib.rs diff --git a/program-examples/anchor/programs/create-token-account/tests/test.rs b/program-examples/anchor/macros/programs/create-token-account/tests/test.rs similarity index 100% rename from program-examples/anchor/programs/create-token-account/tests/test.rs rename to program-examples/anchor/macros/programs/create-token-account/tests/test.rs diff --git a/program-examples/anchor/sdk/Anchor.toml b/program-examples/anchor/sdk/Anchor.toml new file mode 100644 index 0000000..0d8edef --- /dev/null +++ b/program-examples/anchor/sdk/Anchor.toml @@ -0,0 +1,29 @@ +[toolchain] + +[features] +resolution = true +skip-lint = false + +[programs.devnet] +light_token_anchor_approve = "37XmzKqSG2VD1ZBvzyfbt1HN1mT1bqVAmfzX2ziB3KT1" +light_token_anchor_burn = "2TXVn8AqjfyeJvmFBD3kHJmh6fWkC4HNB5T76BmLKV5c" +light_token_anchor_close = "GXLCuNhnkRVp596eCdbNsZ9ua1ePbKbb344VKS7V3zQQ" +light_token_anchor_create_ata = "35MukgdfpNUbPMhTmEk63ECV8vjgpNVFRH9nP8ovMN58" +light_token_anchor_create_mint = "A1rJEoepgKYWZYZ8KVFpxgeeRGwBrU7xk8S39srjVkUX" +light_token_anchor_create_token_account = "zXK1CnWj4WFfFHCArxxr4sh3Qqx2p3oui8ahqpjArgS" +light_token_anchor_freeze = "JBMzMJX4sqCQfNVbosP2oqP1KZ5ZDWiwYTrupk687qXZ" +light_token_anchor_mint_to = "8bXEVmHLtAVqDLJp1dYWAZ61WQmqQKoTQ8LpPbRoUDCp" +light_token_anchor_revoke = "G3ph4MK5qaSdxYnfxToETg31AHEMMqVhPuMRgBhk38tQ" +light_token_anchor_thaw = "7j94EF5hSkDLf7R26bjrd8Qc6s3oLAQpcKiF3re8JYw9" +light_token_anchor_transfer_checked = "HXmfewpozFdxhM8BayL9v5541gwoGMXTrUoip5KySs2f" +light_token_anchor_transfer_interface = "3rb6sG4jiYNLZC8jo8kLsFHpxr2Ci8e8Hh8UmeCMZmUV" + +[registry] +url = "https://api.apr.dev" + +[provider] +cluster = "devnet" +wallet = "~/.config/solana/id.json" + +[scripts] +test = "cargo test-sbf" diff --git a/program-examples/anchor/Cargo.lock b/program-examples/anchor/sdk/Cargo.lock similarity index 99% rename from program-examples/anchor/Cargo.lock rename to program-examples/anchor/sdk/Cargo.lock index f5b6626..35a54be 100644 --- a/program-examples/anchor/Cargo.lock +++ b/program-examples/anchor/sdk/Cargo.lock @@ -726,15 +726,16 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.5" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" +checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" dependencies = [ "arrayref", "arrayvec", "cc", "cfg-if", "constant_time_eq", + "cpufeatures", "digest 0.10.7", ] @@ -1043,9 +1044,9 @@ dependencies = [ [[package]] name = "constant_time_eq" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "core-foundation" @@ -2060,7 +2061,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.1", + "socket2 0.6.2", "system-configuration 0.6.1", "tokio", "tower-service", @@ -2584,11 +2585,8 @@ dependencies = [ "light-program-profiler", "light-zero-copy", "pinocchio-pubkey", - "solana-msg", - "solana-program-error", "solana-pubkey", "solana-rent", - "solana-sysvar", "thiserror 2.0.18", "zerocopy", ] @@ -3023,22 +3021,11 @@ dependencies = [ "anchor-lang", "borsh 0.10.4", "light-client", - "light-compressible", "light-program-test", "light-sdk", - "light-sdk-macros", - "light-sdk-types", "light-token", "light-token-interface", - "light-token-types", - "solana-account-info", - "solana-instruction", - "solana-keypair", - "solana-msg", - "solana-program-error", - "solana-pubkey", "solana-sdk", - "solana-signer", "tokio", ] @@ -3049,23 +3036,11 @@ dependencies = [ "anchor-lang", "borsh 0.10.4", "light-client", - "light-compressible", "light-program-test", "light-sdk", - "light-sdk-macros", - "light-sdk-types", "light-token", "light-token-interface", - "light-token-types", - "solana-account-info", - "solana-instruction", - "solana-keypair", - "solana-msg", - "solana-program", - "solana-program-error", - "solana-pubkey", "solana-sdk", - "solana-signer", "tokio", ] @@ -3076,22 +3051,11 @@ dependencies = [ "anchor-lang", "borsh 0.10.4", "light-client", - "light-compressible", "light-program-test", "light-sdk", - "light-sdk-macros", - "light-sdk-types", "light-token", "light-token-interface", - "light-token-types", - "solana-account-info", - "solana-instruction", - "solana-keypair", - "solana-msg", - "solana-program-error", - "solana-pubkey", "solana-sdk", - "solana-signer", "tokio", ] @@ -3155,6 +3119,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "light-token-anchor-transfer-checked" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + [[package]] name = "light-token-anchor-transfer-interface" version = "0.1.0" @@ -3483,9 +3462,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" [[package]] name = "num-derive" @@ -3910,7 +3889,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls 0.23.36", - "socket2 0.6.1", + "socket2 0.6.2", "thiserror 2.0.18", "tokio", "tracing", @@ -3947,7 +3926,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.1", + "socket2 0.6.2", "tracing", "windows-sys 0.60.2", ] @@ -4692,9 +4671,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" dependencies = [ "libc", "windows-sys 0.60.2", @@ -7868,9 +7847,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.45" +version = "0.3.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" +checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" dependencies = [ "deranged", "itoa", @@ -7883,15 +7862,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.25" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" +checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4" dependencies = [ "num-conv", "time-core", @@ -7934,7 +7913,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.1", + "socket2 0.6.2", "tokio-macros", "windows-sys 0.61.2", ] @@ -8302,9 +8281,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" dependencies = [ "getrandom 0.3.4", "js-sys", @@ -8951,9 +8930,9 @@ dependencies = [ [[package]] name = "zmij" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65" +checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439" [[package]] name = "zstd" diff --git a/program-examples/anchor/sdk/Cargo.toml b/program-examples/anchor/sdk/Cargo.toml new file mode 100644 index 0000000..eec59b2 --- /dev/null +++ b/program-examples/anchor/sdk/Cargo.toml @@ -0,0 +1,41 @@ +[workspace] +members = [ + "programs/approve", + "programs/burn", + "programs/close", + "programs/create-ata", + "programs/create-mint", + "programs/create-token-account", + "programs/freeze", + "programs/mint-to", + "programs/revoke", + "programs/thaw", + "programs/transfer-interface", + "programs/transfer-checked", +] +resolver = "2" + +[profile.release] +lto = "fat" +codegen-units = 1 +panic = "abort" +overflow-checks = true + +[profile.release.build-override] +opt-level = 3 +incremental = false +codegen-units = 1 + +[workspace.dependencies] +blake3 = { version = "=1.8.2", default-features = false } +anchor-lang = "0.31.1" +borsh = "0.10.4" +tokio = "1.43.0" +solana-sdk = "2.2" +solana-program = "2.2" +light-sdk = { version = "0.19.0", features = ["anchor", "idl-build", "v2", "anchor-discriminator", "cpi-context"] } +light-token = { version = "0.4.0", features = ["anchor"] } +light-token-types = { version = "0.4.0", features = ["anchor"] } +light-token-interface = "0.3.0" +light-program-test = "0.19.0" +light-client = { version = "0.19.0", features = ["v2", "anchor"] } diff --git a/program-examples/anchor/sdk/README.md b/program-examples/anchor/sdk/README.md new file mode 100644 index 0000000..65c55be --- /dev/null +++ b/program-examples/anchor/sdk/README.md @@ -0,0 +1,64 @@ +# Light Token Anchor Programs (SDK approach) + +Anchor program examples using explicit CPI calls to the Light Token Program. + +## Programs + +All 12 programs demonstrating Light Token CPI integration: + +| Program | Description | +|---------|-------------| +| [approve](programs/approve/src/lib.rs) | Approve delegate for token account | +| [burn](programs/burn/src/lib.rs) | Burn tokens from token account | +| [close](programs/close/src/lib.rs) | Close token account and reclaim rent | +| [create-ata](programs/create-ata/src/lib.rs) | Create compressed associated token account | +| [create-mint](programs/create-mint/src/lib.rs) | Create compressed mint | +| [create-token-account](programs/create-token-account/src/lib.rs) | Create compressed token account (vault pattern) | +| [freeze](programs/freeze/src/lib.rs) | Freeze token account | +| [mint-to](programs/mint-to/src/lib.rs) | Mint tokens to destination | +| [revoke](programs/revoke/src/lib.rs) | Revoke delegate from token account | +| [thaw](programs/thaw/src/lib.rs) | Thaw frozen token account | +| [transfer-checked](programs/transfer-checked/src/lib.rs) | Transfer tokens with mint validation | +| [transfer-interface](programs/transfer-interface/src/lib.rs) | Transfer tokens with decimals handling | + +## Pattern + +These programs use explicit CPI structs from `light_token::instruction`: + +```rust +use light_token::instruction::MintToCpi; + +pub fn mint_to(ctx: Context, amount: u64) -> Result<()> { + MintToCpi { + mint: ctx.accounts.mint.to_account_info(), + destination: ctx.accounts.destination.to_account_info(), + amount, + authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + max_top_up: None, + fee_payer: None, + } + .invoke()?; + Ok(()) +} +``` + +## Account validation + +Accounts are validated by the light-token program during CPI. The pattern `/// CHECK: Validated by light-token CPI` indicates the calling program delegates validation to the CPI target. + +## Build + +```bash +anchor build +``` + +## Test + +```bash +cargo test-sbf +``` + +## Note on close program + +The `close` program uses `CloseAccountCpi` which requires an explicit `token_program` account, unlike other CPI builders that handle program routing internally. diff --git a/program-examples/anchor/programs/approve/Cargo.toml b/program-examples/anchor/sdk/programs/approve/Cargo.toml similarity index 100% rename from program-examples/anchor/programs/approve/Cargo.toml rename to program-examples/anchor/sdk/programs/approve/Cargo.toml diff --git a/program-examples/anchor/programs/approve/src/lib.rs b/program-examples/anchor/sdk/programs/approve/src/lib.rs similarity index 86% rename from program-examples/anchor/programs/approve/src/lib.rs rename to program-examples/anchor/sdk/programs/approve/src/lib.rs index 9753daa..f7bbbed 100644 --- a/program-examples/anchor/programs/approve/src/lib.rs +++ b/program-examples/anchor/sdk/programs/approve/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::ApproveCpi; -declare_id!("DSfQuubKupfS7UQ6hdPqtGKG45awRNuVS7gSc3sNjv1g"); +declare_id!("37XmzKqSG2VD1ZBvzyfbt1HN1mT1bqVAmfzX2ziB3KT1"); #[program] pub mod light_token_anchor_approve { @@ -31,6 +31,4 @@ pub struct ApproveAccounts<'info> { pub delegate: AccountInfo<'info>, pub owner: Signer<'info>, pub system_program: Program<'info, System>, - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, } diff --git a/program-examples/anchor/programs/approve/tests/test.rs b/program-examples/anchor/sdk/programs/approve/tests/test.rs similarity index 97% rename from program-examples/anchor/programs/approve/tests/test.rs rename to program-examples/anchor/sdk/programs/approve/tests/test.rs index a22c95e..b71f79e 100644 --- a/program-examples/anchor/programs/approve/tests/test.rs +++ b/program-examples/anchor/sdk/programs/approve/tests/test.rs @@ -5,7 +5,6 @@ use light_token_anchor_approve::{instruction::Approve, ID}; use light_token::instruction::{ CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, }; use anchor_lang::system_program; use solana_sdk::{ @@ -109,7 +108,6 @@ async fn test_approve() { AccountMeta::new_readonly(delegate.pubkey(), false), AccountMeta::new_readonly(payer.pubkey(), true), AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), ], data: Approve { amount: approve_amount }.data(), }; diff --git a/program-examples/anchor/programs/burn/Cargo.toml b/program-examples/anchor/sdk/programs/burn/Cargo.toml similarity index 100% rename from program-examples/anchor/programs/burn/Cargo.toml rename to program-examples/anchor/sdk/programs/burn/Cargo.toml diff --git a/program-examples/anchor/programs/burn/src/lib.rs b/program-examples/anchor/sdk/programs/burn/src/lib.rs similarity index 86% rename from program-examples/anchor/programs/burn/src/lib.rs rename to program-examples/anchor/sdk/programs/burn/src/lib.rs index 128e541..0ae1a8c 100644 --- a/program-examples/anchor/programs/burn/src/lib.rs +++ b/program-examples/anchor/sdk/programs/burn/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::BurnCpi; -declare_id!("5ifAb5bMcjJ1GJoxCoQA8sYWHAJmjuWD163VrhQAKD5q"); +declare_id!("2TXVn8AqjfyeJvmFBD3kHJmh6fWkC4HNB5T76BmLKV5c"); #[program] pub mod light_token_anchor_burn { @@ -33,7 +33,5 @@ pub struct BurnAccounts<'info> { #[account(mut)] pub mint: AccountInfo<'info>, pub authority: Signer<'info>, - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, pub system_program: Program<'info, System>, } diff --git a/program-examples/anchor/programs/burn/tests/test.rs b/program-examples/anchor/sdk/programs/burn/tests/test.rs similarity index 97% rename from program-examples/anchor/programs/burn/tests/test.rs rename to program-examples/anchor/sdk/programs/burn/tests/test.rs index 1b854c5..3d7359e 100644 --- a/program-examples/anchor/programs/burn/tests/test.rs +++ b/program-examples/anchor/sdk/programs/burn/tests/test.rs @@ -5,7 +5,6 @@ use light_token_anchor_burn::{instruction::Burn, ID}; use light_token::instruction::{ CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, }; use solana_sdk::{ instruction::{AccountMeta, Instruction}, @@ -106,7 +105,6 @@ async fn test_burn() { AccountMeta::new(ata, false), AccountMeta::new(mint_pda, false), AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), AccountMeta::new_readonly(system_program::ID, false), ], data: Burn { amount: burn_amount }.data(), diff --git a/program-examples/anchor/programs/close/Cargo.toml b/program-examples/anchor/sdk/programs/close/Cargo.toml similarity index 100% rename from program-examples/anchor/programs/close/Cargo.toml rename to program-examples/anchor/sdk/programs/close/Cargo.toml diff --git a/program-examples/anchor/programs/close/src/lib.rs b/program-examples/anchor/sdk/programs/close/src/lib.rs similarity index 95% rename from program-examples/anchor/programs/close/src/lib.rs rename to program-examples/anchor/sdk/programs/close/src/lib.rs index 5497cf1..ad2ab52 100644 --- a/program-examples/anchor/programs/close/src/lib.rs +++ b/program-examples/anchor/sdk/programs/close/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::CloseAccountCpi; -declare_id!("gEtHUZSYeEsXNjHBTmxN7MM41LmGLStaQ9LMsdB3BNG"); +declare_id!("GXLCuNhnkRVp596eCdbNsZ9ua1ePbKbb344VKS7V3zQQ"); #[program] pub mod light_token_anchor_close { diff --git a/program-examples/anchor/programs/close/tests/test.rs b/program-examples/anchor/sdk/programs/close/tests/test.rs similarity index 100% rename from program-examples/anchor/programs/close/tests/test.rs rename to program-examples/anchor/sdk/programs/close/tests/test.rs diff --git a/program-examples/anchor/sdk/programs/create-ata/Cargo.toml b/program-examples/anchor/sdk/programs/create-ata/Cargo.toml new file mode 100644 index 0000000..9df7fd1 --- /dev/null +++ b/program-examples/anchor/sdk/programs/create-ata/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-create-ata" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_create_ata" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/create-ata/src/lib.rs b/program-examples/anchor/sdk/programs/create-ata/src/lib.rs new file mode 100644 index 0000000..8c0935d --- /dev/null +++ b/program-examples/anchor/sdk/programs/create-ata/src/lib.rs @@ -0,0 +1,56 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::CreateAssociatedAccountCpi; + +declare_id!("35MukgdfpNUbPMhTmEk63ECV8vjgpNVFRH9nP8ovMN58"); + +#[program] +pub mod light_token_anchor_create_ata { + use super::*; + + pub fn create_ata(ctx: Context, bump: u8, idempotent: bool) -> Result<()> { + let cpi = CreateAssociatedAccountCpi { + payer: ctx.accounts.payer.to_account_info(), + owner: ctx.accounts.owner.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + ata: ctx.accounts.associated_token_account.to_account_info(), + bump, + }; + + if idempotent { + cpi.idempotent().rent_free( + ctx.accounts.compressible_config.to_account_info(), + ctx.accounts.rent_sponsor.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ) + } else { + cpi.rent_free( + ctx.accounts.compressible_config.to_account_info(), + ctx.accounts.rent_sponsor.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ) + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CreateAtaAccounts<'info> { + /// CHECK: Validated by light-token CPI + pub owner: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub associated_token_account: AccountInfo<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Validated by light-token CPI + pub compressible_config: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, +} diff --git a/program-examples/anchor/sdk/programs/create-ata/tests/test.rs b/program-examples/anchor/sdk/programs/create-ata/tests/test.rs new file mode 100644 index 0000000..c50075d --- /dev/null +++ b/program-examples/anchor/sdk/programs/create-ata/tests/test.rs @@ -0,0 +1,105 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_create_ata::{instruction::CreateAta, ID}; +use light_token::instruction::{ + CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, derive_token_ata, + find_mint_address, rent_sponsor_pda, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_create_ata() { + let config = + ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_ata", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_mint_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Derive ATA address and bump + let (ata, ata_bump) = derive_token_ata(&payer.pubkey(), &mint_pda); + + // Call the anchor program to create ATA + let compressible_config = config_pda(); + let rent_sponsor = rent_sponsor_pda(); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(payer.pubkey(), false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new(ata, false), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(compressible_config, false), + AccountMeta::new(rent_sponsor, false), + ], + data: CreateAta { + bump: ata_bump, + idempotent: false, + } + .data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk/programs/create-mint/Cargo.toml b/program-examples/anchor/sdk/programs/create-mint/Cargo.toml new file mode 100644 index 0000000..42d8ad7 --- /dev/null +++ b/program-examples/anchor/sdk/programs/create-mint/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-create-mint" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_create_mint" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/create-mint/src/lib.rs b/program-examples/anchor/sdk/programs/create-mint/src/lib.rs new file mode 100644 index 0000000..053fbff --- /dev/null +++ b/program-examples/anchor/sdk/programs/create-mint/src/lib.rs @@ -0,0 +1,124 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::{CreateMintCpi, CreateMintParams, SystemAccountInfos}; +use light_token::{CompressedProof, ExtensionInstructionData, TokenMetadataInstructionData}; + +declare_id!("A1rJEoepgKYWZYZ8KVFpxgeeRGwBrU7xk8S39srjVkUX"); + +/// Token metadata parameters for creating a mint with metadata. +#[derive(AnchorSerialize, AnchorDeserialize, Clone)] +pub struct TokenMetadataParams { + pub name: Vec, + pub symbol: Vec, + pub uri: Vec, + pub update_authority: Option, +} + +#[program] +pub mod light_token_anchor_create_mint { + use super::*; + + pub fn create_mint( + ctx: Context, + decimals: u8, + address_merkle_tree_root_index: u16, + compression_address: [u8; 32], + proof: CompressedProof, + freeze_authority: Option, + bump: u8, + rent_payment: Option, + write_top_up: Option, + metadata: Option, + ) -> Result<()> { + let mint = light_token::instruction::find_mint_address(ctx.accounts.mint_seed.key).0; + + let extensions = metadata.map(|m| { + vec![ExtensionInstructionData::TokenMetadata( + TokenMetadataInstructionData { + update_authority: m + .update_authority + .map(|p| p.to_bytes().into()), + name: m.name, + symbol: m.symbol, + uri: m.uri, + additional_metadata: None, + }, + )] + }); + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index, + mint_authority: *ctx.accounts.authority.key, + proof, + compression_address, + mint, + bump, + freeze_authority, + extensions, + rent_payment: rent_payment.unwrap_or(16), // Default: ~24 hours + write_top_up: write_top_up.unwrap_or(766), // Default: ~3 hours per write + }; + + let system_accounts = SystemAccountInfos { + light_system_program: ctx.accounts.light_system_program.to_account_info(), + cpi_authority_pda: ctx.accounts.cpi_authority_pda.to_account_info(), + registered_program_pda: ctx.accounts.registered_program_pda.to_account_info(), + account_compression_authority: ctx.accounts.account_compression_authority.to_account_info(), + account_compression_program: ctx.accounts.account_compression_program.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + }; + + CreateMintCpi { + mint_seed: ctx.accounts.mint_seed.to_account_info(), + authority: ctx.accounts.authority.to_account_info(), + payer: ctx.accounts.payer.to_account_info(), + address_tree: ctx.accounts.address_tree.to_account_info(), + output_queue: ctx.accounts.output_queue.to_account_info(), + compressible_config: ctx.accounts.compressible_config.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), + system_accounts, + cpi_context: None, + cpi_context_account: None, + params, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CreateMintAccounts<'info> { + pub mint_seed: Signer<'info>, + /// CHECK: Validated by light-token CPI + pub authority: AccountInfo<'info>, + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub address_tree: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub output_queue: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub light_system_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub cpi_authority_pda: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub registered_program_pda: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub account_compression_authority: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub account_compression_program: AccountInfo<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Validated by light-token CPI - use light_token::token::config_pda() + pub compressible_config: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI - derived from find_mint_address(mint_seed) + #[account(mut)] + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI - use light_token::token::rent_sponsor_pda() + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, +} diff --git a/program-examples/anchor/sdk/programs/create-mint/tests/test.rs b/program-examples/anchor/sdk/programs/create-mint/tests/test.rs new file mode 100644 index 0000000..90ae585 --- /dev/null +++ b/program-examples/anchor/sdk/programs/create-mint/tests/test.rs @@ -0,0 +1,95 @@ +use anchor_lang::InstructionData; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_create_mint::{instruction::CreateMint, ID}; +use light_token::instruction::{ + config_pda, derive_mint_compressed_address, find_mint_address, rent_sponsor_pda, + SystemAccounts, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_create_mint() { + let config = + ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_mint", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![light_client::indexer::AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let system_accounts = SystemAccounts::default(); + + // Call the anchor program to create mint + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(mint_seed.pubkey(), true), + AccountMeta::new_readonly(mint_authority, false), + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new(address_tree.tree, false), + AccountMeta::new(output_queue, false), + AccountMeta::new_readonly(system_accounts.light_system_program, false), + AccountMeta::new_readonly(system_accounts.cpi_authority_pda, false), + AccountMeta::new_readonly(system_accounts.registered_program_pda, false), + AccountMeta::new_readonly(system_accounts.account_compression_authority, false), + AccountMeta::new_readonly(system_accounts.account_compression_program, false), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(config_pda(), false), + AccountMeta::new(mint_pda, false), + AccountMeta::new(rent_sponsor_pda(), false), + ], + data: CreateMint { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + compression_address: compression_address.into(), + proof: rpc_result.proof.0.unwrap(), + freeze_authority: None, + bump, + rent_payment: Some(16), + write_top_up: Some(766), + metadata: None, + } + .data(), + }; + + let sig = rpc + .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let compressed_account = rpc + .get_compressed_account(compression_address, None) + .await + .unwrap() + .value; + + assert!(compressed_account.is_some(), "Compressed mint should exist"); + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk/programs/create-token-account/Cargo.toml b/program-examples/anchor/sdk/programs/create-token-account/Cargo.toml new file mode 100644 index 0000000..974dfe4 --- /dev/null +++ b/program-examples/anchor/sdk/programs/create-token-account/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-create-token-account" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_create_token_account" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/create-token-account/src/lib.rs b/program-examples/anchor/sdk/programs/create-token-account/src/lib.rs new file mode 100644 index 0000000..6d2e004 --- /dev/null +++ b/program-examples/anchor/sdk/programs/create-token-account/src/lib.rs @@ -0,0 +1,47 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::CreateTokenAccountCpi; + +declare_id!("zXK1CnWj4WFfFHCArxxr4sh3Qqx2p3oui8ahqpjArgS"); + +#[program] +pub mod light_token_anchor_create_token_account { + use super::*; + + pub fn create_token_account(ctx: Context, owner: Pubkey) -> Result<()> { + CreateTokenAccountCpi { + payer: ctx.accounts.payer.to_account_info(), + account: ctx.accounts.account.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + owner, + } + .rent_free( + ctx.accounts.compressible_config.to_account_info(), + ctx.accounts.rent_sponsor.to_account_info(), + ctx.accounts.system_program.to_account_info(), + &ctx.accounts.light_token_program.key(), + ) + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CreateTokenAccountAccounts<'info> { + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub compressible_config: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} diff --git a/program-examples/anchor/sdk/programs/create-token-account/tests/test.rs b/program-examples/anchor/sdk/programs/create-token-account/tests/test.rs new file mode 100644 index 0000000..5355ba0 --- /dev/null +++ b/program-examples/anchor/sdk/programs/create-token-account/tests/test.rs @@ -0,0 +1,105 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_create_token_account::{instruction::CreateTokenAccount, ID}; +use light_token::instruction::{ + CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, + find_mint_address, rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + pubkey::Pubkey, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_create_token_account() { + let config = ProgramTestConfig::new_v2( + true, + Some(vec![("light_token_anchor_create_token_account", ID)]), + ); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + // Create a mint first + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_mint_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Create a token account + let token_account = Keypair::new(); + let owner = payer.pubkey(); + let compressible_config = config_pda(); + let rent_sponsor = rent_sponsor_pda(); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new(token_account.pubkey(), false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new_readonly(compressible_config, false), + AccountMeta::new(rent_sponsor, false), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + ], + data: CreateTokenAccount { owner }.data(), + }; + + let sig = rpc + .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/programs/freeze/Cargo.toml b/program-examples/anchor/sdk/programs/freeze/Cargo.toml similarity index 100% rename from program-examples/anchor/programs/freeze/Cargo.toml rename to program-examples/anchor/sdk/programs/freeze/Cargo.toml diff --git a/program-examples/anchor/programs/freeze/src/lib.rs b/program-examples/anchor/sdk/programs/freeze/src/lib.rs similarity index 84% rename from program-examples/anchor/programs/freeze/src/lib.rs rename to program-examples/anchor/sdk/programs/freeze/src/lib.rs index 9dd5397..e3c2aac 100644 --- a/program-examples/anchor/programs/freeze/src/lib.rs +++ b/program-examples/anchor/sdk/programs/freeze/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::FreezeCpi; -declare_id!("4iKo7Nk875r9SvhJxFs1TFD6E4e2zEtG2Akwa8qLrMj9"); +declare_id!("JBMzMJX4sqCQfNVbosP2oqP1KZ5ZDWiwYTrupk687qXZ"); #[program] pub mod light_token_anchor_freeze { @@ -28,6 +28,4 @@ pub struct FreezeAccounts<'info> { /// CHECK: Validated by light-token CPI pub mint: AccountInfo<'info>, pub freeze_authority: Signer<'info>, - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, } diff --git a/program-examples/anchor/programs/freeze/tests/test.rs b/program-examples/anchor/sdk/programs/freeze/tests/test.rs similarity index 97% rename from program-examples/anchor/programs/freeze/tests/test.rs rename to program-examples/anchor/sdk/programs/freeze/tests/test.rs index 02b21bd..4916bac 100644 --- a/program-examples/anchor/programs/freeze/tests/test.rs +++ b/program-examples/anchor/sdk/programs/freeze/tests/test.rs @@ -5,7 +5,6 @@ use light_token_anchor_freeze::{instruction::Freeze, ID}; use light_token::instruction::{ CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, }; use solana_sdk::{ instruction::{AccountMeta, Instruction}, @@ -105,7 +104,6 @@ async fn test_freeze() { AccountMeta::new(ata, false), AccountMeta::new_readonly(mint_pda, false), AccountMeta::new_readonly(freeze_authority, true), - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), ], data: Freeze {}.data(), }; diff --git a/program-examples/anchor/programs/mint-to/Cargo.toml b/program-examples/anchor/sdk/programs/mint-to/Cargo.toml similarity index 100% rename from program-examples/anchor/programs/mint-to/Cargo.toml rename to program-examples/anchor/sdk/programs/mint-to/Cargo.toml diff --git a/program-examples/anchor/programs/mint-to/src/lib.rs b/program-examples/anchor/sdk/programs/mint-to/src/lib.rs similarity index 86% rename from program-examples/anchor/programs/mint-to/src/lib.rs rename to program-examples/anchor/sdk/programs/mint-to/src/lib.rs index 1497986..102b0e0 100644 --- a/program-examples/anchor/programs/mint-to/src/lib.rs +++ b/program-examples/anchor/sdk/programs/mint-to/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::MintToCpi; -declare_id!("DJid8bYZSoNgzDbgQN22avg96k8YteFmDLe1jArkDQDB"); +declare_id!("8bXEVmHLtAVqDLJp1dYWAZ61WQmqQKoTQ8LpPbRoUDCp"); #[program] pub mod light_token_anchor_mint_to { @@ -34,6 +34,4 @@ pub struct MintToAccounts<'info> { pub destination: AccountInfo<'info>, pub authority: Signer<'info>, pub system_program: Program<'info, System>, - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, } diff --git a/program-examples/anchor/programs/mint-to/tests/test.rs b/program-examples/anchor/sdk/programs/mint-to/tests/test.rs similarity index 95% rename from program-examples/anchor/programs/mint-to/tests/test.rs rename to program-examples/anchor/sdk/programs/mint-to/tests/test.rs index ce70811..e447648 100644 --- a/program-examples/anchor/programs/mint-to/tests/test.rs +++ b/program-examples/anchor/sdk/programs/mint-to/tests/test.rs @@ -5,7 +5,7 @@ use light_program_test::{LightProgramTest, ProgramTestConfig, Rpc}; use light_token_anchor_mint_to::{instruction::MintTo, ID}; use light_token::instruction::{ CreateAssociatedTokenAccount, CreateMint, CreateMintParams, derive_mint_compressed_address, - derive_token_ata, find_mint_address, LIGHT_TOKEN_PROGRAM_ID, + derive_token_ata, find_mint_address, }; use solana_sdk::{ instruction::{AccountMeta, Instruction}, @@ -88,7 +88,6 @@ async fn test_mint_to() { AccountMeta::new(ata, false), AccountMeta::new_readonly(mint_authority, true), AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), ], data: MintTo { amount }.data(), }; diff --git a/program-examples/anchor/programs/revoke/Cargo.toml b/program-examples/anchor/sdk/programs/revoke/Cargo.toml similarity index 100% rename from program-examples/anchor/programs/revoke/Cargo.toml rename to program-examples/anchor/sdk/programs/revoke/Cargo.toml diff --git a/program-examples/anchor/programs/revoke/src/lib.rs b/program-examples/anchor/sdk/programs/revoke/src/lib.rs similarity index 83% rename from program-examples/anchor/programs/revoke/src/lib.rs rename to program-examples/anchor/sdk/programs/revoke/src/lib.rs index d7f5a8e..fcdc58b 100644 --- a/program-examples/anchor/programs/revoke/src/lib.rs +++ b/program-examples/anchor/sdk/programs/revoke/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::RevokeCpi; -declare_id!("7zgWsLWcUSAqd4AvuLRcjWCdkbHTu9Pn1Wz17iYD6SND"); +declare_id!("G3ph4MK5qaSdxYnfxToETg31AHEMMqVhPuMRgBhk38tQ"); #[program] pub mod light_token_anchor_revoke { @@ -27,6 +27,4 @@ pub struct RevokeAccounts<'info> { pub token_account: AccountInfo<'info>, pub owner: Signer<'info>, pub system_program: Program<'info, System>, - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, } diff --git a/program-examples/anchor/programs/revoke/tests/test.rs b/program-examples/anchor/sdk/programs/revoke/tests/test.rs similarity index 97% rename from program-examples/anchor/programs/revoke/tests/test.rs rename to program-examples/anchor/sdk/programs/revoke/tests/test.rs index cd43c6e..56ffdf6 100644 --- a/program-examples/anchor/programs/revoke/tests/test.rs +++ b/program-examples/anchor/sdk/programs/revoke/tests/test.rs @@ -5,7 +5,6 @@ use light_token_anchor_revoke::{instruction::Revoke, ID}; use light_token::instruction::{ Approve, CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, }; use anchor_lang::system_program; use solana_sdk::{ @@ -120,7 +119,6 @@ async fn test_revoke() { AccountMeta::new(ata, false), AccountMeta::new_readonly(payer.pubkey(), true), AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), ], data: Revoke {}.data(), }; diff --git a/program-examples/anchor/programs/thaw/Cargo.toml b/program-examples/anchor/sdk/programs/thaw/Cargo.toml similarity index 100% rename from program-examples/anchor/programs/thaw/Cargo.toml rename to program-examples/anchor/sdk/programs/thaw/Cargo.toml diff --git a/program-examples/anchor/programs/thaw/src/lib.rs b/program-examples/anchor/sdk/programs/thaw/src/lib.rs similarity index 83% rename from program-examples/anchor/programs/thaw/src/lib.rs rename to program-examples/anchor/sdk/programs/thaw/src/lib.rs index f3cf250..a178d45 100644 --- a/program-examples/anchor/programs/thaw/src/lib.rs +++ b/program-examples/anchor/sdk/programs/thaw/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::ThawCpi; -declare_id!("DKFiTz1bfbyJjqaEoBG6osPYNVxHoBzXzvdbnVGES621"); +declare_id!("7j94EF5hSkDLf7R26bjrd8Qc6s3oLAQpcKiF3re8JYw9"); #[program] pub mod light_token_anchor_thaw { @@ -28,6 +28,4 @@ pub struct ThawAccounts<'info> { /// CHECK: Validated by light-token CPI pub mint: AccountInfo<'info>, pub freeze_authority: Signer<'info>, - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, } diff --git a/program-examples/anchor/programs/thaw/tests/test.rs b/program-examples/anchor/sdk/programs/thaw/tests/test.rs similarity index 97% rename from program-examples/anchor/programs/thaw/tests/test.rs rename to program-examples/anchor/sdk/programs/thaw/tests/test.rs index 371f4be..95ea32a 100644 --- a/program-examples/anchor/programs/thaw/tests/test.rs +++ b/program-examples/anchor/sdk/programs/thaw/tests/test.rs @@ -5,7 +5,6 @@ use light_token_anchor_thaw::{instruction::Thaw, ID}; use light_token::instruction::{ CreateAssociatedTokenAccount, CreateMint, CreateMintParams, Freeze, MintTo, derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, }; use solana_sdk::{ instruction::{AccountMeta, Instruction}, @@ -118,7 +117,6 @@ async fn test_thaw() { AccountMeta::new(ata, false), AccountMeta::new_readonly(mint_pda, false), AccountMeta::new_readonly(freeze_authority, true), - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), ], data: Thaw {}.data(), }; diff --git a/program-examples/anchor/sdk/programs/transfer-checked/Cargo.toml b/program-examples/anchor/sdk/programs/transfer-checked/Cargo.toml new file mode 100644 index 0000000..6d91664 --- /dev/null +++ b/program-examples/anchor/sdk/programs/transfer-checked/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-transfer-checked" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_transfer_checked" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/transfer-checked/src/lib.rs b/program-examples/anchor/sdk/programs/transfer-checked/src/lib.rs new file mode 100644 index 0000000..958655b --- /dev/null +++ b/program-examples/anchor/sdk/programs/transfer-checked/src/lib.rs @@ -0,0 +1,45 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::TransferCheckedCpi; + +declare_id!("HXmfewpozFdxhM8BayL9v5541gwoGMXTrUoip5KySs2f"); + +#[program] +pub mod light_token_anchor_transfer_checked { + use super::*; + + pub fn transfer_checked( + ctx: Context, + amount: u64, + decimals: u8, + ) -> Result<()> { + TransferCheckedCpi { + source: ctx.accounts.source.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + destination: ctx.accounts.destination.to_account_info(), + amount, + decimals, + authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + max_top_up: None, + fee_payer: None, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct TransferCheckedAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub source: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub authority: Signer<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/sdk/programs/transfer-checked/tests/test.rs b/program-examples/anchor/sdk/programs/transfer-checked/tests/test.rs new file mode 100644 index 0000000..bc9e190 --- /dev/null +++ b/program-examples/anchor/sdk/programs/transfer-checked/tests/test.rs @@ -0,0 +1,140 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_transfer_checked::{instruction::TransferChecked, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, + system_program, +}; + +#[tokio::test] +async fn test_transfer_checked() { + let config = ProgramTestConfig::new_v2( + true, + Some(vec![("light_token_anchor_transfer_checked", ID)]), + ); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Create source ATA + let (source_ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_source_ata = + CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_source_ata], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens to source + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: source_ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Create destination ATA for recipient + let recipient = Keypair::new(); + let (dest_ata, _) = derive_token_ata(&recipient.pubkey(), &mint_pda); + let create_dest_ata = + CreateAssociatedTokenAccount::new(payer.pubkey(), recipient.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_dest_ata], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to transfer tokens (checked) + let transfer_amount = 100_000u64; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(source_ata, false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new(dest_ata, false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: TransferChecked { + amount: transfer_amount, + decimals, + } + .data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/programs/transfer-interface/Cargo.toml b/program-examples/anchor/sdk/programs/transfer-interface/Cargo.toml similarity index 100% rename from program-examples/anchor/programs/transfer-interface/Cargo.toml rename to program-examples/anchor/sdk/programs/transfer-interface/Cargo.toml diff --git a/program-examples/anchor/programs/transfer-interface/src/lib.rs b/program-examples/anchor/sdk/programs/transfer-interface/src/lib.rs similarity index 89% rename from program-examples/anchor/programs/transfer-interface/src/lib.rs rename to program-examples/anchor/sdk/programs/transfer-interface/src/lib.rs index 60d565e..7bb17aa 100644 --- a/program-examples/anchor/programs/transfer-interface/src/lib.rs +++ b/program-examples/anchor/sdk/programs/transfer-interface/src/lib.rs @@ -3,7 +3,7 @@ use anchor_lang::prelude::*; use light_token::instruction::TransferInterfaceCpi; -declare_id!("7kEQF6118CUMcr1TmnjQKqGz5HNdQE6edgUi63kpZrV6"); +declare_id!("3rb6sG4jiYNLZC8jo8kLsFHpxr2Ci8e8Hh8UmeCMZmUV"); #[program] pub mod light_token_anchor_transfer_interface { @@ -39,6 +39,4 @@ pub struct TransferAccounts<'info> { /// CHECK: Validated by light-token CPI pub cpi_authority: AccountInfo<'info>, pub system_program: Program<'info, System>, - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, } diff --git a/program-examples/anchor/programs/transfer-interface/tests/test.rs b/program-examples/anchor/sdk/programs/transfer-interface/tests/test.rs similarity index 97% rename from program-examples/anchor/programs/transfer-interface/tests/test.rs rename to program-examples/anchor/sdk/programs/transfer-interface/tests/test.rs index 4b53a14..3c9e77c 100644 --- a/program-examples/anchor/programs/transfer-interface/tests/test.rs +++ b/program-examples/anchor/sdk/programs/transfer-interface/tests/test.rs @@ -5,7 +5,6 @@ use light_token_anchor_transfer_interface::{instruction::Transfer, ID}; use light_token::instruction::{ CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, }; use light_token_types::CPI_AUTHORITY_PDA; use anchor_lang::system_program; @@ -130,7 +129,6 @@ async fn test_transfer() { AccountMeta::new(payer.pubkey(), true), AccountMeta::new_readonly(cpi_authority_pda, false), AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), ], data: Transfer { amount: transfer_amount, diff --git a/program-examples/anchor/tRCtRRCjpAirbmcHTukEgWWihiNpzc4qZ4HVYNo1rd2.json b/program-examples/anchor/tRCtRRCjpAirbmcHTukEgWWihiNpzc4qZ4HVYNo1rd2.json new file mode 100644 index 0000000..e31daae --- /dev/null +++ b/program-examples/anchor/tRCtRRCjpAirbmcHTukEgWWihiNpzc4qZ4HVYNo1rd2.json @@ -0,0 +1 @@ +[54,164,214,87,50,225,100,85,98,225,17,173,223,54,160,57,163,157,18,116,64,104,159,83,184,232,103,130,209,78,38,110,13,43,253,104,143,2,89,230,31,12,86,209,92,216,116,134,182,154,236,9,77,139,102,11,126,155,85,215,233,124,160,205] \ No newline at end of file From 1aa42820a586e07385eff94dada5a44304ebb749 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Sun, 25 Jan 2026 23:59:07 +0000 Subject: [PATCH 10/23] reorder --- .../anchor/anchor-programs-sdk/Anchor.toml | 29 + .../anchor/anchor-programs-sdk/Cargo.lock | 8962 +++++++++++++++++ .../anchor/anchor-programs-sdk/Cargo.toml | 41 + .../anchor/anchor-programs-sdk/README.md | 64 + .../anchor-programs-sdk/approve/Cargo.toml | 31 + .../anchor-programs-sdk/approve/src/lib.rs | 34 + .../anchor-programs-sdk/approve/tests/test.rs | 120 + .../anchor-programs-sdk/burn/Cargo.toml | 31 + .../anchor-programs-sdk/burn/src/lib.rs | 37 + .../anchor-programs-sdk/burn/tests/test.rs | 118 + .../anchor-programs-sdk/close/Cargo.toml | 31 + .../anchor-programs-sdk/close/src/lib.rs | 39 + .../anchor-programs-sdk/close/tests/test.rs | 104 + .../anchor-programs-sdk/create-ata/Cargo.toml | 31 + .../anchor-programs-sdk/create-ata/src/lib.rs | 56 + .../create-ata/tests/test.rs | 105 + .../create-mint/Cargo.toml | 31 + .../create-mint/src/lib.rs | 124 + .../create-mint/tests/test.rs | 95 + .../create-token-account/Cargo.toml | 31 + .../create-token-account/src/lib.rs | 47 + .../create-token-account/tests/test.rs | 105 + .../anchor-programs-sdk/freeze/Cargo.toml | 31 + .../anchor-programs-sdk/freeze/src/lib.rs | 31 + .../anchor-programs-sdk/freeze/tests/test.rs | 117 + .../anchor-programs-sdk/mint-to/Cargo.toml | 31 + .../anchor-programs-sdk/mint-to/src/lib.rs | 37 + .../anchor-programs-sdk/mint-to/tests/test.rs | 102 + .../anchor-programs-sdk/revoke/Cargo.toml | 31 + .../anchor-programs-sdk/revoke/src/lib.rs | 30 + .../anchor-programs-sdk/revoke/tests/test.rs | 131 + .../anchor-programs-sdk/thaw/Cargo.toml | 31 + .../anchor-programs-sdk/thaw/src/lib.rs | 31 + .../anchor-programs-sdk/thaw/tests/test.rs | 129 + .../transfer-checked/Cargo.toml | 31 + .../transfer-checked/src/lib.rs | 45 + .../transfer-checked/tests/test.rs | 140 + .../transfer-interface/Cargo.toml | 32 + .../transfer-interface/src/lib.rs | 42 + .../transfer-interface/tests/test.rs | 145 + ...CjpAirbmcHTukEgWWihiNpzc4qZ4HVYNo1rd2.json | 1 - 41 files changed, 11433 insertions(+), 1 deletion(-) create mode 100644 program-examples/anchor/anchor-programs-sdk/Anchor.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/Cargo.lock create mode 100644 program-examples/anchor/anchor-programs-sdk/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/README.md create mode 100644 program-examples/anchor/anchor-programs-sdk/approve/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/approve/src/lib.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/approve/tests/test.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/burn/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/burn/src/lib.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/burn/tests/test.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/close/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/close/src/lib.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/close/tests/test.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/create-ata/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/create-ata/src/lib.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/create-ata/tests/test.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/create-mint/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/create-mint/src/lib.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/create-mint/tests/test.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/create-token-account/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/create-token-account/src/lib.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/create-token-account/tests/test.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/freeze/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/freeze/src/lib.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/freeze/tests/test.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/mint-to/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/mint-to/src/lib.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/mint-to/tests/test.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/revoke/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/revoke/src/lib.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/revoke/tests/test.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/thaw/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/thaw/src/lib.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/thaw/tests/test.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/transfer-checked/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/transfer-checked/src/lib.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/transfer-checked/tests/test.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/transfer-interface/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/transfer-interface/src/lib.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/transfer-interface/tests/test.rs delete mode 100644 program-examples/anchor/tRCtRRCjpAirbmcHTukEgWWihiNpzc4qZ4HVYNo1rd2.json diff --git a/program-examples/anchor/anchor-programs-sdk/Anchor.toml b/program-examples/anchor/anchor-programs-sdk/Anchor.toml new file mode 100644 index 0000000..0d8edef --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/Anchor.toml @@ -0,0 +1,29 @@ +[toolchain] + +[features] +resolution = true +skip-lint = false + +[programs.devnet] +light_token_anchor_approve = "37XmzKqSG2VD1ZBvzyfbt1HN1mT1bqVAmfzX2ziB3KT1" +light_token_anchor_burn = "2TXVn8AqjfyeJvmFBD3kHJmh6fWkC4HNB5T76BmLKV5c" +light_token_anchor_close = "GXLCuNhnkRVp596eCdbNsZ9ua1ePbKbb344VKS7V3zQQ" +light_token_anchor_create_ata = "35MukgdfpNUbPMhTmEk63ECV8vjgpNVFRH9nP8ovMN58" +light_token_anchor_create_mint = "A1rJEoepgKYWZYZ8KVFpxgeeRGwBrU7xk8S39srjVkUX" +light_token_anchor_create_token_account = "zXK1CnWj4WFfFHCArxxr4sh3Qqx2p3oui8ahqpjArgS" +light_token_anchor_freeze = "JBMzMJX4sqCQfNVbosP2oqP1KZ5ZDWiwYTrupk687qXZ" +light_token_anchor_mint_to = "8bXEVmHLtAVqDLJp1dYWAZ61WQmqQKoTQ8LpPbRoUDCp" +light_token_anchor_revoke = "G3ph4MK5qaSdxYnfxToETg31AHEMMqVhPuMRgBhk38tQ" +light_token_anchor_thaw = "7j94EF5hSkDLf7R26bjrd8Qc6s3oLAQpcKiF3re8JYw9" +light_token_anchor_transfer_checked = "HXmfewpozFdxhM8BayL9v5541gwoGMXTrUoip5KySs2f" +light_token_anchor_transfer_interface = "3rb6sG4jiYNLZC8jo8kLsFHpxr2Ci8e8Hh8UmeCMZmUV" + +[registry] +url = "https://api.apr.dev" + +[provider] +cluster = "devnet" +wallet = "~/.config/solana/id.json" + +[scripts] +test = "cargo test-sbf" diff --git a/program-examples/anchor/anchor-programs-sdk/Cargo.lock b/program-examples/anchor/anchor-programs-sdk/Cargo.lock new file mode 100644 index 0000000..6b362f7 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/Cargo.lock @@ -0,0 +1,8962 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[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 = "agave-feature-set" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a2c365c0245cbb8959de725fc2b44c754b673fdf34c9a7f9d4a25c35a7bf1" +dependencies = [ + "ahash", + "solana-epoch-schedule", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", + "solana-svm-feature-set", +] + +[[package]] +name = "agave-precompiles" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d60d73657792af7f2464e9181d13c3979e94bb09841d9ffa014eef4ef0492b77" +dependencies = [ + "agave-feature-set", + "bincode", + "digest 0.10.7", + "ed25519-dalek", + "libsecp256k1", + "openssl", + "sha3", + "solana-ed25519-program", + "solana-message", + "solana-precompile-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "agave-reserved-account-keys" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8289c8a8a2ef5aa10ce49a070f360f4e035ee3410b8d8f3580fb39d8cf042581" +dependencies = [ + "agave-feature-set", + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.4", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned-sized" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48a526ec4434d531d488af59fe866f36b310fe8906691c75dffa664450a3800a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "anchor-attribute-access-control" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f70fd141a4d18adf11253026b32504f885447048c7494faf5fa83b01af9c0cf" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-account" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715a261c57c7679581e06f07a74fa2af874ac30f86bd8ea07cca4a7e5388a064" +dependencies = [ + "anchor-syn", + "bs58", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-constant" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730d6df8ae120321c5c25e0779e61789e4b70dc8297102248902022f286102e4" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-error" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27e6e449cc3a37b2880b74dcafb8e5a17b954c0e58e376432d7adc646fb333ef" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-event" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7710e4c54adf485affcd9be9adec5ef8846d9c71d7f31e16ba86ff9fc1dd49f" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-program" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ecfd49b2aeadeb32f35262230db402abed76ce87e27562b34f61318b2ec83c" +dependencies = [ + "anchor-lang-idl", + "anchor-syn", + "anyhow", + "bs58", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde_json", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-accounts" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be89d160793a88495af462a7010b3978e48e30a630c91de47ce2c1d3cb7a6149" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-serde" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abc6ee78acb7bfe0c2dd2abc677aaa4789c0281a0c0ef01dbf6fe85e0fd9e6e4" +dependencies = [ + "anchor-syn", + "borsh-derive-internal", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-space" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "134a01c0703f6fd355a0e472c033f6f3e41fac1ef6e370b20c50f4c8d022cea7" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-lang" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6bab117055905e930f762c196e08f861f8dfe7241b92cee46677a3b15561a0a" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e8599d21995f68e296265aa5ab0c3cef582fd58afec014d01bd0bce18a4418" +dependencies = [ + "anchor-lang-idl-spec", + "anyhow", + "heck 0.3.3", + "regex", + "serde", + "serde_json", + "sha2 0.10.9", +] + +[[package]] +name = "anchor-lang-idl-spec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" +dependencies = [ + "anyhow", + "serde", +] + +[[package]] +name = "anchor-syn" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dc7a6d90cc643df0ed2744862cdf180587d1e5d28936538c18fc8908489ed67" +dependencies = [ + "anyhow", + "bs58", + "cargo_toml", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.9", + "syn 1.0.109", + "thiserror 1.0.69", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "ark-bn254" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +dependencies = [ + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff 0.4.2", + "ark-poly 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe 0.6.0", + "fnv", + "hashbrown 0.15.2", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe 0.6.0", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.114", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe 0.6.0", + "fnv", + "hashbrown 0.15.2", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive 0.4.2", + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", + "rayon", +] + +[[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 = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "async-compression" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" +dependencies = [ + "compression-codecs", + "compression-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[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 = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +dependencies = [ + "serde_core", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +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.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +dependencies = [ + "borsh-derive 1.6.0", + "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.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +dependencies = [ + "once_cell", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[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 = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[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.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" + +[[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 = "bytecount" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[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.23", +] + +[[package]] +name = "cc" +version = "1.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cfg_eval" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "chrono" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[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 = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "compression-codecs" +version = "0.4.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" +dependencies = [ + "brotli", + "compression-core", + "flate2", + "memchr", +] + +[[package]] +name = "compression-core" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + +[[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 = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[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 = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[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.114", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.114", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derivation-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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 = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "eager" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek 3.2.0", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek-bip32" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" +dependencies = [ + "derivation-path", + "ed25519-dalek", + "hmac 0.12.1", + "sha2 0.10.9", +] + +[[package]] +name = "educe" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" +dependencies = [ + "enum-ordinalize 3.1.15", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize 4.3.2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-iterator" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "enum-ordinalize" +version = "3.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[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 = "find-msvc-tools" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" + +[[package]] +name = "five8" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_const" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" + +[[package]] +name = "flate2" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[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 = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "groth16-solana" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a6d1ffb18dbf5cfc60b11bd7da88474c672870247c1e5b498619bcb6ba3d8f5" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "num-bigint 0.4.6", + "solana-bn254", + "thiserror 1.0.69", +] + +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.13.0", + "slab", + "tokio", + "tokio-util 0.7.18", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.4.0", + "indexmap 2.13.0", + "slab", + "tokio", + "tokio-util 0.7.18", + "tracing", +] + +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[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" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[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 = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.4.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.4.0", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.5.10", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2 0.4.13", + "http 1.4.0", + "http-body 1.0.1", + "httparse", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper 0.14.32", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http 1.4.0", + "hyper 1.8.1", + "hyper-util", + "rustls 0.23.36", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.4", + "tower-service", + "webpki-roots 1.0.5", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper 0.14.32", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.8.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "hyper 1.8.1", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.6.2", + "system-configuration 0.6.1", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width", + "web-time", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jsonrpc-core" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" +dependencies = [ + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "kaigan" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ba15de5aeb137f0f65aa3bf82187647f1285abfe5b20c80c2c37f7007ad519a" +dependencies = [ + "borsh 0.10.4", + "serde", +] + +[[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.180" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" + +[[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", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "typenum", +] + +[[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 = "light-account-checks" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f20b8640212dd450e18d452a247e28d8ba6fdce3c713fd8b69f1e95874d1b7ab" +dependencies = [ + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sysvar", + "thiserror 2.0.18", +] + +[[package]] +name = "light-array-map" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bdd13b18028ac9d80d0a987551c0dad7fe81be8140e87cc9d568b80f3728203" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "light-batched-merkle-tree" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e838c523b49371097f948cd5662bd9a89d9dca037fb61fd38001e99f485702" +dependencies = [ + "aligned-sized", + "borsh 0.10.4", + "light-account-checks", + "light-bloom-filter", + "light-compressed-account", + "light-hasher", + "light-macros", + "light-merkle-tree-metadata", + "light-verifier", + "light-zero-copy", + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sysvar", + "thiserror 2.0.18", + "zerocopy", +] + +[[package]] +name = "light-bloom-filter" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b8cf734ccf5fbc1f5fed8e5308b57ebde6774d9304c167bcb0de2854412d8" +dependencies = [ + "bitvec", + "num-bigint 0.4.6", + "solana-nostd-keccak", + "solana-program-error", + "thiserror 2.0.18", +] + +[[package]] +name = "light-bounded-vec" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58cfa375d028164719e3ffef93d2e5c27855cc8a5bb5bf257b868d17c12a3e66" +dependencies = [ + "bytemuck", + "memoffset", + "solana-program-error", + "thiserror 1.0.69", +] + +[[package]] +name = "light-client" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33203f596d48d28d1cb67dee5762b151e0073207a5e828c63ec68f9efb9a5ee8" +dependencies = [ + "anchor-lang", + "async-trait", + "base64 0.13.1", + "borsh 0.10.4", + "bs58", + "futures", + "lazy_static", + "light-compressed-account", + "light-compressible", + "light-concurrent-merkle-tree", + "light-event", + "light-hasher", + "light-indexed-merkle-tree", + "light-merkle-tree-metadata", + "light-prover-client", + "light-sdk", + "light-token", + "light-token-interface", + "litesvm", + "num-bigint 0.4.6", + "photon-api", + "rand 0.8.5", + "smallvec", + "solana-account", + "solana-account-decoder-client-types", + "solana-address-lookup-table-interface", + "solana-banks-client", + "solana-clock", + "solana-commitment-config", + "solana-compute-budget-interface", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-program-error", + "solana-pubkey", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-signature", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "spl-pod", + "spl-token-2022-interface", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "light-compressed-account" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c3537bbad9df133ca97fc191b164bba93dba1de4da01a92d979ef63f8ce106" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-hasher", + "light-macros", + "light-poseidon 0.3.0", + "light-program-profiler", + "light-zero-copy", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "thiserror 2.0.18", + "tinyvec", + "zerocopy", +] + +[[package]] +name = "light-compressible" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00d1dc14271907009f4ca23ae99c49279f7d2acc5a83f0f8d7362834b37e2e16" +dependencies = [ + "aligned-sized", + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-account-checks", + "light-compressed-account", + "light-hasher", + "light-macros", + "light-program-profiler", + "light-zero-copy", + "pinocchio-pubkey", + "solana-pubkey", + "solana-rent", + "thiserror 2.0.18", + "zerocopy", +] + +[[package]] +name = "light-concurrent-merkle-tree" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db96f47253a0907aaa46dac15cecb27b5510130e48da0b36690dcd2e99a6d558" +dependencies = [ + "borsh 0.10.4", + "light-bounded-vec", + "light-hasher", + "memoffset", + "solana-program-error", + "thiserror 2.0.18", +] + +[[package]] +name = "light-event" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4bae725ee1d4d944d442ac0bfdf2031b1b2379c04c7e39c475277aaaea08fb1" +dependencies = [ + "borsh 0.10.4", + "light-compressed-account", + "light-hasher", + "light-zero-copy", + "thiserror 2.0.18", +] + +[[package]] +name = "light-hasher" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c822662e6e109bac0e132a43fd52a4ef684811245a794e048cf9cda001e934c8" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "borsh 0.10.4", + "light-poseidon 0.3.0", + "num-bigint 0.4.6", + "sha2 0.10.9", + "sha3", + "solana-program-error", + "thiserror 2.0.18", + "tinyvec", +] + +[[package]] +name = "light-indexed-array" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f14f984030d86b6f07bd8f5ae04e2c40fcd0c3bdfcc7a291fff1ed59c9e6554" +dependencies = [ + "light-hasher", + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.18", +] + +[[package]] +name = "light-indexed-merkle-tree" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0824755289075f28de2820fc7d4ec4e6b9e99d404e033c07338b91cce8c71fb8" +dependencies = [ + "light-bounded-vec", + "light-concurrent-merkle-tree", + "light-hasher", + "light-merkle-tree-reference", + "num-bigint 0.4.6", + "num-traits", + "solana-program-error", + "thiserror 2.0.18", +] + +[[package]] +name = "light-instruction-decoder" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f4bd98e842f21b754ec28020a56de37cb0b1089952ef24340d21c2d5afd5c5" +dependencies = [ + "borsh 0.10.4", + "bs58", + "light-compressed-account", + "light-instruction-decoder-derive", + "light-sdk-types", + "light-token-interface", + "serde", + "solana-instruction", + "solana-pubkey", + "solana-signature", + "tabled", +] + +[[package]] +name = "light-instruction-decoder-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2035d04a0a1590da05634efcac149a2ac852565e28c9a55bd07a6620c0e90bff" +dependencies = [ + "bs58", + "darling", + "heck 0.5.0", + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.114", +] + +[[package]] +name = "light-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "179ac51cadc1d0ca047b4d6265a7cc245ca3affc16a20a2749585aa6464d39c2" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "solana-pubkey", + "syn 2.0.114", +] + +[[package]] +name = "light-merkle-tree-metadata" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c2e63e8345dcfb80efac69136fdcc6c36a12354675aca6e3daf13ec40422d1" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-compressed-account", + "solana-msg", + "solana-program-error", + "solana-sysvar", + "thiserror 2.0.18", + "zerocopy", +] + +[[package]] +name = "light-merkle-tree-reference" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8d480f62ca32b38a6231bbc5310d693f91d6b5bdcc18bb13c2d9aab7a1c90e8" +dependencies = [ + "light-hasher", + "light-indexed-array", + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.18", +] + +[[package]] +name = "light-poseidon" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" +dependencies = [ + "ark-bn254 0.4.0", + "ark-ff 0.4.2", + "num-bigint 0.4.6", + "thiserror 1.0.69", +] + +[[package]] +name = "light-poseidon" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3d87542063daaccbfecd78b60f988079b6ec4e089249658b9455075c78d42" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "num-bigint 0.4.6", + "thiserror 1.0.69", +] + +[[package]] +name = "light-profiler-macro" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a8be18fe4de58a6f754caa74a3fbc6d8a758a26f1f3c24d5b0f5b55df5f5408" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "light-program-profiler" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1d345871581aebd8825868a3f08410290aa1cdddcb189ca7f7e588f61d79fcf" +dependencies = [ + "light-profiler-macro", +] + +[[package]] +name = "light-program-test" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e85916a9da34a44971e1a30badaf04cb75213fbfa9f61a139ea6ebd0f021bdde" +dependencies = [ + "anchor-lang", + "async-trait", + "base64 0.13.1", + "borsh 0.10.4", + "bs58", + "bytemuck", + "chrono", + "light-client", + "light-compressed-account", + "light-compressible", + "light-event", + "light-hasher", + "light-indexed-array", + "light-indexed-merkle-tree", + "light-instruction-decoder", + "light-merkle-tree-metadata", + "light-merkle-tree-reference", + "light-prover-client", + "light-sdk", + "light-sdk-types", + "light-token", + "light-token-interface", + "light-zero-copy", + "litesvm", + "log", + "num-bigint 0.4.6", + "num-traits", + "photon-api", + "rand 0.8.5", + "reqwest 0.12.28", + "serde", + "serde_json", + "solana-account", + "solana-banks-client", + "solana-compute-budget", + "solana-instruction", + "solana-pubkey", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction", + "solana-transaction-status", + "solana-transaction-status-client-types", + "spl-token-2022 7.0.0", + "tabled", + "tokio", +] + +[[package]] +name = "light-prover-client" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd2195f4573628a8aaca37504cde1b1903b8ed20e2706acbad875b7d41acbeab" +dependencies = [ + "ark-bn254 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "light-compressed-account", + "light-hasher", + "light-indexed-array", + "light-sparse-merkle-tree", + "num-bigint 0.4.6", + "num-traits", + "reqwest 0.11.27", + "serde", + "serde_json", + "solana-bn254", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "light-sdk" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f523c64a6fcdafe6df81d647560770529896f2707be8ffcf048d909b7e2b30" +dependencies = [ + "anchor-lang", + "bincode", + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account", + "light-compressible", + "light-hasher", + "light-macros", + "light-sdk-macros", + "light-sdk-types", + "light-zero-copy", + "num-bigint 0.4.6", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-instruction", + "solana-loader-v3-interface", + "solana-msg", + "solana-program", + "solana-program-error", + "solana-pubkey", + "solana-system-interface", + "solana-sysvar", + "thiserror 2.0.18", +] + +[[package]] +name = "light-sdk-macros" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d12bb13b84df21a4871dc0837aafc0b48464d3e9b17e2773c0719b6cc724c5" +dependencies = [ + "darling", + "light-hasher", + "light-sdk-types", + "proc-macro2", + "quote", + "solana-pubkey", + "syn 2.0.114", +] + +[[package]] +name = "light-sdk-types" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8153b27d057ded7b2b6bbd78c643e3f20bd9a9718ca1a8d4183169ccd812c3" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account", + "light-hasher", + "light-macros", + "solana-msg", + "thiserror 2.0.18", +] + +[[package]] +name = "light-sparse-merkle-tree" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4251e79b6c63f4946572dcfd7623680ad0f9e0efe1a761a944733333c5645063" +dependencies = [ + "light-hasher", + "light-indexed-array", + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.18", +] + +[[package]] +name = "light-token" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fd2e8ca6d7d70c77658010e1ae6ed6d4fe23e29054964b053f51e5c4676e49" +dependencies = [ + "anchor-lang", + "arrayvec", + "borsh 0.10.4", + "light-account-checks", + "light-batched-merkle-tree", + "light-compressed-account", + "light-compressible", + "light-macros", + "light-program-profiler", + "light-sdk", + "light-sdk-macros", + "light-sdk-types", + "light-token-interface", + "light-token-types", + "light-zero-copy", + "solana-account-info", + "solana-cpi", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "spl-pod", + "thiserror 2.0.18", +] + +[[package]] +name = "light-token-anchor-approve" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-burn" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-close" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-create-ata" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-create-mint" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-create-token-account" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-freeze" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-mint-to" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-revoke" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-thaw" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-transfer-checked" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-transfer-interface" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "light-token-types", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-interface" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46decebc2a13ec984e2ba7f1e691c0d46b9061875c6bdd12636b7c100a60e6c" +dependencies = [ + "aligned-sized", + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-array-map", + "light-compressed-account", + "light-compressible", + "light-hasher", + "light-macros", + "light-program-profiler", + "light-zero-copy", + "pinocchio", + "pinocchio-pubkey", + "solana-account-info", + "solana-pubkey", + "spl-pod", + "spl-token-2022 7.0.0", + "thiserror 2.0.18", + "tinyvec", + "zerocopy", +] + +[[package]] +name = "light-token-types" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "411481fe2e04b1241235c2572480c153c5669507e227f5e3327057b0d2ba5734" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account", + "light-macros", + "light-sdk-types", + "solana-msg", + "thiserror 2.0.18", +] + +[[package]] +name = "light-verifier" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecba4c14ac08b078a9d84033d628b12bb2577141f405140d506bacd392a830bc" +dependencies = [ + "groth16-solana", + "light-compressed-account", + "thiserror 2.0.18", +] + +[[package]] +name = "light-zero-copy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5621fb515e14af46148699c0b65334aabe230a1d2cbd06736ccc7a408c8a4af" +dependencies = [ + "light-zero-copy-derive", + "solana-program-error", + "zerocopy", +] + +[[package]] +name = "light-zero-copy-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41c46425e5c7ab5203ff5c86ae2615b169cca55f9283f5f60f5dd74143be6934" +dependencies = [ + "lazy_static", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "litesvm" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23bca37ac374948b348e29c74b324dc36f18bbbd1ccf80e2046d967521cbd143" +dependencies = [ + "agave-feature-set", + "agave-precompiles", + "agave-reserved-account-keys", + "ansi_term", + "bincode", + "indexmap 2.13.0", + "itertools 0.14.0", + "log", + "solana-account", + "solana-address-lookup-table-interface", + "solana-bpf-loader-program", + "solana-builtins", + "solana-clock", + "solana-compute-budget", + "solana-compute-budget-instruction", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee", + "solana-fee-structure", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", + "solana-keypair", + "solana-last-restart-slot", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-log-collector", + "solana-message", + "solana-native-token 3.0.0", + "solana-nonce", + "solana-nonce-account", + "solana-precompile-error", + "solana-program-error", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sha256-hasher", + "solana-signature", + "solana-signer", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-interface", + "solana-svm-callback", + "solana-svm-transaction", + "solana-system-interface", + "solana-system-program", + "solana-sysvar", + "solana-sysvar-id", + "solana-timings", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "solana-vote-program", + "thiserror 2.0.18", +] + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[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 = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.61.2", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "num" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" +dependencies = [ + "num-bigint 0.2.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[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", + "serde", +] + +[[package]] +name = "num-complex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" + +[[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.114", +] + +[[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-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-bigint 0.2.6", + "num-integer", + "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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-src" +version = "300.5.4+3.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror 1.0.69", +] + +[[package]] +name = "papergrid" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6978128c8b51d8f4080631ceb2302ab51e32cc6e8615f735ee2f83fd269ae3f1" +dependencies = [ + "bytecount", + "fnv", + "unicode-width", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "percentage" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" +dependencies = [ + "num", +] + +[[package]] +name = "photon-api" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e572dba0c255f5b8176f15b9e849330d915a8927804f7f9702d5bbbc70e4a1ad" +dependencies = [ + "reqwest 0.12.28", + "serde", + "serde_derive", + "serde_json", + "serde_with", + "url", + "uuid", +] + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pinocchio" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b971851087bc3699b001954ad02389d50c41405ece3548cbcafc88b3e20017a" + +[[package]] +name = "pinocchio-pubkey" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0225638cadcbebae8932cb7f49cb5da7c15c21beb19f048f05a5ca7d93f065" +dependencies = [ + "five8_const", + "pinocchio", + "sha2-const-stable", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[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 = "portable-atomic" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +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.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit 0.23.10+spec-1.0.0", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +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 = "qualifier_attr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls 0.23.36", + "socket2 0.6.2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash", + "rustls 0.23.36", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.6.2", + "tracing", + "windows-sys 0.60.2", +] + +[[package]] +name = "quote" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[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" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + +[[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_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[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.17", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[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 = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-rustls 0.24.2", + "hyper-tls 0.5.0", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.12", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.24.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.13", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.8.1", + "hyper-rustls 0.27.7", + "hyper-tls 0.6.0", + "hyper-util", + "js-sys", + "log", + "mime", + "mime_guess", + "native-tls", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.36", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.26.4", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 1.0.5", +] + +[[package]] +name = "reqwest-middleware" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" +dependencies = [ + "anyhow", + "async-trait", + "http 1.4.0", + "reqwest 0.12.28", + "serde", + "thiserror 1.0.69", + "tower-service", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.23.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki 0.103.9", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" + +[[package]] +name = "schannel" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.10.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.13.0", + "schemars 0.9.0", + "schemars 1.2.0", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2-const-stable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" + +[[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 = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "solana-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" +dependencies = [ + "bincode", + "serde", + "serde_bytes", + "serde_derive", + "solana-account-info", + "solana-clock", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-sysvar", +] + +[[package]] +name = "solana-account-decoder" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba71c97fa4d85ce4a1e0e79044ad0406c419382be598c800202903a7688ce71a" +dependencies = [ + "Inflector", + "base64 0.22.1", + "bincode", + "bs58", + "bv", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-config-program-client", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-instruction", + "solana-loader-v3-interface", + "solana-nonce", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-interface", + "solana-sysvar", + "solana-vote-interface", + "spl-generic-token", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "thiserror 2.0.18", + "zstd", +] + +[[package]] +name = "solana-account-decoder-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5519e8343325b707f17fbed54fcefb325131b692506d0af9e08a539d15e4f8cf" +dependencies = [ + "base64 0.22.1", + "bs58", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-pubkey", + "zstd", +] + +[[package]] +name = "solana-account-info" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" +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-banks-client" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68548570c38a021c724b5aa0112f45a54bdf7ff1b041a042848e034a95a96994" +dependencies = [ + "borsh 1.6.0", + "futures", + "solana-account", + "solana-banks-interface", + "solana-clock", + "solana-commitment-config", + "solana-hash", + "solana-message", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-signature", + "solana-sysvar", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "tarpc", + "thiserror 2.0.18", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-banks-interface" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6d90edc435bf488ef7abed4dcb1f94fa1970102cbabb25688f58417fd948286" +dependencies = [ + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-commitment-config", + "solana-hash", + "solana-message", + "solana-pubkey", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "tarpc", +] + +[[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 0.4.6", + "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-bn254" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4420f125118732833f36facf96a27e7b78314b2d642ba07fa9ffdacd8d79e243" +dependencies = [ + "ark-bn254 0.4.0", + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "bytemuck", + "solana-define-syscall", + "thiserror 2.0.18", +] + +[[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.6.0", +] + +[[package]] +name = "solana-bpf-loader-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aec57dcd80d0f6879956cad28854a6eebaed6b346ce56908ea01a9f36ab259" +dependencies = [ + "bincode", + "libsecp256k1", + "num-traits", + "qualifier_attr", + "scopeguard", + "solana-account", + "solana-account-info", + "solana-big-mod-exp", + "solana-bincode", + "solana-blake3-hasher", + "solana-bn254", + "solana-clock", + "solana-cpi", + "solana-curve25519", + "solana-hash", + "solana-instruction", + "solana-keccak-hasher", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-log-collector", + "solana-measure", + "solana-packet", + "solana-poseidon", + "solana-program-entrypoint", + "solana-program-runtime", + "solana-pubkey", + "solana-sbpf", + "solana-sdk-ids", + "solana-secp256k1-recover", + "solana-sha256-hasher", + "solana-stable-layout", + "solana-svm-feature-set", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", + "solana-timings", + "solana-transaction-context", + "solana-type-overrides", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-builtins" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d61a31b63b52b0d268cbcd56c76f50314867d7f8e07a0f2c62ee7c9886e07b2" +dependencies = [ + "agave-feature-set", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-hash", + "solana-loader-v4-program", + "solana-program-runtime", + "solana-pubkey", + "solana-sdk-ids", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", + "solana-zk-elgamal-proof-program", + "solana-zk-token-proof-program", +] + +[[package]] +name = "solana-builtins-default-costs" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ca69a299a6c969b18ea381a02b40c9e4dda04b2af0d15a007c1184c82163bbb" +dependencies = [ + "agave-feature-set", + "ahash", + "log", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-loader-v4-program", + "solana-pubkey", + "solana-sdk-ids", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", +] + +[[package]] +name = "solana-client-traits" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" +dependencies = [ + "solana-account", + "solana-commitment-config", + "solana-epoch-info", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-pubkey", + "solana-signature", + "solana-signer", + "solana-system-interface", + "solana-transaction", + "solana-transaction-error", +] + +[[package]] +name = "solana-clock" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-cluster-type" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" +dependencies = [ + "serde", + "serde_derive", + "solana-hash", +] + +[[package]] +name = "solana-commitment-config" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-compute-budget" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f4fc63bc2276a1618ca0bfc609da7448534ecb43a1cb387cdf9eaa2dc7bc272" +dependencies = [ + "solana-fee-structure", + "solana-program-runtime", +] + +[[package]] +name = "solana-compute-budget-instruction" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "503d94430f6d3c5ac1e1fa6a342c1c714d5b03c800999e7b6cf235298f0b5341" +dependencies = [ + "agave-feature-set", + "log", + "solana-borsh", + "solana-builtins-default-costs", + "solana-compute-budget", + "solana-compute-budget-interface", + "solana-instruction", + "solana-packet", + "solana-pubkey", + "solana-sdk-ids", + "solana-svm-transaction", + "solana-transaction-error", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-compute-budget-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8432d2c4c22d0499aa06d62e4f7e333f81777b3d7c96050ae9e5cb71a8c3aee4" +dependencies = [ + "borsh 1.6.0", + "serde", + "serde_derive", + "solana-instruction", + "solana-sdk-ids", +] + +[[package]] +name = "solana-compute-budget-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "072b02beed1862c6b7b7a8a699379594c4470a9371c711856a0a3c266dcf57e5" +dependencies = [ + "solana-program-runtime", +] + +[[package]] +name = "solana-config-program-client" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53aceac36f105fd4922e29b4f0c1f785b69d7b3e7e387e384b8985c8e0c3595e" +dependencies = [ + "bincode", + "borsh 0.10.4", + "kaigan", + "serde", + "solana-program", +] + +[[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.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae4261b9a8613d10e77ac831a8fa60b6fa52b9b103df46d641deff9f9812a23" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "solana-define-syscall", + "subtle", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-decode-error" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-define-syscall" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" + +[[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-ed25519-program" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "ed25519-dalek", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", +] + +[[package]] +name = "solana-epoch-info" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" +dependencies = [ + "serde", + "serde_derive", +] + +[[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-rewards-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" +dependencies = [ + "siphasher", + "solana-hash", + "solana-pubkey", +] + +[[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.18", +] + +[[package]] +name = "solana-feature-gate-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" +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-feature-set" +version = "2.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93b93971e289d6425f88e6e3cb6668c4b05df78b3c518c249be55ced8efd6b6d" +dependencies = [ + "ahash", + "lazy_static", + "solana-epoch-schedule", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-fee" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16beda37597046b1edd1cea6fa7caaed033c091f99ec783fe59c82828bc2adb8" +dependencies = [ + "agave-feature-set", + "solana-fee-structure", + "solana-svm-transaction", +] + +[[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-fee-structure" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33adf673581c38e810bf618f745bf31b683a0a4a4377682e6aaac5d9a058dd4e" +dependencies = [ + "serde", + "serde_derive", + "solana-message", + "solana-native-token 2.3.0", +] + +[[package]] +name = "solana-genesis-config" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3725085d47b96d37fef07a29d78d2787fc89a0b9004c66eed7753d1e554989f" +dependencies = [ + "bincode", + "chrono", + "memmap2", + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-cluster-type", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash", + "solana-inflation", + "solana-keypair", + "solana-logger", + "solana-poh-config", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sha256-hasher", + "solana-shred-version", + "solana-signer", + "solana-time-utils", +] + +[[package]] +name = "solana-hard-forks" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-hash" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" +dependencies = [ + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "five8", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-sanitize", + "wasm-bindgen", +] + +[[package]] +name = "solana-inflation" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-instruction" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab5682934bd1f65f8d2c16f21cb532526fcc1a09f796e2cacdb091eee5774ad" +dependencies = [ + "bincode", + "borsh 1.6.0", + "getrandom 0.2.17", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "serde_json", + "solana-define-syscall", + "solana-pubkey", + "wasm-bindgen", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" +dependencies = [ + "bitflags 2.10.0", + "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-keypair" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd3f04aa1a05c535e93e121a95f66e7dcccf57e007282e8255535d24bf1e98bb" +dependencies = [ + "ed25519-dalek", + "ed25519-dalek-bip32", + "five8", + "rand 0.7.3", + "solana-derivation-path", + "solana-pubkey", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "wasm-bindgen", +] + +[[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 = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" +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-loader-v4-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ab01855d851fa2fb6034b0d48de33d77d5c5f5fb4b0353d8e4a934cc03d48a" +dependencies = [ + "log", + "qualifier_attr", + "solana-account", + "solana-bincode", + "solana-bpf-loader-program", + "solana-instruction", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-log-collector", + "solana-measure", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-sbpf", + "solana-sdk-ids", + "solana-transaction-context", + "solana-type-overrides", +] + +[[package]] +name = "solana-log-collector" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d945b1cf5bf7cbd6f5b78795beda7376370c827640df43bb2a1c17b492dc106" +dependencies = [ + "log", +] + +[[package]] +name = "solana-logger" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8e777ec1afd733939b532a42492d888ec7c88d8b4127a5d867eb45c6eb5cd5" +dependencies = [ + "env_logger", + "lazy_static", + "libc", + "log", + "signal-hook", +] + +[[package]] +name = "solana-measure" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11dcd67cd2ae6065e494b64e861e0498d046d95a61cbbf1ae3d58be1ea0f42ed" + +[[package]] +name = "solana-message" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" +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-metrics" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0375159d8460f423d39e5103dcff6e07796a5ec1850ee1fcfacfd2482a8f34b5" +dependencies = [ + "crossbeam-channel", + "gethostname", + "log", + "reqwest 0.12.28", + "solana-cluster-type", + "solana-sha256-hasher", + "solana-time-utils", + "thiserror 2.0.18", +] + +[[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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" + +[[package]] +name = "solana-native-token" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" + +[[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-nonce-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" +dependencies = [ + "solana-account", + "solana-hash", + "solana-nonce", + "solana-sdk-ids", +] + +[[package]] +name = "solana-nostd-keccak" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8ced70920435b1baa58f76e6f84bbc1110ddd1d6161ec76b6d731ae8431e9c4" +dependencies = [ + "sha3", +] + +[[package]] +name = "solana-offchain-message" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" +dependencies = [ + "num_enum", + "solana-hash", + "solana-packet", + "solana-pubkey", + "solana-sanitize", + "solana-sha256-hasher", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-packet" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "004f2d2daf407b3ec1a1ca5ec34b3ccdfd6866dd2d3c7d0715004a96e4b6d127" +dependencies = [ + "bincode", + "bitflags 2.10.0", + "cfg_eval", + "serde", + "serde_derive", + "serde_with", +] + +[[package]] +name = "solana-poh-config" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-poseidon" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbac4eb90016eeb1d37fa36e592d3a64421510c49666f81020736611c319faff" +dependencies = [ + "ark-bn254 0.4.0", + "light-poseidon 0.2.0", + "solana-define-syscall", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-precompile-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d87b2c1f5de77dfe2b175ee8dd318d196aaca4d0f66f02842f80c852811f9f8" +dependencies = [ + "num-traits", + "solana-decode-error", +] + +[[package]] +name = "solana-precompiles" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36e92768a57c652edb0f5d1b30a7d0bc64192139c517967c18600debe9ae3832" +dependencies = [ + "lazy_static", + "solana-ed25519-program", + "solana-feature-set", + "solana-message", + "solana-precompile-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "solana-presigner" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" +dependencies = [ + "solana-pubkey", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-program" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" +dependencies = [ + "bincode", + "blake3", + "borsh 0.10.4", + "borsh 1.6.0", + "bs58", + "bytemuck", + "console_error_panic_hook", + "console_log", + "getrandom 0.2.17", + "lazy_static", + "log", + "memoffset", + "num-bigint 0.4.6", + "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 2.3.0", + "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.18", + "wasm-bindgen", +] + +[[package]] +name = "solana-program-entrypoint" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" +dependencies = [ + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", +] + +[[package]] +name = "solana-program-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" +dependencies = [ + "borsh 1.6.0", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-pubkey", +] + +[[package]] +name = "solana-program-memory" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" +dependencies = [ + "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-program-runtime" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5653001e07b657c9de6f0417cf9add1cf4325903732c480d415655e10cc86704" +dependencies = [ + "base64 0.22.1", + "bincode", + "enum-iterator", + "itertools 0.12.1", + "log", + "percentage", + "rand 0.8.5", + "serde", + "solana-account", + "solana-clock", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-structure", + "solana-hash", + "solana-instruction", + "solana-last-restart-slot", + "solana-log-collector", + "solana-measure", + "solana-metrics", + "solana-program-entrypoint", + "solana-pubkey", + "solana-rent", + "solana-sbpf", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-stable-layout", + "solana-svm-callback", + "solana-svm-feature-set", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", + "solana-timings", + "solana-transaction-context", + "solana-type-overrides", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-pubkey" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" +dependencies = [ + "borsh 0.10.4", + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "five8", + "five8_const", + "getrandom 0.2.17", + "js-sys", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-decode-error", + "solana-define-syscall", + "solana-sanitize", + "solana-sha256-hasher", + "wasm-bindgen", +] + +[[package]] +name = "solana-quic-definitions" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf0d4d5b049eb1d0c35f7b18f305a27c8986fc5c0c9b383e97adaa35334379e" +dependencies = [ + "solana-keypair", +] + +[[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-rent-collector" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "127e6dfa51e8c8ae3aa646d8b2672bc4ac901972a338a9e1cd249e030564fb9d" +dependencies = [ + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-epoch-schedule", + "solana-genesis-config", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", +] + +[[package]] +name = "solana-rent-debits" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" +dependencies = [ + "solana-pubkey", + "solana-reward-info", +] + +[[package]] +name = "solana-reserved-account-keys" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4b22ea19ca2a3f28af7cd047c914abf833486bf7a7c4a10fc652fff09b385b1" +dependencies = [ + "lazy_static", + "solana-feature-set", + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "solana-reward-info" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-rpc-client" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8d3161ac0918178e674c1f7f1bfac40de3e7ed0383bd65747d63113c156eaeb" +dependencies = [ + "async-trait", + "base64 0.22.1", + "bincode", + "bs58", + "futures", + "indicatif", + "log", + "reqwest 0.12.28", + "reqwest-middleware", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-clock", + "solana-commitment-config", + "solana-epoch-info", + "solana-epoch-schedule", + "solana-feature-gate-interface", + "solana-hash", + "solana-instruction", + "solana-message", + "solana-pubkey", + "solana-rpc-client-api", + "solana-signature", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-version", + "solana-vote-interface", + "tokio", +] + +[[package]] +name = "solana-rpc-client-api" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dbc138685c79d88a766a8fd825057a74ea7a21e1dd7f8de275ada899540fff7" +dependencies = [ + "anyhow", + "jsonrpc-core", + "reqwest 0.12.28", + "reqwest-middleware", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder-client-types", + "solana-clock", + "solana-rpc-client-types", + "solana-signer", + "solana-transaction-error", + "solana-transaction-status-client-types", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-rpc-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea428a81729255d895ea47fba9b30fd4dacbfe571a080448121bd0592751676" +dependencies = [ + "base64 0.22.1", + "bs58", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-clock", + "solana-commitment-config", + "solana-fee-calculator", + "solana-inflation", + "solana-pubkey", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-version", + "spl-generic-token", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-sanitize" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" + +[[package]] +name = "solana-sbpf" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "474a2d95dc819898ded08d24f29642d02189d3e1497bbb442a92a3997b7eb55f" +dependencies = [ + "byteorder", + "combine", + "hash32", + "libc", + "log", + "rand 0.8.5", + "rustc-demangle", + "thiserror 2.0.18", + "winapi", +] + +[[package]] +name = "solana-sdk" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc0e4a7635b902791c44b6581bfb82f3ada32c5bc0929a64f39fe4bb384c86a" +dependencies = [ + "bincode", + "bs58", + "getrandom 0.1.16", + "js-sys", + "serde", + "serde_json", + "solana-account", + "solana-bn254", + "solana-client-traits", + "solana-cluster-type", + "solana-commitment-config", + "solana-compute-budget-interface", + "solana-decode-error", + "solana-derivation-path", + "solana-ed25519-program", + "solana-epoch-info", + "solana-epoch-rewards-hasher", + "solana-feature-set", + "solana-fee-structure", + "solana-genesis-config", + "solana-hard-forks", + "solana-inflation", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-native-token 2.3.0", + "solana-nonce-account", + "solana-offchain-message", + "solana-packet", + "solana-poh-config", + "solana-precompile-error", + "solana-precompiles", + "solana-presigner", + "solana-program", + "solana-program-memory", + "solana-pubkey", + "solana-quic-definitions", + "solana-rent-collector", + "solana-rent-debits", + "solana-reserved-account-keys", + "solana-reward-info", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-secp256k1-program", + "solana-secp256k1-recover", + "solana-secp256r1-program", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-serde", + "solana-serde-varint", + "solana-short-vec", + "solana-shred-version", + "solana-signature", + "solana-signer", + "solana-system-transaction", + "solana-time-utils", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "solana-validator-exit", + "thiserror 2.0.18", + "wasm-bindgen", +] + +[[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.114", +] + +[[package]] +name = "solana-secp256k1-program" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f19833e4bc21558fe9ec61f239553abe7d05224347b57d65c2218aeeb82d6149" +dependencies = [ + "bincode", + "digest 0.10.7", + "libsecp256k1", + "serde", + "serde_derive", + "sha3", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", + "solana-signature", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" +dependencies = [ + "borsh 1.6.0", + "libsecp256k1", + "solana-define-syscall", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-secp256r1-program" +version = "2.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce0ae46da3071a900f02d367d99b2f3058fe2e90c5062ac50c4f20cfedad8f0f" +dependencies = [ + "bytemuck", + "openssl", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "156bb61a96c605fa124e052d630dba2f6fb57e08c7d15b757e1e958b3ed7b3fe" +dependencies = [ + "hashbrown 0.15.2", +] + +[[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 0.12.1", + "pbkdf2", + "sha2 0.10.9", +] + +[[package]] +name = "solana-serde" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serde-varint" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" +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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" +dependencies = [ + "sha2 0.10.9", + "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-shred-version" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" +dependencies = [ + "solana-hard-forks", + "solana-hash", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-signature" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" +dependencies = [ + "ed25519-dalek", + "five8", + "rand 0.8.5", + "serde", + "serde-big-array", + "serde_derive", + "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.6.0", + "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-stake-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "500e9b9d11573f12de91e94f9c4459882cd5ffc692776af49b610d6fcc0b167f" +dependencies = [ + "agave-feature-set", + "bincode", + "log", + "solana-account", + "solana-bincode", + "solana-clock", + "solana-config-program-client", + "solana-genesis-config", + "solana-instruction", + "solana-log-collector", + "solana-native-token 2.3.0", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-stake-interface", + "solana-sysvar", + "solana-transaction-context", + "solana-type-overrides", + "solana-vote-interface", +] + +[[package]] +name = "solana-svm-callback" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cef9f7d5cfb5d375081a6c8ad712a6f0e055a15890081f845acf55d8254a7a2" +dependencies = [ + "solana-account", + "solana-precompile-error", + "solana-pubkey", +] + +[[package]] +name = "solana-svm-feature-set" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f24b836eb4d74ec255217bdbe0f24f64a07adeac31aca61f334f91cd4a3b1d5" + +[[package]] +name = "solana-svm-transaction" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab717b9539375ebb088872c6c87d1d8832d19f30f154ecc530154d23f60a6f0c" +dependencies = [ + "solana-hash", + "solana-message", + "solana-pubkey", + "solana-sdk-ids", + "solana-signature", + "solana-transaction", +] + +[[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-system-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23ca36cef39aea7761be58d4108a56a2e27042fb1e913355fdb142a05fc7eab7" +dependencies = [ + "bincode", + "log", + "serde", + "serde_derive", + "solana-account", + "solana-bincode", + "solana-fee-calculator", + "solana-instruction", + "solana-log-collector", + "solana-nonce", + "solana-nonce-account", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "solana-transaction-context", + "solana-type-overrides", +] + +[[package]] +name = "solana-system-transaction" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" +dependencies = [ + "solana-hash", + "solana-keypair", + "solana-message", + "solana-pubkey", + "solana-signer", + "solana-system-interface", + "solana-transaction", +] + +[[package]] +name = "solana-sysvar" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db" +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-time-utils" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" + +[[package]] +name = "solana-timings" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c49b842dfc53c1bf9007eaa6730296dea93b4fce73f457ce1080af43375c0d6" +dependencies = [ + "eager", + "enum-iterator", + "solana-pubkey", +] + +[[package]] +name = "solana-transaction" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80657d6088f721148f5d889c828ca60c7daeedac9a8679f9ec215e0c42bcbf41" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-bincode", + "solana-feature-set", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-precompiles", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-signature", + "solana-signer", + "solana-system-interface", + "solana-transaction-error", + "wasm-bindgen", +] + +[[package]] +name = "solana-transaction-context" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a312304361987a85b2ef2293920558e6612876a639dd1309daf6d0d59ef2fe" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account", + "solana-instruction", + "solana-instructions-sysvar", + "solana-pubkey", + "solana-rent", + "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 = [ + "serde", + "serde_derive", + "solana-instruction", + "solana-sanitize", +] + +[[package]] +name = "solana-transaction-status" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135f92f4192cc68900c665becf97fc0a6500ae5a67ff347bf2cbc20ecfefa821" +dependencies = [ + "Inflector", + "agave-reserved-account-keys", + "base64 0.22.1", + "bincode", + "borsh 1.6.0", + "bs58", + "log", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-hash", + "solana-instruction", + "solana-loader-v2-interface", + "solana-loader-v3-interface", + "solana-message", + "solana-program-option", + "solana-pubkey", + "solana-reward-info", + "solana-sdk-ids", + "solana-signature", + "solana-stake-interface", + "solana-system-interface", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-vote-interface", + "spl-associated-token-account", + "spl-memo", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-transaction-status-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f1d7c2387c35850848212244d2b225847666cb52d3bd59a5c409d2c300303d" +dependencies = [ + "base64 0.22.1", + "bincode", + "bs58", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder-client-types", + "solana-commitment-config", + "solana-message", + "solana-reward-info", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-type-overrides" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d80c44761eb398a157d809a04840865c347e1831ae3859b6100c0ee457bc1a" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "solana-validator-exit" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" + +[[package]] +name = "solana-version" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3324d46c7f7b7f5d34bf7dc71a2883bdc072c7b28ca81d0b2167ecec4cf8da9f" +dependencies = [ + "agave-feature-set", + "rand 0.8.5", + "semver", + "serde", + "serde_derive", + "solana-sanitize", + "solana-serde-varint", +] + +[[package]] +name = "solana-vote-interface" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3" +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-vote-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "908d0e72c8b83e48762eb3e8c9114497cf4b1d66e506e360c46aba9308e71299" +dependencies = [ + "agave-feature-set", + "bincode", + "log", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "solana-account", + "solana-bincode", + "solana-clock", + "solana-epoch-schedule", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-metrics", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-signer", + "solana-slot-hashes", + "solana-transaction", + "solana-transaction-context", + "solana-vote-interface", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-zk-elgamal-proof-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70cea14481d8efede6b115a2581f27bc7c6fdfba0752c20398456c3ac1245fc4" +dependencies = [ + "agave-feature-set", + "bytemuck", + "num-derive", + "num-traits", + "solana-instruction", + "solana-log-collector", + "solana-program-runtime", + "solana-sdk-ids", + "solana-zk-sdk", +] + +[[package]] +name = "solana-zk-sdk" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b9fc6ec37d16d0dccff708ed1dd6ea9ba61796700c3bb7c3b401973f10f63b" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "itertools 0.12.1", + "js-sys", + "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.18", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "solana-zk-token-proof-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579752ad6ea2a671995f13c763bf28288c3c895cb857a518cc4ebab93c9a8dde" +dependencies = [ + "agave-feature-set", + "bytemuck", + "num-derive", + "num-traits", + "solana-instruction", + "solana-log-collector", + "solana-program-runtime", + "solana-sdk-ids", + "solana-zk-token-sdk", +] + +[[package]] +name = "solana-zk-token-sdk" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5055e5df94abd5badf4f947681c893375bdb6f8f543c05d2a7ab9647a6a9d205" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "itertools 0.12.1", + "merlin", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "serde_json", + "sha3", + "solana-curve25519", + "solana-derivation-path", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "subtle", + "thiserror 2.0.18", + "zeroize", +] + +[[package]] +name = "spl-associated-token-account" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae179d4a26b3c7a20c839898e6aed84cb4477adf108a366c95532f058aea041b" +dependencies = [ + "borsh 1.6.0", + "num-derive", + "num-traits", + "solana-program", + "spl-associated-token-account-client", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "thiserror 2.0.18", +] + +[[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.114", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.114", + "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 0.2.1", +] + +[[package]] +name = "spl-elgamal-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65edfeed09cd4231e595616aa96022214f9c9d2be02dea62c2b30d5695a6833a" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-cpi", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "solana-zk-sdk", + "spl-pod", + "spl-token-confidential-transfer-proof-extraction 0.3.0", +] + +[[package]] +name = "spl-generic-token" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741a62a566d97c58d33f9ed32337ceedd4e35109a686e31b1866c5dfa56abddc" +dependencies = [ + "bytemuck", + "solana-pubkey", +] + +[[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.6.0", + "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.18", +] + +[[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 0.4.1", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-program-error" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" +dependencies = [ + "num-derive", + "num-traits", + "solana-decode-error", + "solana-msg", + "solana-program-error", + "spl-program-error-derive 0.5.0", + "thiserror 2.0.18", +] + +[[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.9", + "syn 2.0.114", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.114", +] + +[[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 0.6.0", + "spl-type-length-value 0.7.0", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" +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 0.7.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.18", +] + +[[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" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sysvar", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-2022" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9048b26b0df0290f929ff91317c83db28b3ef99af2b3493dd35baa146774924c" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-program", + "solana-security-txt", + "solana-zk-sdk", + "spl-elgamal-registry 0.1.1", + "spl-memo", + "spl-pod", + "spl-token 7.0.0", + "spl-token-confidential-transfer-ciphertext-arithmetic 0.2.1", + "spl-token-confidential-transfer-proof-extraction 0.2.1", + "spl-token-confidential-transfer-proof-generation 0.3.0", + "spl-token-group-interface 0.5.0", + "spl-token-metadata-interface 0.6.0", + "spl-transfer-hook-interface 0.9.0", + "spl-type-length-value 0.7.0", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-2022" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f0dfbb079eebaee55e793e92ca5f433744f4b71ee04880bfd6beefba5973e5" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-native-token 2.3.0", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-security-txt", + "solana-system-interface", + "solana-sysvar", + "solana-zk-sdk", + "spl-elgamal-registry 0.2.0", + "spl-memo", + "spl-pod", + "spl-token 8.0.0", + "spl-token-confidential-transfer-ciphertext-arithmetic 0.3.1", + "spl-token-confidential-transfer-proof-extraction 0.3.0", + "spl-token-confidential-transfer-proof-generation 0.4.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "spl-transfer-hook-interface 0.10.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-2022-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62d7ae2ee6b856f8ddcbdc3b3a9f4d2141582bbe150f93e5298ee97e0251fa04" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "spl-token-confidential-transfer-proof-extraction 0.4.1", + "spl-token-confidential-transfer-proof-generation 0.4.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.18", +] + +[[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-ciphertext-arithmetic" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cddd52bfc0f1c677b41493dafa3f2dbbb4b47cf0990f08905429e19dc8289b35" +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.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe2629860ff04c17bafa9ba4bed8850a404ecac81074113e1f840dbd0ebb7bd6" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-curve25519", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512c85bdbbb4cbcc2038849a9e164c958b16541f252b53ea1a3933191c0a4a1a" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-curve25519", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" +dependencies = [ + "curve25519-dalek 4.1.3", + "solana-zk-sdk", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" +dependencies = [ + "curve25519-dalek 4.1.3", + "solana-zk-sdk", + "thiserror 2.0.18", +] + +[[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-group-interface" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.18", +] + +[[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.6.0", + "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 0.7.0", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" +dependencies = [ + "borsh 1.6.0", + "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 0.8.0", + "thiserror 2.0.18", +] + +[[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 0.6.0", + "spl-tlv-account-resolution 0.9.0", + "spl-type-length-value 0.7.0", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-transfer-hook-interface" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" +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 0.7.0", + "spl-tlv-account-resolution 0.10.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.18", +] + +[[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 = "spl-type-length-value" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-account-info", + "solana-decode-error", + "solana-msg", + "solana-program-error", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.18", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[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.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.10.0", + "core-foundation", + "system-configuration-sys 0.6.0", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tabled" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e39a2ee1fbcd360805a771e1b300f78cc88fec7b8d3e2f71cd37bbf23e725c7d" +dependencies = [ + "papergrid", + "tabled_derive", + "testing_table", +] + +[[package]] +name = "tabled_derive" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea5d1b13ca6cff1f9231ffd62f15eefd72543dab5e468735f1a456728a02846" +dependencies = [ + "heck 0.5.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tarpc" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" +dependencies = [ + "anyhow", + "fnv", + "futures", + "humantime", + "opentelemetry", + "pin-project", + "rand 0.8.5", + "serde", + "static_assertions", + "tarpc-plugins", + "thiserror 1.0.69", + "tokio", + "tokio-serde", + "tokio-util 0.6.10", + "tracing", + "tracing-opentelemetry", +] + +[[package]] +name = "tarpc-plugins" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tempfile" +version = "3.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" +dependencies = [ + "fastrand", + "getrandom 0.3.4", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "testing_table" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f8daae29995a24f65619e19d8d31dea5b389f3d853d8bf297bbf607cd0014cc" +dependencies = [ + "unicode-width", +] + +[[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.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[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.114", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +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 = "tokio" +version = "1.49.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls 0.23.36", + "tokio", +] + +[[package]] +name = "tokio-serde" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" +dependencies = [ + "bincode", + "bytes", + "educe 0.4.23", + "futures-core", + "futures-sink", + "pin-project", + "serde", + "serde_json", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "slab", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[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.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap 2.13.0", + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.10+spec-1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +dependencies = [ + "indexmap 2.13.0", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "async-compression", + "bitflags 2.10.0", + "bytes", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "iri-string", + "pin-project-lite", + "tokio", + "tokio-util 0.7.18", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[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 = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[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 = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" +dependencies = [ + "getrandom 0.3.4", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[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.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +dependencies = [ + "cfg-if", + "futures-util", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.114", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "webpki-roots" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[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_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[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_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zmij" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439" + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/program-examples/anchor/anchor-programs-sdk/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/Cargo.toml new file mode 100644 index 0000000..a2559a6 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/Cargo.toml @@ -0,0 +1,41 @@ +[workspace] +members = [ + "approve", + "burn", + "close", + "create-ata", + "create-mint", + "create-token-account", + "freeze", + "mint-to", + "revoke", + "thaw", + "transfer-interface", + "transfer-checked", +] +resolver = "2" + +[profile.release] +lto = "fat" +codegen-units = 1 +panic = "abort" +overflow-checks = true + +[profile.release.build-override] +opt-level = 3 +incremental = false +codegen-units = 1 + +[workspace.dependencies] +blake3 = { version = "=1.8.2", default-features = false } +anchor-lang = "0.31.1" +borsh = "0.10.4" +tokio = "1.43.0" +solana-sdk = "2.2" +solana-program = "2.2" +light-sdk = { version = "0.19.0", features = ["anchor", "idl-build", "v2", "anchor-discriminator", "cpi-context"] } +light-token = { version = "0.4.0", features = ["anchor"] } +light-token-types = { version = "0.4.0", features = ["anchor"] } +light-token-interface = "0.3.0" +light-program-test = "0.19.0" +light-client = { version = "0.19.0", features = ["v2", "anchor"] } diff --git a/program-examples/anchor/anchor-programs-sdk/README.md b/program-examples/anchor/anchor-programs-sdk/README.md new file mode 100644 index 0000000..65c55be --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/README.md @@ -0,0 +1,64 @@ +# Light Token Anchor Programs (SDK approach) + +Anchor program examples using explicit CPI calls to the Light Token Program. + +## Programs + +All 12 programs demonstrating Light Token CPI integration: + +| Program | Description | +|---------|-------------| +| [approve](programs/approve/src/lib.rs) | Approve delegate for token account | +| [burn](programs/burn/src/lib.rs) | Burn tokens from token account | +| [close](programs/close/src/lib.rs) | Close token account and reclaim rent | +| [create-ata](programs/create-ata/src/lib.rs) | Create compressed associated token account | +| [create-mint](programs/create-mint/src/lib.rs) | Create compressed mint | +| [create-token-account](programs/create-token-account/src/lib.rs) | Create compressed token account (vault pattern) | +| [freeze](programs/freeze/src/lib.rs) | Freeze token account | +| [mint-to](programs/mint-to/src/lib.rs) | Mint tokens to destination | +| [revoke](programs/revoke/src/lib.rs) | Revoke delegate from token account | +| [thaw](programs/thaw/src/lib.rs) | Thaw frozen token account | +| [transfer-checked](programs/transfer-checked/src/lib.rs) | Transfer tokens with mint validation | +| [transfer-interface](programs/transfer-interface/src/lib.rs) | Transfer tokens with decimals handling | + +## Pattern + +These programs use explicit CPI structs from `light_token::instruction`: + +```rust +use light_token::instruction::MintToCpi; + +pub fn mint_to(ctx: Context, amount: u64) -> Result<()> { + MintToCpi { + mint: ctx.accounts.mint.to_account_info(), + destination: ctx.accounts.destination.to_account_info(), + amount, + authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + max_top_up: None, + fee_payer: None, + } + .invoke()?; + Ok(()) +} +``` + +## Account validation + +Accounts are validated by the light-token program during CPI. The pattern `/// CHECK: Validated by light-token CPI` indicates the calling program delegates validation to the CPI target. + +## Build + +```bash +anchor build +``` + +## Test + +```bash +cargo test-sbf +``` + +## Note on close program + +The `close` program uses `CloseAccountCpi` which requires an explicit `token_program` account, unlike other CPI builders that handle program routing internally. diff --git a/program-examples/anchor/anchor-programs-sdk/approve/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/approve/Cargo.toml new file mode 100644 index 0000000..08c1e58 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/approve/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-approve" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_approve" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-programs-sdk/approve/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/approve/src/lib.rs new file mode 100644 index 0000000..f7bbbed --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/approve/src/lib.rs @@ -0,0 +1,34 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::ApproveCpi; + +declare_id!("37XmzKqSG2VD1ZBvzyfbt1HN1mT1bqVAmfzX2ziB3KT1"); + +#[program] +pub mod light_token_anchor_approve { + use super::*; + + pub fn approve(ctx: Context, amount: u64) -> Result<()> { + ApproveCpi { + token_account: ctx.accounts.token_account.to_account_info(), + delegate: ctx.accounts.delegate.to_account_info(), + owner: ctx.accounts.owner.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + amount, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct ApproveAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub token_account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub delegate: AccountInfo<'info>, + pub owner: Signer<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/anchor-programs-sdk/approve/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/approve/tests/test.rs new file mode 100644 index 0000000..b71f79e --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/approve/tests/test.rs @@ -0,0 +1,120 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_approve::{instruction::Approve, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_approve() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_approve", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens first + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to approve delegate + let delegate = Keypair::new(); + let approve_amount = 500_000u64; + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(ata, false), + AccountMeta::new_readonly(delegate.pubkey(), false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: Approve { amount: approve_amount }.data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/anchor-programs-sdk/burn/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/burn/Cargo.toml new file mode 100644 index 0000000..9315f14 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/burn/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-burn" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_burn" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-programs-sdk/burn/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/burn/src/lib.rs new file mode 100644 index 0000000..0ae1a8c --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/burn/src/lib.rs @@ -0,0 +1,37 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::BurnCpi; + +declare_id!("2TXVn8AqjfyeJvmFBD3kHJmh6fWkC4HNB5T76BmLKV5c"); + +#[program] +pub mod light_token_anchor_burn { + use super::*; + + pub fn burn(ctx: Context, amount: u64) -> Result<()> { + BurnCpi { + source: ctx.accounts.source.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + amount, + authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + max_top_up: None, + fee_payer: None, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct BurnAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub source: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub mint: AccountInfo<'info>, + pub authority: Signer<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/anchor-programs-sdk/burn/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/burn/tests/test.rs new file mode 100644 index 0000000..3d7359e --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/burn/tests/test.rs @@ -0,0 +1,118 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_burn::{instruction::Burn, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, + system_program, +}; + +#[tokio::test] +async fn test_burn() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_burn", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens first + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to burn tokens + let burn_amount = 250_000u64; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(ata, false), + AccountMeta::new(mint_pda, false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: Burn { amount: burn_amount }.data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/anchor-programs-sdk/close/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/close/Cargo.toml new file mode 100644 index 0000000..7cc0c13 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/close/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-close" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_close" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-programs-sdk/close/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/close/src/lib.rs new file mode 100644 index 0000000..ad2ab52 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/close/src/lib.rs @@ -0,0 +1,39 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::CloseAccountCpi; + +declare_id!("GXLCuNhnkRVp596eCdbNsZ9ua1ePbKbb344VKS7V3zQQ"); + +#[program] +pub mod light_token_anchor_close { + use super::*; + + pub fn close_account(ctx: Context) -> Result<()> { + CloseAccountCpi { + token_program: ctx.accounts.token_program.to_account_info(), + account: ctx.accounts.account.to_account_info(), + destination: ctx.accounts.destination.to_account_info(), + owner: ctx.accounts.owner.to_account_info(), + rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CloseAccountAccounts<'info> { + /// CHECK: Validated by light-token CPI + pub token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub owner: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, +} diff --git a/program-examples/anchor/anchor-programs-sdk/close/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/close/tests/test.rs new file mode 100644 index 0000000..7dd4fc2 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/close/tests/test.rs @@ -0,0 +1,104 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_close::{instruction::CloseAccount, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_close() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_close", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Create ATA (empty, no tokens) + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to close account + let rent_sponsor = rent_sponsor_pda(); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(ata, false), + AccountMeta::new(payer.pubkey(), false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new(rent_sponsor, false), + ], + data: CloseAccount {}.data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/anchor-programs-sdk/create-ata/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/create-ata/Cargo.toml new file mode 100644 index 0000000..9df7fd1 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/create-ata/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-create-ata" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_create_ata" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-programs-sdk/create-ata/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/create-ata/src/lib.rs new file mode 100644 index 0000000..8c0935d --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/create-ata/src/lib.rs @@ -0,0 +1,56 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::CreateAssociatedAccountCpi; + +declare_id!("35MukgdfpNUbPMhTmEk63ECV8vjgpNVFRH9nP8ovMN58"); + +#[program] +pub mod light_token_anchor_create_ata { + use super::*; + + pub fn create_ata(ctx: Context, bump: u8, idempotent: bool) -> Result<()> { + let cpi = CreateAssociatedAccountCpi { + payer: ctx.accounts.payer.to_account_info(), + owner: ctx.accounts.owner.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + ata: ctx.accounts.associated_token_account.to_account_info(), + bump, + }; + + if idempotent { + cpi.idempotent().rent_free( + ctx.accounts.compressible_config.to_account_info(), + ctx.accounts.rent_sponsor.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ) + } else { + cpi.rent_free( + ctx.accounts.compressible_config.to_account_info(), + ctx.accounts.rent_sponsor.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ) + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CreateAtaAccounts<'info> { + /// CHECK: Validated by light-token CPI + pub owner: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub associated_token_account: AccountInfo<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Validated by light-token CPI + pub compressible_config: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, +} diff --git a/program-examples/anchor/anchor-programs-sdk/create-ata/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/create-ata/tests/test.rs new file mode 100644 index 0000000..c50075d --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/create-ata/tests/test.rs @@ -0,0 +1,105 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_create_ata::{instruction::CreateAta, ID}; +use light_token::instruction::{ + CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, derive_token_ata, + find_mint_address, rent_sponsor_pda, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_create_ata() { + let config = + ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_ata", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_mint_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Derive ATA address and bump + let (ata, ata_bump) = derive_token_ata(&payer.pubkey(), &mint_pda); + + // Call the anchor program to create ATA + let compressible_config = config_pda(); + let rent_sponsor = rent_sponsor_pda(); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(payer.pubkey(), false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new(ata, false), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(compressible_config, false), + AccountMeta::new(rent_sponsor, false), + ], + data: CreateAta { + bump: ata_bump, + idempotent: false, + } + .data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/anchor-programs-sdk/create-mint/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/create-mint/Cargo.toml new file mode 100644 index 0000000..42d8ad7 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/create-mint/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-create-mint" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_create_mint" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-programs-sdk/create-mint/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/create-mint/src/lib.rs new file mode 100644 index 0000000..053fbff --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/create-mint/src/lib.rs @@ -0,0 +1,124 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::{CreateMintCpi, CreateMintParams, SystemAccountInfos}; +use light_token::{CompressedProof, ExtensionInstructionData, TokenMetadataInstructionData}; + +declare_id!("A1rJEoepgKYWZYZ8KVFpxgeeRGwBrU7xk8S39srjVkUX"); + +/// Token metadata parameters for creating a mint with metadata. +#[derive(AnchorSerialize, AnchorDeserialize, Clone)] +pub struct TokenMetadataParams { + pub name: Vec, + pub symbol: Vec, + pub uri: Vec, + pub update_authority: Option, +} + +#[program] +pub mod light_token_anchor_create_mint { + use super::*; + + pub fn create_mint( + ctx: Context, + decimals: u8, + address_merkle_tree_root_index: u16, + compression_address: [u8; 32], + proof: CompressedProof, + freeze_authority: Option, + bump: u8, + rent_payment: Option, + write_top_up: Option, + metadata: Option, + ) -> Result<()> { + let mint = light_token::instruction::find_mint_address(ctx.accounts.mint_seed.key).0; + + let extensions = metadata.map(|m| { + vec![ExtensionInstructionData::TokenMetadata( + TokenMetadataInstructionData { + update_authority: m + .update_authority + .map(|p| p.to_bytes().into()), + name: m.name, + symbol: m.symbol, + uri: m.uri, + additional_metadata: None, + }, + )] + }); + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index, + mint_authority: *ctx.accounts.authority.key, + proof, + compression_address, + mint, + bump, + freeze_authority, + extensions, + rent_payment: rent_payment.unwrap_or(16), // Default: ~24 hours + write_top_up: write_top_up.unwrap_or(766), // Default: ~3 hours per write + }; + + let system_accounts = SystemAccountInfos { + light_system_program: ctx.accounts.light_system_program.to_account_info(), + cpi_authority_pda: ctx.accounts.cpi_authority_pda.to_account_info(), + registered_program_pda: ctx.accounts.registered_program_pda.to_account_info(), + account_compression_authority: ctx.accounts.account_compression_authority.to_account_info(), + account_compression_program: ctx.accounts.account_compression_program.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + }; + + CreateMintCpi { + mint_seed: ctx.accounts.mint_seed.to_account_info(), + authority: ctx.accounts.authority.to_account_info(), + payer: ctx.accounts.payer.to_account_info(), + address_tree: ctx.accounts.address_tree.to_account_info(), + output_queue: ctx.accounts.output_queue.to_account_info(), + compressible_config: ctx.accounts.compressible_config.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), + system_accounts, + cpi_context: None, + cpi_context_account: None, + params, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CreateMintAccounts<'info> { + pub mint_seed: Signer<'info>, + /// CHECK: Validated by light-token CPI + pub authority: AccountInfo<'info>, + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub address_tree: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub output_queue: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub light_system_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub cpi_authority_pda: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub registered_program_pda: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub account_compression_authority: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub account_compression_program: AccountInfo<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Validated by light-token CPI - use light_token::token::config_pda() + pub compressible_config: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI - derived from find_mint_address(mint_seed) + #[account(mut)] + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI - use light_token::token::rent_sponsor_pda() + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, +} diff --git a/program-examples/anchor/anchor-programs-sdk/create-mint/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/create-mint/tests/test.rs new file mode 100644 index 0000000..90ae585 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/create-mint/tests/test.rs @@ -0,0 +1,95 @@ +use anchor_lang::InstructionData; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_create_mint::{instruction::CreateMint, ID}; +use light_token::instruction::{ + config_pda, derive_mint_compressed_address, find_mint_address, rent_sponsor_pda, + SystemAccounts, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_create_mint() { + let config = + ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_mint", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![light_client::indexer::AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let system_accounts = SystemAccounts::default(); + + // Call the anchor program to create mint + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(mint_seed.pubkey(), true), + AccountMeta::new_readonly(mint_authority, false), + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new(address_tree.tree, false), + AccountMeta::new(output_queue, false), + AccountMeta::new_readonly(system_accounts.light_system_program, false), + AccountMeta::new_readonly(system_accounts.cpi_authority_pda, false), + AccountMeta::new_readonly(system_accounts.registered_program_pda, false), + AccountMeta::new_readonly(system_accounts.account_compression_authority, false), + AccountMeta::new_readonly(system_accounts.account_compression_program, false), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(config_pda(), false), + AccountMeta::new(mint_pda, false), + AccountMeta::new(rent_sponsor_pda(), false), + ], + data: CreateMint { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + compression_address: compression_address.into(), + proof: rpc_result.proof.0.unwrap(), + freeze_authority: None, + bump, + rent_payment: Some(16), + write_top_up: Some(766), + metadata: None, + } + .data(), + }; + + let sig = rpc + .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let compressed_account = rpc + .get_compressed_account(compression_address, None) + .await + .unwrap() + .value; + + assert!(compressed_account.is_some(), "Compressed mint should exist"); + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/anchor-programs-sdk/create-token-account/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/create-token-account/Cargo.toml new file mode 100644 index 0000000..974dfe4 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/create-token-account/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-create-token-account" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_create_token_account" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-programs-sdk/create-token-account/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/create-token-account/src/lib.rs new file mode 100644 index 0000000..6d2e004 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/create-token-account/src/lib.rs @@ -0,0 +1,47 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::CreateTokenAccountCpi; + +declare_id!("zXK1CnWj4WFfFHCArxxr4sh3Qqx2p3oui8ahqpjArgS"); + +#[program] +pub mod light_token_anchor_create_token_account { + use super::*; + + pub fn create_token_account(ctx: Context, owner: Pubkey) -> Result<()> { + CreateTokenAccountCpi { + payer: ctx.accounts.payer.to_account_info(), + account: ctx.accounts.account.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + owner, + } + .rent_free( + ctx.accounts.compressible_config.to_account_info(), + ctx.accounts.rent_sponsor.to_account_info(), + ctx.accounts.system_program.to_account_info(), + &ctx.accounts.light_token_program.key(), + ) + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CreateTokenAccountAccounts<'info> { + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub compressible_config: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} diff --git a/program-examples/anchor/anchor-programs-sdk/create-token-account/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/create-token-account/tests/test.rs new file mode 100644 index 0000000..5355ba0 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/create-token-account/tests/test.rs @@ -0,0 +1,105 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_create_token_account::{instruction::CreateTokenAccount, ID}; +use light_token::instruction::{ + CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, + find_mint_address, rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + pubkey::Pubkey, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_create_token_account() { + let config = ProgramTestConfig::new_v2( + true, + Some(vec![("light_token_anchor_create_token_account", ID)]), + ); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + // Create a mint first + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_mint_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Create a token account + let token_account = Keypair::new(); + let owner = payer.pubkey(); + let compressible_config = config_pda(); + let rent_sponsor = rent_sponsor_pda(); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new(token_account.pubkey(), false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new_readonly(compressible_config, false), + AccountMeta::new(rent_sponsor, false), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + ], + data: CreateTokenAccount { owner }.data(), + }; + + let sig = rpc + .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/anchor-programs-sdk/freeze/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/freeze/Cargo.toml new file mode 100644 index 0000000..8d0c730 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/freeze/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-freeze" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_freeze" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-programs-sdk/freeze/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/freeze/src/lib.rs new file mode 100644 index 0000000..e3c2aac --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/freeze/src/lib.rs @@ -0,0 +1,31 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::FreezeCpi; + +declare_id!("JBMzMJX4sqCQfNVbosP2oqP1KZ5ZDWiwYTrupk687qXZ"); + +#[program] +pub mod light_token_anchor_freeze { + use super::*; + + pub fn freeze(ctx: Context) -> Result<()> { + FreezeCpi { + token_account: ctx.accounts.token_account.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + freeze_authority: ctx.accounts.freeze_authority.to_account_info(), + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct FreezeAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub token_account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + pub freeze_authority: Signer<'info>, +} diff --git a/program-examples/anchor/anchor-programs-sdk/freeze/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/freeze/tests/test.rs new file mode 100644 index 0000000..4916bac --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/freeze/tests/test.rs @@ -0,0 +1,117 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_freeze::{instruction::Freeze, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_freeze() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_freeze", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let freeze_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + // Create mint WITH freeze authority + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: Some(freeze_authority), + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: 1_000_000, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to freeze account + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(ata, false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new_readonly(freeze_authority, true), + ], + data: Freeze {}.data(), + }; + + let sig = rpc + .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/mint-to/Cargo.toml new file mode 100644 index 0000000..65d6646 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/mint-to/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-mint-to" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_mint_to" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/mint-to/src/lib.rs new file mode 100644 index 0000000..102b0e0 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/mint-to/src/lib.rs @@ -0,0 +1,37 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::MintToCpi; + +declare_id!("8bXEVmHLtAVqDLJp1dYWAZ61WQmqQKoTQ8LpPbRoUDCp"); + +#[program] +pub mod light_token_anchor_mint_to { + use super::*; + + pub fn mint_to(ctx: Context, amount: u64) -> Result<()> { + MintToCpi { + mint: ctx.accounts.mint.to_account_info(), + destination: ctx.accounts.destination.to_account_info(), + amount, + authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + max_top_up: None, + fee_payer: None, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct MintToAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub authority: Signer<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/mint-to/tests/test.rs new file mode 100644 index 0000000..e447648 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/mint-to/tests/test.rs @@ -0,0 +1,102 @@ +use anchor_lang::InstructionData; +use anchor_lang::system_program; +use light_client::indexer::{AddressWithTree, Indexer}; +use light_program_test::{LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_mint_to::{instruction::MintTo, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, derive_mint_compressed_address, + derive_token_ata, find_mint_address, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test(flavor = "multi_thread")] +async fn test_mint_to() { + let config = ProgramTestConfig::new_v2(false, Some(vec![("light_token_anchor_mint_to", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + let amount = 1_000_000u64; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(mint, false), + AccountMeta::new(ata, false), + AccountMeta::new_readonly(mint_authority, true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: MintTo { amount }.data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Verify the account exists and has data + let ata_data = rpc.get_account(ata).await.unwrap().unwrap(); + assert!(!ata_data.data.is_empty(), "ATA account should have data"); +} diff --git a/program-examples/anchor/anchor-programs-sdk/revoke/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/revoke/Cargo.toml new file mode 100644 index 0000000..3ca6657 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/revoke/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-revoke" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_revoke" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-programs-sdk/revoke/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/revoke/src/lib.rs new file mode 100644 index 0000000..fcdc58b --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/revoke/src/lib.rs @@ -0,0 +1,30 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::RevokeCpi; + +declare_id!("G3ph4MK5qaSdxYnfxToETg31AHEMMqVhPuMRgBhk38tQ"); + +#[program] +pub mod light_token_anchor_revoke { + use super::*; + + pub fn revoke(ctx: Context) -> Result<()> { + RevokeCpi { + token_account: ctx.accounts.token_account.to_account_info(), + owner: ctx.accounts.owner.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct RevokeAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub token_account: AccountInfo<'info>, + pub owner: Signer<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/anchor-programs-sdk/revoke/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/revoke/tests/test.rs new file mode 100644 index 0000000..56ffdf6 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/revoke/tests/test.rs @@ -0,0 +1,131 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_revoke::{instruction::Revoke, ID}; +use light_token::instruction::{ + Approve, CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_revoke() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_revoke", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Approve delegate first using SDK + let delegate = Keypair::new(); + let approve_ix = Approve { + token_account: ata, + delegate: delegate.pubkey(), + owner: payer.pubkey(), + amount: 500_000, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[approve_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to revoke delegation + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(ata, false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: Revoke {}.data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/anchor-programs-sdk/thaw/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/thaw/Cargo.toml new file mode 100644 index 0000000..d114a52 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/thaw/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-thaw" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_thaw" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-programs-sdk/thaw/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/thaw/src/lib.rs new file mode 100644 index 0000000..a178d45 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/thaw/src/lib.rs @@ -0,0 +1,31 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::ThawCpi; + +declare_id!("7j94EF5hSkDLf7R26bjrd8Qc6s3oLAQpcKiF3re8JYw9"); + +#[program] +pub mod light_token_anchor_thaw { + use super::*; + + pub fn thaw(ctx: Context) -> Result<()> { + ThawCpi { + token_account: ctx.accounts.token_account.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + freeze_authority: ctx.accounts.freeze_authority.to_account_info(), + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct ThawAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub token_account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + pub freeze_authority: Signer<'info>, +} diff --git a/program-examples/anchor/anchor-programs-sdk/thaw/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/thaw/tests/test.rs new file mode 100644 index 0000000..95ea32a --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/thaw/tests/test.rs @@ -0,0 +1,129 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_thaw::{instruction::Thaw, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, Freeze, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_thaw() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_thaw", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let freeze_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + // Create mint WITH freeze authority + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: Some(freeze_authority), + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: 1_000_000, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Freeze account first using SDK + let freeze_ix = Freeze { + token_account: ata, + mint: mint_pda, + freeze_authority, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[freeze_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to thaw account + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(ata, false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new_readonly(freeze_authority, true), + ], + data: Thaw {}.data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-checked/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/transfer-checked/Cargo.toml new file mode 100644 index 0000000..6d91664 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/transfer-checked/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-transfer-checked" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_transfer_checked" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-checked/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/transfer-checked/src/lib.rs new file mode 100644 index 0000000..958655b --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/transfer-checked/src/lib.rs @@ -0,0 +1,45 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::TransferCheckedCpi; + +declare_id!("HXmfewpozFdxhM8BayL9v5541gwoGMXTrUoip5KySs2f"); + +#[program] +pub mod light_token_anchor_transfer_checked { + use super::*; + + pub fn transfer_checked( + ctx: Context, + amount: u64, + decimals: u8, + ) -> Result<()> { + TransferCheckedCpi { + source: ctx.accounts.source.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + destination: ctx.accounts.destination.to_account_info(), + amount, + decimals, + authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + max_top_up: None, + fee_payer: None, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct TransferCheckedAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub source: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub authority: Signer<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-checked/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/transfer-checked/tests/test.rs new file mode 100644 index 0000000..bc9e190 --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/transfer-checked/tests/test.rs @@ -0,0 +1,140 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_transfer_checked::{instruction::TransferChecked, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, + system_program, +}; + +#[tokio::test] +async fn test_transfer_checked() { + let config = ProgramTestConfig::new_v2( + true, + Some(vec![("light_token_anchor_transfer_checked", ID)]), + ); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Create source ATA + let (source_ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_source_ata = + CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_source_ata], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens to source + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: source_ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Create destination ATA for recipient + let recipient = Keypair::new(); + let (dest_ata, _) = derive_token_ata(&recipient.pubkey(), &mint_pda); + let create_dest_ata = + CreateAssociatedTokenAccount::new(payer.pubkey(), recipient.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_dest_ata], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to transfer tokens (checked) + let transfer_amount = 100_000u64; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(source_ata, false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new(dest_ata, false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: TransferChecked { + amount: transfer_amount, + decimals, + } + .data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-interface/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/transfer-interface/Cargo.toml new file mode 100644 index 0000000..7944b7d --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/transfer-interface/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "light-token-anchor-transfer-interface" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_transfer_interface" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +light-token-types = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-interface/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/transfer-interface/src/lib.rs new file mode 100644 index 0000000..7bb17aa --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/transfer-interface/src/lib.rs @@ -0,0 +1,42 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::TransferInterfaceCpi; + +declare_id!("3rb6sG4jiYNLZC8jo8kLsFHpxr2Ci8e8Hh8UmeCMZmUV"); + +#[program] +pub mod light_token_anchor_transfer_interface { + use super::*; + + pub fn transfer(ctx: Context, amount: u64, decimals: u8) -> Result<()> { + TransferInterfaceCpi::new( + amount, + decimals, + ctx.accounts.source.to_account_info(), + ctx.accounts.destination.to_account_info(), + ctx.accounts.authority.to_account_info(), + ctx.accounts.payer.to_account_info(), + ctx.accounts.cpi_authority.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ) + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct TransferAccounts<'info> { + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub source: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub authority: Signer<'info>, + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + pub cpi_authority: AccountInfo<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-interface/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/transfer-interface/tests/test.rs new file mode 100644 index 0000000..3c9e77c --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/transfer-interface/tests/test.rs @@ -0,0 +1,145 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_transfer_interface::{instruction::Transfer, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, +}; +use light_token_types::CPI_AUTHORITY_PDA; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + pubkey::Pubkey, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_transfer() { + let config = ProgramTestConfig::new_v2( + true, + Some(vec![("light_token_anchor_transfer_interface", ID)]), + ); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Create source ATA + let (source_ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_source_ata = + CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_source_ata], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens to source + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: source_ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Create destination ATA for recipient + let recipient = Keypair::new(); + let (dest_ata, _) = derive_token_ata(&recipient.pubkey(), &mint_pda); + let create_dest_ata = + CreateAssociatedTokenAccount::new(payer.pubkey(), recipient.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_dest_ata], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to transfer tokens + let transfer_amount = 100_000u64; + let cpi_authority_pda = Pubkey::new_from_array(CPI_AUTHORITY_PDA); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(source_ata, false), + AccountMeta::new(dest_ata, false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new_readonly(cpi_authority_pda, false), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: Transfer { + amount: transfer_amount, + decimals, + } + .data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/tRCtRRCjpAirbmcHTukEgWWihiNpzc4qZ4HVYNo1rd2.json b/program-examples/anchor/tRCtRRCjpAirbmcHTukEgWWihiNpzc4qZ4HVYNo1rd2.json deleted file mode 100644 index e31daae..0000000 --- a/program-examples/anchor/tRCtRRCjpAirbmcHTukEgWWihiNpzc4qZ4HVYNo1rd2.json +++ /dev/null @@ -1 +0,0 @@ -[54,164,214,87,50,225,100,85,98,225,17,173,223,54,160,57,163,157,18,116,64,104,159,83,184,232,103,130,209,78,38,110,13,43,253,104,143,2,89,230,31,12,86,209,92,216,116,134,182,154,236,9,77,139,102,11,126,155,85,215,233,124,160,205] \ No newline at end of file From 288c556a2713249245b7223308aff4d6f99029c6 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Mon, 26 Jan 2026 01:04:35 +0000 Subject: [PATCH 11/23] fixes tests --- .../anchor/anchor-programs-sdk/Anchor.toml | 1 + .../anchor/anchor-programs-sdk/Cargo.lock | 15 +++ .../anchor/anchor-programs-sdk/Cargo.toml | 1 + .../anchor-programs-sdk/approve/src/lib.rs | 2 + .../anchor-programs-sdk/approve/tests/test.rs | 2 + .../anchor-programs-sdk/burn/src/lib.rs | 2 + .../anchor-programs-sdk/burn/tests/test.rs | 2 + .../anchor-programs-sdk/close/src/lib.rs | 6 +- .../anchor-programs-sdk/create-ata/src/lib.rs | 2 + .../create-ata/tests/test.rs | 3 +- .../create-mint/src/lib.rs | 2 + .../create-mint/tests/test.rs | 3 +- .../create-token-account/tests/test.rs | 4 +- .../anchor-programs-sdk/freeze/src/lib.rs | 2 + .../anchor-programs-sdk/freeze/tests/test.rs | 2 + .../mint-to-checked/Cargo.toml | 31 ++++++ .../mint-to-checked/src/lib.rs | 44 ++++++++ .../mint-to-checked/tests/test.rs | 103 ++++++++++++++++++ .../anchor-programs-sdk/mint-to/src/lib.rs | 2 + .../anchor-programs-sdk/mint-to/tests/test.rs | 3 +- .../anchor-programs-sdk/revoke/src/lib.rs | 2 + .../anchor-programs-sdk/revoke/tests/test.rs | 2 + .../anchor-programs-sdk/thaw/src/lib.rs | 2 + .../anchor-programs-sdk/thaw/tests/test.rs | 2 + .../transfer-checked/src/lib.rs | 2 + .../transfer-checked/tests/test.rs | 2 + .../transfer-interface/src/lib.rs | 2 + .../transfer-interface/tests/test.rs | 2 + 28 files changed, 240 insertions(+), 8 deletions(-) create mode 100644 program-examples/anchor/anchor-programs-sdk/mint-to-checked/Cargo.toml create mode 100644 program-examples/anchor/anchor-programs-sdk/mint-to-checked/src/lib.rs create mode 100644 program-examples/anchor/anchor-programs-sdk/mint-to-checked/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/Anchor.toml b/program-examples/anchor/anchor-programs-sdk/Anchor.toml index 0d8edef..0c5de3c 100644 --- a/program-examples/anchor/anchor-programs-sdk/Anchor.toml +++ b/program-examples/anchor/anchor-programs-sdk/Anchor.toml @@ -13,6 +13,7 @@ light_token_anchor_create_mint = "A1rJEoepgKYWZYZ8KVFpxgeeRGwBrU7xk8S39srjVkUX" light_token_anchor_create_token_account = "zXK1CnWj4WFfFHCArxxr4sh3Qqx2p3oui8ahqpjArgS" light_token_anchor_freeze = "JBMzMJX4sqCQfNVbosP2oqP1KZ5ZDWiwYTrupk687qXZ" light_token_anchor_mint_to = "8bXEVmHLtAVqDLJp1dYWAZ61WQmqQKoTQ8LpPbRoUDCp" +light_token_anchor_mint_to_checked = "DGu3ofzac2Zndn95z2q9gCp8zHgW22YpMeEWj2up3QDb" light_token_anchor_revoke = "G3ph4MK5qaSdxYnfxToETg31AHEMMqVhPuMRgBhk38tQ" light_token_anchor_thaw = "7j94EF5hSkDLf7R26bjrd8Qc6s3oLAQpcKiF3re8JYw9" light_token_anchor_transfer_checked = "HXmfewpozFdxhM8BayL9v5541gwoGMXTrUoip5KySs2f" diff --git a/program-examples/anchor/anchor-programs-sdk/Cargo.lock b/program-examples/anchor/anchor-programs-sdk/Cargo.lock index 6b362f7..43956cd 100644 --- a/program-examples/anchor/anchor-programs-sdk/Cargo.lock +++ b/program-examples/anchor/anchor-programs-sdk/Cargo.lock @@ -3088,6 +3088,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "light-token-anchor-mint-to-checked" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + [[package]] name = "light-token-anchor-revoke" version = "0.1.0" diff --git a/program-examples/anchor/anchor-programs-sdk/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/Cargo.toml index a2559a6..efc32db 100644 --- a/program-examples/anchor/anchor-programs-sdk/Cargo.toml +++ b/program-examples/anchor/anchor-programs-sdk/Cargo.toml @@ -8,6 +8,7 @@ members = [ "create-token-account", "freeze", "mint-to", + "mint-to-checked", "revoke", "thaw", "transfer-interface", diff --git a/program-examples/anchor/anchor-programs-sdk/approve/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/approve/src/lib.rs index f7bbbed..50caad1 100644 --- a/program-examples/anchor/anchor-programs-sdk/approve/src/lib.rs +++ b/program-examples/anchor/anchor-programs-sdk/approve/src/lib.rs @@ -24,6 +24,8 @@ pub mod light_token_anchor_approve { #[derive(Accounts)] pub struct ApproveAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, /// CHECK: Validated by light-token CPI #[account(mut)] pub token_account: AccountInfo<'info>, diff --git a/program-examples/anchor/anchor-programs-sdk/approve/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/approve/tests/test.rs index b71f79e..00d26ec 100644 --- a/program-examples/anchor/anchor-programs-sdk/approve/tests/test.rs +++ b/program-examples/anchor/anchor-programs-sdk/approve/tests/test.rs @@ -5,6 +5,7 @@ use light_token_anchor_approve::{instruction::Approve, ID}; use light_token::instruction::{ CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, }; use anchor_lang::system_program; use solana_sdk::{ @@ -104,6 +105,7 @@ async fn test_approve() { let ix = Instruction { program_id: ID, accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), AccountMeta::new(ata, false), AccountMeta::new_readonly(delegate.pubkey(), false), AccountMeta::new_readonly(payer.pubkey(), true), diff --git a/program-examples/anchor/anchor-programs-sdk/burn/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/burn/src/lib.rs index 0ae1a8c..0c1a1c3 100644 --- a/program-examples/anchor/anchor-programs-sdk/burn/src/lib.rs +++ b/program-examples/anchor/anchor-programs-sdk/burn/src/lib.rs @@ -26,6 +26,8 @@ pub mod light_token_anchor_burn { #[derive(Accounts)] pub struct BurnAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, /// CHECK: Validated by light-token CPI #[account(mut)] pub source: AccountInfo<'info>, diff --git a/program-examples/anchor/anchor-programs-sdk/burn/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/burn/tests/test.rs index 3d7359e..04bb321 100644 --- a/program-examples/anchor/anchor-programs-sdk/burn/tests/test.rs +++ b/program-examples/anchor/anchor-programs-sdk/burn/tests/test.rs @@ -5,6 +5,7 @@ use light_token_anchor_burn::{instruction::Burn, ID}; use light_token::instruction::{ CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, }; use solana_sdk::{ instruction::{AccountMeta, Instruction}, @@ -102,6 +103,7 @@ async fn test_burn() { let ix = Instruction { program_id: ID, accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), AccountMeta::new(ata, false), AccountMeta::new(mint_pda, false), AccountMeta::new_readonly(payer.pubkey(), true), diff --git a/program-examples/anchor/anchor-programs-sdk/close/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/close/src/lib.rs index ad2ab52..0003191 100644 --- a/program-examples/anchor/anchor-programs-sdk/close/src/lib.rs +++ b/program-examples/anchor/anchor-programs-sdk/close/src/lib.rs @@ -11,7 +11,7 @@ pub mod light_token_anchor_close { pub fn close_account(ctx: Context) -> Result<()> { CloseAccountCpi { - token_program: ctx.accounts.token_program.to_account_info(), + token_program: ctx.accounts.light_token_program.to_account_info(), account: ctx.accounts.account.to_account_info(), destination: ctx.accounts.destination.to_account_info(), owner: ctx.accounts.owner.to_account_info(), @@ -24,8 +24,8 @@ pub mod light_token_anchor_close { #[derive(Accounts)] pub struct CloseAccountAccounts<'info> { - /// CHECK: Validated by light-token CPI - pub token_program: AccountInfo<'info>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, /// CHECK: Validated by light-token CPI #[account(mut)] pub account: AccountInfo<'info>, diff --git a/program-examples/anchor/anchor-programs-sdk/create-ata/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/create-ata/src/lib.rs index 8c0935d..9f60bdd 100644 --- a/program-examples/anchor/anchor-programs-sdk/create-ata/src/lib.rs +++ b/program-examples/anchor/anchor-programs-sdk/create-ata/src/lib.rs @@ -38,6 +38,8 @@ pub mod light_token_anchor_create_ata { #[derive(Accounts)] pub struct CreateAtaAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, /// CHECK: Validated by light-token CPI pub owner: AccountInfo<'info>, /// CHECK: Validated by light-token CPI diff --git a/program-examples/anchor/anchor-programs-sdk/create-ata/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/create-ata/tests/test.rs index c50075d..5d62acf 100644 --- a/program-examples/anchor/anchor-programs-sdk/create-ata/tests/test.rs +++ b/program-examples/anchor/anchor-programs-sdk/create-ata/tests/test.rs @@ -4,7 +4,7 @@ use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; use light_token_anchor_create_ata::{instruction::CreateAta, ID}; use light_token::instruction::{ CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, derive_token_ata, - find_mint_address, rent_sponsor_pda, + find_mint_address, rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, }; use anchor_lang::system_program; use solana_sdk::{ @@ -82,6 +82,7 @@ async fn test_create_ata() { let ix = Instruction { program_id: ID, accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), AccountMeta::new_readonly(payer.pubkey(), false), AccountMeta::new_readonly(mint_pda, false), AccountMeta::new(payer.pubkey(), true), diff --git a/program-examples/anchor/anchor-programs-sdk/create-mint/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/create-mint/src/lib.rs index 053fbff..642f66e 100644 --- a/program-examples/anchor/anchor-programs-sdk/create-mint/src/lib.rs +++ b/program-examples/anchor/anchor-programs-sdk/create-mint/src/lib.rs @@ -91,6 +91,8 @@ pub mod light_token_anchor_create_mint { #[derive(Accounts)] pub struct CreateMintAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, pub mint_seed: Signer<'info>, /// CHECK: Validated by light-token CPI pub authority: AccountInfo<'info>, diff --git a/program-examples/anchor/anchor-programs-sdk/create-mint/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/create-mint/tests/test.rs index 90ae585..f6ba30d 100644 --- a/program-examples/anchor/anchor-programs-sdk/create-mint/tests/test.rs +++ b/program-examples/anchor/anchor-programs-sdk/create-mint/tests/test.rs @@ -3,7 +3,7 @@ use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; use light_token_anchor_create_mint::{instruction::CreateMint, ID}; use light_token::instruction::{ config_pda, derive_mint_compressed_address, find_mint_address, rent_sponsor_pda, - SystemAccounts, + SystemAccounts, LIGHT_TOKEN_PROGRAM_ID, }; use anchor_lang::system_program; use solana_sdk::{ @@ -50,6 +50,7 @@ async fn test_create_mint() { let ix = Instruction { program_id: ID, accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), AccountMeta::new(mint_seed.pubkey(), true), AccountMeta::new_readonly(mint_authority, false), AccountMeta::new(payer.pubkey(), true), diff --git a/program-examples/anchor/anchor-programs-sdk/create-token-account/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/create-token-account/tests/test.rs index 5355ba0..1fb1032 100644 --- a/program-examples/anchor/anchor-programs-sdk/create-token-account/tests/test.rs +++ b/program-examples/anchor/anchor-programs-sdk/create-token-account/tests/test.rs @@ -86,7 +86,7 @@ async fn test_create_token_account() { program_id: ID, accounts: vec![ AccountMeta::new(payer.pubkey(), true), - AccountMeta::new(token_account.pubkey(), false), + AccountMeta::new(token_account.pubkey(), true), AccountMeta::new_readonly(mint_pda, false), AccountMeta::new_readonly(compressible_config, false), AccountMeta::new(rent_sponsor, false), @@ -97,7 +97,7 @@ async fn test_create_token_account() { }; let sig = rpc - .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &token_account]) .await .unwrap(); diff --git a/program-examples/anchor/anchor-programs-sdk/freeze/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/freeze/src/lib.rs index e3c2aac..59a4942 100644 --- a/program-examples/anchor/anchor-programs-sdk/freeze/src/lib.rs +++ b/program-examples/anchor/anchor-programs-sdk/freeze/src/lib.rs @@ -22,6 +22,8 @@ pub mod light_token_anchor_freeze { #[derive(Accounts)] pub struct FreezeAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, /// CHECK: Validated by light-token CPI #[account(mut)] pub token_account: AccountInfo<'info>, diff --git a/program-examples/anchor/anchor-programs-sdk/freeze/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/freeze/tests/test.rs index 4916bac..830f79f 100644 --- a/program-examples/anchor/anchor-programs-sdk/freeze/tests/test.rs +++ b/program-examples/anchor/anchor-programs-sdk/freeze/tests/test.rs @@ -5,6 +5,7 @@ use light_token_anchor_freeze::{instruction::Freeze, ID}; use light_token::instruction::{ CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, }; use solana_sdk::{ instruction::{AccountMeta, Instruction}, @@ -101,6 +102,7 @@ async fn test_freeze() { let ix = Instruction { program_id: ID, accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), AccountMeta::new(ata, false), AccountMeta::new_readonly(mint_pda, false), AccountMeta::new_readonly(freeze_authority, true), diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to-checked/Cargo.toml b/program-examples/anchor/anchor-programs-sdk/mint-to-checked/Cargo.toml new file mode 100644 index 0000000..0a5477c --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/mint-to-checked/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-mint-to-checked" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_mint_to_checked" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to-checked/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/mint-to-checked/src/lib.rs new file mode 100644 index 0000000..d5baaaa --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/mint-to-checked/src/lib.rs @@ -0,0 +1,44 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::MintToCheckedCpi; + +declare_id!("DGu3ofzac2Zndn95z2q9gCp8zHgW22YpMeEWj2up3QDb"); + +#[program] +pub mod light_token_anchor_mint_to_checked { + use super::*; + + pub fn mint_to_checked( + ctx: Context, + amount: u64, + decimals: u8, + ) -> Result<()> { + MintToCheckedCpi { + mint: ctx.accounts.mint.to_account_info(), + destination: ctx.accounts.destination.to_account_info(), + amount, + decimals, + authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + max_top_up: None, + fee_payer: None, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct MintToCheckedAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub authority: Signer<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to-checked/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/mint-to-checked/tests/test.rs new file mode 100644 index 0000000..9ad4ade --- /dev/null +++ b/program-examples/anchor/anchor-programs-sdk/mint-to-checked/tests/test.rs @@ -0,0 +1,103 @@ +use anchor_lang::InstructionData; +use anchor_lang::system_program; +use light_client::indexer::{AddressWithTree, Indexer}; +use light_program_test::{LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_mint_to_checked::{instruction::MintToChecked, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, derive_mint_compressed_address, + derive_token_ata, find_mint_address, LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test(flavor = "multi_thread")] +async fn test_mint_to_checked() { + let config = ProgramTestConfig::new_v2(false, Some(vec![("light_token_anchor_mint_to_checked", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + let amount = 1_000_000u64; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(mint, false), + AccountMeta::new(ata, false), + AccountMeta::new_readonly(mint_authority, true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: MintToChecked { amount, decimals }.data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Verify the account exists and has data + let ata_data = rpc.get_account(ata).await.unwrap().unwrap(); + assert!(!ata_data.data.is_empty(), "ATA account should have data"); +} diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/mint-to/src/lib.rs index 102b0e0..25a9015 100644 --- a/program-examples/anchor/anchor-programs-sdk/mint-to/src/lib.rs +++ b/program-examples/anchor/anchor-programs-sdk/mint-to/src/lib.rs @@ -26,6 +26,8 @@ pub mod light_token_anchor_mint_to { #[derive(Accounts)] pub struct MintToAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, /// CHECK: Validated by light-token CPI #[account(mut)] pub mint: AccountInfo<'info>, diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/mint-to/tests/test.rs index e447648..c1993d8 100644 --- a/program-examples/anchor/anchor-programs-sdk/mint-to/tests/test.rs +++ b/program-examples/anchor/anchor-programs-sdk/mint-to/tests/test.rs @@ -5,7 +5,7 @@ use light_program_test::{LightProgramTest, ProgramTestConfig, Rpc}; use light_token_anchor_mint_to::{instruction::MintTo, ID}; use light_token::instruction::{ CreateAssociatedTokenAccount, CreateMint, CreateMintParams, derive_mint_compressed_address, - derive_token_ata, find_mint_address, + derive_token_ata, find_mint_address, LIGHT_TOKEN_PROGRAM_ID, }; use solana_sdk::{ instruction::{AccountMeta, Instruction}, @@ -84,6 +84,7 @@ async fn test_mint_to() { let ix = Instruction { program_id: ID, accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), AccountMeta::new(mint, false), AccountMeta::new(ata, false), AccountMeta::new_readonly(mint_authority, true), diff --git a/program-examples/anchor/anchor-programs-sdk/revoke/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/revoke/src/lib.rs index fcdc58b..9ab13a7 100644 --- a/program-examples/anchor/anchor-programs-sdk/revoke/src/lib.rs +++ b/program-examples/anchor/anchor-programs-sdk/revoke/src/lib.rs @@ -22,6 +22,8 @@ pub mod light_token_anchor_revoke { #[derive(Accounts)] pub struct RevokeAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, /// CHECK: Validated by light-token CPI #[account(mut)] pub token_account: AccountInfo<'info>, diff --git a/program-examples/anchor/anchor-programs-sdk/revoke/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/revoke/tests/test.rs index 56ffdf6..221122f 100644 --- a/program-examples/anchor/anchor-programs-sdk/revoke/tests/test.rs +++ b/program-examples/anchor/anchor-programs-sdk/revoke/tests/test.rs @@ -5,6 +5,7 @@ use light_token_anchor_revoke::{instruction::Revoke, ID}; use light_token::instruction::{ Approve, CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, }; use anchor_lang::system_program; use solana_sdk::{ @@ -116,6 +117,7 @@ async fn test_revoke() { let ix = Instruction { program_id: ID, accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), AccountMeta::new(ata, false), AccountMeta::new_readonly(payer.pubkey(), true), AccountMeta::new_readonly(system_program::ID, false), diff --git a/program-examples/anchor/anchor-programs-sdk/thaw/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/thaw/src/lib.rs index a178d45..93e9f6e 100644 --- a/program-examples/anchor/anchor-programs-sdk/thaw/src/lib.rs +++ b/program-examples/anchor/anchor-programs-sdk/thaw/src/lib.rs @@ -22,6 +22,8 @@ pub mod light_token_anchor_thaw { #[derive(Accounts)] pub struct ThawAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, /// CHECK: Validated by light-token CPI #[account(mut)] pub token_account: AccountInfo<'info>, diff --git a/program-examples/anchor/anchor-programs-sdk/thaw/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/thaw/tests/test.rs index 95ea32a..ea9bf49 100644 --- a/program-examples/anchor/anchor-programs-sdk/thaw/tests/test.rs +++ b/program-examples/anchor/anchor-programs-sdk/thaw/tests/test.rs @@ -5,6 +5,7 @@ use light_token_anchor_thaw::{instruction::Thaw, ID}; use light_token::instruction::{ CreateAssociatedTokenAccount, CreateMint, CreateMintParams, Freeze, MintTo, derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, }; use solana_sdk::{ instruction::{AccountMeta, Instruction}, @@ -114,6 +115,7 @@ async fn test_thaw() { let ix = Instruction { program_id: ID, accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), AccountMeta::new(ata, false), AccountMeta::new_readonly(mint_pda, false), AccountMeta::new_readonly(freeze_authority, true), diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-checked/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/transfer-checked/src/lib.rs index 958655b..0d82277 100644 --- a/program-examples/anchor/anchor-programs-sdk/transfer-checked/src/lib.rs +++ b/program-examples/anchor/anchor-programs-sdk/transfer-checked/src/lib.rs @@ -32,6 +32,8 @@ pub mod light_token_anchor_transfer_checked { #[derive(Accounts)] pub struct TransferCheckedAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, /// CHECK: Validated by light-token CPI #[account(mut)] pub source: AccountInfo<'info>, diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-checked/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/transfer-checked/tests/test.rs index bc9e190..893a291 100644 --- a/program-examples/anchor/anchor-programs-sdk/transfer-checked/tests/test.rs +++ b/program-examples/anchor/anchor-programs-sdk/transfer-checked/tests/test.rs @@ -5,6 +5,7 @@ use light_token_anchor_transfer_checked::{instruction::TransferChecked, ID}; use light_token::instruction::{ CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, }; use solana_sdk::{ instruction::{AccountMeta, Instruction}, @@ -119,6 +120,7 @@ async fn test_transfer_checked() { let ix = Instruction { program_id: ID, accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), AccountMeta::new(source_ata, false), AccountMeta::new_readonly(mint_pda, false), AccountMeta::new(dest_ata, false), diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-interface/src/lib.rs b/program-examples/anchor/anchor-programs-sdk/transfer-interface/src/lib.rs index 7bb17aa..c3ffb88 100644 --- a/program-examples/anchor/anchor-programs-sdk/transfer-interface/src/lib.rs +++ b/program-examples/anchor/anchor-programs-sdk/transfer-interface/src/lib.rs @@ -27,6 +27,8 @@ pub mod light_token_anchor_transfer_interface { #[derive(Accounts)] pub struct TransferAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, /// CHECK: Validated by light-token CPI #[account(mut)] pub source: AccountInfo<'info>, diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-interface/tests/test.rs b/program-examples/anchor/anchor-programs-sdk/transfer-interface/tests/test.rs index 3c9e77c..4a4d0cb 100644 --- a/program-examples/anchor/anchor-programs-sdk/transfer-interface/tests/test.rs +++ b/program-examples/anchor/anchor-programs-sdk/transfer-interface/tests/test.rs @@ -5,6 +5,7 @@ use light_token_anchor_transfer_interface::{instruction::Transfer, ID}; use light_token::instruction::{ CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, }; use light_token_types::CPI_AUTHORITY_PDA; use anchor_lang::system_program; @@ -123,6 +124,7 @@ async fn test_transfer() { let ix = Instruction { program_id: ID, accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), AccountMeta::new(source_ata, false), AccountMeta::new(dest_ata, false), AccountMeta::new_readonly(payer.pubkey(), true), From b8db3309a4c31e12fc073c5e86ca094853020a8a Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Mon, 26 Jan 2026 01:40:27 +0000 Subject: [PATCH 12/23] first final --- .../anchor/anchor-programs-sdk/README.md | 66 +++++-------------- 1 file changed, 16 insertions(+), 50 deletions(-) diff --git a/program-examples/anchor/anchor-programs-sdk/README.md b/program-examples/anchor/anchor-programs-sdk/README.md index 65c55be..92262ef 100644 --- a/program-examples/anchor/anchor-programs-sdk/README.md +++ b/program-examples/anchor/anchor-programs-sdk/README.md @@ -1,51 +1,17 @@ -# Light Token Anchor Programs (SDK approach) - -Anchor program examples using explicit CPI calls to the Light Token Program. - -## Programs - -All 12 programs demonstrating Light Token CPI integration: - -| Program | Description | -|---------|-------------| -| [approve](programs/approve/src/lib.rs) | Approve delegate for token account | -| [burn](programs/burn/src/lib.rs) | Burn tokens from token account | -| [close](programs/close/src/lib.rs) | Close token account and reclaim rent | -| [create-ata](programs/create-ata/src/lib.rs) | Create compressed associated token account | -| [create-mint](programs/create-mint/src/lib.rs) | Create compressed mint | -| [create-token-account](programs/create-token-account/src/lib.rs) | Create compressed token account (vault pattern) | -| [freeze](programs/freeze/src/lib.rs) | Freeze token account | -| [mint-to](programs/mint-to/src/lib.rs) | Mint tokens to destination | -| [revoke](programs/revoke/src/lib.rs) | Revoke delegate from token account | -| [thaw](programs/thaw/src/lib.rs) | Thaw frozen token account | -| [transfer-checked](programs/transfer-checked/src/lib.rs) | Transfer tokens with mint validation | -| [transfer-interface](programs/transfer-interface/src/lib.rs) | Transfer tokens with decimals handling | - -## Pattern - -These programs use explicit CPI structs from `light_token::instruction`: - -```rust -use light_token::instruction::MintToCpi; - -pub fn mint_to(ctx: Context, amount: u64) -> Result<()> { - MintToCpi { - mint: ctx.accounts.mint.to_account_info(), - destination: ctx.accounts.destination.to_account_info(), - amount, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) -} -``` - -## Account validation - -Accounts are validated by the light-token program during CPI. The pattern `/// CHECK: Validated by light-token CPI` indicates the calling program delegates validation to the CPI target. +# Light Token Anchor Programs (SDK) + +- **[approve](approve/src/lib.rs)** - Approve delegate +- **[burn](burn/src/lib.rs)** - Burn tokens +- **[close](close/src/lib.rs)** - Close token account +- **[create-ata](create-ata/src/lib.rs)** - Create associated light-token account +- **[create-mint](create-mint/src/lib.rs)** - Create light-token mint +- **[create-token-account](create-token-account/src/lib.rs)** - Create light-token account +- **[freeze](freeze/src/lib.rs)** - Freeze token account +- **[mint-to](mint-to/src/lib.rs)** - Mint tokens +- **[revoke](revoke/src/lib.rs)** - Revoke delegate +- **[thaw](thaw/src/lib.rs)** - Thaw token account +- **[transfer-checked](transfer-checked/src/lib.rs)** - Transfer with mint validation +- **[transfer-interface](transfer-interface/src/lib.rs)** - Transfer between light-token, T22, and SPL accounts ## Build @@ -59,6 +25,6 @@ anchor build cargo test-sbf ``` -## Note on close program +## Documentation -The `close` program uses `CloseAccountCpi` which requires an explicit `token_program` account, unlike other CPI builders that handle program routing internally. +Learn more [about Light-Token here](https://www.zkcompression.com/light-token/welcome). From 37c0dbb03031dd0e96e98c505ff198ddc927b5ae Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Mon, 26 Jan 2026 01:57:03 +0000 Subject: [PATCH 13/23] rename and bug fix --- .../Anchor.toml | 0 .../Cargo.lock | 0 .../Cargo.toml | 0 .../README.md | 0 .../approve/Cargo.toml | 0 .../approve/src/lib.rs | 0 .../approve/tests/test.rs | 0 .../burn/Cargo.toml | 0 .../burn/src/lib.rs | 0 .../burn/tests/test.rs | 0 .../close/Cargo.toml | 0 .../close/src/lib.rs | 0 .../close/tests/test.rs | 0 .../create-ata/Cargo.toml | 0 .../create-ata/src/lib.rs | 0 .../create-ata/tests/test.rs | 0 .../create-mint/Cargo.toml | 0 .../create-mint/src/lib.rs | 0 .../create-mint/tests/test.rs | 0 .../create-token-account/Cargo.toml | 0 .../create-token-account/src/lib.rs | 0 .../create-token-account/tests/test.rs | 0 .../freeze/Cargo.toml | 0 .../freeze/src/lib.rs | 0 .../freeze/tests/test.rs | 0 .../mint-to-checked/Cargo.toml | 0 .../mint-to-checked/src/lib.rs | 0 .../mint-to-checked/tests/test.rs | 0 .../mint-to/Cargo.toml | 0 .../mint-to/src/lib.rs | 0 .../mint-to/tests/test.rs | 0 .../revoke/Cargo.toml | 0 .../revoke/src/lib.rs | 0 .../revoke/tests/test.rs | 0 .../thaw/Cargo.toml | 0 .../thaw/src/lib.rs | 0 .../thaw/tests/test.rs | 0 .../transfer-checked/Cargo.toml | 0 .../transfer-checked/src/lib.rs | 0 .../transfer-checked/tests/test.rs | 0 .../transfer-interface/Cargo.toml | 0 .../transfer-interface/src/lib.rs | 0 .../transfer-interface/tests/test.rs | 0 .../anchor/sdk-basics/Anchor.toml | 30 + program-examples/anchor/sdk-basics/Cargo.lock | 8977 +++++++++++++++++ program-examples/anchor/sdk-basics/Cargo.toml | 42 + program-examples/anchor/sdk-basics/README.md | 30 + .../anchor/sdk-basics/approve/Cargo.toml | 31 + .../anchor/sdk-basics/approve/src/lib.rs | 36 + .../anchor/sdk-basics/approve/tests/test.rs | 122 + .../anchor/sdk-basics/burn/Cargo.toml | 31 + .../anchor/sdk-basics/burn/src/lib.rs | 39 + .../anchor/sdk-basics/burn/tests/test.rs | 120 + .../anchor/sdk-basics/close/Cargo.toml | 31 + .../anchor/sdk-basics/close/src/lib.rs | 39 + .../anchor/sdk-basics/close/tests/test.rs | 104 + .../anchor/sdk-basics/create-ata/Cargo.toml | 31 + .../anchor/sdk-basics/create-ata/src/lib.rs | 58 + .../sdk-basics/create-ata/tests/test.rs | 106 + .../anchor/sdk-basics/create-mint/Cargo.toml | 31 + .../anchor/sdk-basics/create-mint/src/lib.rs | 126 + .../sdk-basics/create-mint/tests/test.rs | 96 + .../create-token-account/Cargo.toml | 31 + .../create-token-account/src/lib.rs | 47 + .../create-token-account/tests/test.rs | 105 + .../anchor/sdk-basics/freeze/Cargo.toml | 31 + .../anchor/sdk-basics/freeze/src/lib.rs | 33 + .../anchor/sdk-basics/freeze/tests/test.rs | 119 + .../sdk-basics/mint-to-checked/Cargo.toml | 31 + .../sdk-basics/mint-to-checked/src/lib.rs | 44 + .../sdk-basics/mint-to-checked/tests/test.rs | 103 + .../anchor/sdk-basics/mint-to/Cargo.toml | 31 + .../anchor/sdk-basics/mint-to/src/lib.rs | 39 + .../anchor/sdk-basics/mint-to/tests/test.rs | 103 + .../anchor/sdk-basics/revoke/Cargo.toml | 31 + .../anchor/sdk-basics/revoke/src/lib.rs | 32 + .../anchor/sdk-basics/revoke/tests/test.rs | 133 + .../anchor/sdk-basics/thaw/Cargo.toml | 31 + .../anchor/sdk-basics/thaw/src/lib.rs | 33 + .../anchor/sdk-basics/thaw/tests/test.rs | 131 + .../sdk-basics/transfer-checked/Cargo.toml | 31 + .../sdk-basics/transfer-checked/src/lib.rs | 47 + .../sdk-basics/transfer-checked/tests/test.rs | 142 + .../sdk-basics/transfer-interface/Cargo.toml | 32 + .../sdk-basics/transfer-interface/src/lib.rs | 44 + .../transfer-interface/tests/test.rs | 147 + 86 files changed, 11631 insertions(+) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/Anchor.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/Cargo.lock (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/README.md (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/approve/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/approve/src/lib.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/approve/tests/test.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/burn/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/burn/src/lib.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/burn/tests/test.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/close/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/close/src/lib.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/close/tests/test.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/create-ata/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/create-ata/src/lib.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/create-ata/tests/test.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/create-mint/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/create-mint/src/lib.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/create-mint/tests/test.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/create-token-account/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/create-token-account/src/lib.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/create-token-account/tests/test.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/freeze/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/freeze/src/lib.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/freeze/tests/test.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/mint-to-checked/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/mint-to-checked/src/lib.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/mint-to-checked/tests/test.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/mint-to/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/mint-to/src/lib.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/mint-to/tests/test.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/revoke/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/revoke/src/lib.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/revoke/tests/test.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/thaw/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/thaw/src/lib.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/thaw/tests/test.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/transfer-checked/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/transfer-checked/src/lib.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/transfer-checked/tests/test.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/transfer-interface/Cargo.toml (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/transfer-interface/src/lib.rs (100%) rename program-examples/anchor/{anchor-programs-sdk => anchor-sdk}/transfer-interface/tests/test.rs (100%) create mode 100644 program-examples/anchor/sdk-basics/Anchor.toml create mode 100644 program-examples/anchor/sdk-basics/Cargo.lock create mode 100644 program-examples/anchor/sdk-basics/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/README.md create mode 100644 program-examples/anchor/sdk-basics/approve/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/approve/src/lib.rs create mode 100644 program-examples/anchor/sdk-basics/approve/tests/test.rs create mode 100644 program-examples/anchor/sdk-basics/burn/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/burn/src/lib.rs create mode 100644 program-examples/anchor/sdk-basics/burn/tests/test.rs create mode 100644 program-examples/anchor/sdk-basics/close/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/close/src/lib.rs create mode 100644 program-examples/anchor/sdk-basics/close/tests/test.rs create mode 100644 program-examples/anchor/sdk-basics/create-ata/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/create-ata/src/lib.rs create mode 100644 program-examples/anchor/sdk-basics/create-ata/tests/test.rs create mode 100644 program-examples/anchor/sdk-basics/create-mint/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/create-mint/src/lib.rs create mode 100644 program-examples/anchor/sdk-basics/create-mint/tests/test.rs create mode 100644 program-examples/anchor/sdk-basics/create-token-account/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/create-token-account/src/lib.rs create mode 100644 program-examples/anchor/sdk-basics/create-token-account/tests/test.rs create mode 100644 program-examples/anchor/sdk-basics/freeze/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/freeze/src/lib.rs create mode 100644 program-examples/anchor/sdk-basics/freeze/tests/test.rs create mode 100644 program-examples/anchor/sdk-basics/mint-to-checked/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/mint-to-checked/src/lib.rs create mode 100644 program-examples/anchor/sdk-basics/mint-to-checked/tests/test.rs create mode 100644 program-examples/anchor/sdk-basics/mint-to/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/mint-to/src/lib.rs create mode 100644 program-examples/anchor/sdk-basics/mint-to/tests/test.rs create mode 100644 program-examples/anchor/sdk-basics/revoke/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/revoke/src/lib.rs create mode 100644 program-examples/anchor/sdk-basics/revoke/tests/test.rs create mode 100644 program-examples/anchor/sdk-basics/thaw/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/thaw/src/lib.rs create mode 100644 program-examples/anchor/sdk-basics/thaw/tests/test.rs create mode 100644 program-examples/anchor/sdk-basics/transfer-checked/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/transfer-checked/src/lib.rs create mode 100644 program-examples/anchor/sdk-basics/transfer-checked/tests/test.rs create mode 100644 program-examples/anchor/sdk-basics/transfer-interface/Cargo.toml create mode 100644 program-examples/anchor/sdk-basics/transfer-interface/src/lib.rs create mode 100644 program-examples/anchor/sdk-basics/transfer-interface/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/Anchor.toml b/program-examples/anchor/anchor-sdk/Anchor.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/Anchor.toml rename to program-examples/anchor/anchor-sdk/Anchor.toml diff --git a/program-examples/anchor/anchor-programs-sdk/Cargo.lock b/program-examples/anchor/anchor-sdk/Cargo.lock similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/Cargo.lock rename to program-examples/anchor/anchor-sdk/Cargo.lock diff --git a/program-examples/anchor/anchor-programs-sdk/Cargo.toml b/program-examples/anchor/anchor-sdk/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/Cargo.toml rename to program-examples/anchor/anchor-sdk/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/README.md b/program-examples/anchor/anchor-sdk/README.md similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/README.md rename to program-examples/anchor/anchor-sdk/README.md diff --git a/program-examples/anchor/anchor-programs-sdk/approve/Cargo.toml b/program-examples/anchor/anchor-sdk/approve/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/approve/Cargo.toml rename to program-examples/anchor/anchor-sdk/approve/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/approve/src/lib.rs b/program-examples/anchor/anchor-sdk/approve/src/lib.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/approve/src/lib.rs rename to program-examples/anchor/anchor-sdk/approve/src/lib.rs diff --git a/program-examples/anchor/anchor-programs-sdk/approve/tests/test.rs b/program-examples/anchor/anchor-sdk/approve/tests/test.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/approve/tests/test.rs rename to program-examples/anchor/anchor-sdk/approve/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/burn/Cargo.toml b/program-examples/anchor/anchor-sdk/burn/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/burn/Cargo.toml rename to program-examples/anchor/anchor-sdk/burn/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/burn/src/lib.rs b/program-examples/anchor/anchor-sdk/burn/src/lib.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/burn/src/lib.rs rename to program-examples/anchor/anchor-sdk/burn/src/lib.rs diff --git a/program-examples/anchor/anchor-programs-sdk/burn/tests/test.rs b/program-examples/anchor/anchor-sdk/burn/tests/test.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/burn/tests/test.rs rename to program-examples/anchor/anchor-sdk/burn/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/close/Cargo.toml b/program-examples/anchor/anchor-sdk/close/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/close/Cargo.toml rename to program-examples/anchor/anchor-sdk/close/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/close/src/lib.rs b/program-examples/anchor/anchor-sdk/close/src/lib.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/close/src/lib.rs rename to program-examples/anchor/anchor-sdk/close/src/lib.rs diff --git a/program-examples/anchor/anchor-programs-sdk/close/tests/test.rs b/program-examples/anchor/anchor-sdk/close/tests/test.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/close/tests/test.rs rename to program-examples/anchor/anchor-sdk/close/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/create-ata/Cargo.toml b/program-examples/anchor/anchor-sdk/create-ata/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/create-ata/Cargo.toml rename to program-examples/anchor/anchor-sdk/create-ata/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/create-ata/src/lib.rs b/program-examples/anchor/anchor-sdk/create-ata/src/lib.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/create-ata/src/lib.rs rename to program-examples/anchor/anchor-sdk/create-ata/src/lib.rs diff --git a/program-examples/anchor/anchor-programs-sdk/create-ata/tests/test.rs b/program-examples/anchor/anchor-sdk/create-ata/tests/test.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/create-ata/tests/test.rs rename to program-examples/anchor/anchor-sdk/create-ata/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/create-mint/Cargo.toml b/program-examples/anchor/anchor-sdk/create-mint/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/create-mint/Cargo.toml rename to program-examples/anchor/anchor-sdk/create-mint/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/create-mint/src/lib.rs b/program-examples/anchor/anchor-sdk/create-mint/src/lib.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/create-mint/src/lib.rs rename to program-examples/anchor/anchor-sdk/create-mint/src/lib.rs diff --git a/program-examples/anchor/anchor-programs-sdk/create-mint/tests/test.rs b/program-examples/anchor/anchor-sdk/create-mint/tests/test.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/create-mint/tests/test.rs rename to program-examples/anchor/anchor-sdk/create-mint/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/create-token-account/Cargo.toml b/program-examples/anchor/anchor-sdk/create-token-account/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/create-token-account/Cargo.toml rename to program-examples/anchor/anchor-sdk/create-token-account/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/create-token-account/src/lib.rs b/program-examples/anchor/anchor-sdk/create-token-account/src/lib.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/create-token-account/src/lib.rs rename to program-examples/anchor/anchor-sdk/create-token-account/src/lib.rs diff --git a/program-examples/anchor/anchor-programs-sdk/create-token-account/tests/test.rs b/program-examples/anchor/anchor-sdk/create-token-account/tests/test.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/create-token-account/tests/test.rs rename to program-examples/anchor/anchor-sdk/create-token-account/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/freeze/Cargo.toml b/program-examples/anchor/anchor-sdk/freeze/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/freeze/Cargo.toml rename to program-examples/anchor/anchor-sdk/freeze/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/freeze/src/lib.rs b/program-examples/anchor/anchor-sdk/freeze/src/lib.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/freeze/src/lib.rs rename to program-examples/anchor/anchor-sdk/freeze/src/lib.rs diff --git a/program-examples/anchor/anchor-programs-sdk/freeze/tests/test.rs b/program-examples/anchor/anchor-sdk/freeze/tests/test.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/freeze/tests/test.rs rename to program-examples/anchor/anchor-sdk/freeze/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to-checked/Cargo.toml b/program-examples/anchor/anchor-sdk/mint-to-checked/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/mint-to-checked/Cargo.toml rename to program-examples/anchor/anchor-sdk/mint-to-checked/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to-checked/src/lib.rs b/program-examples/anchor/anchor-sdk/mint-to-checked/src/lib.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/mint-to-checked/src/lib.rs rename to program-examples/anchor/anchor-sdk/mint-to-checked/src/lib.rs diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to-checked/tests/test.rs b/program-examples/anchor/anchor-sdk/mint-to-checked/tests/test.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/mint-to-checked/tests/test.rs rename to program-examples/anchor/anchor-sdk/mint-to-checked/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to/Cargo.toml b/program-examples/anchor/anchor-sdk/mint-to/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/mint-to/Cargo.toml rename to program-examples/anchor/anchor-sdk/mint-to/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to/src/lib.rs b/program-examples/anchor/anchor-sdk/mint-to/src/lib.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/mint-to/src/lib.rs rename to program-examples/anchor/anchor-sdk/mint-to/src/lib.rs diff --git a/program-examples/anchor/anchor-programs-sdk/mint-to/tests/test.rs b/program-examples/anchor/anchor-sdk/mint-to/tests/test.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/mint-to/tests/test.rs rename to program-examples/anchor/anchor-sdk/mint-to/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/revoke/Cargo.toml b/program-examples/anchor/anchor-sdk/revoke/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/revoke/Cargo.toml rename to program-examples/anchor/anchor-sdk/revoke/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/revoke/src/lib.rs b/program-examples/anchor/anchor-sdk/revoke/src/lib.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/revoke/src/lib.rs rename to program-examples/anchor/anchor-sdk/revoke/src/lib.rs diff --git a/program-examples/anchor/anchor-programs-sdk/revoke/tests/test.rs b/program-examples/anchor/anchor-sdk/revoke/tests/test.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/revoke/tests/test.rs rename to program-examples/anchor/anchor-sdk/revoke/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/thaw/Cargo.toml b/program-examples/anchor/anchor-sdk/thaw/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/thaw/Cargo.toml rename to program-examples/anchor/anchor-sdk/thaw/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/thaw/src/lib.rs b/program-examples/anchor/anchor-sdk/thaw/src/lib.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/thaw/src/lib.rs rename to program-examples/anchor/anchor-sdk/thaw/src/lib.rs diff --git a/program-examples/anchor/anchor-programs-sdk/thaw/tests/test.rs b/program-examples/anchor/anchor-sdk/thaw/tests/test.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/thaw/tests/test.rs rename to program-examples/anchor/anchor-sdk/thaw/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-checked/Cargo.toml b/program-examples/anchor/anchor-sdk/transfer-checked/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/transfer-checked/Cargo.toml rename to program-examples/anchor/anchor-sdk/transfer-checked/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-checked/src/lib.rs b/program-examples/anchor/anchor-sdk/transfer-checked/src/lib.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/transfer-checked/src/lib.rs rename to program-examples/anchor/anchor-sdk/transfer-checked/src/lib.rs diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-checked/tests/test.rs b/program-examples/anchor/anchor-sdk/transfer-checked/tests/test.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/transfer-checked/tests/test.rs rename to program-examples/anchor/anchor-sdk/transfer-checked/tests/test.rs diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-interface/Cargo.toml b/program-examples/anchor/anchor-sdk/transfer-interface/Cargo.toml similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/transfer-interface/Cargo.toml rename to program-examples/anchor/anchor-sdk/transfer-interface/Cargo.toml diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-interface/src/lib.rs b/program-examples/anchor/anchor-sdk/transfer-interface/src/lib.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/transfer-interface/src/lib.rs rename to program-examples/anchor/anchor-sdk/transfer-interface/src/lib.rs diff --git a/program-examples/anchor/anchor-programs-sdk/transfer-interface/tests/test.rs b/program-examples/anchor/anchor-sdk/transfer-interface/tests/test.rs similarity index 100% rename from program-examples/anchor/anchor-programs-sdk/transfer-interface/tests/test.rs rename to program-examples/anchor/anchor-sdk/transfer-interface/tests/test.rs diff --git a/program-examples/anchor/sdk-basics/Anchor.toml b/program-examples/anchor/sdk-basics/Anchor.toml new file mode 100644 index 0000000..0c5de3c --- /dev/null +++ b/program-examples/anchor/sdk-basics/Anchor.toml @@ -0,0 +1,30 @@ +[toolchain] + +[features] +resolution = true +skip-lint = false + +[programs.devnet] +light_token_anchor_approve = "37XmzKqSG2VD1ZBvzyfbt1HN1mT1bqVAmfzX2ziB3KT1" +light_token_anchor_burn = "2TXVn8AqjfyeJvmFBD3kHJmh6fWkC4HNB5T76BmLKV5c" +light_token_anchor_close = "GXLCuNhnkRVp596eCdbNsZ9ua1ePbKbb344VKS7V3zQQ" +light_token_anchor_create_ata = "35MukgdfpNUbPMhTmEk63ECV8vjgpNVFRH9nP8ovMN58" +light_token_anchor_create_mint = "A1rJEoepgKYWZYZ8KVFpxgeeRGwBrU7xk8S39srjVkUX" +light_token_anchor_create_token_account = "zXK1CnWj4WFfFHCArxxr4sh3Qqx2p3oui8ahqpjArgS" +light_token_anchor_freeze = "JBMzMJX4sqCQfNVbosP2oqP1KZ5ZDWiwYTrupk687qXZ" +light_token_anchor_mint_to = "8bXEVmHLtAVqDLJp1dYWAZ61WQmqQKoTQ8LpPbRoUDCp" +light_token_anchor_mint_to_checked = "DGu3ofzac2Zndn95z2q9gCp8zHgW22YpMeEWj2up3QDb" +light_token_anchor_revoke = "G3ph4MK5qaSdxYnfxToETg31AHEMMqVhPuMRgBhk38tQ" +light_token_anchor_thaw = "7j94EF5hSkDLf7R26bjrd8Qc6s3oLAQpcKiF3re8JYw9" +light_token_anchor_transfer_checked = "HXmfewpozFdxhM8BayL9v5541gwoGMXTrUoip5KySs2f" +light_token_anchor_transfer_interface = "3rb6sG4jiYNLZC8jo8kLsFHpxr2Ci8e8Hh8UmeCMZmUV" + +[registry] +url = "https://api.apr.dev" + +[provider] +cluster = "devnet" +wallet = "~/.config/solana/id.json" + +[scripts] +test = "cargo test-sbf" diff --git a/program-examples/anchor/sdk-basics/Cargo.lock b/program-examples/anchor/sdk-basics/Cargo.lock new file mode 100644 index 0000000..43956cd --- /dev/null +++ b/program-examples/anchor/sdk-basics/Cargo.lock @@ -0,0 +1,8977 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[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 = "agave-feature-set" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a2c365c0245cbb8959de725fc2b44c754b673fdf34c9a7f9d4a25c35a7bf1" +dependencies = [ + "ahash", + "solana-epoch-schedule", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", + "solana-svm-feature-set", +] + +[[package]] +name = "agave-precompiles" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d60d73657792af7f2464e9181d13c3979e94bb09841d9ffa014eef4ef0492b77" +dependencies = [ + "agave-feature-set", + "bincode", + "digest 0.10.7", + "ed25519-dalek", + "libsecp256k1", + "openssl", + "sha3", + "solana-ed25519-program", + "solana-message", + "solana-precompile-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "agave-reserved-account-keys" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8289c8a8a2ef5aa10ce49a070f360f4e035ee3410b8d8f3580fb39d8cf042581" +dependencies = [ + "agave-feature-set", + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.4", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned-sized" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48a526ec4434d531d488af59fe866f36b310fe8906691c75dffa664450a3800a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "anchor-attribute-access-control" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f70fd141a4d18adf11253026b32504f885447048c7494faf5fa83b01af9c0cf" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-account" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715a261c57c7679581e06f07a74fa2af874ac30f86bd8ea07cca4a7e5388a064" +dependencies = [ + "anchor-syn", + "bs58", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-constant" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730d6df8ae120321c5c25e0779e61789e4b70dc8297102248902022f286102e4" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-error" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27e6e449cc3a37b2880b74dcafb8e5a17b954c0e58e376432d7adc646fb333ef" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-event" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7710e4c54adf485affcd9be9adec5ef8846d9c71d7f31e16ba86ff9fc1dd49f" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-program" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ecfd49b2aeadeb32f35262230db402abed76ce87e27562b34f61318b2ec83c" +dependencies = [ + "anchor-lang-idl", + "anchor-syn", + "anyhow", + "bs58", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde_json", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-accounts" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be89d160793a88495af462a7010b3978e48e30a630c91de47ce2c1d3cb7a6149" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-serde" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abc6ee78acb7bfe0c2dd2abc677aaa4789c0281a0c0ef01dbf6fe85e0fd9e6e4" +dependencies = [ + "anchor-syn", + "borsh-derive-internal", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-space" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "134a01c0703f6fd355a0e472c033f6f3e41fac1ef6e370b20c50f4c8d022cea7" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-lang" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6bab117055905e930f762c196e08f861f8dfe7241b92cee46677a3b15561a0a" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e8599d21995f68e296265aa5ab0c3cef582fd58afec014d01bd0bce18a4418" +dependencies = [ + "anchor-lang-idl-spec", + "anyhow", + "heck 0.3.3", + "regex", + "serde", + "serde_json", + "sha2 0.10.9", +] + +[[package]] +name = "anchor-lang-idl-spec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" +dependencies = [ + "anyhow", + "serde", +] + +[[package]] +name = "anchor-syn" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dc7a6d90cc643df0ed2744862cdf180587d1e5d28936538c18fc8908489ed67" +dependencies = [ + "anyhow", + "bs58", + "cargo_toml", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.9", + "syn 1.0.109", + "thiserror 1.0.69", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "ark-bn254" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +dependencies = [ + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff 0.4.2", + "ark-poly 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe 0.6.0", + "fnv", + "hashbrown 0.15.2", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe 0.6.0", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.114", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe 0.6.0", + "fnv", + "hashbrown 0.15.2", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive 0.4.2", + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", + "rayon", +] + +[[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 = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "async-compression" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" +dependencies = [ + "compression-codecs", + "compression-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[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 = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +dependencies = [ + "serde_core", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +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.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +dependencies = [ + "borsh-derive 1.6.0", + "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.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +dependencies = [ + "once_cell", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[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 = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[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.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" + +[[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 = "bytecount" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[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.23", +] + +[[package]] +name = "cc" +version = "1.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cfg_eval" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "chrono" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[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 = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "compression-codecs" +version = "0.4.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" +dependencies = [ + "brotli", + "compression-core", + "flate2", + "memchr", +] + +[[package]] +name = "compression-core" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + +[[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 = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[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 = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[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.114", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.114", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derivation-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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 = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "eager" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek 3.2.0", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek-bip32" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" +dependencies = [ + "derivation-path", + "ed25519-dalek", + "hmac 0.12.1", + "sha2 0.10.9", +] + +[[package]] +name = "educe" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" +dependencies = [ + "enum-ordinalize 3.1.15", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize 4.3.2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-iterator" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "enum-ordinalize" +version = "3.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[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 = "find-msvc-tools" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" + +[[package]] +name = "five8" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_const" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" + +[[package]] +name = "flate2" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[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 = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "groth16-solana" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a6d1ffb18dbf5cfc60b11bd7da88474c672870247c1e5b498619bcb6ba3d8f5" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "num-bigint 0.4.6", + "solana-bn254", + "thiserror 1.0.69", +] + +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.13.0", + "slab", + "tokio", + "tokio-util 0.7.18", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.4.0", + "indexmap 2.13.0", + "slab", + "tokio", + "tokio-util 0.7.18", + "tracing", +] + +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[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" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[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 = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.4.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.4.0", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.5.10", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2 0.4.13", + "http 1.4.0", + "http-body 1.0.1", + "httparse", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper 0.14.32", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http 1.4.0", + "hyper 1.8.1", + "hyper-util", + "rustls 0.23.36", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.4", + "tower-service", + "webpki-roots 1.0.5", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper 0.14.32", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.8.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "hyper 1.8.1", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.6.2", + "system-configuration 0.6.1", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width", + "web-time", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jsonrpc-core" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" +dependencies = [ + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "kaigan" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ba15de5aeb137f0f65aa3bf82187647f1285abfe5b20c80c2c37f7007ad519a" +dependencies = [ + "borsh 0.10.4", + "serde", +] + +[[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.180" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" + +[[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", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "typenum", +] + +[[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 = "light-account-checks" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f20b8640212dd450e18d452a247e28d8ba6fdce3c713fd8b69f1e95874d1b7ab" +dependencies = [ + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sysvar", + "thiserror 2.0.18", +] + +[[package]] +name = "light-array-map" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bdd13b18028ac9d80d0a987551c0dad7fe81be8140e87cc9d568b80f3728203" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "light-batched-merkle-tree" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e838c523b49371097f948cd5662bd9a89d9dca037fb61fd38001e99f485702" +dependencies = [ + "aligned-sized", + "borsh 0.10.4", + "light-account-checks", + "light-bloom-filter", + "light-compressed-account", + "light-hasher", + "light-macros", + "light-merkle-tree-metadata", + "light-verifier", + "light-zero-copy", + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sysvar", + "thiserror 2.0.18", + "zerocopy", +] + +[[package]] +name = "light-bloom-filter" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b8cf734ccf5fbc1f5fed8e5308b57ebde6774d9304c167bcb0de2854412d8" +dependencies = [ + "bitvec", + "num-bigint 0.4.6", + "solana-nostd-keccak", + "solana-program-error", + "thiserror 2.0.18", +] + +[[package]] +name = "light-bounded-vec" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58cfa375d028164719e3ffef93d2e5c27855cc8a5bb5bf257b868d17c12a3e66" +dependencies = [ + "bytemuck", + "memoffset", + "solana-program-error", + "thiserror 1.0.69", +] + +[[package]] +name = "light-client" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33203f596d48d28d1cb67dee5762b151e0073207a5e828c63ec68f9efb9a5ee8" +dependencies = [ + "anchor-lang", + "async-trait", + "base64 0.13.1", + "borsh 0.10.4", + "bs58", + "futures", + "lazy_static", + "light-compressed-account", + "light-compressible", + "light-concurrent-merkle-tree", + "light-event", + "light-hasher", + "light-indexed-merkle-tree", + "light-merkle-tree-metadata", + "light-prover-client", + "light-sdk", + "light-token", + "light-token-interface", + "litesvm", + "num-bigint 0.4.6", + "photon-api", + "rand 0.8.5", + "smallvec", + "solana-account", + "solana-account-decoder-client-types", + "solana-address-lookup-table-interface", + "solana-banks-client", + "solana-clock", + "solana-commitment-config", + "solana-compute-budget-interface", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-program-error", + "solana-pubkey", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-signature", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "spl-pod", + "spl-token-2022-interface", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "light-compressed-account" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c3537bbad9df133ca97fc191b164bba93dba1de4da01a92d979ef63f8ce106" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-hasher", + "light-macros", + "light-poseidon 0.3.0", + "light-program-profiler", + "light-zero-copy", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "thiserror 2.0.18", + "tinyvec", + "zerocopy", +] + +[[package]] +name = "light-compressible" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00d1dc14271907009f4ca23ae99c49279f7d2acc5a83f0f8d7362834b37e2e16" +dependencies = [ + "aligned-sized", + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-account-checks", + "light-compressed-account", + "light-hasher", + "light-macros", + "light-program-profiler", + "light-zero-copy", + "pinocchio-pubkey", + "solana-pubkey", + "solana-rent", + "thiserror 2.0.18", + "zerocopy", +] + +[[package]] +name = "light-concurrent-merkle-tree" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db96f47253a0907aaa46dac15cecb27b5510130e48da0b36690dcd2e99a6d558" +dependencies = [ + "borsh 0.10.4", + "light-bounded-vec", + "light-hasher", + "memoffset", + "solana-program-error", + "thiserror 2.0.18", +] + +[[package]] +name = "light-event" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4bae725ee1d4d944d442ac0bfdf2031b1b2379c04c7e39c475277aaaea08fb1" +dependencies = [ + "borsh 0.10.4", + "light-compressed-account", + "light-hasher", + "light-zero-copy", + "thiserror 2.0.18", +] + +[[package]] +name = "light-hasher" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c822662e6e109bac0e132a43fd52a4ef684811245a794e048cf9cda001e934c8" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "borsh 0.10.4", + "light-poseidon 0.3.0", + "num-bigint 0.4.6", + "sha2 0.10.9", + "sha3", + "solana-program-error", + "thiserror 2.0.18", + "tinyvec", +] + +[[package]] +name = "light-indexed-array" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f14f984030d86b6f07bd8f5ae04e2c40fcd0c3bdfcc7a291fff1ed59c9e6554" +dependencies = [ + "light-hasher", + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.18", +] + +[[package]] +name = "light-indexed-merkle-tree" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0824755289075f28de2820fc7d4ec4e6b9e99d404e033c07338b91cce8c71fb8" +dependencies = [ + "light-bounded-vec", + "light-concurrent-merkle-tree", + "light-hasher", + "light-merkle-tree-reference", + "num-bigint 0.4.6", + "num-traits", + "solana-program-error", + "thiserror 2.0.18", +] + +[[package]] +name = "light-instruction-decoder" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f4bd98e842f21b754ec28020a56de37cb0b1089952ef24340d21c2d5afd5c5" +dependencies = [ + "borsh 0.10.4", + "bs58", + "light-compressed-account", + "light-instruction-decoder-derive", + "light-sdk-types", + "light-token-interface", + "serde", + "solana-instruction", + "solana-pubkey", + "solana-signature", + "tabled", +] + +[[package]] +name = "light-instruction-decoder-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2035d04a0a1590da05634efcac149a2ac852565e28c9a55bd07a6620c0e90bff" +dependencies = [ + "bs58", + "darling", + "heck 0.5.0", + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.114", +] + +[[package]] +name = "light-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "179ac51cadc1d0ca047b4d6265a7cc245ca3affc16a20a2749585aa6464d39c2" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "solana-pubkey", + "syn 2.0.114", +] + +[[package]] +name = "light-merkle-tree-metadata" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c2e63e8345dcfb80efac69136fdcc6c36a12354675aca6e3daf13ec40422d1" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-compressed-account", + "solana-msg", + "solana-program-error", + "solana-sysvar", + "thiserror 2.0.18", + "zerocopy", +] + +[[package]] +name = "light-merkle-tree-reference" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8d480f62ca32b38a6231bbc5310d693f91d6b5bdcc18bb13c2d9aab7a1c90e8" +dependencies = [ + "light-hasher", + "light-indexed-array", + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.18", +] + +[[package]] +name = "light-poseidon" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" +dependencies = [ + "ark-bn254 0.4.0", + "ark-ff 0.4.2", + "num-bigint 0.4.6", + "thiserror 1.0.69", +] + +[[package]] +name = "light-poseidon" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3d87542063daaccbfecd78b60f988079b6ec4e089249658b9455075c78d42" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "num-bigint 0.4.6", + "thiserror 1.0.69", +] + +[[package]] +name = "light-profiler-macro" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a8be18fe4de58a6f754caa74a3fbc6d8a758a26f1f3c24d5b0f5b55df5f5408" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "light-program-profiler" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1d345871581aebd8825868a3f08410290aa1cdddcb189ca7f7e588f61d79fcf" +dependencies = [ + "light-profiler-macro", +] + +[[package]] +name = "light-program-test" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e85916a9da34a44971e1a30badaf04cb75213fbfa9f61a139ea6ebd0f021bdde" +dependencies = [ + "anchor-lang", + "async-trait", + "base64 0.13.1", + "borsh 0.10.4", + "bs58", + "bytemuck", + "chrono", + "light-client", + "light-compressed-account", + "light-compressible", + "light-event", + "light-hasher", + "light-indexed-array", + "light-indexed-merkle-tree", + "light-instruction-decoder", + "light-merkle-tree-metadata", + "light-merkle-tree-reference", + "light-prover-client", + "light-sdk", + "light-sdk-types", + "light-token", + "light-token-interface", + "light-zero-copy", + "litesvm", + "log", + "num-bigint 0.4.6", + "num-traits", + "photon-api", + "rand 0.8.5", + "reqwest 0.12.28", + "serde", + "serde_json", + "solana-account", + "solana-banks-client", + "solana-compute-budget", + "solana-instruction", + "solana-pubkey", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction", + "solana-transaction-status", + "solana-transaction-status-client-types", + "spl-token-2022 7.0.0", + "tabled", + "tokio", +] + +[[package]] +name = "light-prover-client" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd2195f4573628a8aaca37504cde1b1903b8ed20e2706acbad875b7d41acbeab" +dependencies = [ + "ark-bn254 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "light-compressed-account", + "light-hasher", + "light-indexed-array", + "light-sparse-merkle-tree", + "num-bigint 0.4.6", + "num-traits", + "reqwest 0.11.27", + "serde", + "serde_json", + "solana-bn254", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "light-sdk" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f523c64a6fcdafe6df81d647560770529896f2707be8ffcf048d909b7e2b30" +dependencies = [ + "anchor-lang", + "bincode", + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account", + "light-compressible", + "light-hasher", + "light-macros", + "light-sdk-macros", + "light-sdk-types", + "light-zero-copy", + "num-bigint 0.4.6", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-instruction", + "solana-loader-v3-interface", + "solana-msg", + "solana-program", + "solana-program-error", + "solana-pubkey", + "solana-system-interface", + "solana-sysvar", + "thiserror 2.0.18", +] + +[[package]] +name = "light-sdk-macros" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d12bb13b84df21a4871dc0837aafc0b48464d3e9b17e2773c0719b6cc724c5" +dependencies = [ + "darling", + "light-hasher", + "light-sdk-types", + "proc-macro2", + "quote", + "solana-pubkey", + "syn 2.0.114", +] + +[[package]] +name = "light-sdk-types" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8153b27d057ded7b2b6bbd78c643e3f20bd9a9718ca1a8d4183169ccd812c3" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account", + "light-hasher", + "light-macros", + "solana-msg", + "thiserror 2.0.18", +] + +[[package]] +name = "light-sparse-merkle-tree" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4251e79b6c63f4946572dcfd7623680ad0f9e0efe1a761a944733333c5645063" +dependencies = [ + "light-hasher", + "light-indexed-array", + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.18", +] + +[[package]] +name = "light-token" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fd2e8ca6d7d70c77658010e1ae6ed6d4fe23e29054964b053f51e5c4676e49" +dependencies = [ + "anchor-lang", + "arrayvec", + "borsh 0.10.4", + "light-account-checks", + "light-batched-merkle-tree", + "light-compressed-account", + "light-compressible", + "light-macros", + "light-program-profiler", + "light-sdk", + "light-sdk-macros", + "light-sdk-types", + "light-token-interface", + "light-token-types", + "light-zero-copy", + "solana-account-info", + "solana-cpi", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "spl-pod", + "thiserror 2.0.18", +] + +[[package]] +name = "light-token-anchor-approve" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-burn" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-close" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-create-ata" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-create-mint" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-create-token-account" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-freeze" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-mint-to" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-mint-to-checked" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-revoke" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-thaw" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-transfer-checked" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-anchor-transfer-interface" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-client", + "light-program-test", + "light-sdk", + "light-token", + "light-token-interface", + "light-token-types", + "solana-sdk", + "tokio", +] + +[[package]] +name = "light-token-interface" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46decebc2a13ec984e2ba7f1e691c0d46b9061875c6bdd12636b7c100a60e6c" +dependencies = [ + "aligned-sized", + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "light-array-map", + "light-compressed-account", + "light-compressible", + "light-hasher", + "light-macros", + "light-program-profiler", + "light-zero-copy", + "pinocchio", + "pinocchio-pubkey", + "solana-account-info", + "solana-pubkey", + "spl-pod", + "spl-token-2022 7.0.0", + "thiserror 2.0.18", + "tinyvec", + "zerocopy", +] + +[[package]] +name = "light-token-types" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "411481fe2e04b1241235c2572480c153c5669507e227f5e3327057b0d2ba5734" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account", + "light-macros", + "light-sdk-types", + "solana-msg", + "thiserror 2.0.18", +] + +[[package]] +name = "light-verifier" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecba4c14ac08b078a9d84033d628b12bb2577141f405140d506bacd392a830bc" +dependencies = [ + "groth16-solana", + "light-compressed-account", + "thiserror 2.0.18", +] + +[[package]] +name = "light-zero-copy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5621fb515e14af46148699c0b65334aabe230a1d2cbd06736ccc7a408c8a4af" +dependencies = [ + "light-zero-copy-derive", + "solana-program-error", + "zerocopy", +] + +[[package]] +name = "light-zero-copy-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41c46425e5c7ab5203ff5c86ae2615b169cca55f9283f5f60f5dd74143be6934" +dependencies = [ + "lazy_static", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "litesvm" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23bca37ac374948b348e29c74b324dc36f18bbbd1ccf80e2046d967521cbd143" +dependencies = [ + "agave-feature-set", + "agave-precompiles", + "agave-reserved-account-keys", + "ansi_term", + "bincode", + "indexmap 2.13.0", + "itertools 0.14.0", + "log", + "solana-account", + "solana-address-lookup-table-interface", + "solana-bpf-loader-program", + "solana-builtins", + "solana-clock", + "solana-compute-budget", + "solana-compute-budget-instruction", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee", + "solana-fee-structure", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", + "solana-keypair", + "solana-last-restart-slot", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-log-collector", + "solana-message", + "solana-native-token 3.0.0", + "solana-nonce", + "solana-nonce-account", + "solana-precompile-error", + "solana-program-error", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sha256-hasher", + "solana-signature", + "solana-signer", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-interface", + "solana-svm-callback", + "solana-svm-transaction", + "solana-system-interface", + "solana-system-program", + "solana-sysvar", + "solana-sysvar-id", + "solana-timings", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "solana-vote-program", + "thiserror 2.0.18", +] + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[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 = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.61.2", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "num" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" +dependencies = [ + "num-bigint 0.2.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[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", + "serde", +] + +[[package]] +name = "num-complex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" + +[[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.114", +] + +[[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-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-bigint 0.2.6", + "num-integer", + "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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-src" +version = "300.5.4+3.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror 1.0.69", +] + +[[package]] +name = "papergrid" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6978128c8b51d8f4080631ceb2302ab51e32cc6e8615f735ee2f83fd269ae3f1" +dependencies = [ + "bytecount", + "fnv", + "unicode-width", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "percentage" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" +dependencies = [ + "num", +] + +[[package]] +name = "photon-api" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e572dba0c255f5b8176f15b9e849330d915a8927804f7f9702d5bbbc70e4a1ad" +dependencies = [ + "reqwest 0.12.28", + "serde", + "serde_derive", + "serde_json", + "serde_with", + "url", + "uuid", +] + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pinocchio" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b971851087bc3699b001954ad02389d50c41405ece3548cbcafc88b3e20017a" + +[[package]] +name = "pinocchio-pubkey" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0225638cadcbebae8932cb7f49cb5da7c15c21beb19f048f05a5ca7d93f065" +dependencies = [ + "five8_const", + "pinocchio", + "sha2-const-stable", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[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 = "portable-atomic" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +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.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit 0.23.10+spec-1.0.0", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +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 = "qualifier_attr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls 0.23.36", + "socket2 0.6.2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash", + "rustls 0.23.36", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.6.2", + "tracing", + "windows-sys 0.60.2", +] + +[[package]] +name = "quote" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[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" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + +[[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_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[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.17", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[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 = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-rustls 0.24.2", + "hyper-tls 0.5.0", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.12", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.24.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.13", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.8.1", + "hyper-rustls 0.27.7", + "hyper-tls 0.6.0", + "hyper-util", + "js-sys", + "log", + "mime", + "mime_guess", + "native-tls", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.36", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.26.4", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 1.0.5", +] + +[[package]] +name = "reqwest-middleware" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" +dependencies = [ + "anyhow", + "async-trait", + "http 1.4.0", + "reqwest 0.12.28", + "serde", + "thiserror 1.0.69", + "tower-service", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.23.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki 0.103.9", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" + +[[package]] +name = "schannel" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.10.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.13.0", + "schemars 0.9.0", + "schemars 1.2.0", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2-const-stable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" + +[[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 = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "solana-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" +dependencies = [ + "bincode", + "serde", + "serde_bytes", + "serde_derive", + "solana-account-info", + "solana-clock", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-sysvar", +] + +[[package]] +name = "solana-account-decoder" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba71c97fa4d85ce4a1e0e79044ad0406c419382be598c800202903a7688ce71a" +dependencies = [ + "Inflector", + "base64 0.22.1", + "bincode", + "bs58", + "bv", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-config-program-client", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-instruction", + "solana-loader-v3-interface", + "solana-nonce", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-interface", + "solana-sysvar", + "solana-vote-interface", + "spl-generic-token", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "thiserror 2.0.18", + "zstd", +] + +[[package]] +name = "solana-account-decoder-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5519e8343325b707f17fbed54fcefb325131b692506d0af9e08a539d15e4f8cf" +dependencies = [ + "base64 0.22.1", + "bs58", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-pubkey", + "zstd", +] + +[[package]] +name = "solana-account-info" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" +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-banks-client" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68548570c38a021c724b5aa0112f45a54bdf7ff1b041a042848e034a95a96994" +dependencies = [ + "borsh 1.6.0", + "futures", + "solana-account", + "solana-banks-interface", + "solana-clock", + "solana-commitment-config", + "solana-hash", + "solana-message", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-signature", + "solana-sysvar", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "tarpc", + "thiserror 2.0.18", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-banks-interface" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6d90edc435bf488ef7abed4dcb1f94fa1970102cbabb25688f58417fd948286" +dependencies = [ + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-commitment-config", + "solana-hash", + "solana-message", + "solana-pubkey", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "tarpc", +] + +[[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 0.4.6", + "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-bn254" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4420f125118732833f36facf96a27e7b78314b2d642ba07fa9ffdacd8d79e243" +dependencies = [ + "ark-bn254 0.4.0", + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "bytemuck", + "solana-define-syscall", + "thiserror 2.0.18", +] + +[[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.6.0", +] + +[[package]] +name = "solana-bpf-loader-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aec57dcd80d0f6879956cad28854a6eebaed6b346ce56908ea01a9f36ab259" +dependencies = [ + "bincode", + "libsecp256k1", + "num-traits", + "qualifier_attr", + "scopeguard", + "solana-account", + "solana-account-info", + "solana-big-mod-exp", + "solana-bincode", + "solana-blake3-hasher", + "solana-bn254", + "solana-clock", + "solana-cpi", + "solana-curve25519", + "solana-hash", + "solana-instruction", + "solana-keccak-hasher", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-log-collector", + "solana-measure", + "solana-packet", + "solana-poseidon", + "solana-program-entrypoint", + "solana-program-runtime", + "solana-pubkey", + "solana-sbpf", + "solana-sdk-ids", + "solana-secp256k1-recover", + "solana-sha256-hasher", + "solana-stable-layout", + "solana-svm-feature-set", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", + "solana-timings", + "solana-transaction-context", + "solana-type-overrides", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-builtins" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d61a31b63b52b0d268cbcd56c76f50314867d7f8e07a0f2c62ee7c9886e07b2" +dependencies = [ + "agave-feature-set", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-hash", + "solana-loader-v4-program", + "solana-program-runtime", + "solana-pubkey", + "solana-sdk-ids", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", + "solana-zk-elgamal-proof-program", + "solana-zk-token-proof-program", +] + +[[package]] +name = "solana-builtins-default-costs" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ca69a299a6c969b18ea381a02b40c9e4dda04b2af0d15a007c1184c82163bbb" +dependencies = [ + "agave-feature-set", + "ahash", + "log", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-loader-v4-program", + "solana-pubkey", + "solana-sdk-ids", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", +] + +[[package]] +name = "solana-client-traits" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" +dependencies = [ + "solana-account", + "solana-commitment-config", + "solana-epoch-info", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-pubkey", + "solana-signature", + "solana-signer", + "solana-system-interface", + "solana-transaction", + "solana-transaction-error", +] + +[[package]] +name = "solana-clock" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-cluster-type" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" +dependencies = [ + "serde", + "serde_derive", + "solana-hash", +] + +[[package]] +name = "solana-commitment-config" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-compute-budget" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f4fc63bc2276a1618ca0bfc609da7448534ecb43a1cb387cdf9eaa2dc7bc272" +dependencies = [ + "solana-fee-structure", + "solana-program-runtime", +] + +[[package]] +name = "solana-compute-budget-instruction" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "503d94430f6d3c5ac1e1fa6a342c1c714d5b03c800999e7b6cf235298f0b5341" +dependencies = [ + "agave-feature-set", + "log", + "solana-borsh", + "solana-builtins-default-costs", + "solana-compute-budget", + "solana-compute-budget-interface", + "solana-instruction", + "solana-packet", + "solana-pubkey", + "solana-sdk-ids", + "solana-svm-transaction", + "solana-transaction-error", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-compute-budget-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8432d2c4c22d0499aa06d62e4f7e333f81777b3d7c96050ae9e5cb71a8c3aee4" +dependencies = [ + "borsh 1.6.0", + "serde", + "serde_derive", + "solana-instruction", + "solana-sdk-ids", +] + +[[package]] +name = "solana-compute-budget-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "072b02beed1862c6b7b7a8a699379594c4470a9371c711856a0a3c266dcf57e5" +dependencies = [ + "solana-program-runtime", +] + +[[package]] +name = "solana-config-program-client" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53aceac36f105fd4922e29b4f0c1f785b69d7b3e7e387e384b8985c8e0c3595e" +dependencies = [ + "bincode", + "borsh 0.10.4", + "kaigan", + "serde", + "solana-program", +] + +[[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.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae4261b9a8613d10e77ac831a8fa60b6fa52b9b103df46d641deff9f9812a23" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "solana-define-syscall", + "subtle", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-decode-error" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-define-syscall" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" + +[[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-ed25519-program" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "ed25519-dalek", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", +] + +[[package]] +name = "solana-epoch-info" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" +dependencies = [ + "serde", + "serde_derive", +] + +[[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-rewards-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" +dependencies = [ + "siphasher", + "solana-hash", + "solana-pubkey", +] + +[[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.18", +] + +[[package]] +name = "solana-feature-gate-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" +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-feature-set" +version = "2.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93b93971e289d6425f88e6e3cb6668c4b05df78b3c518c249be55ced8efd6b6d" +dependencies = [ + "ahash", + "lazy_static", + "solana-epoch-schedule", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-fee" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16beda37597046b1edd1cea6fa7caaed033c091f99ec783fe59c82828bc2adb8" +dependencies = [ + "agave-feature-set", + "solana-fee-structure", + "solana-svm-transaction", +] + +[[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-fee-structure" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33adf673581c38e810bf618f745bf31b683a0a4a4377682e6aaac5d9a058dd4e" +dependencies = [ + "serde", + "serde_derive", + "solana-message", + "solana-native-token 2.3.0", +] + +[[package]] +name = "solana-genesis-config" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3725085d47b96d37fef07a29d78d2787fc89a0b9004c66eed7753d1e554989f" +dependencies = [ + "bincode", + "chrono", + "memmap2", + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-cluster-type", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash", + "solana-inflation", + "solana-keypair", + "solana-logger", + "solana-poh-config", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sha256-hasher", + "solana-shred-version", + "solana-signer", + "solana-time-utils", +] + +[[package]] +name = "solana-hard-forks" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-hash" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" +dependencies = [ + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "five8", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-sanitize", + "wasm-bindgen", +] + +[[package]] +name = "solana-inflation" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-instruction" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab5682934bd1f65f8d2c16f21cb532526fcc1a09f796e2cacdb091eee5774ad" +dependencies = [ + "bincode", + "borsh 1.6.0", + "getrandom 0.2.17", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "serde_json", + "solana-define-syscall", + "solana-pubkey", + "wasm-bindgen", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" +dependencies = [ + "bitflags 2.10.0", + "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-keypair" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd3f04aa1a05c535e93e121a95f66e7dcccf57e007282e8255535d24bf1e98bb" +dependencies = [ + "ed25519-dalek", + "ed25519-dalek-bip32", + "five8", + "rand 0.7.3", + "solana-derivation-path", + "solana-pubkey", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "wasm-bindgen", +] + +[[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 = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" +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-loader-v4-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ab01855d851fa2fb6034b0d48de33d77d5c5f5fb4b0353d8e4a934cc03d48a" +dependencies = [ + "log", + "qualifier_attr", + "solana-account", + "solana-bincode", + "solana-bpf-loader-program", + "solana-instruction", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-log-collector", + "solana-measure", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-sbpf", + "solana-sdk-ids", + "solana-transaction-context", + "solana-type-overrides", +] + +[[package]] +name = "solana-log-collector" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d945b1cf5bf7cbd6f5b78795beda7376370c827640df43bb2a1c17b492dc106" +dependencies = [ + "log", +] + +[[package]] +name = "solana-logger" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8e777ec1afd733939b532a42492d888ec7c88d8b4127a5d867eb45c6eb5cd5" +dependencies = [ + "env_logger", + "lazy_static", + "libc", + "log", + "signal-hook", +] + +[[package]] +name = "solana-measure" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11dcd67cd2ae6065e494b64e861e0498d046d95a61cbbf1ae3d58be1ea0f42ed" + +[[package]] +name = "solana-message" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" +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-metrics" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0375159d8460f423d39e5103dcff6e07796a5ec1850ee1fcfacfd2482a8f34b5" +dependencies = [ + "crossbeam-channel", + "gethostname", + "log", + "reqwest 0.12.28", + "solana-cluster-type", + "solana-sha256-hasher", + "solana-time-utils", + "thiserror 2.0.18", +] + +[[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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" + +[[package]] +name = "solana-native-token" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" + +[[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-nonce-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" +dependencies = [ + "solana-account", + "solana-hash", + "solana-nonce", + "solana-sdk-ids", +] + +[[package]] +name = "solana-nostd-keccak" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8ced70920435b1baa58f76e6f84bbc1110ddd1d6161ec76b6d731ae8431e9c4" +dependencies = [ + "sha3", +] + +[[package]] +name = "solana-offchain-message" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" +dependencies = [ + "num_enum", + "solana-hash", + "solana-packet", + "solana-pubkey", + "solana-sanitize", + "solana-sha256-hasher", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-packet" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "004f2d2daf407b3ec1a1ca5ec34b3ccdfd6866dd2d3c7d0715004a96e4b6d127" +dependencies = [ + "bincode", + "bitflags 2.10.0", + "cfg_eval", + "serde", + "serde_derive", + "serde_with", +] + +[[package]] +name = "solana-poh-config" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-poseidon" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbac4eb90016eeb1d37fa36e592d3a64421510c49666f81020736611c319faff" +dependencies = [ + "ark-bn254 0.4.0", + "light-poseidon 0.2.0", + "solana-define-syscall", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-precompile-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d87b2c1f5de77dfe2b175ee8dd318d196aaca4d0f66f02842f80c852811f9f8" +dependencies = [ + "num-traits", + "solana-decode-error", +] + +[[package]] +name = "solana-precompiles" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36e92768a57c652edb0f5d1b30a7d0bc64192139c517967c18600debe9ae3832" +dependencies = [ + "lazy_static", + "solana-ed25519-program", + "solana-feature-set", + "solana-message", + "solana-precompile-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "solana-presigner" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" +dependencies = [ + "solana-pubkey", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-program" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" +dependencies = [ + "bincode", + "blake3", + "borsh 0.10.4", + "borsh 1.6.0", + "bs58", + "bytemuck", + "console_error_panic_hook", + "console_log", + "getrandom 0.2.17", + "lazy_static", + "log", + "memoffset", + "num-bigint 0.4.6", + "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 2.3.0", + "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.18", + "wasm-bindgen", +] + +[[package]] +name = "solana-program-entrypoint" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" +dependencies = [ + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", +] + +[[package]] +name = "solana-program-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" +dependencies = [ + "borsh 1.6.0", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-pubkey", +] + +[[package]] +name = "solana-program-memory" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" +dependencies = [ + "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-program-runtime" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5653001e07b657c9de6f0417cf9add1cf4325903732c480d415655e10cc86704" +dependencies = [ + "base64 0.22.1", + "bincode", + "enum-iterator", + "itertools 0.12.1", + "log", + "percentage", + "rand 0.8.5", + "serde", + "solana-account", + "solana-clock", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-structure", + "solana-hash", + "solana-instruction", + "solana-last-restart-slot", + "solana-log-collector", + "solana-measure", + "solana-metrics", + "solana-program-entrypoint", + "solana-pubkey", + "solana-rent", + "solana-sbpf", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-stable-layout", + "solana-svm-callback", + "solana-svm-feature-set", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", + "solana-timings", + "solana-transaction-context", + "solana-type-overrides", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-pubkey" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" +dependencies = [ + "borsh 0.10.4", + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "five8", + "five8_const", + "getrandom 0.2.17", + "js-sys", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-decode-error", + "solana-define-syscall", + "solana-sanitize", + "solana-sha256-hasher", + "wasm-bindgen", +] + +[[package]] +name = "solana-quic-definitions" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf0d4d5b049eb1d0c35f7b18f305a27c8986fc5c0c9b383e97adaa35334379e" +dependencies = [ + "solana-keypair", +] + +[[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-rent-collector" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "127e6dfa51e8c8ae3aa646d8b2672bc4ac901972a338a9e1cd249e030564fb9d" +dependencies = [ + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-epoch-schedule", + "solana-genesis-config", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", +] + +[[package]] +name = "solana-rent-debits" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" +dependencies = [ + "solana-pubkey", + "solana-reward-info", +] + +[[package]] +name = "solana-reserved-account-keys" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4b22ea19ca2a3f28af7cd047c914abf833486bf7a7c4a10fc652fff09b385b1" +dependencies = [ + "lazy_static", + "solana-feature-set", + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "solana-reward-info" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-rpc-client" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8d3161ac0918178e674c1f7f1bfac40de3e7ed0383bd65747d63113c156eaeb" +dependencies = [ + "async-trait", + "base64 0.22.1", + "bincode", + "bs58", + "futures", + "indicatif", + "log", + "reqwest 0.12.28", + "reqwest-middleware", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-clock", + "solana-commitment-config", + "solana-epoch-info", + "solana-epoch-schedule", + "solana-feature-gate-interface", + "solana-hash", + "solana-instruction", + "solana-message", + "solana-pubkey", + "solana-rpc-client-api", + "solana-signature", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-version", + "solana-vote-interface", + "tokio", +] + +[[package]] +name = "solana-rpc-client-api" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dbc138685c79d88a766a8fd825057a74ea7a21e1dd7f8de275ada899540fff7" +dependencies = [ + "anyhow", + "jsonrpc-core", + "reqwest 0.12.28", + "reqwest-middleware", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder-client-types", + "solana-clock", + "solana-rpc-client-types", + "solana-signer", + "solana-transaction-error", + "solana-transaction-status-client-types", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-rpc-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea428a81729255d895ea47fba9b30fd4dacbfe571a080448121bd0592751676" +dependencies = [ + "base64 0.22.1", + "bs58", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-clock", + "solana-commitment-config", + "solana-fee-calculator", + "solana-inflation", + "solana-pubkey", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-version", + "spl-generic-token", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-sanitize" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" + +[[package]] +name = "solana-sbpf" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "474a2d95dc819898ded08d24f29642d02189d3e1497bbb442a92a3997b7eb55f" +dependencies = [ + "byteorder", + "combine", + "hash32", + "libc", + "log", + "rand 0.8.5", + "rustc-demangle", + "thiserror 2.0.18", + "winapi", +] + +[[package]] +name = "solana-sdk" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc0e4a7635b902791c44b6581bfb82f3ada32c5bc0929a64f39fe4bb384c86a" +dependencies = [ + "bincode", + "bs58", + "getrandom 0.1.16", + "js-sys", + "serde", + "serde_json", + "solana-account", + "solana-bn254", + "solana-client-traits", + "solana-cluster-type", + "solana-commitment-config", + "solana-compute-budget-interface", + "solana-decode-error", + "solana-derivation-path", + "solana-ed25519-program", + "solana-epoch-info", + "solana-epoch-rewards-hasher", + "solana-feature-set", + "solana-fee-structure", + "solana-genesis-config", + "solana-hard-forks", + "solana-inflation", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-native-token 2.3.0", + "solana-nonce-account", + "solana-offchain-message", + "solana-packet", + "solana-poh-config", + "solana-precompile-error", + "solana-precompiles", + "solana-presigner", + "solana-program", + "solana-program-memory", + "solana-pubkey", + "solana-quic-definitions", + "solana-rent-collector", + "solana-rent-debits", + "solana-reserved-account-keys", + "solana-reward-info", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-secp256k1-program", + "solana-secp256k1-recover", + "solana-secp256r1-program", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-serde", + "solana-serde-varint", + "solana-short-vec", + "solana-shred-version", + "solana-signature", + "solana-signer", + "solana-system-transaction", + "solana-time-utils", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "solana-validator-exit", + "thiserror 2.0.18", + "wasm-bindgen", +] + +[[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.114", +] + +[[package]] +name = "solana-secp256k1-program" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f19833e4bc21558fe9ec61f239553abe7d05224347b57d65c2218aeeb82d6149" +dependencies = [ + "bincode", + "digest 0.10.7", + "libsecp256k1", + "serde", + "serde_derive", + "sha3", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", + "solana-signature", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" +dependencies = [ + "borsh 1.6.0", + "libsecp256k1", + "solana-define-syscall", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-secp256r1-program" +version = "2.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce0ae46da3071a900f02d367d99b2f3058fe2e90c5062ac50c4f20cfedad8f0f" +dependencies = [ + "bytemuck", + "openssl", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "156bb61a96c605fa124e052d630dba2f6fb57e08c7d15b757e1e958b3ed7b3fe" +dependencies = [ + "hashbrown 0.15.2", +] + +[[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 0.12.1", + "pbkdf2", + "sha2 0.10.9", +] + +[[package]] +name = "solana-serde" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serde-varint" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" +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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" +dependencies = [ + "sha2 0.10.9", + "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-shred-version" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" +dependencies = [ + "solana-hard-forks", + "solana-hash", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-signature" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" +dependencies = [ + "ed25519-dalek", + "five8", + "rand 0.8.5", + "serde", + "serde-big-array", + "serde_derive", + "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.6.0", + "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-stake-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "500e9b9d11573f12de91e94f9c4459882cd5ffc692776af49b610d6fcc0b167f" +dependencies = [ + "agave-feature-set", + "bincode", + "log", + "solana-account", + "solana-bincode", + "solana-clock", + "solana-config-program-client", + "solana-genesis-config", + "solana-instruction", + "solana-log-collector", + "solana-native-token 2.3.0", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-stake-interface", + "solana-sysvar", + "solana-transaction-context", + "solana-type-overrides", + "solana-vote-interface", +] + +[[package]] +name = "solana-svm-callback" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cef9f7d5cfb5d375081a6c8ad712a6f0e055a15890081f845acf55d8254a7a2" +dependencies = [ + "solana-account", + "solana-precompile-error", + "solana-pubkey", +] + +[[package]] +name = "solana-svm-feature-set" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f24b836eb4d74ec255217bdbe0f24f64a07adeac31aca61f334f91cd4a3b1d5" + +[[package]] +name = "solana-svm-transaction" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab717b9539375ebb088872c6c87d1d8832d19f30f154ecc530154d23f60a6f0c" +dependencies = [ + "solana-hash", + "solana-message", + "solana-pubkey", + "solana-sdk-ids", + "solana-signature", + "solana-transaction", +] + +[[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-system-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23ca36cef39aea7761be58d4108a56a2e27042fb1e913355fdb142a05fc7eab7" +dependencies = [ + "bincode", + "log", + "serde", + "serde_derive", + "solana-account", + "solana-bincode", + "solana-fee-calculator", + "solana-instruction", + "solana-log-collector", + "solana-nonce", + "solana-nonce-account", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "solana-transaction-context", + "solana-type-overrides", +] + +[[package]] +name = "solana-system-transaction" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" +dependencies = [ + "solana-hash", + "solana-keypair", + "solana-message", + "solana-pubkey", + "solana-signer", + "solana-system-interface", + "solana-transaction", +] + +[[package]] +name = "solana-sysvar" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db" +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-time-utils" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" + +[[package]] +name = "solana-timings" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c49b842dfc53c1bf9007eaa6730296dea93b4fce73f457ce1080af43375c0d6" +dependencies = [ + "eager", + "enum-iterator", + "solana-pubkey", +] + +[[package]] +name = "solana-transaction" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80657d6088f721148f5d889c828ca60c7daeedac9a8679f9ec215e0c42bcbf41" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-bincode", + "solana-feature-set", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-precompiles", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-signature", + "solana-signer", + "solana-system-interface", + "solana-transaction-error", + "wasm-bindgen", +] + +[[package]] +name = "solana-transaction-context" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a312304361987a85b2ef2293920558e6612876a639dd1309daf6d0d59ef2fe" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account", + "solana-instruction", + "solana-instructions-sysvar", + "solana-pubkey", + "solana-rent", + "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 = [ + "serde", + "serde_derive", + "solana-instruction", + "solana-sanitize", +] + +[[package]] +name = "solana-transaction-status" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135f92f4192cc68900c665becf97fc0a6500ae5a67ff347bf2cbc20ecfefa821" +dependencies = [ + "Inflector", + "agave-reserved-account-keys", + "base64 0.22.1", + "bincode", + "borsh 1.6.0", + "bs58", + "log", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-hash", + "solana-instruction", + "solana-loader-v2-interface", + "solana-loader-v3-interface", + "solana-message", + "solana-program-option", + "solana-pubkey", + "solana-reward-info", + "solana-sdk-ids", + "solana-signature", + "solana-stake-interface", + "solana-system-interface", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-vote-interface", + "spl-associated-token-account", + "spl-memo", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-transaction-status-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f1d7c2387c35850848212244d2b225847666cb52d3bd59a5c409d2c300303d" +dependencies = [ + "base64 0.22.1", + "bincode", + "bs58", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder-client-types", + "solana-commitment-config", + "solana-message", + "solana-reward-info", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-type-overrides" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d80c44761eb398a157d809a04840865c347e1831ae3859b6100c0ee457bc1a" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "solana-validator-exit" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" + +[[package]] +name = "solana-version" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3324d46c7f7b7f5d34bf7dc71a2883bdc072c7b28ca81d0b2167ecec4cf8da9f" +dependencies = [ + "agave-feature-set", + "rand 0.8.5", + "semver", + "serde", + "serde_derive", + "solana-sanitize", + "solana-serde-varint", +] + +[[package]] +name = "solana-vote-interface" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3" +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-vote-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "908d0e72c8b83e48762eb3e8c9114497cf4b1d66e506e360c46aba9308e71299" +dependencies = [ + "agave-feature-set", + "bincode", + "log", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "solana-account", + "solana-bincode", + "solana-clock", + "solana-epoch-schedule", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-metrics", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-signer", + "solana-slot-hashes", + "solana-transaction", + "solana-transaction-context", + "solana-vote-interface", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-zk-elgamal-proof-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70cea14481d8efede6b115a2581f27bc7c6fdfba0752c20398456c3ac1245fc4" +dependencies = [ + "agave-feature-set", + "bytemuck", + "num-derive", + "num-traits", + "solana-instruction", + "solana-log-collector", + "solana-program-runtime", + "solana-sdk-ids", + "solana-zk-sdk", +] + +[[package]] +name = "solana-zk-sdk" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b9fc6ec37d16d0dccff708ed1dd6ea9ba61796700c3bb7c3b401973f10f63b" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "itertools 0.12.1", + "js-sys", + "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.18", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "solana-zk-token-proof-program" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579752ad6ea2a671995f13c763bf28288c3c895cb857a518cc4ebab93c9a8dde" +dependencies = [ + "agave-feature-set", + "bytemuck", + "num-derive", + "num-traits", + "solana-instruction", + "solana-log-collector", + "solana-program-runtime", + "solana-sdk-ids", + "solana-zk-token-sdk", +] + +[[package]] +name = "solana-zk-token-sdk" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5055e5df94abd5badf4f947681c893375bdb6f8f543c05d2a7ab9647a6a9d205" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "itertools 0.12.1", + "merlin", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "serde_json", + "sha3", + "solana-curve25519", + "solana-derivation-path", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "subtle", + "thiserror 2.0.18", + "zeroize", +] + +[[package]] +name = "spl-associated-token-account" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae179d4a26b3c7a20c839898e6aed84cb4477adf108a366c95532f058aea041b" +dependencies = [ + "borsh 1.6.0", + "num-derive", + "num-traits", + "solana-program", + "spl-associated-token-account-client", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "thiserror 2.0.18", +] + +[[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.114", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.114", + "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 0.2.1", +] + +[[package]] +name = "spl-elgamal-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65edfeed09cd4231e595616aa96022214f9c9d2be02dea62c2b30d5695a6833a" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-cpi", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "solana-zk-sdk", + "spl-pod", + "spl-token-confidential-transfer-proof-extraction 0.3.0", +] + +[[package]] +name = "spl-generic-token" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741a62a566d97c58d33f9ed32337ceedd4e35109a686e31b1866c5dfa56abddc" +dependencies = [ + "bytemuck", + "solana-pubkey", +] + +[[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.6.0", + "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.18", +] + +[[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 0.4.1", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-program-error" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" +dependencies = [ + "num-derive", + "num-traits", + "solana-decode-error", + "solana-msg", + "solana-program-error", + "spl-program-error-derive 0.5.0", + "thiserror 2.0.18", +] + +[[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.9", + "syn 2.0.114", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.114", +] + +[[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 0.6.0", + "spl-type-length-value 0.7.0", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" +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 0.7.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.18", +] + +[[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" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sysvar", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-2022" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9048b26b0df0290f929ff91317c83db28b3ef99af2b3493dd35baa146774924c" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-program", + "solana-security-txt", + "solana-zk-sdk", + "spl-elgamal-registry 0.1.1", + "spl-memo", + "spl-pod", + "spl-token 7.0.0", + "spl-token-confidential-transfer-ciphertext-arithmetic 0.2.1", + "spl-token-confidential-transfer-proof-extraction 0.2.1", + "spl-token-confidential-transfer-proof-generation 0.3.0", + "spl-token-group-interface 0.5.0", + "spl-token-metadata-interface 0.6.0", + "spl-transfer-hook-interface 0.9.0", + "spl-type-length-value 0.7.0", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-2022" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f0dfbb079eebaee55e793e92ca5f433744f4b71ee04880bfd6beefba5973e5" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-native-token 2.3.0", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-security-txt", + "solana-system-interface", + "solana-sysvar", + "solana-zk-sdk", + "spl-elgamal-registry 0.2.0", + "spl-memo", + "spl-pod", + "spl-token 8.0.0", + "spl-token-confidential-transfer-ciphertext-arithmetic 0.3.1", + "spl-token-confidential-transfer-proof-extraction 0.3.0", + "spl-token-confidential-transfer-proof-generation 0.4.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "spl-transfer-hook-interface 0.10.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-2022-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62d7ae2ee6b856f8ddcbdc3b3a9f4d2141582bbe150f93e5298ee97e0251fa04" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "spl-token-confidential-transfer-proof-extraction 0.4.1", + "spl-token-confidential-transfer-proof-generation 0.4.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.18", +] + +[[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-ciphertext-arithmetic" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cddd52bfc0f1c677b41493dafa3f2dbbb4b47cf0990f08905429e19dc8289b35" +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.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe2629860ff04c17bafa9ba4bed8850a404ecac81074113e1f840dbd0ebb7bd6" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-curve25519", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512c85bdbbb4cbcc2038849a9e164c958b16541f252b53ea1a3933191c0a4a1a" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-curve25519", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" +dependencies = [ + "curve25519-dalek 4.1.3", + "solana-zk-sdk", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" +dependencies = [ + "curve25519-dalek 4.1.3", + "solana-zk-sdk", + "thiserror 2.0.18", +] + +[[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-group-interface" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.18", +] + +[[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.6.0", + "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 0.7.0", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" +dependencies = [ + "borsh 1.6.0", + "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 0.8.0", + "thiserror 2.0.18", +] + +[[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 0.6.0", + "spl-tlv-account-resolution 0.9.0", + "spl-type-length-value 0.7.0", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-transfer-hook-interface" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" +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 0.7.0", + "spl-tlv-account-resolution 0.10.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.18", +] + +[[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 = "spl-type-length-value" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-account-info", + "solana-decode-error", + "solana-msg", + "solana-program-error", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.18", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[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.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.10.0", + "core-foundation", + "system-configuration-sys 0.6.0", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tabled" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e39a2ee1fbcd360805a771e1b300f78cc88fec7b8d3e2f71cd37bbf23e725c7d" +dependencies = [ + "papergrid", + "tabled_derive", + "testing_table", +] + +[[package]] +name = "tabled_derive" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea5d1b13ca6cff1f9231ffd62f15eefd72543dab5e468735f1a456728a02846" +dependencies = [ + "heck 0.5.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tarpc" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" +dependencies = [ + "anyhow", + "fnv", + "futures", + "humantime", + "opentelemetry", + "pin-project", + "rand 0.8.5", + "serde", + "static_assertions", + "tarpc-plugins", + "thiserror 1.0.69", + "tokio", + "tokio-serde", + "tokio-util 0.6.10", + "tracing", + "tracing-opentelemetry", +] + +[[package]] +name = "tarpc-plugins" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tempfile" +version = "3.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" +dependencies = [ + "fastrand", + "getrandom 0.3.4", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "testing_table" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f8daae29995a24f65619e19d8d31dea5b389f3d853d8bf297bbf607cd0014cc" +dependencies = [ + "unicode-width", +] + +[[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.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[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.114", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +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 = "tokio" +version = "1.49.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls 0.23.36", + "tokio", +] + +[[package]] +name = "tokio-serde" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" +dependencies = [ + "bincode", + "bytes", + "educe 0.4.23", + "futures-core", + "futures-sink", + "pin-project", + "serde", + "serde_json", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "slab", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[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.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap 2.13.0", + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.10+spec-1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +dependencies = [ + "indexmap 2.13.0", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "async-compression", + "bitflags 2.10.0", + "bytes", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "iri-string", + "pin-project-lite", + "tokio", + "tokio-util 0.7.18", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[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 = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[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 = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" +dependencies = [ + "getrandom 0.3.4", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[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.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +dependencies = [ + "cfg-if", + "futures-util", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.114", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "webpki-roots" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[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_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[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_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zmij" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439" + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/program-examples/anchor/sdk-basics/Cargo.toml b/program-examples/anchor/sdk-basics/Cargo.toml new file mode 100644 index 0000000..efc32db --- /dev/null +++ b/program-examples/anchor/sdk-basics/Cargo.toml @@ -0,0 +1,42 @@ +[workspace] +members = [ + "approve", + "burn", + "close", + "create-ata", + "create-mint", + "create-token-account", + "freeze", + "mint-to", + "mint-to-checked", + "revoke", + "thaw", + "transfer-interface", + "transfer-checked", +] +resolver = "2" + +[profile.release] +lto = "fat" +codegen-units = 1 +panic = "abort" +overflow-checks = true + +[profile.release.build-override] +opt-level = 3 +incremental = false +codegen-units = 1 + +[workspace.dependencies] +blake3 = { version = "=1.8.2", default-features = false } +anchor-lang = "0.31.1" +borsh = "0.10.4" +tokio = "1.43.0" +solana-sdk = "2.2" +solana-program = "2.2" +light-sdk = { version = "0.19.0", features = ["anchor", "idl-build", "v2", "anchor-discriminator", "cpi-context"] } +light-token = { version = "0.4.0", features = ["anchor"] } +light-token-types = { version = "0.4.0", features = ["anchor"] } +light-token-interface = "0.3.0" +light-program-test = "0.19.0" +light-client = { version = "0.19.0", features = ["v2", "anchor"] } diff --git a/program-examples/anchor/sdk-basics/README.md b/program-examples/anchor/sdk-basics/README.md new file mode 100644 index 0000000..92262ef --- /dev/null +++ b/program-examples/anchor/sdk-basics/README.md @@ -0,0 +1,30 @@ +# Light Token Anchor Programs (SDK) + +- **[approve](approve/src/lib.rs)** - Approve delegate +- **[burn](burn/src/lib.rs)** - Burn tokens +- **[close](close/src/lib.rs)** - Close token account +- **[create-ata](create-ata/src/lib.rs)** - Create associated light-token account +- **[create-mint](create-mint/src/lib.rs)** - Create light-token mint +- **[create-token-account](create-token-account/src/lib.rs)** - Create light-token account +- **[freeze](freeze/src/lib.rs)** - Freeze token account +- **[mint-to](mint-to/src/lib.rs)** - Mint tokens +- **[revoke](revoke/src/lib.rs)** - Revoke delegate +- **[thaw](thaw/src/lib.rs)** - Thaw token account +- **[transfer-checked](transfer-checked/src/lib.rs)** - Transfer with mint validation +- **[transfer-interface](transfer-interface/src/lib.rs)** - Transfer between light-token, T22, and SPL accounts + +## Build + +```bash +anchor build +``` + +## Test + +```bash +cargo test-sbf +``` + +## Documentation + +Learn more [about Light-Token here](https://www.zkcompression.com/light-token/welcome). diff --git a/program-examples/anchor/sdk-basics/approve/Cargo.toml b/program-examples/anchor/sdk-basics/approve/Cargo.toml new file mode 100644 index 0000000..08c1e58 --- /dev/null +++ b/program-examples/anchor/sdk-basics/approve/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-approve" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_approve" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk-basics/approve/src/lib.rs b/program-examples/anchor/sdk-basics/approve/src/lib.rs new file mode 100644 index 0000000..50caad1 --- /dev/null +++ b/program-examples/anchor/sdk-basics/approve/src/lib.rs @@ -0,0 +1,36 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::ApproveCpi; + +declare_id!("37XmzKqSG2VD1ZBvzyfbt1HN1mT1bqVAmfzX2ziB3KT1"); + +#[program] +pub mod light_token_anchor_approve { + use super::*; + + pub fn approve(ctx: Context, amount: u64) -> Result<()> { + ApproveCpi { + token_account: ctx.accounts.token_account.to_account_info(), + delegate: ctx.accounts.delegate.to_account_info(), + owner: ctx.accounts.owner.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + amount, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct ApproveAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub token_account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub delegate: AccountInfo<'info>, + pub owner: Signer<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/sdk-basics/approve/tests/test.rs b/program-examples/anchor/sdk-basics/approve/tests/test.rs new file mode 100644 index 0000000..00d26ec --- /dev/null +++ b/program-examples/anchor/sdk-basics/approve/tests/test.rs @@ -0,0 +1,122 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_approve::{instruction::Approve, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_approve() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_approve", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens first + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to approve delegate + let delegate = Keypair::new(); + let approve_amount = 500_000u64; + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(ata, false), + AccountMeta::new_readonly(delegate.pubkey(), false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: Approve { amount: approve_amount }.data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/burn/Cargo.toml b/program-examples/anchor/sdk-basics/burn/Cargo.toml new file mode 100644 index 0000000..9315f14 --- /dev/null +++ b/program-examples/anchor/sdk-basics/burn/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-burn" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_burn" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk-basics/burn/src/lib.rs b/program-examples/anchor/sdk-basics/burn/src/lib.rs new file mode 100644 index 0000000..0c1a1c3 --- /dev/null +++ b/program-examples/anchor/sdk-basics/burn/src/lib.rs @@ -0,0 +1,39 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::BurnCpi; + +declare_id!("2TXVn8AqjfyeJvmFBD3kHJmh6fWkC4HNB5T76BmLKV5c"); + +#[program] +pub mod light_token_anchor_burn { + use super::*; + + pub fn burn(ctx: Context, amount: u64) -> Result<()> { + BurnCpi { + source: ctx.accounts.source.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + amount, + authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + max_top_up: None, + fee_payer: None, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct BurnAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub source: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub mint: AccountInfo<'info>, + pub authority: Signer<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/sdk-basics/burn/tests/test.rs b/program-examples/anchor/sdk-basics/burn/tests/test.rs new file mode 100644 index 0000000..04bb321 --- /dev/null +++ b/program-examples/anchor/sdk-basics/burn/tests/test.rs @@ -0,0 +1,120 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_burn::{instruction::Burn, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, + system_program, +}; + +#[tokio::test] +async fn test_burn() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_burn", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens first + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to burn tokens + let burn_amount = 250_000u64; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(ata, false), + AccountMeta::new(mint_pda, false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: Burn { amount: burn_amount }.data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/close/Cargo.toml b/program-examples/anchor/sdk-basics/close/Cargo.toml new file mode 100644 index 0000000..7cc0c13 --- /dev/null +++ b/program-examples/anchor/sdk-basics/close/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-close" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_close" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk-basics/close/src/lib.rs b/program-examples/anchor/sdk-basics/close/src/lib.rs new file mode 100644 index 0000000..0003191 --- /dev/null +++ b/program-examples/anchor/sdk-basics/close/src/lib.rs @@ -0,0 +1,39 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::CloseAccountCpi; + +declare_id!("GXLCuNhnkRVp596eCdbNsZ9ua1ePbKbb344VKS7V3zQQ"); + +#[program] +pub mod light_token_anchor_close { + use super::*; + + pub fn close_account(ctx: Context) -> Result<()> { + CloseAccountCpi { + token_program: ctx.accounts.light_token_program.to_account_info(), + account: ctx.accounts.account.to_account_info(), + destination: ctx.accounts.destination.to_account_info(), + owner: ctx.accounts.owner.to_account_info(), + rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CloseAccountAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub owner: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, +} diff --git a/program-examples/anchor/sdk-basics/close/tests/test.rs b/program-examples/anchor/sdk-basics/close/tests/test.rs new file mode 100644 index 0000000..7dd4fc2 --- /dev/null +++ b/program-examples/anchor/sdk-basics/close/tests/test.rs @@ -0,0 +1,104 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_close::{instruction::CloseAccount, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_close() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_close", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Create ATA (empty, no tokens) + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to close account + let rent_sponsor = rent_sponsor_pda(); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(ata, false), + AccountMeta::new(payer.pubkey(), false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new(rent_sponsor, false), + ], + data: CloseAccount {}.data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/create-ata/Cargo.toml b/program-examples/anchor/sdk-basics/create-ata/Cargo.toml new file mode 100644 index 0000000..9df7fd1 --- /dev/null +++ b/program-examples/anchor/sdk-basics/create-ata/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-create-ata" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_create_ata" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk-basics/create-ata/src/lib.rs b/program-examples/anchor/sdk-basics/create-ata/src/lib.rs new file mode 100644 index 0000000..9f60bdd --- /dev/null +++ b/program-examples/anchor/sdk-basics/create-ata/src/lib.rs @@ -0,0 +1,58 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::CreateAssociatedAccountCpi; + +declare_id!("35MukgdfpNUbPMhTmEk63ECV8vjgpNVFRH9nP8ovMN58"); + +#[program] +pub mod light_token_anchor_create_ata { + use super::*; + + pub fn create_ata(ctx: Context, bump: u8, idempotent: bool) -> Result<()> { + let cpi = CreateAssociatedAccountCpi { + payer: ctx.accounts.payer.to_account_info(), + owner: ctx.accounts.owner.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + ata: ctx.accounts.associated_token_account.to_account_info(), + bump, + }; + + if idempotent { + cpi.idempotent().rent_free( + ctx.accounts.compressible_config.to_account_info(), + ctx.accounts.rent_sponsor.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ) + } else { + cpi.rent_free( + ctx.accounts.compressible_config.to_account_info(), + ctx.accounts.rent_sponsor.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ) + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CreateAtaAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub owner: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub associated_token_account: AccountInfo<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Validated by light-token CPI + pub compressible_config: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, +} diff --git a/program-examples/anchor/sdk-basics/create-ata/tests/test.rs b/program-examples/anchor/sdk-basics/create-ata/tests/test.rs new file mode 100644 index 0000000..5d62acf --- /dev/null +++ b/program-examples/anchor/sdk-basics/create-ata/tests/test.rs @@ -0,0 +1,106 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_create_ata::{instruction::CreateAta, ID}; +use light_token::instruction::{ + CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, derive_token_ata, + find_mint_address, rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_create_ata() { + let config = + ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_ata", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_mint_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Derive ATA address and bump + let (ata, ata_bump) = derive_token_ata(&payer.pubkey(), &mint_pda); + + // Call the anchor program to create ATA + let compressible_config = config_pda(); + let rent_sponsor = rent_sponsor_pda(); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new_readonly(payer.pubkey(), false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new(ata, false), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(compressible_config, false), + AccountMeta::new(rent_sponsor, false), + ], + data: CreateAta { + bump: ata_bump, + idempotent: false, + } + .data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/create-mint/Cargo.toml b/program-examples/anchor/sdk-basics/create-mint/Cargo.toml new file mode 100644 index 0000000..42d8ad7 --- /dev/null +++ b/program-examples/anchor/sdk-basics/create-mint/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-create-mint" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_create_mint" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk-basics/create-mint/src/lib.rs b/program-examples/anchor/sdk-basics/create-mint/src/lib.rs new file mode 100644 index 0000000..642f66e --- /dev/null +++ b/program-examples/anchor/sdk-basics/create-mint/src/lib.rs @@ -0,0 +1,126 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::{CreateMintCpi, CreateMintParams, SystemAccountInfos}; +use light_token::{CompressedProof, ExtensionInstructionData, TokenMetadataInstructionData}; + +declare_id!("A1rJEoepgKYWZYZ8KVFpxgeeRGwBrU7xk8S39srjVkUX"); + +/// Token metadata parameters for creating a mint with metadata. +#[derive(AnchorSerialize, AnchorDeserialize, Clone)] +pub struct TokenMetadataParams { + pub name: Vec, + pub symbol: Vec, + pub uri: Vec, + pub update_authority: Option, +} + +#[program] +pub mod light_token_anchor_create_mint { + use super::*; + + pub fn create_mint( + ctx: Context, + decimals: u8, + address_merkle_tree_root_index: u16, + compression_address: [u8; 32], + proof: CompressedProof, + freeze_authority: Option, + bump: u8, + rent_payment: Option, + write_top_up: Option, + metadata: Option, + ) -> Result<()> { + let mint = light_token::instruction::find_mint_address(ctx.accounts.mint_seed.key).0; + + let extensions = metadata.map(|m| { + vec![ExtensionInstructionData::TokenMetadata( + TokenMetadataInstructionData { + update_authority: m + .update_authority + .map(|p| p.to_bytes().into()), + name: m.name, + symbol: m.symbol, + uri: m.uri, + additional_metadata: None, + }, + )] + }); + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index, + mint_authority: *ctx.accounts.authority.key, + proof, + compression_address, + mint, + bump, + freeze_authority, + extensions, + rent_payment: rent_payment.unwrap_or(16), // Default: ~24 hours + write_top_up: write_top_up.unwrap_or(766), // Default: ~3 hours per write + }; + + let system_accounts = SystemAccountInfos { + light_system_program: ctx.accounts.light_system_program.to_account_info(), + cpi_authority_pda: ctx.accounts.cpi_authority_pda.to_account_info(), + registered_program_pda: ctx.accounts.registered_program_pda.to_account_info(), + account_compression_authority: ctx.accounts.account_compression_authority.to_account_info(), + account_compression_program: ctx.accounts.account_compression_program.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + }; + + CreateMintCpi { + mint_seed: ctx.accounts.mint_seed.to_account_info(), + authority: ctx.accounts.authority.to_account_info(), + payer: ctx.accounts.payer.to_account_info(), + address_tree: ctx.accounts.address_tree.to_account_info(), + output_queue: ctx.accounts.output_queue.to_account_info(), + compressible_config: ctx.accounts.compressible_config.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), + system_accounts, + cpi_context: None, + cpi_context_account: None, + params, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CreateMintAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, + pub mint_seed: Signer<'info>, + /// CHECK: Validated by light-token CPI + pub authority: AccountInfo<'info>, + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub address_tree: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub output_queue: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub light_system_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub cpi_authority_pda: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub registered_program_pda: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub account_compression_authority: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub account_compression_program: AccountInfo<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Validated by light-token CPI - use light_token::token::config_pda() + pub compressible_config: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI - derived from find_mint_address(mint_seed) + #[account(mut)] + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI - use light_token::token::rent_sponsor_pda() + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, +} diff --git a/program-examples/anchor/sdk-basics/create-mint/tests/test.rs b/program-examples/anchor/sdk-basics/create-mint/tests/test.rs new file mode 100644 index 0000000..f6ba30d --- /dev/null +++ b/program-examples/anchor/sdk-basics/create-mint/tests/test.rs @@ -0,0 +1,96 @@ +use anchor_lang::InstructionData; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_create_mint::{instruction::CreateMint, ID}; +use light_token::instruction::{ + config_pda, derive_mint_compressed_address, find_mint_address, rent_sponsor_pda, + SystemAccounts, LIGHT_TOKEN_PROGRAM_ID, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_create_mint() { + let config = + ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_mint", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![light_client::indexer::AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let system_accounts = SystemAccounts::default(); + + // Call the anchor program to create mint + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(mint_seed.pubkey(), true), + AccountMeta::new_readonly(mint_authority, false), + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new(address_tree.tree, false), + AccountMeta::new(output_queue, false), + AccountMeta::new_readonly(system_accounts.light_system_program, false), + AccountMeta::new_readonly(system_accounts.cpi_authority_pda, false), + AccountMeta::new_readonly(system_accounts.registered_program_pda, false), + AccountMeta::new_readonly(system_accounts.account_compression_authority, false), + AccountMeta::new_readonly(system_accounts.account_compression_program, false), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(config_pda(), false), + AccountMeta::new(mint_pda, false), + AccountMeta::new(rent_sponsor_pda(), false), + ], + data: CreateMint { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + compression_address: compression_address.into(), + proof: rpc_result.proof.0.unwrap(), + freeze_authority: None, + bump, + rent_payment: Some(16), + write_top_up: Some(766), + metadata: None, + } + .data(), + }; + + let sig = rpc + .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let compressed_account = rpc + .get_compressed_account(compression_address, None) + .await + .unwrap() + .value; + + assert!(compressed_account.is_some(), "Compressed mint should exist"); + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/create-token-account/Cargo.toml b/program-examples/anchor/sdk-basics/create-token-account/Cargo.toml new file mode 100644 index 0000000..974dfe4 --- /dev/null +++ b/program-examples/anchor/sdk-basics/create-token-account/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-create-token-account" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_create_token_account" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk-basics/create-token-account/src/lib.rs b/program-examples/anchor/sdk-basics/create-token-account/src/lib.rs new file mode 100644 index 0000000..6d2e004 --- /dev/null +++ b/program-examples/anchor/sdk-basics/create-token-account/src/lib.rs @@ -0,0 +1,47 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::CreateTokenAccountCpi; + +declare_id!("zXK1CnWj4WFfFHCArxxr4sh3Qqx2p3oui8ahqpjArgS"); + +#[program] +pub mod light_token_anchor_create_token_account { + use super::*; + + pub fn create_token_account(ctx: Context, owner: Pubkey) -> Result<()> { + CreateTokenAccountCpi { + payer: ctx.accounts.payer.to_account_info(), + account: ctx.accounts.account.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + owner, + } + .rent_free( + ctx.accounts.compressible_config.to_account_info(), + ctx.accounts.rent_sponsor.to_account_info(), + ctx.accounts.system_program.to_account_info(), + &ctx.accounts.light_token_program.key(), + ) + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct CreateTokenAccountAccounts<'info> { + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub compressible_config: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub rent_sponsor: AccountInfo<'info>, + pub system_program: Program<'info, System>, + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, +} diff --git a/program-examples/anchor/sdk-basics/create-token-account/tests/test.rs b/program-examples/anchor/sdk-basics/create-token-account/tests/test.rs new file mode 100644 index 0000000..1fb1032 --- /dev/null +++ b/program-examples/anchor/sdk-basics/create-token-account/tests/test.rs @@ -0,0 +1,105 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_create_token_account::{instruction::CreateTokenAccount, ID}; +use light_token::instruction::{ + CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, + find_mint_address, rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + pubkey::Pubkey, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_create_token_account() { + let config = ProgramTestConfig::new_v2( + true, + Some(vec![("light_token_anchor_create_token_account", ID)]), + ); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + // Create a mint first + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_mint_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Create a token account + let token_account = Keypair::new(); + let owner = payer.pubkey(); + let compressible_config = config_pda(); + let rent_sponsor = rent_sponsor_pda(); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new(token_account.pubkey(), true), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new_readonly(compressible_config, false), + AccountMeta::new(rent_sponsor, false), + AccountMeta::new_readonly(system_program::ID, false), + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + ], + data: CreateTokenAccount { owner }.data(), + }; + + let sig = rpc + .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &token_account]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/freeze/Cargo.toml b/program-examples/anchor/sdk-basics/freeze/Cargo.toml new file mode 100644 index 0000000..8d0c730 --- /dev/null +++ b/program-examples/anchor/sdk-basics/freeze/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-freeze" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_freeze" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk-basics/freeze/src/lib.rs b/program-examples/anchor/sdk-basics/freeze/src/lib.rs new file mode 100644 index 0000000..59a4942 --- /dev/null +++ b/program-examples/anchor/sdk-basics/freeze/src/lib.rs @@ -0,0 +1,33 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::FreezeCpi; + +declare_id!("JBMzMJX4sqCQfNVbosP2oqP1KZ5ZDWiwYTrupk687qXZ"); + +#[program] +pub mod light_token_anchor_freeze { + use super::*; + + pub fn freeze(ctx: Context) -> Result<()> { + FreezeCpi { + token_account: ctx.accounts.token_account.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + freeze_authority: ctx.accounts.freeze_authority.to_account_info(), + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct FreezeAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub token_account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + pub freeze_authority: Signer<'info>, +} diff --git a/program-examples/anchor/sdk-basics/freeze/tests/test.rs b/program-examples/anchor/sdk-basics/freeze/tests/test.rs new file mode 100644 index 0000000..830f79f --- /dev/null +++ b/program-examples/anchor/sdk-basics/freeze/tests/test.rs @@ -0,0 +1,119 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_freeze::{instruction::Freeze, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_freeze() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_freeze", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let freeze_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + // Create mint WITH freeze authority + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: Some(freeze_authority), + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: 1_000_000, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to freeze account + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(ata, false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new_readonly(freeze_authority, true), + ], + data: Freeze {}.data(), + }; + + let sig = rpc + .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/mint-to-checked/Cargo.toml b/program-examples/anchor/sdk-basics/mint-to-checked/Cargo.toml new file mode 100644 index 0000000..0a5477c --- /dev/null +++ b/program-examples/anchor/sdk-basics/mint-to-checked/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-mint-to-checked" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_mint_to_checked" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk-basics/mint-to-checked/src/lib.rs b/program-examples/anchor/sdk-basics/mint-to-checked/src/lib.rs new file mode 100644 index 0000000..d5baaaa --- /dev/null +++ b/program-examples/anchor/sdk-basics/mint-to-checked/src/lib.rs @@ -0,0 +1,44 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::MintToCheckedCpi; + +declare_id!("DGu3ofzac2Zndn95z2q9gCp8zHgW22YpMeEWj2up3QDb"); + +#[program] +pub mod light_token_anchor_mint_to_checked { + use super::*; + + pub fn mint_to_checked( + ctx: Context, + amount: u64, + decimals: u8, + ) -> Result<()> { + MintToCheckedCpi { + mint: ctx.accounts.mint.to_account_info(), + destination: ctx.accounts.destination.to_account_info(), + amount, + decimals, + authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + max_top_up: None, + fee_payer: None, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct MintToCheckedAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub authority: Signer<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/sdk-basics/mint-to-checked/tests/test.rs b/program-examples/anchor/sdk-basics/mint-to-checked/tests/test.rs new file mode 100644 index 0000000..9ad4ade --- /dev/null +++ b/program-examples/anchor/sdk-basics/mint-to-checked/tests/test.rs @@ -0,0 +1,103 @@ +use anchor_lang::InstructionData; +use anchor_lang::system_program; +use light_client::indexer::{AddressWithTree, Indexer}; +use light_program_test::{LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_mint_to_checked::{instruction::MintToChecked, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, derive_mint_compressed_address, + derive_token_ata, find_mint_address, LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test(flavor = "multi_thread")] +async fn test_mint_to_checked() { + let config = ProgramTestConfig::new_v2(false, Some(vec![("light_token_anchor_mint_to_checked", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + let amount = 1_000_000u64; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(mint, false), + AccountMeta::new(ata, false), + AccountMeta::new_readonly(mint_authority, true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: MintToChecked { amount, decimals }.data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Verify the account exists and has data + let ata_data = rpc.get_account(ata).await.unwrap().unwrap(); + assert!(!ata_data.data.is_empty(), "ATA account should have data"); +} diff --git a/program-examples/anchor/sdk-basics/mint-to/Cargo.toml b/program-examples/anchor/sdk-basics/mint-to/Cargo.toml new file mode 100644 index 0000000..65d6646 --- /dev/null +++ b/program-examples/anchor/sdk-basics/mint-to/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-mint-to" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_mint_to" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk-basics/mint-to/src/lib.rs b/program-examples/anchor/sdk-basics/mint-to/src/lib.rs new file mode 100644 index 0000000..25a9015 --- /dev/null +++ b/program-examples/anchor/sdk-basics/mint-to/src/lib.rs @@ -0,0 +1,39 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::MintToCpi; + +declare_id!("8bXEVmHLtAVqDLJp1dYWAZ61WQmqQKoTQ8LpPbRoUDCp"); + +#[program] +pub mod light_token_anchor_mint_to { + use super::*; + + pub fn mint_to(ctx: Context, amount: u64) -> Result<()> { + MintToCpi { + mint: ctx.accounts.mint.to_account_info(), + destination: ctx.accounts.destination.to_account_info(), + amount, + authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + max_top_up: None, + fee_payer: None, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct MintToAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub authority: Signer<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/sdk-basics/mint-to/tests/test.rs b/program-examples/anchor/sdk-basics/mint-to/tests/test.rs new file mode 100644 index 0000000..c1993d8 --- /dev/null +++ b/program-examples/anchor/sdk-basics/mint-to/tests/test.rs @@ -0,0 +1,103 @@ +use anchor_lang::InstructionData; +use anchor_lang::system_program; +use light_client::indexer::{AddressWithTree, Indexer}; +use light_program_test::{LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_mint_to::{instruction::MintTo, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, derive_mint_compressed_address, + derive_token_ata, find_mint_address, LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test(flavor = "multi_thread")] +async fn test_mint_to() { + let config = ProgramTestConfig::new_v2(false, Some(vec![("light_token_anchor_mint_to", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + let amount = 1_000_000u64; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(mint, false), + AccountMeta::new(ata, false), + AccountMeta::new_readonly(mint_authority, true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: MintTo { amount }.data(), + }; + + rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Verify the account exists and has data + let ata_data = rpc.get_account(ata).await.unwrap().unwrap(); + assert!(!ata_data.data.is_empty(), "ATA account should have data"); +} diff --git a/program-examples/anchor/sdk-basics/revoke/Cargo.toml b/program-examples/anchor/sdk-basics/revoke/Cargo.toml new file mode 100644 index 0000000..3ca6657 --- /dev/null +++ b/program-examples/anchor/sdk-basics/revoke/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-revoke" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_revoke" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk-basics/revoke/src/lib.rs b/program-examples/anchor/sdk-basics/revoke/src/lib.rs new file mode 100644 index 0000000..9ab13a7 --- /dev/null +++ b/program-examples/anchor/sdk-basics/revoke/src/lib.rs @@ -0,0 +1,32 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::RevokeCpi; + +declare_id!("G3ph4MK5qaSdxYnfxToETg31AHEMMqVhPuMRgBhk38tQ"); + +#[program] +pub mod light_token_anchor_revoke { + use super::*; + + pub fn revoke(ctx: Context) -> Result<()> { + RevokeCpi { + token_account: ctx.accounts.token_account.to_account_info(), + owner: ctx.accounts.owner.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct RevokeAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub token_account: AccountInfo<'info>, + pub owner: Signer<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/sdk-basics/revoke/tests/test.rs b/program-examples/anchor/sdk-basics/revoke/tests/test.rs new file mode 100644 index 0000000..221122f --- /dev/null +++ b/program-examples/anchor/sdk-basics/revoke/tests/test.rs @@ -0,0 +1,133 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_revoke::{instruction::Revoke, ID}; +use light_token::instruction::{ + Approve, CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, +}; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_revoke() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_revoke", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Approve delegate first using SDK + let delegate = Keypair::new(); + let approve_ix = Approve { + token_account: ata, + delegate: delegate.pubkey(), + owner: payer.pubkey(), + amount: 500_000, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[approve_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to revoke delegation + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(ata, false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: Revoke {}.data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/thaw/Cargo.toml b/program-examples/anchor/sdk-basics/thaw/Cargo.toml new file mode 100644 index 0000000..d114a52 --- /dev/null +++ b/program-examples/anchor/sdk-basics/thaw/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-thaw" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_thaw" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk-basics/thaw/src/lib.rs b/program-examples/anchor/sdk-basics/thaw/src/lib.rs new file mode 100644 index 0000000..93e9f6e --- /dev/null +++ b/program-examples/anchor/sdk-basics/thaw/src/lib.rs @@ -0,0 +1,33 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::ThawCpi; + +declare_id!("7j94EF5hSkDLf7R26bjrd8Qc6s3oLAQpcKiF3re8JYw9"); + +#[program] +pub mod light_token_anchor_thaw { + use super::*; + + pub fn thaw(ctx: Context) -> Result<()> { + ThawCpi { + token_account: ctx.accounts.token_account.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + freeze_authority: ctx.accounts.freeze_authority.to_account_info(), + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct ThawAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub token_account: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + pub freeze_authority: Signer<'info>, +} diff --git a/program-examples/anchor/sdk-basics/thaw/tests/test.rs b/program-examples/anchor/sdk-basics/thaw/tests/test.rs new file mode 100644 index 0000000..ea9bf49 --- /dev/null +++ b/program-examples/anchor/sdk-basics/thaw/tests/test.rs @@ -0,0 +1,131 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_thaw::{instruction::Thaw, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, Freeze, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_thaw() { + let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_thaw", ID)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let freeze_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + // Create mint WITH freeze authority + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: Some(freeze_authority), + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount: 1_000_000, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Freeze account first using SDK + let freeze_ix = Freeze { + token_account: ata, + mint: mint_pda, + freeze_authority, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[freeze_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to thaw account + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(ata, false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new_readonly(freeze_authority, true), + ], + data: Thaw {}.data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/transfer-checked/Cargo.toml b/program-examples/anchor/sdk-basics/transfer-checked/Cargo.toml new file mode 100644 index 0000000..6d91664 --- /dev/null +++ b/program-examples/anchor/sdk-basics/transfer-checked/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "light-token-anchor-transfer-checked" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_transfer_checked" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk-basics/transfer-checked/src/lib.rs b/program-examples/anchor/sdk-basics/transfer-checked/src/lib.rs new file mode 100644 index 0000000..0d82277 --- /dev/null +++ b/program-examples/anchor/sdk-basics/transfer-checked/src/lib.rs @@ -0,0 +1,47 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::TransferCheckedCpi; + +declare_id!("HXmfewpozFdxhM8BayL9v5541gwoGMXTrUoip5KySs2f"); + +#[program] +pub mod light_token_anchor_transfer_checked { + use super::*; + + pub fn transfer_checked( + ctx: Context, + amount: u64, + decimals: u8, + ) -> Result<()> { + TransferCheckedCpi { + source: ctx.accounts.source.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + destination: ctx.accounts.destination.to_account_info(), + amount, + decimals, + authority: ctx.accounts.authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + max_top_up: None, + fee_payer: None, + } + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct TransferCheckedAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub source: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + pub mint: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub authority: Signer<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/sdk-basics/transfer-checked/tests/test.rs b/program-examples/anchor/sdk-basics/transfer-checked/tests/test.rs new file mode 100644 index 0000000..893a291 --- /dev/null +++ b/program-examples/anchor/sdk-basics/transfer-checked/tests/test.rs @@ -0,0 +1,142 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_transfer_checked::{instruction::TransferChecked, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, + system_program, +}; + +#[tokio::test] +async fn test_transfer_checked() { + let config = ProgramTestConfig::new_v2( + true, + Some(vec![("light_token_anchor_transfer_checked", ID)]), + ); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Create source ATA + let (source_ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_source_ata = + CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_source_ata], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens to source + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: source_ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Create destination ATA for recipient + let recipient = Keypair::new(); + let (dest_ata, _) = derive_token_ata(&recipient.pubkey(), &mint_pda); + let create_dest_ata = + CreateAssociatedTokenAccount::new(payer.pubkey(), recipient.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_dest_ata], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to transfer tokens (checked) + let transfer_amount = 100_000u64; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(source_ata, false), + AccountMeta::new_readonly(mint_pda, false), + AccountMeta::new(dest_ata, false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: TransferChecked { + amount: transfer_amount, + decimals, + } + .data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/transfer-interface/Cargo.toml b/program-examples/anchor/sdk-basics/transfer-interface/Cargo.toml new file mode 100644 index 0000000..7944b7d --- /dev/null +++ b/program-examples/anchor/sdk-basics/transfer-interface/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "light-token-anchor-transfer-interface" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "light_token_anchor_transfer_interface" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = ["idl-build"] +idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +light-sdk = { workspace = true } +light-token = { workspace = true } + +[dev-dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token-interface = { workspace = true } +light-token-types = { workspace = true } +borsh = { workspace = true } +tokio = { workspace = true } +solana-sdk = { workspace = true } + +[lints.rust.unexpected_cfgs] +level = "allow" +check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk-basics/transfer-interface/src/lib.rs b/program-examples/anchor/sdk-basics/transfer-interface/src/lib.rs new file mode 100644 index 0000000..c3ffb88 --- /dev/null +++ b/program-examples/anchor/sdk-basics/transfer-interface/src/lib.rs @@ -0,0 +1,44 @@ +#![allow(unexpected_cfgs, deprecated)] + +use anchor_lang::prelude::*; +use light_token::instruction::TransferInterfaceCpi; + +declare_id!("3rb6sG4jiYNLZC8jo8kLsFHpxr2Ci8e8Hh8UmeCMZmUV"); + +#[program] +pub mod light_token_anchor_transfer_interface { + use super::*; + + pub fn transfer(ctx: Context, amount: u64, decimals: u8) -> Result<()> { + TransferInterfaceCpi::new( + amount, + decimals, + ctx.accounts.source.to_account_info(), + ctx.accounts.destination.to_account_info(), + ctx.accounts.authority.to_account_info(), + ctx.accounts.payer.to_account_info(), + ctx.accounts.cpi_authority.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ) + .invoke()?; + Ok(()) + } +} + +#[derive(Accounts)] +pub struct TransferAccounts<'info> { + /// CHECK: Light token program for CPI + pub light_token_program: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub source: AccountInfo<'info>, + /// CHECK: Validated by light-token CPI + #[account(mut)] + pub destination: AccountInfo<'info>, + pub authority: Signer<'info>, + #[account(mut)] + pub payer: Signer<'info>, + /// CHECK: Validated by light-token CPI + pub cpi_authority: AccountInfo<'info>, + pub system_program: Program<'info, System>, +} diff --git a/program-examples/anchor/sdk-basics/transfer-interface/tests/test.rs b/program-examples/anchor/sdk-basics/transfer-interface/tests/test.rs new file mode 100644 index 0000000..4a4d0cb --- /dev/null +++ b/program-examples/anchor/sdk-basics/transfer-interface/tests/test.rs @@ -0,0 +1,147 @@ +use anchor_lang::InstructionData; +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token_anchor_transfer_interface::{instruction::Transfer, ID}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, + LIGHT_TOKEN_PROGRAM_ID, +}; +use light_token_types::CPI_AUTHORITY_PDA; +use anchor_lang::system_program; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + pubkey::Pubkey, + signature::Keypair, + signer::Signer, +}; + +#[tokio::test] +async fn test_transfer() { + let config = ProgramTestConfig::new_v2( + true, + Some(vec![("light_token_anchor_transfer_interface", ID)]), + ); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority: None, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) + .await + .unwrap(); + + // Create source ATA + let (source_ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); + let create_source_ata = + CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_source_ata], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Mint tokens to source + let mint_amount = 1_000_000u64; + let mint_to_ix = MintTo { + mint: mint_pda, + destination: source_ata, + amount: mint_amount, + authority: mint_authority, + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Create destination ATA for recipient + let recipient = Keypair::new(); + let (dest_ata, _) = derive_token_ata(&recipient.pubkey(), &mint_pda); + let create_dest_ata = + CreateAssociatedTokenAccount::new(payer.pubkey(), recipient.pubkey(), mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_dest_ata], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + // Call the anchor program to transfer tokens + let transfer_amount = 100_000u64; + let cpi_authority_pda = Pubkey::new_from_array(CPI_AUTHORITY_PDA); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(source_ata, false), + AccountMeta::new(dest_ata, false), + AccountMeta::new_readonly(payer.pubkey(), true), + AccountMeta::new(payer.pubkey(), true), + AccountMeta::new_readonly(cpi_authority_pda, false), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: Transfer { + amount: transfer_amount, + decimals, + } + .data(), + }; + + let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} From 0e8a9eb91e88eed3cba24bb681c50a53b094057b Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Mon, 26 Jan 2026 20:19:05 +0000 Subject: [PATCH 14/23] anchor --- program-examples/anchor/README.md | 68 +- .../anchor/anchor-sdk/Anchor.toml | 30 - program-examples/anchor/anchor-sdk/Cargo.lock | 8977 ----------------- program-examples/anchor/anchor-sdk/Cargo.toml | 42 - program-examples/anchor/anchor-sdk/README.md | 30 - .../anchor/anchor-sdk/approve/Cargo.toml | 31 - .../anchor/anchor-sdk/approve/src/lib.rs | 36 - .../anchor/anchor-sdk/approve/tests/test.rs | 122 - .../anchor/anchor-sdk/burn/Cargo.toml | 31 - .../anchor/anchor-sdk/burn/src/lib.rs | 39 - .../anchor/anchor-sdk/burn/tests/test.rs | 120 - .../anchor/anchor-sdk/close/Cargo.toml | 31 - .../anchor/anchor-sdk/close/src/lib.rs | 39 - .../anchor/anchor-sdk/close/tests/test.rs | 104 - .../anchor/anchor-sdk/create-ata/Cargo.toml | 31 - .../anchor/anchor-sdk/create-ata/src/lib.rs | 58 - .../anchor-sdk/create-ata/tests/test.rs | 106 - .../anchor/anchor-sdk/create-mint/Cargo.toml | 31 - .../anchor/anchor-sdk/create-mint/src/lib.rs | 126 - .../anchor-sdk/create-mint/tests/test.rs | 96 - .../create-token-account/Cargo.toml | 31 - .../create-token-account/src/lib.rs | 47 - .../create-token-account/tests/test.rs | 105 - .../anchor/anchor-sdk/freeze/Cargo.toml | 31 - .../anchor/anchor-sdk/freeze/src/lib.rs | 33 - .../anchor/anchor-sdk/freeze/tests/test.rs | 119 - .../anchor-sdk/mint-to-checked/Cargo.toml | 31 - .../anchor-sdk/mint-to-checked/src/lib.rs | 44 - .../anchor-sdk/mint-to-checked/tests/test.rs | 103 - .../anchor/anchor-sdk/mint-to/Cargo.toml | 31 - .../anchor/anchor-sdk/mint-to/src/lib.rs | 39 - .../anchor/anchor-sdk/mint-to/tests/test.rs | 103 - .../anchor/anchor-sdk/revoke/Cargo.toml | 31 - .../anchor/anchor-sdk/revoke/src/lib.rs | 32 - .../anchor/anchor-sdk/revoke/tests/test.rs | 133 - .../anchor/anchor-sdk/thaw/Cargo.toml | 31 - .../anchor/anchor-sdk/thaw/src/lib.rs | 33 - .../anchor/anchor-sdk/thaw/tests/test.rs | 131 - .../anchor-sdk/transfer-checked/Cargo.toml | 31 - .../anchor-sdk/transfer-checked/src/lib.rs | 47 - .../anchor-sdk/transfer-checked/tests/test.rs | 142 - .../anchor-sdk/transfer-interface/Cargo.toml | 32 - .../anchor-sdk/transfer-interface/src/lib.rs | 44 - .../transfer-interface/tests/test.rs | 147 - program-examples/anchor/macros/Anchor.toml | 20 - program-examples/anchor/macros/Cargo.lock | 8864 ---------------- program-examples/anchor/macros/Cargo.toml | 44 - program-examples/anchor/macros/README.md | 66 - .../macros/programs/create-ata/Cargo.toml | 43 - .../macros/programs/create-ata/src/lib.rs | 75 - .../macros/programs/create-ata/tests/test.rs | 156 - .../macros/programs/create-mint/Cargo.toml | 49 - .../macros/programs/create-mint/src/lib.rs | 78 - .../macros/programs/create-mint/tests/test.rs | 139 - .../programs/create-token-account/Cargo.toml | 43 - .../programs/create-token-account/src/lib.rs | 102 - .../create-token-account/tests/test.rs | 174 - program-examples/anchor/sdk/Anchor.toml | 29 - program-examples/anchor/sdk/Cargo.lock | 8963 ---------------- program-examples/anchor/sdk/Cargo.toml | 41 - program-examples/anchor/sdk/README.md | 64 - .../anchor/sdk/programs/approve/Cargo.toml | 31 - .../anchor/sdk/programs/approve/src/lib.rs | 34 - .../anchor/sdk/programs/approve/tests/test.rs | 120 - .../anchor/sdk/programs/burn/Cargo.toml | 31 - .../anchor/sdk/programs/burn/src/lib.rs | 37 - .../anchor/sdk/programs/burn/tests/test.rs | 118 - .../anchor/sdk/programs/close/Cargo.toml | 31 - .../anchor/sdk/programs/close/src/lib.rs | 39 - .../anchor/sdk/programs/close/tests/test.rs | 104 - .../anchor/sdk/programs/create-ata/Cargo.toml | 31 - .../anchor/sdk/programs/create-ata/src/lib.rs | 56 - .../sdk/programs/create-ata/tests/test.rs | 105 - .../sdk/programs/create-mint/Cargo.toml | 31 - .../sdk/programs/create-mint/src/lib.rs | 124 - .../sdk/programs/create-mint/tests/test.rs | 95 - .../programs/create-token-account/Cargo.toml | 31 - .../programs/create-token-account/src/lib.rs | 47 - .../create-token-account/tests/test.rs | 105 - .../anchor/sdk/programs/freeze/Cargo.toml | 31 - .../anchor/sdk/programs/freeze/src/lib.rs | 31 - .../anchor/sdk/programs/freeze/tests/test.rs | 117 - .../anchor/sdk/programs/mint-to/Cargo.toml | 31 - .../anchor/sdk/programs/mint-to/src/lib.rs | 37 - .../anchor/sdk/programs/mint-to/tests/test.rs | 102 - .../anchor/sdk/programs/revoke/Cargo.toml | 31 - .../anchor/sdk/programs/revoke/src/lib.rs | 30 - .../anchor/sdk/programs/revoke/tests/test.rs | 131 - .../anchor/sdk/programs/thaw/Cargo.toml | 31 - .../anchor/sdk/programs/thaw/src/lib.rs | 31 - .../anchor/sdk/programs/thaw/tests/test.rs | 129 - .../sdk/programs/transfer-checked/Cargo.toml | 31 - .../sdk/programs/transfer-checked/src/lib.rs | 45 - .../programs/transfer-checked/tests/test.rs | 140 - .../programs/transfer-interface/Cargo.toml | 32 - .../programs/transfer-interface/src/lib.rs | 42 - .../programs/transfer-interface/tests/test.rs | 145 - 97 files changed, 43 insertions(+), 32943 deletions(-) delete mode 100644 program-examples/anchor/anchor-sdk/Anchor.toml delete mode 100644 program-examples/anchor/anchor-sdk/Cargo.lock delete mode 100644 program-examples/anchor/anchor-sdk/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/README.md delete mode 100644 program-examples/anchor/anchor-sdk/approve/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/approve/src/lib.rs delete mode 100644 program-examples/anchor/anchor-sdk/approve/tests/test.rs delete mode 100644 program-examples/anchor/anchor-sdk/burn/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/burn/src/lib.rs delete mode 100644 program-examples/anchor/anchor-sdk/burn/tests/test.rs delete mode 100644 program-examples/anchor/anchor-sdk/close/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/close/src/lib.rs delete mode 100644 program-examples/anchor/anchor-sdk/close/tests/test.rs delete mode 100644 program-examples/anchor/anchor-sdk/create-ata/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/create-ata/src/lib.rs delete mode 100644 program-examples/anchor/anchor-sdk/create-ata/tests/test.rs delete mode 100644 program-examples/anchor/anchor-sdk/create-mint/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/create-mint/src/lib.rs delete mode 100644 program-examples/anchor/anchor-sdk/create-mint/tests/test.rs delete mode 100644 program-examples/anchor/anchor-sdk/create-token-account/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/create-token-account/src/lib.rs delete mode 100644 program-examples/anchor/anchor-sdk/create-token-account/tests/test.rs delete mode 100644 program-examples/anchor/anchor-sdk/freeze/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/freeze/src/lib.rs delete mode 100644 program-examples/anchor/anchor-sdk/freeze/tests/test.rs delete mode 100644 program-examples/anchor/anchor-sdk/mint-to-checked/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/mint-to-checked/src/lib.rs delete mode 100644 program-examples/anchor/anchor-sdk/mint-to-checked/tests/test.rs delete mode 100644 program-examples/anchor/anchor-sdk/mint-to/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/mint-to/src/lib.rs delete mode 100644 program-examples/anchor/anchor-sdk/mint-to/tests/test.rs delete mode 100644 program-examples/anchor/anchor-sdk/revoke/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/revoke/src/lib.rs delete mode 100644 program-examples/anchor/anchor-sdk/revoke/tests/test.rs delete mode 100644 program-examples/anchor/anchor-sdk/thaw/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/thaw/src/lib.rs delete mode 100644 program-examples/anchor/anchor-sdk/thaw/tests/test.rs delete mode 100644 program-examples/anchor/anchor-sdk/transfer-checked/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/transfer-checked/src/lib.rs delete mode 100644 program-examples/anchor/anchor-sdk/transfer-checked/tests/test.rs delete mode 100644 program-examples/anchor/anchor-sdk/transfer-interface/Cargo.toml delete mode 100644 program-examples/anchor/anchor-sdk/transfer-interface/src/lib.rs delete mode 100644 program-examples/anchor/anchor-sdk/transfer-interface/tests/test.rs delete mode 100644 program-examples/anchor/macros/Anchor.toml delete mode 100644 program-examples/anchor/macros/Cargo.lock delete mode 100644 program-examples/anchor/macros/Cargo.toml delete mode 100644 program-examples/anchor/macros/README.md delete mode 100644 program-examples/anchor/macros/programs/create-ata/Cargo.toml delete mode 100644 program-examples/anchor/macros/programs/create-ata/src/lib.rs delete mode 100644 program-examples/anchor/macros/programs/create-ata/tests/test.rs delete mode 100644 program-examples/anchor/macros/programs/create-mint/Cargo.toml delete mode 100644 program-examples/anchor/macros/programs/create-mint/src/lib.rs delete mode 100644 program-examples/anchor/macros/programs/create-mint/tests/test.rs delete mode 100644 program-examples/anchor/macros/programs/create-token-account/Cargo.toml delete mode 100644 program-examples/anchor/macros/programs/create-token-account/src/lib.rs delete mode 100644 program-examples/anchor/macros/programs/create-token-account/tests/test.rs delete mode 100644 program-examples/anchor/sdk/Anchor.toml delete mode 100644 program-examples/anchor/sdk/Cargo.lock delete mode 100644 program-examples/anchor/sdk/Cargo.toml delete mode 100644 program-examples/anchor/sdk/README.md delete mode 100644 program-examples/anchor/sdk/programs/approve/Cargo.toml delete mode 100644 program-examples/anchor/sdk/programs/approve/src/lib.rs delete mode 100644 program-examples/anchor/sdk/programs/approve/tests/test.rs delete mode 100644 program-examples/anchor/sdk/programs/burn/Cargo.toml delete mode 100644 program-examples/anchor/sdk/programs/burn/src/lib.rs delete mode 100644 program-examples/anchor/sdk/programs/burn/tests/test.rs delete mode 100644 program-examples/anchor/sdk/programs/close/Cargo.toml delete mode 100644 program-examples/anchor/sdk/programs/close/src/lib.rs delete mode 100644 program-examples/anchor/sdk/programs/close/tests/test.rs delete mode 100644 program-examples/anchor/sdk/programs/create-ata/Cargo.toml delete mode 100644 program-examples/anchor/sdk/programs/create-ata/src/lib.rs delete mode 100644 program-examples/anchor/sdk/programs/create-ata/tests/test.rs delete mode 100644 program-examples/anchor/sdk/programs/create-mint/Cargo.toml delete mode 100644 program-examples/anchor/sdk/programs/create-mint/src/lib.rs delete mode 100644 program-examples/anchor/sdk/programs/create-mint/tests/test.rs delete mode 100644 program-examples/anchor/sdk/programs/create-token-account/Cargo.toml delete mode 100644 program-examples/anchor/sdk/programs/create-token-account/src/lib.rs delete mode 100644 program-examples/anchor/sdk/programs/create-token-account/tests/test.rs delete mode 100644 program-examples/anchor/sdk/programs/freeze/Cargo.toml delete mode 100644 program-examples/anchor/sdk/programs/freeze/src/lib.rs delete mode 100644 program-examples/anchor/sdk/programs/freeze/tests/test.rs delete mode 100644 program-examples/anchor/sdk/programs/mint-to/Cargo.toml delete mode 100644 program-examples/anchor/sdk/programs/mint-to/src/lib.rs delete mode 100644 program-examples/anchor/sdk/programs/mint-to/tests/test.rs delete mode 100644 program-examples/anchor/sdk/programs/revoke/Cargo.toml delete mode 100644 program-examples/anchor/sdk/programs/revoke/src/lib.rs delete mode 100644 program-examples/anchor/sdk/programs/revoke/tests/test.rs delete mode 100644 program-examples/anchor/sdk/programs/thaw/Cargo.toml delete mode 100644 program-examples/anchor/sdk/programs/thaw/src/lib.rs delete mode 100644 program-examples/anchor/sdk/programs/thaw/tests/test.rs delete mode 100644 program-examples/anchor/sdk/programs/transfer-checked/Cargo.toml delete mode 100644 program-examples/anchor/sdk/programs/transfer-checked/src/lib.rs delete mode 100644 program-examples/anchor/sdk/programs/transfer-checked/tests/test.rs delete mode 100644 program-examples/anchor/sdk/programs/transfer-interface/Cargo.toml delete mode 100644 program-examples/anchor/sdk/programs/transfer-interface/src/lib.rs delete mode 100644 program-examples/anchor/sdk/programs/transfer-interface/tests/test.rs diff --git a/program-examples/anchor/README.md b/program-examples/anchor/README.md index 782213a..62cd3bd 100644 --- a/program-examples/anchor/README.md +++ b/program-examples/anchor/README.md @@ -1,39 +1,57 @@ -# Light Token Anchor Programs - -Anchor program examples demonstrating Light Token CPI integration. - -## Approaches - -Two different integration approaches, each with its own workspace: - -### SDK approach - -Uses explicit CPI structs from `light_token::instruction`. All 12 programs included. - -- **Location:** [sdk/](sdk/) -- **Programs:** approve, burn, close, create-ata, create-mint, create-token-account, freeze, mint-to, revoke, thaw, transfer-checked, transfer-interface +# Light Token Anchor Solana Programs + +## Macro programs + +- [**create-mint**](macro-basics/create-mint-macro/src/lib.rs) - Create a light-token mint using `#[light_account]` macro | [Test](macro-basics/create-mint-macro/tests/test.rs) +- [**create-ata**](macro-basics/create-ata-macro/src/lib.rs) - Create an associated light-token account using `#[light_account]` macro | [Test](macro-basics/create-ata-macro/tests/test.rs) +- [**create-token-account**](macro-basics/create-token-account-macro/src/lib.rs) - Create a light-token account using `#[light_account]` macro | [Test](macro-basics/create-token-account-macro/tests/test.rs) +- [**mint-to**](macro-basics/mint-to-macro/src/lib.rs) - Mint tokens using `#[light_account]` macro | [Test](macro-basics/mint-to-macro/tests/test.rs) +- [**transfer**](macro-basics/transfer-macro/src/lib.rs) - Transfer tokens using `#[light_account]` macro | [Test](macro-basics/transfer-macro/tests/test.rs) + +## SDK programs + +- [**create-mint**](sdk-basics/create-mint/src/lib.rs) - Create a light-token mint via CPI | [Test](sdk-basics/create-mint/tests/test.rs) +- [**create-ata**](sdk-basics/create-ata/src/lib.rs) - Create an associated light-token account via CPI | [Test](sdk-basics/create-ata/tests/test.rs) +- [**create-token-account**](sdk-basics/create-token-account/src/lib.rs) - Create a light-token account via CPI | [Test](sdk-basics/create-token-account/tests/test.rs) +- [**mint-to**](sdk-basics/mint-to/src/lib.rs) - Mint tokens via CPI | [Test](sdk-basics/mint-to/tests/test.rs) +- [**mint-to-checked**](sdk-basics/mint-to-checked/src/lib.rs) - Mint tokens with decimal validation via CPI | [Test](sdk-basics/mint-to-checked/tests/test.rs) +- [**transfer-interface**](sdk-basics/transfer-interface/src/lib.rs) - Transfer between light-token, T22, and SPL accounts via CPI | [Test](sdk-basics/transfer-interface/tests/test.rs) +- [**transfer-checked**](sdk-basics/transfer-checked/src/lib.rs) - Transfer with decimal validation against mint via CPI | [Test](sdk-basics/transfer-checked/tests/test.rs) +- [**approve**](sdk-basics/approve/src/lib.rs) - Approve delegate via CPI | [Test](sdk-basics/approve/tests/test.rs) +- [**revoke**](sdk-basics/revoke/src/lib.rs) - Revoke delegate via CPI | [Test](sdk-basics/revoke/tests/test.rs) +- [**burn**](sdk-basics/burn/src/lib.rs) - Burn tokens via CPI | [Test](sdk-basics/burn/tests/test.rs) +- [**freeze**](sdk-basics/freeze/src/lib.rs) - Freeze token account via CPI | [Test](sdk-basics/freeze/tests/test.rs) +- [**thaw**](sdk-basics/thaw/src/lib.rs) - Thaw token account via CPI | [Test](sdk-basics/thaw/tests/test.rs) +- [**close**](sdk-basics/close/src/lib.rs) - Close token account via CPI | [Test](sdk-basics/close/tests/test.rs) + +## Build ```bash -cd sdk && cargo test-sbf +cd sdk-basics && anchor build +cd macro-basics && anchor build ``` -### Macro approach +## Test + +### Requirements -Uses `#[light_account]` macros for automatic compressed account creation. +- light cli version 0.27.0+ (install via `npm i -g @lightprotocol/zk-compression-cli`) +- solana cli version 2.1.16+ +- anchor 0.31.1+ -- **Location:** [macros/](macros/) -- **Programs:** create-ata, create-mint, create-token-account +### Running tests ```bash -cd macros && cargo test-sbf +cd sdk-basics && cargo test-sbf +cd macro-basics && cargo test-sbf ``` -## Requirements +## Disclaimer -- light cli 0.27.0+ (`npm i -g @lightprotocol/zk-compression-cli`) -- solana cli 2.1.16+ -- anchor 0.31.1+ +This reference implementation is not audited. + +The Light Protocol programs are audited and deployed on Solana devnet and mainnet. ## Documentation -[Light-Token docs](https://www.zkcompression.com/light-token/welcome) +Learn more [about Light-Token here](https://www.zkcompression.com/light-token/welcome). \ No newline at end of file diff --git a/program-examples/anchor/anchor-sdk/Anchor.toml b/program-examples/anchor/anchor-sdk/Anchor.toml deleted file mode 100644 index 0c5de3c..0000000 --- a/program-examples/anchor/anchor-sdk/Anchor.toml +++ /dev/null @@ -1,30 +0,0 @@ -[toolchain] - -[features] -resolution = true -skip-lint = false - -[programs.devnet] -light_token_anchor_approve = "37XmzKqSG2VD1ZBvzyfbt1HN1mT1bqVAmfzX2ziB3KT1" -light_token_anchor_burn = "2TXVn8AqjfyeJvmFBD3kHJmh6fWkC4HNB5T76BmLKV5c" -light_token_anchor_close = "GXLCuNhnkRVp596eCdbNsZ9ua1ePbKbb344VKS7V3zQQ" -light_token_anchor_create_ata = "35MukgdfpNUbPMhTmEk63ECV8vjgpNVFRH9nP8ovMN58" -light_token_anchor_create_mint = "A1rJEoepgKYWZYZ8KVFpxgeeRGwBrU7xk8S39srjVkUX" -light_token_anchor_create_token_account = "zXK1CnWj4WFfFHCArxxr4sh3Qqx2p3oui8ahqpjArgS" -light_token_anchor_freeze = "JBMzMJX4sqCQfNVbosP2oqP1KZ5ZDWiwYTrupk687qXZ" -light_token_anchor_mint_to = "8bXEVmHLtAVqDLJp1dYWAZ61WQmqQKoTQ8LpPbRoUDCp" -light_token_anchor_mint_to_checked = "DGu3ofzac2Zndn95z2q9gCp8zHgW22YpMeEWj2up3QDb" -light_token_anchor_revoke = "G3ph4MK5qaSdxYnfxToETg31AHEMMqVhPuMRgBhk38tQ" -light_token_anchor_thaw = "7j94EF5hSkDLf7R26bjrd8Qc6s3oLAQpcKiF3re8JYw9" -light_token_anchor_transfer_checked = "HXmfewpozFdxhM8BayL9v5541gwoGMXTrUoip5KySs2f" -light_token_anchor_transfer_interface = "3rb6sG4jiYNLZC8jo8kLsFHpxr2Ci8e8Hh8UmeCMZmUV" - -[registry] -url = "https://api.apr.dev" - -[provider] -cluster = "devnet" -wallet = "~/.config/solana/id.json" - -[scripts] -test = "cargo test-sbf" diff --git a/program-examples/anchor/anchor-sdk/Cargo.lock b/program-examples/anchor/anchor-sdk/Cargo.lock deleted file mode 100644 index 43956cd..0000000 --- a/program-examples/anchor/anchor-sdk/Cargo.lock +++ /dev/null @@ -1,8977 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[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 = "agave-feature-set" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a2c365c0245cbb8959de725fc2b44c754b673fdf34c9a7f9d4a25c35a7bf1" -dependencies = [ - "ahash", - "solana-epoch-schedule", - "solana-hash", - "solana-pubkey", - "solana-sha256-hasher", - "solana-svm-feature-set", -] - -[[package]] -name = "agave-precompiles" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d60d73657792af7f2464e9181d13c3979e94bb09841d9ffa014eef4ef0492b77" -dependencies = [ - "agave-feature-set", - "bincode", - "digest 0.10.7", - "ed25519-dalek", - "libsecp256k1", - "openssl", - "sha3", - "solana-ed25519-program", - "solana-message", - "solana-precompile-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-secp256k1-program", - "solana-secp256r1-program", -] - -[[package]] -name = "agave-reserved-account-keys" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8289c8a8a2ef5aa10ce49a070f360f4e035ee3410b8d8f3580fb39d8cf042581" -dependencies = [ - "agave-feature-set", - "solana-pubkey", - "solana-sdk-ids", -] - -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "getrandom 0.3.4", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "aligned-sized" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a526ec4434d531d488af59fe866f36b310fe8906691c75dffa664450a3800a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "anchor-attribute-access-control" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f70fd141a4d18adf11253026b32504f885447048c7494faf5fa83b01af9c0cf" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-account" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715a261c57c7679581e06f07a74fa2af874ac30f86bd8ea07cca4a7e5388a064" -dependencies = [ - "anchor-syn", - "bs58", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-constant" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730d6df8ae120321c5c25e0779e61789e4b70dc8297102248902022f286102e4" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-error" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27e6e449cc3a37b2880b74dcafb8e5a17b954c0e58e376432d7adc646fb333ef" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-event" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7710e4c54adf485affcd9be9adec5ef8846d9c71d7f31e16ba86ff9fc1dd49f" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-program" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ecfd49b2aeadeb32f35262230db402abed76ce87e27562b34f61318b2ec83c" -dependencies = [ - "anchor-lang-idl", - "anchor-syn", - "anyhow", - "bs58", - "heck 0.3.3", - "proc-macro2", - "quote", - "serde_json", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-accounts" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be89d160793a88495af462a7010b3978e48e30a630c91de47ce2c1d3cb7a6149" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-serde" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abc6ee78acb7bfe0c2dd2abc677aaa4789c0281a0c0ef01dbf6fe85e0fd9e6e4" -dependencies = [ - "anchor-syn", - "borsh-derive-internal", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-space" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134a01c0703f6fd355a0e472c033f6f3e41fac1ef6e370b20c50f4c8d022cea7" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-lang" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6bab117055905e930f762c196e08f861f8dfe7241b92cee46677a3b15561a0a" -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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e8599d21995f68e296265aa5ab0c3cef582fd58afec014d01bd0bce18a4418" -dependencies = [ - "anchor-lang-idl-spec", - "anyhow", - "heck 0.3.3", - "regex", - "serde", - "serde_json", - "sha2 0.10.9", -] - -[[package]] -name = "anchor-lang-idl-spec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" -dependencies = [ - "anyhow", - "serde", -] - -[[package]] -name = "anchor-syn" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dc7a6d90cc643df0ed2744862cdf180587d1e5d28936538c18fc8908489ed67" -dependencies = [ - "anyhow", - "bs58", - "cargo_toml", - "heck 0.3.3", - "proc-macro2", - "quote", - "serde", - "serde_json", - "sha2 0.10.9", - "syn 1.0.109", - "thiserror 1.0.69", -] - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] -name = "anyhow" -version = "1.0.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" - -[[package]] -name = "ark-bn254" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" -dependencies = [ - "ark-ec 0.4.2", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bn254" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" -dependencies = [ - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-ec" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" -dependencies = [ - "ark-ff 0.4.2", - "ark-poly 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", - "itertools 0.10.5", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-poly 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe 0.6.0", - "fnv", - "hashbrown 0.15.2", - "itertools 0.13.0", - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "digest 0.10.7", - "itertools 0.10.5", - "num-bigint 0.4.6", - "num-traits", - "paste", - "rustc_version", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" -dependencies = [ - "ark-ff-asm 0.5.0", - "ark-ff-macros 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "educe 0.6.0", - "itertools 0.13.0", - "num-bigint 0.4.6", - "num-traits", - "paste", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" -dependencies = [ - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-poly" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" -dependencies = [ - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", -] - -[[package]] -name = "ark-poly" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe 0.6.0", - "fnv", - "hashbrown 0.15.2", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-serialize-derive 0.4.2", - "ark-std 0.4.0", - "digest 0.10.7", - "num-bigint 0.4.6", -] - -[[package]] -name = "ark-serialize" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" -dependencies = [ - "ark-serialize-derive 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "num-bigint 0.4.6", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "ark-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" -dependencies = [ - "num-traits", - "rand 0.8.5", - "rayon", -] - -[[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 = "ascii" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" - -[[package]] -name = "async-compression" -version = "0.4.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" -dependencies = [ - "compression-codecs", - "compression-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[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 = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" -dependencies = [ - "serde_core", -] - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "blake3" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" -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.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" -dependencies = [ - "borsh-derive 1.6.0", - "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.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" -dependencies = [ - "once_cell", - "proc-macro-crate 3.4.0", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[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 = "brotli" -version = "8.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[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.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" - -[[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 = "bytecount" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" - -[[package]] -name = "bytemuck" -version = "1.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" - -[[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.23", -] - -[[package]] -name = "cc" -version = "1.2.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583" -dependencies = [ - "find-msvc-tools", - "jobserver", - "libc", - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "cfg_eval" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "chrono" -version = "0.4.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-link", -] - -[[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 = "combine" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" -dependencies = [ - "ascii", - "byteorder", - "either", - "memchr", - "unreachable", -] - -[[package]] -name = "compression-codecs" -version = "0.4.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" -dependencies = [ - "brotli", - "compression-core", - "flate2", - "memchr", -] - -[[package]] -name = "compression-core" -version = "0.4.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" - -[[package]] -name = "console" -version = "0.15.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" -dependencies = [ - "encode_unicode", - "libc", - "once_cell", - "unicode-width", - "windows-sys 0.59.0", -] - -[[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 = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", -] - -[[package]] -name = "crypto-mac" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -dependencies = [ - "generic-array", - "subtle", -] - -[[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 = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - -[[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.114", -] - -[[package]] -name = "darling" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.114", -] - -[[package]] -name = "darling_macro" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "deranged" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" -dependencies = [ - "powerfmt", - "serde_core", -] - -[[package]] -name = "derivation-path" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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 = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "eager" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" - -[[package]] -name = "ed25519" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" -dependencies = [ - "signature", -] - -[[package]] -name = "ed25519-dalek" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" -dependencies = [ - "curve25519-dalek 3.2.0", - "ed25519", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "zeroize", -] - -[[package]] -name = "ed25519-dalek-bip32" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" -dependencies = [ - "derivation-path", - "ed25519-dalek", - "hmac 0.12.1", - "sha2 0.10.9", -] - -[[package]] -name = "educe" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" -dependencies = [ - "enum-ordinalize 3.1.15", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "educe" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" -dependencies = [ - "enum-ordinalize 4.3.2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - -[[package]] -name = "encode_unicode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" - -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "enum-iterator" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" -dependencies = [ - "enum-iterator-derive", -] - -[[package]] -name = "enum-iterator-derive" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "enum-ordinalize" -version = "3.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "enum-ordinalize" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" -dependencies = [ - "enum-ordinalize-derive", -] - -[[package]] -name = "enum-ordinalize-derive" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "env_logger" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[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 = "find-msvc-tools" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" - -[[package]] -name = "five8" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" -dependencies = [ - "five8_core", -] - -[[package]] -name = "five8_const" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" -dependencies = [ - "five8_core", -] - -[[package]] -name = "five8_core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" - -[[package]] -name = "flate2" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[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 = "gethostname" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "r-efi", - "wasip2", - "wasm-bindgen", -] - -[[package]] -name = "groth16-solana" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6d1ffb18dbf5cfc60b11bd7da88474c672870247c1e5b498619bcb6ba3d8f5" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "num-bigint 0.4.6", - "solana-bn254", - "thiserror 1.0.69", -] - -[[package]] -name = "h2" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.13.0", - "slab", - "tokio", - "tokio-util 0.7.18", - "tracing", -] - -[[package]] -name = "h2" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http 1.4.0", - "indexmap 2.13.0", - "slab", - "tokio", - "tokio-util 0.7.18", - "tracing", -] - -[[package]] -name = "hash32" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[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" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hmac" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" -dependencies = [ - "crypto-mac", - "digest 0.9.0", -] - -[[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 = "hmac-drbg" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" -dependencies = [ - "digest 0.9.0", - "generic-array", - "hmac 0.8.1", -] - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http 1.4.0", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http 1.4.0", - "http-body 1.0.1", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "humantime" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" - -[[package]] -name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.5.10", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "h2 0.4.13", - "http 1.4.0", - "http-body 1.0.1", - "httparse", - "itoa", - "pin-project-lite", - "pin-utils", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" -dependencies = [ - "futures-util", - "http 0.2.12", - "hyper 0.14.32", - "rustls 0.21.12", - "tokio", - "tokio-rustls 0.24.1", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" -dependencies = [ - "http 1.4.0", - "hyper 1.8.1", - "hyper-util", - "rustls 0.23.36", - "rustls-pki-types", - "tokio", - "tokio-rustls 0.26.4", - "tower-service", - "webpki-roots 1.0.5", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper 0.14.32", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper 1.8.1", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http 1.4.0", - "http-body 1.0.1", - "hyper 1.8.1", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2 0.6.2", - "system-configuration 0.6.1", - "tokio", - "tower-service", - "tracing", - "windows-registry", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" - -[[package]] -name = "icu_properties" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" - -[[package]] -name = "icu_provider" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" -dependencies = [ - "equivalent", - "hashbrown 0.16.1", - "serde", - "serde_core", -] - -[[package]] -name = "indicatif" -version = "0.17.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" -dependencies = [ - "console", - "number_prefix", - "portable-atomic", - "unicode-width", - "web-time", -] - -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "generic-array", -] - -[[package]] -name = "ipnet" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" - -[[package]] -name = "iri-string" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" - -[[package]] -name = "jobserver" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" -dependencies = [ - "getrandom 0.3.4", - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "jsonrpc-core" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" -dependencies = [ - "futures", - "futures-executor", - "futures-util", - "log", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "kaigan" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ba15de5aeb137f0f65aa3bf82187647f1285abfe5b20c80c2c37f7007ad519a" -dependencies = [ - "borsh 0.10.4", - "serde", -] - -[[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.180" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" - -[[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", - "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "typenum", -] - -[[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 = "light-account-checks" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f20b8640212dd450e18d452a247e28d8ba6fdce3c713fd8b69f1e95874d1b7ab" -dependencies = [ - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sysvar", - "thiserror 2.0.18", -] - -[[package]] -name = "light-array-map" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bdd13b18028ac9d80d0a987551c0dad7fe81be8140e87cc9d568b80f3728203" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "light-batched-merkle-tree" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01e838c523b49371097f948cd5662bd9a89d9dca037fb61fd38001e99f485702" -dependencies = [ - "aligned-sized", - "borsh 0.10.4", - "light-account-checks", - "light-bloom-filter", - "light-compressed-account", - "light-hasher", - "light-macros", - "light-merkle-tree-metadata", - "light-verifier", - "light-zero-copy", - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sysvar", - "thiserror 2.0.18", - "zerocopy", -] - -[[package]] -name = "light-bloom-filter" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b8cf734ccf5fbc1f5fed8e5308b57ebde6774d9304c167bcb0de2854412d8" -dependencies = [ - "bitvec", - "num-bigint 0.4.6", - "solana-nostd-keccak", - "solana-program-error", - "thiserror 2.0.18", -] - -[[package]] -name = "light-bounded-vec" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58cfa375d028164719e3ffef93d2e5c27855cc8a5bb5bf257b868d17c12a3e66" -dependencies = [ - "bytemuck", - "memoffset", - "solana-program-error", - "thiserror 1.0.69", -] - -[[package]] -name = "light-client" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33203f596d48d28d1cb67dee5762b151e0073207a5e828c63ec68f9efb9a5ee8" -dependencies = [ - "anchor-lang", - "async-trait", - "base64 0.13.1", - "borsh 0.10.4", - "bs58", - "futures", - "lazy_static", - "light-compressed-account", - "light-compressible", - "light-concurrent-merkle-tree", - "light-event", - "light-hasher", - "light-indexed-merkle-tree", - "light-merkle-tree-metadata", - "light-prover-client", - "light-sdk", - "light-token", - "light-token-interface", - "litesvm", - "num-bigint 0.4.6", - "photon-api", - "rand 0.8.5", - "smallvec", - "solana-account", - "solana-account-decoder-client-types", - "solana-address-lookup-table-interface", - "solana-banks-client", - "solana-clock", - "solana-commitment-config", - "solana-compute-budget-interface", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-program-error", - "solana-pubkey", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-signature", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status-client-types", - "spl-pod", - "spl-token-2022-interface", - "thiserror 2.0.18", - "tokio", - "tracing", -] - -[[package]] -name = "light-compressed-account" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c3537bbad9df133ca97fc191b164bba93dba1de4da01a92d979ef63f8ce106" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-hasher", - "light-macros", - "light-poseidon 0.3.0", - "light-program-profiler", - "light-zero-copy", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "thiserror 2.0.18", - "tinyvec", - "zerocopy", -] - -[[package]] -name = "light-compressible" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00d1dc14271907009f4ca23ae99c49279f7d2acc5a83f0f8d7362834b37e2e16" -dependencies = [ - "aligned-sized", - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-account-checks", - "light-compressed-account", - "light-hasher", - "light-macros", - "light-program-profiler", - "light-zero-copy", - "pinocchio-pubkey", - "solana-pubkey", - "solana-rent", - "thiserror 2.0.18", - "zerocopy", -] - -[[package]] -name = "light-concurrent-merkle-tree" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db96f47253a0907aaa46dac15cecb27b5510130e48da0b36690dcd2e99a6d558" -dependencies = [ - "borsh 0.10.4", - "light-bounded-vec", - "light-hasher", - "memoffset", - "solana-program-error", - "thiserror 2.0.18", -] - -[[package]] -name = "light-event" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4bae725ee1d4d944d442ac0bfdf2031b1b2379c04c7e39c475277aaaea08fb1" -dependencies = [ - "borsh 0.10.4", - "light-compressed-account", - "light-hasher", - "light-zero-copy", - "thiserror 2.0.18", -] - -[[package]] -name = "light-hasher" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c822662e6e109bac0e132a43fd52a4ef684811245a794e048cf9cda001e934c8" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "borsh 0.10.4", - "light-poseidon 0.3.0", - "num-bigint 0.4.6", - "sha2 0.10.9", - "sha3", - "solana-program-error", - "thiserror 2.0.18", - "tinyvec", -] - -[[package]] -name = "light-indexed-array" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f14f984030d86b6f07bd8f5ae04e2c40fcd0c3bdfcc7a291fff1ed59c9e6554" -dependencies = [ - "light-hasher", - "num-bigint 0.4.6", - "num-traits", - "thiserror 2.0.18", -] - -[[package]] -name = "light-indexed-merkle-tree" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0824755289075f28de2820fc7d4ec4e6b9e99d404e033c07338b91cce8c71fb8" -dependencies = [ - "light-bounded-vec", - "light-concurrent-merkle-tree", - "light-hasher", - "light-merkle-tree-reference", - "num-bigint 0.4.6", - "num-traits", - "solana-program-error", - "thiserror 2.0.18", -] - -[[package]] -name = "light-instruction-decoder" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f4bd98e842f21b754ec28020a56de37cb0b1089952ef24340d21c2d5afd5c5" -dependencies = [ - "borsh 0.10.4", - "bs58", - "light-compressed-account", - "light-instruction-decoder-derive", - "light-sdk-types", - "light-token-interface", - "serde", - "solana-instruction", - "solana-pubkey", - "solana-signature", - "tabled", -] - -[[package]] -name = "light-instruction-decoder-derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2035d04a0a1590da05634efcac149a2ac852565e28c9a55bd07a6620c0e90bff" -dependencies = [ - "bs58", - "darling", - "heck 0.5.0", - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.114", -] - -[[package]] -name = "light-macros" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "179ac51cadc1d0ca047b4d6265a7cc245ca3affc16a20a2749585aa6464d39c2" -dependencies = [ - "bs58", - "proc-macro2", - "quote", - "solana-pubkey", - "syn 2.0.114", -] - -[[package]] -name = "light-merkle-tree-metadata" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c2e63e8345dcfb80efac69136fdcc6c36a12354675aca6e3daf13ec40422d1" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-compressed-account", - "solana-msg", - "solana-program-error", - "solana-sysvar", - "thiserror 2.0.18", - "zerocopy", -] - -[[package]] -name = "light-merkle-tree-reference" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8d480f62ca32b38a6231bbc5310d693f91d6b5bdcc18bb13c2d9aab7a1c90e8" -dependencies = [ - "light-hasher", - "light-indexed-array", - "num-bigint 0.4.6", - "num-traits", - "thiserror 2.0.18", -] - -[[package]] -name = "light-poseidon" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" -dependencies = [ - "ark-bn254 0.4.0", - "ark-ff 0.4.2", - "num-bigint 0.4.6", - "thiserror 1.0.69", -] - -[[package]] -name = "light-poseidon" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3d87542063daaccbfecd78b60f988079b6ec4e089249658b9455075c78d42" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "num-bigint 0.4.6", - "thiserror 1.0.69", -] - -[[package]] -name = "light-profiler-macro" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a8be18fe4de58a6f754caa74a3fbc6d8a758a26f1f3c24d5b0f5b55df5f5408" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "light-program-profiler" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1d345871581aebd8825868a3f08410290aa1cdddcb189ca7f7e588f61d79fcf" -dependencies = [ - "light-profiler-macro", -] - -[[package]] -name = "light-program-test" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85916a9da34a44971e1a30badaf04cb75213fbfa9f61a139ea6ebd0f021bdde" -dependencies = [ - "anchor-lang", - "async-trait", - "base64 0.13.1", - "borsh 0.10.4", - "bs58", - "bytemuck", - "chrono", - "light-client", - "light-compressed-account", - "light-compressible", - "light-event", - "light-hasher", - "light-indexed-array", - "light-indexed-merkle-tree", - "light-instruction-decoder", - "light-merkle-tree-metadata", - "light-merkle-tree-reference", - "light-prover-client", - "light-sdk", - "light-sdk-types", - "light-token", - "light-token-interface", - "light-zero-copy", - "litesvm", - "log", - "num-bigint 0.4.6", - "num-traits", - "photon-api", - "rand 0.8.5", - "reqwest 0.12.28", - "serde", - "serde_json", - "solana-account", - "solana-banks-client", - "solana-compute-budget", - "solana-instruction", - "solana-pubkey", - "solana-rpc-client-api", - "solana-sdk", - "solana-transaction", - "solana-transaction-status", - "solana-transaction-status-client-types", - "spl-token-2022 7.0.0", - "tabled", - "tokio", -] - -[[package]] -name = "light-prover-client" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd2195f4573628a8aaca37504cde1b1903b8ed20e2706acbad875b7d41acbeab" -dependencies = [ - "ark-bn254 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "light-compressed-account", - "light-hasher", - "light-indexed-array", - "light-sparse-merkle-tree", - "num-bigint 0.4.6", - "num-traits", - "reqwest 0.11.27", - "serde", - "serde_json", - "solana-bn254", - "thiserror 2.0.18", - "tokio", - "tracing", -] - -[[package]] -name = "light-sdk" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f523c64a6fcdafe6df81d647560770529896f2707be8ffcf048d909b7e2b30" -dependencies = [ - "anchor-lang", - "bincode", - "borsh 0.10.4", - "light-account-checks", - "light-compressed-account", - "light-compressible", - "light-hasher", - "light-macros", - "light-sdk-macros", - "light-sdk-types", - "light-zero-copy", - "num-bigint 0.4.6", - "solana-account-info", - "solana-clock", - "solana-cpi", - "solana-instruction", - "solana-loader-v3-interface", - "solana-msg", - "solana-program", - "solana-program-error", - "solana-pubkey", - "solana-system-interface", - "solana-sysvar", - "thiserror 2.0.18", -] - -[[package]] -name = "light-sdk-macros" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3d12bb13b84df21a4871dc0837aafc0b48464d3e9b17e2773c0719b6cc724c5" -dependencies = [ - "darling", - "light-hasher", - "light-sdk-types", - "proc-macro2", - "quote", - "solana-pubkey", - "syn 2.0.114", -] - -[[package]] -name = "light-sdk-types" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d8153b27d057ded7b2b6bbd78c643e3f20bd9a9718ca1a8d4183169ccd812c3" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-account-checks", - "light-compressed-account", - "light-hasher", - "light-macros", - "solana-msg", - "thiserror 2.0.18", -] - -[[package]] -name = "light-sparse-merkle-tree" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4251e79b6c63f4946572dcfd7623680ad0f9e0efe1a761a944733333c5645063" -dependencies = [ - "light-hasher", - "light-indexed-array", - "num-bigint 0.4.6", - "num-traits", - "thiserror 2.0.18", -] - -[[package]] -name = "light-token" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fd2e8ca6d7d70c77658010e1ae6ed6d4fe23e29054964b053f51e5c4676e49" -dependencies = [ - "anchor-lang", - "arrayvec", - "borsh 0.10.4", - "light-account-checks", - "light-batched-merkle-tree", - "light-compressed-account", - "light-compressible", - "light-macros", - "light-program-profiler", - "light-sdk", - "light-sdk-macros", - "light-sdk-types", - "light-token-interface", - "light-token-types", - "light-zero-copy", - "solana-account-info", - "solana-cpi", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "light-token-anchor-approve" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-burn" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-close" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-create-ata" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-create-mint" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-create-token-account" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-freeze" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-mint-to" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-mint-to-checked" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-revoke" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-thaw" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-transfer-checked" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-transfer-interface" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "light-token-types", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-interface" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46decebc2a13ec984e2ba7f1e691c0d46b9061875c6bdd12636b7c100a60e6c" -dependencies = [ - "aligned-sized", - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-array-map", - "light-compressed-account", - "light-compressible", - "light-hasher", - "light-macros", - "light-program-profiler", - "light-zero-copy", - "pinocchio", - "pinocchio-pubkey", - "solana-account-info", - "solana-pubkey", - "spl-pod", - "spl-token-2022 7.0.0", - "thiserror 2.0.18", - "tinyvec", - "zerocopy", -] - -[[package]] -name = "light-token-types" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "411481fe2e04b1241235c2572480c153c5669507e227f5e3327057b0d2ba5734" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-account-checks", - "light-compressed-account", - "light-macros", - "light-sdk-types", - "solana-msg", - "thiserror 2.0.18", -] - -[[package]] -name = "light-verifier" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecba4c14ac08b078a9d84033d628b12bb2577141f405140d506bacd392a830bc" -dependencies = [ - "groth16-solana", - "light-compressed-account", - "thiserror 2.0.18", -] - -[[package]] -name = "light-zero-copy" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5621fb515e14af46148699c0b65334aabe230a1d2cbd06736ccc7a408c8a4af" -dependencies = [ - "light-zero-copy-derive", - "solana-program-error", - "zerocopy", -] - -[[package]] -name = "light-zero-copy-derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c46425e5c7ab5203ff5c86ae2615b169cca55f9283f5f60f5dd74143be6934" -dependencies = [ - "lazy_static", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "linux-raw-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" - -[[package]] -name = "litemap" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" - -[[package]] -name = "litesvm" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bca37ac374948b348e29c74b324dc36f18bbbd1ccf80e2046d967521cbd143" -dependencies = [ - "agave-feature-set", - "agave-precompiles", - "agave-reserved-account-keys", - "ansi_term", - "bincode", - "indexmap 2.13.0", - "itertools 0.14.0", - "log", - "solana-account", - "solana-address-lookup-table-interface", - "solana-bpf-loader-program", - "solana-builtins", - "solana-clock", - "solana-compute-budget", - "solana-compute-budget-instruction", - "solana-epoch-rewards", - "solana-epoch-schedule", - "solana-fee", - "solana-fee-structure", - "solana-hash", - "solana-instruction", - "solana-instructions-sysvar", - "solana-keypair", - "solana-last-restart-slot", - "solana-loader-v3-interface", - "solana-loader-v4-interface", - "solana-log-collector", - "solana-message", - "solana-native-token 3.0.0", - "solana-nonce", - "solana-nonce-account", - "solana-precompile-error", - "solana-program-error", - "solana-program-runtime", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sha256-hasher", - "solana-signature", - "solana-signer", - "solana-slot-hashes", - "solana-slot-history", - "solana-stake-interface", - "solana-svm-callback", - "solana-svm-transaction", - "solana-system-interface", - "solana-system-program", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "solana-vote-program", - "thiserror 2.0.18", -] - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "lru-slab" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" - -[[package]] -name = "memchr" -version = "2.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" - -[[package]] -name = "memmap2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] - -[[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 = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "mio" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" -dependencies = [ - "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.61.2", -] - -[[package]] -name = "native-tls" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "num" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" -dependencies = [ - "num-bigint 0.2.6", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[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", - "serde", -] - -[[package]] -name = "num-complex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" - -[[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.114", -] - -[[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-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" -dependencies = [ - "autocfg", - "num-bigint 0.2.6", - "num-integer", - "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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" -dependencies = [ - "proc-macro-crate 3.4.0", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - -[[package]] -name = "openssl" -version = "0.10.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" -dependencies = [ - "bitflags 2.10.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - -[[package]] -name = "openssl-src" -version = "300.5.4+3.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" -dependencies = [ - "cc", -] - -[[package]] -name = "openssl-sys" -version = "0.9.111" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" -dependencies = [ - "cc", - "libc", - "openssl-src", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand 0.8.5", - "thiserror 1.0.69", -] - -[[package]] -name = "papergrid" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6978128c8b51d8f4080631ceb2302ab51e32cc6e8615f735ee2f83fd269ae3f1" -dependencies = [ - "bytecount", - "fnv", - "unicode-width", -] - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "percentage" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" -dependencies = [ - "num", -] - -[[package]] -name = "photon-api" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e572dba0c255f5b8176f15b9e849330d915a8927804f7f9702d5bbbc70e4a1ad" -dependencies = [ - "reqwest 0.12.28", - "serde", - "serde_derive", - "serde_json", - "serde_with", - "url", - "uuid", -] - -[[package]] -name = "pin-project" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pinocchio" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b971851087bc3699b001954ad02389d50c41405ece3548cbcafc88b3e20017a" - -[[package]] -name = "pinocchio-pubkey" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0225638cadcbebae8932cb7f49cb5da7c15c21beb19f048f05a5ca7d93f065" -dependencies = [ - "five8_const", - "pinocchio", - "sha2-const-stable", -] - -[[package]] -name = "pkg-config" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" - -[[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 = "portable-atomic" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" - -[[package]] -name = "potential_utf" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -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.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" -dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -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 = "qualifier_attr" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "quinn" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" -dependencies = [ - "bytes", - "cfg_aliases", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash", - "rustls 0.23.36", - "socket2 0.6.2", - "thiserror 2.0.18", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" -dependencies = [ - "bytes", - "getrandom 0.3.4", - "lru-slab", - "rand 0.9.2", - "ring", - "rustc-hash", - "rustls 0.23.36", - "rustls-pki-types", - "slab", - "thiserror 2.0.18", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2 0.6.2", - "tracing", - "windows-sys 0.60.2", -] - -[[package]] -name = "quote" -version = "1.0.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[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" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.5", -] - -[[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_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - -[[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.17", -] - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", -] - -[[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 = "rayon" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.10.0", -] - -[[package]] -name = "ref-cast" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "regex" -version = "1.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" - -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", - "hyper-rustls 0.24.2", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls 0.21.12", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration 0.5.1", - "tokio", - "tokio-native-tls", - "tokio-rustls 0.24.1", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 0.25.4", - "winreg", -] - -[[package]] -name = "reqwest" -version = "0.12.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" -dependencies = [ - "base64 0.22.1", - "bytes", - "encoding_rs", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.4.13", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.8.1", - "hyper-rustls 0.27.7", - "hyper-tls 0.6.0", - "hyper-util", - "js-sys", - "log", - "mime", - "mime_guess", - "native-tls", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls 0.23.36", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 1.0.2", - "tokio", - "tokio-native-tls", - "tokio-rustls 0.26.4", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 1.0.5", -] - -[[package]] -name = "reqwest-middleware" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" -dependencies = [ - "anyhow", - "async-trait", - "http 1.4.0", - "reqwest 0.12.28", - "serde", - "thiserror 1.0.69", - "tower-service", -] - -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.17", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" - -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" -dependencies = [ - "bitflags 2.10.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustls" -version = "0.21.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" -dependencies = [ - "log", - "ring", - "rustls-webpki 0.101.7", - "sct", -] - -[[package]] -name = "rustls" -version = "0.23.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" -dependencies = [ - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki 0.103.9", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - -[[package]] -name = "rustls-pki-types" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" -dependencies = [ - "web-time", - "zeroize", -] - -[[package]] -name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "rustls-webpki" -version = "0.103.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "ryu" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" - -[[package]] -name = "schannel" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "schemars" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.10.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde-big-array" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_bytes" -version = "0.11.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.13.0", - "schemars 0.9.0", - "schemars 1.2.0", - "serde_core", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[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.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha2-const-stable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" - -[[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 = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" -dependencies = [ - "errno", - "libc", -] - -[[package]] -name = "signature" -version = "1.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" - -[[package]] -name = "simd-adler32" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "slab" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "socket2" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" -dependencies = [ - "libc", - "windows-sys 0.60.2", -] - -[[package]] -name = "solana-account" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" -dependencies = [ - "bincode", - "serde", - "serde_bytes", - "serde_derive", - "solana-account-info", - "solana-clock", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-sysvar", -] - -[[package]] -name = "solana-account-decoder" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba71c97fa4d85ce4a1e0e79044ad0406c419382be598c800202903a7688ce71a" -dependencies = [ - "Inflector", - "base64 0.22.1", - "bincode", - "bs58", - "bv", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-account-decoder-client-types", - "solana-address-lookup-table-interface", - "solana-clock", - "solana-config-program-client", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-instruction", - "solana-loader-v3-interface", - "solana-nonce", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-slot-hashes", - "solana-slot-history", - "solana-stake-interface", - "solana-sysvar", - "solana-vote-interface", - "spl-generic-token", - "spl-token 8.0.0", - "spl-token-2022 8.0.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "thiserror 2.0.18", - "zstd", -] - -[[package]] -name = "solana-account-decoder-client-types" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5519e8343325b707f17fbed54fcefb325131b692506d0af9e08a539d15e4f8cf" -dependencies = [ - "base64 0.22.1", - "bs58", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-pubkey", - "zstd", -] - -[[package]] -name = "solana-account-info" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" -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-banks-client" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68548570c38a021c724b5aa0112f45a54bdf7ff1b041a042848e034a95a96994" -dependencies = [ - "borsh 1.6.0", - "futures", - "solana-account", - "solana-banks-interface", - "solana-clock", - "solana-commitment-config", - "solana-hash", - "solana-message", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-signature", - "solana-sysvar", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "tarpc", - "thiserror 2.0.18", - "tokio", - "tokio-serde", -] - -[[package]] -name = "solana-banks-interface" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6d90edc435bf488ef7abed4dcb1f94fa1970102cbabb25688f58417fd948286" -dependencies = [ - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-commitment-config", - "solana-hash", - "solana-message", - "solana-pubkey", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "tarpc", -] - -[[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 0.4.6", - "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-bn254" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4420f125118732833f36facf96a27e7b78314b2d642ba07fa9ffdacd8d79e243" -dependencies = [ - "ark-bn254 0.4.0", - "ark-ec 0.4.2", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "bytemuck", - "solana-define-syscall", - "thiserror 2.0.18", -] - -[[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.6.0", -] - -[[package]] -name = "solana-bpf-loader-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aec57dcd80d0f6879956cad28854a6eebaed6b346ce56908ea01a9f36ab259" -dependencies = [ - "bincode", - "libsecp256k1", - "num-traits", - "qualifier_attr", - "scopeguard", - "solana-account", - "solana-account-info", - "solana-big-mod-exp", - "solana-bincode", - "solana-blake3-hasher", - "solana-bn254", - "solana-clock", - "solana-cpi", - "solana-curve25519", - "solana-hash", - "solana-instruction", - "solana-keccak-hasher", - "solana-loader-v3-interface", - "solana-loader-v4-interface", - "solana-log-collector", - "solana-measure", - "solana-packet", - "solana-poseidon", - "solana-program-entrypoint", - "solana-program-runtime", - "solana-pubkey", - "solana-sbpf", - "solana-sdk-ids", - "solana-secp256k1-recover", - "solana-sha256-hasher", - "solana-stable-layout", - "solana-svm-feature-set", - "solana-system-interface", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", - "solana-transaction-context", - "solana-type-overrides", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-builtins" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d61a31b63b52b0d268cbcd56c76f50314867d7f8e07a0f2c62ee7c9886e07b2" -dependencies = [ - "agave-feature-set", - "solana-bpf-loader-program", - "solana-compute-budget-program", - "solana-hash", - "solana-loader-v4-program", - "solana-program-runtime", - "solana-pubkey", - "solana-sdk-ids", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", - "solana-zk-elgamal-proof-program", - "solana-zk-token-proof-program", -] - -[[package]] -name = "solana-builtins-default-costs" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ca69a299a6c969b18ea381a02b40c9e4dda04b2af0d15a007c1184c82163bbb" -dependencies = [ - "agave-feature-set", - "ahash", - "log", - "solana-bpf-loader-program", - "solana-compute-budget-program", - "solana-loader-v4-program", - "solana-pubkey", - "solana-sdk-ids", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", -] - -[[package]] -name = "solana-client-traits" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" -dependencies = [ - "solana-account", - "solana-commitment-config", - "solana-epoch-info", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-pubkey", - "solana-signature", - "solana-signer", - "solana-system-interface", - "solana-transaction", - "solana-transaction-error", -] - -[[package]] -name = "solana-clock" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", -] - -[[package]] -name = "solana-cluster-type" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" -dependencies = [ - "serde", - "serde_derive", - "solana-hash", -] - -[[package]] -name = "solana-commitment-config" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-compute-budget" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f4fc63bc2276a1618ca0bfc609da7448534ecb43a1cb387cdf9eaa2dc7bc272" -dependencies = [ - "solana-fee-structure", - "solana-program-runtime", -] - -[[package]] -name = "solana-compute-budget-instruction" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503d94430f6d3c5ac1e1fa6a342c1c714d5b03c800999e7b6cf235298f0b5341" -dependencies = [ - "agave-feature-set", - "log", - "solana-borsh", - "solana-builtins-default-costs", - "solana-compute-budget", - "solana-compute-budget-interface", - "solana-instruction", - "solana-packet", - "solana-pubkey", - "solana-sdk-ids", - "solana-svm-transaction", - "solana-transaction-error", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-compute-budget-interface" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8432d2c4c22d0499aa06d62e4f7e333f81777b3d7c96050ae9e5cb71a8c3aee4" -dependencies = [ - "borsh 1.6.0", - "serde", - "serde_derive", - "solana-instruction", - "solana-sdk-ids", -] - -[[package]] -name = "solana-compute-budget-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "072b02beed1862c6b7b7a8a699379594c4470a9371c711856a0a3c266dcf57e5" -dependencies = [ - "solana-program-runtime", -] - -[[package]] -name = "solana-config-program-client" -version = "0.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53aceac36f105fd4922e29b4f0c1f785b69d7b3e7e387e384b8985c8e0c3595e" -dependencies = [ - "bincode", - "borsh 0.10.4", - "kaigan", - "serde", - "solana-program", -] - -[[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.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae4261b9a8613d10e77ac831a8fa60b6fa52b9b103df46d641deff9f9812a23" -dependencies = [ - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "solana-define-syscall", - "subtle", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-decode-error" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" -dependencies = [ - "num-traits", -] - -[[package]] -name = "solana-define-syscall" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" - -[[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-ed25519-program" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" -dependencies = [ - "bytemuck", - "bytemuck_derive", - "ed25519-dalek", - "solana-feature-set", - "solana-instruction", - "solana-precompile-error", - "solana-sdk-ids", -] - -[[package]] -name = "solana-epoch-info" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" -dependencies = [ - "serde", - "serde_derive", -] - -[[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-rewards-hasher" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" -dependencies = [ - "siphasher", - "solana-hash", - "solana-pubkey", -] - -[[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.18", -] - -[[package]] -name = "solana-feature-gate-interface" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" -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-feature-set" -version = "2.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93b93971e289d6425f88e6e3cb6668c4b05df78b3c518c249be55ced8efd6b6d" -dependencies = [ - "ahash", - "lazy_static", - "solana-epoch-schedule", - "solana-hash", - "solana-pubkey", - "solana-sha256-hasher", -] - -[[package]] -name = "solana-fee" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16beda37597046b1edd1cea6fa7caaed033c091f99ec783fe59c82828bc2adb8" -dependencies = [ - "agave-feature-set", - "solana-fee-structure", - "solana-svm-transaction", -] - -[[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-fee-structure" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33adf673581c38e810bf618f745bf31b683a0a4a4377682e6aaac5d9a058dd4e" -dependencies = [ - "serde", - "serde_derive", - "solana-message", - "solana-native-token 2.3.0", -] - -[[package]] -name = "solana-genesis-config" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3725085d47b96d37fef07a29d78d2787fc89a0b9004c66eed7753d1e554989f" -dependencies = [ - "bincode", - "chrono", - "memmap2", - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-cluster-type", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-hash", - "solana-inflation", - "solana-keypair", - "solana-logger", - "solana-poh-config", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sha256-hasher", - "solana-shred-version", - "solana-signer", - "solana-time-utils", -] - -[[package]] -name = "solana-hard-forks" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-hash" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" -dependencies = [ - "borsh 1.6.0", - "bytemuck", - "bytemuck_derive", - "five8", - "js-sys", - "serde", - "serde_derive", - "solana-atomic-u64", - "solana-sanitize", - "wasm-bindgen", -] - -[[package]] -name = "solana-inflation" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-instruction" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab5682934bd1f65f8d2c16f21cb532526fcc1a09f796e2cacdb091eee5774ad" -dependencies = [ - "bincode", - "borsh 1.6.0", - "getrandom 0.2.17", - "js-sys", - "num-traits", - "serde", - "serde_derive", - "serde_json", - "solana-define-syscall", - "solana-pubkey", - "wasm-bindgen", -] - -[[package]] -name = "solana-instructions-sysvar" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" -dependencies = [ - "bitflags 2.10.0", - "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-keypair" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd3f04aa1a05c535e93e121a95f66e7dcccf57e007282e8255535d24bf1e98bb" -dependencies = [ - "ed25519-dalek", - "ed25519-dalek-bip32", - "five8", - "rand 0.7.3", - "solana-derivation-path", - "solana-pubkey", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-signature", - "solana-signer", - "wasm-bindgen", -] - -[[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 = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" -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-loader-v4-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6ab01855d851fa2fb6034b0d48de33d77d5c5f5fb4b0353d8e4a934cc03d48a" -dependencies = [ - "log", - "qualifier_attr", - "solana-account", - "solana-bincode", - "solana-bpf-loader-program", - "solana-instruction", - "solana-loader-v3-interface", - "solana-loader-v4-interface", - "solana-log-collector", - "solana-measure", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-sbpf", - "solana-sdk-ids", - "solana-transaction-context", - "solana-type-overrides", -] - -[[package]] -name = "solana-log-collector" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d945b1cf5bf7cbd6f5b78795beda7376370c827640df43bb2a1c17b492dc106" -dependencies = [ - "log", -] - -[[package]] -name = "solana-logger" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8e777ec1afd733939b532a42492d888ec7c88d8b4127a5d867eb45c6eb5cd5" -dependencies = [ - "env_logger", - "lazy_static", - "libc", - "log", - "signal-hook", -] - -[[package]] -name = "solana-measure" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11dcd67cd2ae6065e494b64e861e0498d046d95a61cbbf1ae3d58be1ea0f42ed" - -[[package]] -name = "solana-message" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" -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-metrics" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0375159d8460f423d39e5103dcff6e07796a5ec1850ee1fcfacfd2482a8f34b5" -dependencies = [ - "crossbeam-channel", - "gethostname", - "log", - "reqwest 0.12.28", - "solana-cluster-type", - "solana-sha256-hasher", - "solana-time-utils", - "thiserror 2.0.18", -] - -[[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.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" - -[[package]] -name = "solana-native-token" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" - -[[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-nonce-account" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" -dependencies = [ - "solana-account", - "solana-hash", - "solana-nonce", - "solana-sdk-ids", -] - -[[package]] -name = "solana-nostd-keccak" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8ced70920435b1baa58f76e6f84bbc1110ddd1d6161ec76b6d731ae8431e9c4" -dependencies = [ - "sha3", -] - -[[package]] -name = "solana-offchain-message" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" -dependencies = [ - "num_enum", - "solana-hash", - "solana-packet", - "solana-pubkey", - "solana-sanitize", - "solana-sha256-hasher", - "solana-signature", - "solana-signer", -] - -[[package]] -name = "solana-packet" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004f2d2daf407b3ec1a1ca5ec34b3ccdfd6866dd2d3c7d0715004a96e4b6d127" -dependencies = [ - "bincode", - "bitflags 2.10.0", - "cfg_eval", - "serde", - "serde_derive", - "serde_with", -] - -[[package]] -name = "solana-poh-config" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-poseidon" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbac4eb90016eeb1d37fa36e592d3a64421510c49666f81020736611c319faff" -dependencies = [ - "ark-bn254 0.4.0", - "light-poseidon 0.2.0", - "solana-define-syscall", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-precompile-error" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d87b2c1f5de77dfe2b175ee8dd318d196aaca4d0f66f02842f80c852811f9f8" -dependencies = [ - "num-traits", - "solana-decode-error", -] - -[[package]] -name = "solana-precompiles" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e92768a57c652edb0f5d1b30a7d0bc64192139c517967c18600debe9ae3832" -dependencies = [ - "lazy_static", - "solana-ed25519-program", - "solana-feature-set", - "solana-message", - "solana-precompile-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-secp256k1-program", - "solana-secp256r1-program", -] - -[[package]] -name = "solana-presigner" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" -dependencies = [ - "solana-pubkey", - "solana-signature", - "solana-signer", -] - -[[package]] -name = "solana-program" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" -dependencies = [ - "bincode", - "blake3", - "borsh 0.10.4", - "borsh 1.6.0", - "bs58", - "bytemuck", - "console_error_panic_hook", - "console_log", - "getrandom 0.2.17", - "lazy_static", - "log", - "memoffset", - "num-bigint 0.4.6", - "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 2.3.0", - "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.18", - "wasm-bindgen", -] - -[[package]] -name = "solana-program-entrypoint" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" -dependencies = [ - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", -] - -[[package]] -name = "solana-program-error" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" -dependencies = [ - "borsh 1.6.0", - "num-traits", - "serde", - "serde_derive", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-pubkey", -] - -[[package]] -name = "solana-program-memory" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" -dependencies = [ - "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-program-runtime" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5653001e07b657c9de6f0417cf9add1cf4325903732c480d415655e10cc86704" -dependencies = [ - "base64 0.22.1", - "bincode", - "enum-iterator", - "itertools 0.12.1", - "log", - "percentage", - "rand 0.8.5", - "serde", - "solana-account", - "solana-clock", - "solana-epoch-rewards", - "solana-epoch-schedule", - "solana-fee-structure", - "solana-hash", - "solana-instruction", - "solana-last-restart-slot", - "solana-log-collector", - "solana-measure", - "solana-metrics", - "solana-program-entrypoint", - "solana-pubkey", - "solana-rent", - "solana-sbpf", - "solana-sdk-ids", - "solana-slot-hashes", - "solana-stable-layout", - "solana-svm-callback", - "solana-svm-feature-set", - "solana-system-interface", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", - "solana-transaction-context", - "solana-type-overrides", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-pubkey" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" -dependencies = [ - "borsh 0.10.4", - "borsh 1.6.0", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "five8", - "five8_const", - "getrandom 0.2.17", - "js-sys", - "num-traits", - "rand 0.8.5", - "serde", - "serde_derive", - "solana-atomic-u64", - "solana-decode-error", - "solana-define-syscall", - "solana-sanitize", - "solana-sha256-hasher", - "wasm-bindgen", -] - -[[package]] -name = "solana-quic-definitions" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf0d4d5b049eb1d0c35f7b18f305a27c8986fc5c0c9b383e97adaa35334379e" -dependencies = [ - "solana-keypair", -] - -[[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-rent-collector" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "127e6dfa51e8c8ae3aa646d8b2672bc4ac901972a338a9e1cd249e030564fb9d" -dependencies = [ - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-epoch-schedule", - "solana-genesis-config", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", -] - -[[package]] -name = "solana-rent-debits" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" -dependencies = [ - "solana-pubkey", - "solana-reward-info", -] - -[[package]] -name = "solana-reserved-account-keys" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4b22ea19ca2a3f28af7cd047c914abf833486bf7a7c4a10fc652fff09b385b1" -dependencies = [ - "lazy_static", - "solana-feature-set", - "solana-pubkey", - "solana-sdk-ids", -] - -[[package]] -name = "solana-reward-info" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-rpc-client" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d3161ac0918178e674c1f7f1bfac40de3e7ed0383bd65747d63113c156eaeb" -dependencies = [ - "async-trait", - "base64 0.22.1", - "bincode", - "bs58", - "futures", - "indicatif", - "log", - "reqwest 0.12.28", - "reqwest-middleware", - "semver", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-account-decoder-client-types", - "solana-clock", - "solana-commitment-config", - "solana-epoch-info", - "solana-epoch-schedule", - "solana-feature-gate-interface", - "solana-hash", - "solana-instruction", - "solana-message", - "solana-pubkey", - "solana-rpc-client-api", - "solana-signature", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status-client-types", - "solana-version", - "solana-vote-interface", - "tokio", -] - -[[package]] -name = "solana-rpc-client-api" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dbc138685c79d88a766a8fd825057a74ea7a21e1dd7f8de275ada899540fff7" -dependencies = [ - "anyhow", - "jsonrpc-core", - "reqwest 0.12.28", - "reqwest-middleware", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder-client-types", - "solana-clock", - "solana-rpc-client-types", - "solana-signer", - "solana-transaction-error", - "solana-transaction-status-client-types", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-rpc-client-types" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea428a81729255d895ea47fba9b30fd4dacbfe571a080448121bd0592751676" -dependencies = [ - "base64 0.22.1", - "bs58", - "semver", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-account-decoder-client-types", - "solana-clock", - "solana-commitment-config", - "solana-fee-calculator", - "solana-inflation", - "solana-pubkey", - "solana-transaction-error", - "solana-transaction-status-client-types", - "solana-version", - "spl-generic-token", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-sanitize" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" - -[[package]] -name = "solana-sbpf" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "474a2d95dc819898ded08d24f29642d02189d3e1497bbb442a92a3997b7eb55f" -dependencies = [ - "byteorder", - "combine", - "hash32", - "libc", - "log", - "rand 0.8.5", - "rustc-demangle", - "thiserror 2.0.18", - "winapi", -] - -[[package]] -name = "solana-sdk" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc0e4a7635b902791c44b6581bfb82f3ada32c5bc0929a64f39fe4bb384c86a" -dependencies = [ - "bincode", - "bs58", - "getrandom 0.1.16", - "js-sys", - "serde", - "serde_json", - "solana-account", - "solana-bn254", - "solana-client-traits", - "solana-cluster-type", - "solana-commitment-config", - "solana-compute-budget-interface", - "solana-decode-error", - "solana-derivation-path", - "solana-ed25519-program", - "solana-epoch-info", - "solana-epoch-rewards-hasher", - "solana-feature-set", - "solana-fee-structure", - "solana-genesis-config", - "solana-hard-forks", - "solana-inflation", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-native-token 2.3.0", - "solana-nonce-account", - "solana-offchain-message", - "solana-packet", - "solana-poh-config", - "solana-precompile-error", - "solana-precompiles", - "solana-presigner", - "solana-program", - "solana-program-memory", - "solana-pubkey", - "solana-quic-definitions", - "solana-rent-collector", - "solana-rent-debits", - "solana-reserved-account-keys", - "solana-reward-info", - "solana-sanitize", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-secp256k1-program", - "solana-secp256k1-recover", - "solana-secp256r1-program", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-serde", - "solana-serde-varint", - "solana-short-vec", - "solana-shred-version", - "solana-signature", - "solana-signer", - "solana-system-transaction", - "solana-time-utils", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "solana-validator-exit", - "thiserror 2.0.18", - "wasm-bindgen", -] - -[[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.114", -] - -[[package]] -name = "solana-secp256k1-program" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f19833e4bc21558fe9ec61f239553abe7d05224347b57d65c2218aeeb82d6149" -dependencies = [ - "bincode", - "digest 0.10.7", - "libsecp256k1", - "serde", - "serde_derive", - "sha3", - "solana-feature-set", - "solana-instruction", - "solana-precompile-error", - "solana-sdk-ids", - "solana-signature", -] - -[[package]] -name = "solana-secp256k1-recover" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" -dependencies = [ - "borsh 1.6.0", - "libsecp256k1", - "solana-define-syscall", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-secp256r1-program" -version = "2.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce0ae46da3071a900f02d367d99b2f3058fe2e90c5062ac50c4f20cfedad8f0f" -dependencies = [ - "bytemuck", - "openssl", - "solana-feature-set", - "solana-instruction", - "solana-precompile-error", - "solana-sdk-ids", -] - -[[package]] -name = "solana-security-txt" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "156bb61a96c605fa124e052d630dba2f6fb57e08c7d15b757e1e958b3ed7b3fe" -dependencies = [ - "hashbrown 0.15.2", -] - -[[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 0.12.1", - "pbkdf2", - "sha2 0.10.9", -] - -[[package]] -name = "solana-serde" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" -dependencies = [ - "serde", -] - -[[package]] -name = "solana-serde-varint" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" -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.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" -dependencies = [ - "sha2 0.10.9", - "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-shred-version" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" -dependencies = [ - "solana-hard-forks", - "solana-hash", - "solana-sha256-hasher", -] - -[[package]] -name = "solana-signature" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" -dependencies = [ - "ed25519-dalek", - "five8", - "rand 0.8.5", - "serde", - "serde-big-array", - "serde_derive", - "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.6.0", - "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-stake-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500e9b9d11573f12de91e94f9c4459882cd5ffc692776af49b610d6fcc0b167f" -dependencies = [ - "agave-feature-set", - "bincode", - "log", - "solana-account", - "solana-bincode", - "solana-clock", - "solana-config-program-client", - "solana-genesis-config", - "solana-instruction", - "solana-log-collector", - "solana-native-token 2.3.0", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-stake-interface", - "solana-sysvar", - "solana-transaction-context", - "solana-type-overrides", - "solana-vote-interface", -] - -[[package]] -name = "solana-svm-callback" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cef9f7d5cfb5d375081a6c8ad712a6f0e055a15890081f845acf55d8254a7a2" -dependencies = [ - "solana-account", - "solana-precompile-error", - "solana-pubkey", -] - -[[package]] -name = "solana-svm-feature-set" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f24b836eb4d74ec255217bdbe0f24f64a07adeac31aca61f334f91cd4a3b1d5" - -[[package]] -name = "solana-svm-transaction" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab717b9539375ebb088872c6c87d1d8832d19f30f154ecc530154d23f60a6f0c" -dependencies = [ - "solana-hash", - "solana-message", - "solana-pubkey", - "solana-sdk-ids", - "solana-signature", - "solana-transaction", -] - -[[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-system-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ca36cef39aea7761be58d4108a56a2e27042fb1e913355fdb142a05fc7eab7" -dependencies = [ - "bincode", - "log", - "serde", - "serde_derive", - "solana-account", - "solana-bincode", - "solana-fee-calculator", - "solana-instruction", - "solana-log-collector", - "solana-nonce", - "solana-nonce-account", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-sdk-ids", - "solana-system-interface", - "solana-sysvar", - "solana-transaction-context", - "solana-type-overrides", -] - -[[package]] -name = "solana-system-transaction" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" -dependencies = [ - "solana-hash", - "solana-keypair", - "solana-message", - "solana-pubkey", - "solana-signer", - "solana-system-interface", - "solana-transaction", -] - -[[package]] -name = "solana-sysvar" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db" -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-time-utils" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" - -[[package]] -name = "solana-timings" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c49b842dfc53c1bf9007eaa6730296dea93b4fce73f457ce1080af43375c0d6" -dependencies = [ - "eager", - "enum-iterator", - "solana-pubkey", -] - -[[package]] -name = "solana-transaction" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80657d6088f721148f5d889c828ca60c7daeedac9a8679f9ec215e0c42bcbf41" -dependencies = [ - "bincode", - "serde", - "serde_derive", - "solana-bincode", - "solana-feature-set", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-precompiles", - "solana-pubkey", - "solana-sanitize", - "solana-sdk-ids", - "solana-short-vec", - "solana-signature", - "solana-signer", - "solana-system-interface", - "solana-transaction-error", - "wasm-bindgen", -] - -[[package]] -name = "solana-transaction-context" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a312304361987a85b2ef2293920558e6612876a639dd1309daf6d0d59ef2fe" -dependencies = [ - "bincode", - "serde", - "serde_derive", - "solana-account", - "solana-instruction", - "solana-instructions-sysvar", - "solana-pubkey", - "solana-rent", - "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 = [ - "serde", - "serde_derive", - "solana-instruction", - "solana-sanitize", -] - -[[package]] -name = "solana-transaction-status" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135f92f4192cc68900c665becf97fc0a6500ae5a67ff347bf2cbc20ecfefa821" -dependencies = [ - "Inflector", - "agave-reserved-account-keys", - "base64 0.22.1", - "bincode", - "borsh 1.6.0", - "bs58", - "log", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder", - "solana-address-lookup-table-interface", - "solana-clock", - "solana-hash", - "solana-instruction", - "solana-loader-v2-interface", - "solana-loader-v3-interface", - "solana-message", - "solana-program-option", - "solana-pubkey", - "solana-reward-info", - "solana-sdk-ids", - "solana-signature", - "solana-stake-interface", - "solana-system-interface", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status-client-types", - "solana-vote-interface", - "spl-associated-token-account", - "spl-memo", - "spl-token 8.0.0", - "spl-token-2022 8.0.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-transaction-status-client-types" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f1d7c2387c35850848212244d2b225847666cb52d3bd59a5c409d2c300303d" -dependencies = [ - "base64 0.22.1", - "bincode", - "bs58", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder-client-types", - "solana-commitment-config", - "solana-message", - "solana-reward-info", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-type-overrides" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d80c44761eb398a157d809a04840865c347e1831ae3859b6100c0ee457bc1a" -dependencies = [ - "rand 0.8.5", -] - -[[package]] -name = "solana-validator-exit" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" - -[[package]] -name = "solana-version" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3324d46c7f7b7f5d34bf7dc71a2883bdc072c7b28ca81d0b2167ecec4cf8da9f" -dependencies = [ - "agave-feature-set", - "rand 0.8.5", - "semver", - "serde", - "serde_derive", - "solana-sanitize", - "solana-serde-varint", -] - -[[package]] -name = "solana-vote-interface" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3" -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-vote-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "908d0e72c8b83e48762eb3e8c9114497cf4b1d66e506e360c46aba9308e71299" -dependencies = [ - "agave-feature-set", - "bincode", - "log", - "num-derive", - "num-traits", - "serde", - "serde_derive", - "solana-account", - "solana-bincode", - "solana-clock", - "solana-epoch-schedule", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-metrics", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-signer", - "solana-slot-hashes", - "solana-transaction", - "solana-transaction-context", - "solana-vote-interface", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-zk-elgamal-proof-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70cea14481d8efede6b115a2581f27bc7c6fdfba0752c20398456c3ac1245fc4" -dependencies = [ - "agave-feature-set", - "bytemuck", - "num-derive", - "num-traits", - "solana-instruction", - "solana-log-collector", - "solana-program-runtime", - "solana-sdk-ids", - "solana-zk-sdk", -] - -[[package]] -name = "solana-zk-sdk" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b9fc6ec37d16d0dccff708ed1dd6ea9ba61796700c3bb7c3b401973f10f63b" -dependencies = [ - "aes-gcm-siv", - "base64 0.22.1", - "bincode", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "itertools 0.12.1", - "js-sys", - "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.18", - "wasm-bindgen", - "zeroize", -] - -[[package]] -name = "solana-zk-token-proof-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579752ad6ea2a671995f13c763bf28288c3c895cb857a518cc4ebab93c9a8dde" -dependencies = [ - "agave-feature-set", - "bytemuck", - "num-derive", - "num-traits", - "solana-instruction", - "solana-log-collector", - "solana-program-runtime", - "solana-sdk-ids", - "solana-zk-token-sdk", -] - -[[package]] -name = "solana-zk-token-sdk" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5055e5df94abd5badf4f947681c893375bdb6f8f543c05d2a7ab9647a6a9d205" -dependencies = [ - "aes-gcm-siv", - "base64 0.22.1", - "bincode", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "itertools 0.12.1", - "merlin", - "num-derive", - "num-traits", - "rand 0.8.5", - "serde", - "serde_derive", - "serde_json", - "sha3", - "solana-curve25519", - "solana-derivation-path", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-signature", - "solana-signer", - "subtle", - "thiserror 2.0.18", - "zeroize", -] - -[[package]] -name = "spl-associated-token-account" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae179d4a26b3c7a20c839898e6aed84cb4477adf108a366c95532f058aea041b" -dependencies = [ - "borsh 1.6.0", - "num-derive", - "num-traits", - "solana-program", - "spl-associated-token-account-client", - "spl-token 8.0.0", - "spl-token-2022 8.0.1", - "thiserror 2.0.18", -] - -[[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.114", -] - -[[package]] -name = "spl-discriminator-syn" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.114", - "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 0.2.1", -] - -[[package]] -name = "spl-elgamal-registry" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65edfeed09cd4231e595616aa96022214f9c9d2be02dea62c2b30d5695a6833a" -dependencies = [ - "bytemuck", - "solana-account-info", - "solana-cpi", - "solana-instruction", - "solana-msg", - "solana-program-entrypoint", - "solana-program-error", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-system-interface", - "solana-sysvar", - "solana-zk-sdk", - "spl-pod", - "spl-token-confidential-transfer-proof-extraction 0.3.0", -] - -[[package]] -name = "spl-generic-token" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "741a62a566d97c58d33f9ed32337ceedd4e35109a686e31b1866c5dfa56abddc" -dependencies = [ - "bytemuck", - "solana-pubkey", -] - -[[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.6.0", - "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.18", -] - -[[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 0.4.1", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-program-error" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" -dependencies = [ - "num-derive", - "num-traits", - "solana-decode-error", - "solana-msg", - "solana-program-error", - "spl-program-error-derive 0.5.0", - "thiserror 2.0.18", -] - -[[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.9", - "syn 2.0.114", -] - -[[package]] -name = "spl-program-error-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.114", -] - -[[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 0.6.0", - "spl-type-length-value 0.7.0", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" -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 0.7.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[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" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-cpi", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sysvar", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-2022" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9048b26b0df0290f929ff91317c83db28b3ef99af2b3493dd35baa146774924c" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-program", - "solana-security-txt", - "solana-zk-sdk", - "spl-elgamal-registry 0.1.1", - "spl-memo", - "spl-pod", - "spl-token 7.0.0", - "spl-token-confidential-transfer-ciphertext-arithmetic 0.2.1", - "spl-token-confidential-transfer-proof-extraction 0.2.1", - "spl-token-confidential-transfer-proof-generation 0.3.0", - "spl-token-group-interface 0.5.0", - "spl-token-metadata-interface 0.6.0", - "spl-transfer-hook-interface 0.9.0", - "spl-type-length-value 0.7.0", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-2022" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f0dfbb079eebaee55e793e92ca5f433744f4b71ee04880bfd6beefba5973e5" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-clock", - "solana-cpi", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-native-token 2.3.0", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-security-txt", - "solana-system-interface", - "solana-sysvar", - "solana-zk-sdk", - "spl-elgamal-registry 0.2.0", - "spl-memo", - "spl-pod", - "spl-token 8.0.0", - "spl-token-confidential-transfer-ciphertext-arithmetic 0.3.1", - "spl-token-confidential-transfer-proof-extraction 0.3.0", - "spl-token-confidential-transfer-proof-generation 0.4.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "spl-transfer-hook-interface 0.10.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-2022-interface" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62d7ae2ee6b856f8ddcbdc3b3a9f4d2141582bbe150f93e5298ee97e0251fa04" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", - "spl-token-confidential-transfer-proof-extraction 0.4.1", - "spl-token-confidential-transfer-proof-generation 0.4.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[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-ciphertext-arithmetic" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cddd52bfc0f1c677b41493dafa3f2dbbb4b47cf0990f08905429e19dc8289b35" -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.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-extraction" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe2629860ff04c17bafa9ba4bed8850a404ecac81074113e1f840dbd0ebb7bd6" -dependencies = [ - "bytemuck", - "solana-account-info", - "solana-curve25519", - "solana-instruction", - "solana-instructions-sysvar", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-extraction" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512c85bdbbb4cbcc2038849a9e164c958b16541f252b53ea1a3933191c0a4a1a" -dependencies = [ - "bytemuck", - "solana-account-info", - "solana-curve25519", - "solana-instruction", - "solana-instructions-sysvar", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-generation" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" -dependencies = [ - "curve25519-dalek 4.1.3", - "solana-zk-sdk", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-generation" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" -dependencies = [ - "curve25519-dalek 4.1.3", - "solana-zk-sdk", - "thiserror 2.0.18", -] - -[[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-group-interface" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" -dependencies = [ - "bytemuck", - "num-derive", - "num-traits", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-discriminator", - "spl-pod", - "thiserror 2.0.18", -] - -[[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.6.0", - "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 0.7.0", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-token-metadata-interface" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" -dependencies = [ - "borsh 1.6.0", - "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 0.8.0", - "thiserror 2.0.18", -] - -[[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 0.6.0", - "spl-tlv-account-resolution 0.9.0", - "spl-type-length-value 0.7.0", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-transfer-hook-interface" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" -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 0.7.0", - "spl-tlv-account-resolution 0.10.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[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 = "spl-type-length-value" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" -dependencies = [ - "bytemuck", - "num-derive", - "num-traits", - "solana-account-info", - "solana-decode-error", - "solana-msg", - "solana-program-error", - "spl-discriminator", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[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.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys 0.5.0", -] - -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags 2.10.0", - "core-foundation", - "system-configuration-sys 0.6.0", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tabled" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e39a2ee1fbcd360805a771e1b300f78cc88fec7b8d3e2f71cd37bbf23e725c7d" -dependencies = [ - "papergrid", - "tabled_derive", - "testing_table", -] - -[[package]] -name = "tabled_derive" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea5d1b13ca6cff1f9231ffd62f15eefd72543dab5e468735f1a456728a02846" -dependencies = [ - "heck 0.5.0", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tarpc" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" -dependencies = [ - "anyhow", - "fnv", - "futures", - "humantime", - "opentelemetry", - "pin-project", - "rand 0.8.5", - "serde", - "static_assertions", - "tarpc-plugins", - "thiserror 1.0.69", - "tokio", - "tokio-serde", - "tokio-util 0.6.10", - "tracing", - "tracing-opentelemetry", -] - -[[package]] -name = "tarpc-plugins" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tempfile" -version = "3.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" -dependencies = [ - "fastrand", - "getrandom 0.3.4", - "once_cell", - "rustix", - "windows-sys 0.61.2", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "testing_table" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f8daae29995a24f65619e19d8d31dea5b389f3d853d8bf297bbf607cd0014cc" -dependencies = [ - "unicode-width", -] - -[[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.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl 2.0.18", -] - -[[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.114", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "thread_local" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "time" -version = "0.3.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde_core", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" - -[[package]] -name = "time-macros" -version = "0.2.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinystr" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" -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 = "tokio" -version = "1.49.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" -dependencies = [ - "bytes", - "libc", - "mio", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2 0.6.2", - "tokio-macros", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-macros" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" -dependencies = [ - "rustls 0.21.12", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" -dependencies = [ - "rustls 0.23.36", - "tokio", -] - -[[package]] -name = "tokio-serde" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" -dependencies = [ - "bincode", - "bytes", - "educe 0.4.23", - "futures-core", - "futures-sink", - "pin-project", - "serde", - "serde_json", -] - -[[package]] -name = "tokio-util" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "slab", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[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.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_edit 0.22.27", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap 2.13.0", - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_write", - "winnow", -] - -[[package]] -name = "toml_edit" -version = "0.23.10+spec-1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" -dependencies = [ - "indexmap 2.13.0", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml_parser" -version = "1.0.6+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" -dependencies = [ - "winnow", -] - -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper 1.0.2", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-http" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" -dependencies = [ - "async-compression", - "bitflags 2.10.0", - "bytes", - "futures-core", - "futures-util", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "iri-string", - "pin-project-lite", - "tokio", - "tokio-util 0.7.18", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-opentelemetry" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" -dependencies = [ - "once_cell", - "opentelemetry", - "tracing", - "tracing-core", - "tracing-subscriber", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" -dependencies = [ - "sharded-slab", - "thread_local", - "tracing-core", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typenum" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" - -[[package]] -name = "unicase" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" - -[[package]] -name = "unicode-ident" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - -[[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 = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -dependencies = [ - "void", -] - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[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 = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "uuid" -version = "1.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" -dependencies = [ - "getrandom 0.3.4", - "js-sys", - "serde_core", - "wasm-bindgen", -] - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[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.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.2+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" -dependencies = [ - "cfg-if", - "futures-util", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 2.0.114", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "web-sys" -version = "0.3.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "0.25.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" - -[[package]] -name = "webpki-roots" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-registry" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" -dependencies = [ - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[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_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[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_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - -[[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_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[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_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[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_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - -[[package]] -name = "winnow" -version = "0.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" - -[[package]] -name = "writeable" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "yoke" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zerotrie" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zmij" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439" - -[[package]] -name = "zstd" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "7.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" -dependencies = [ - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.16+zstd.1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/program-examples/anchor/anchor-sdk/Cargo.toml b/program-examples/anchor/anchor-sdk/Cargo.toml deleted file mode 100644 index efc32db..0000000 --- a/program-examples/anchor/anchor-sdk/Cargo.toml +++ /dev/null @@ -1,42 +0,0 @@ -[workspace] -members = [ - "approve", - "burn", - "close", - "create-ata", - "create-mint", - "create-token-account", - "freeze", - "mint-to", - "mint-to-checked", - "revoke", - "thaw", - "transfer-interface", - "transfer-checked", -] -resolver = "2" - -[profile.release] -lto = "fat" -codegen-units = 1 -panic = "abort" -overflow-checks = true - -[profile.release.build-override] -opt-level = 3 -incremental = false -codegen-units = 1 - -[workspace.dependencies] -blake3 = { version = "=1.8.2", default-features = false } -anchor-lang = "0.31.1" -borsh = "0.10.4" -tokio = "1.43.0" -solana-sdk = "2.2" -solana-program = "2.2" -light-sdk = { version = "0.19.0", features = ["anchor", "idl-build", "v2", "anchor-discriminator", "cpi-context"] } -light-token = { version = "0.4.0", features = ["anchor"] } -light-token-types = { version = "0.4.0", features = ["anchor"] } -light-token-interface = "0.3.0" -light-program-test = "0.19.0" -light-client = { version = "0.19.0", features = ["v2", "anchor"] } diff --git a/program-examples/anchor/anchor-sdk/README.md b/program-examples/anchor/anchor-sdk/README.md deleted file mode 100644 index 92262ef..0000000 --- a/program-examples/anchor/anchor-sdk/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Light Token Anchor Programs (SDK) - -- **[approve](approve/src/lib.rs)** - Approve delegate -- **[burn](burn/src/lib.rs)** - Burn tokens -- **[close](close/src/lib.rs)** - Close token account -- **[create-ata](create-ata/src/lib.rs)** - Create associated light-token account -- **[create-mint](create-mint/src/lib.rs)** - Create light-token mint -- **[create-token-account](create-token-account/src/lib.rs)** - Create light-token account -- **[freeze](freeze/src/lib.rs)** - Freeze token account -- **[mint-to](mint-to/src/lib.rs)** - Mint tokens -- **[revoke](revoke/src/lib.rs)** - Revoke delegate -- **[thaw](thaw/src/lib.rs)** - Thaw token account -- **[transfer-checked](transfer-checked/src/lib.rs)** - Transfer with mint validation -- **[transfer-interface](transfer-interface/src/lib.rs)** - Transfer between light-token, T22, and SPL accounts - -## Build - -```bash -anchor build -``` - -## Test - -```bash -cargo test-sbf -``` - -## Documentation - -Learn more [about Light-Token here](https://www.zkcompression.com/light-token/welcome). diff --git a/program-examples/anchor/anchor-sdk/approve/Cargo.toml b/program-examples/anchor/anchor-sdk/approve/Cargo.toml deleted file mode 100644 index 08c1e58..0000000 --- a/program-examples/anchor/anchor-sdk/approve/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-approve" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_approve" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-sdk/approve/src/lib.rs b/program-examples/anchor/anchor-sdk/approve/src/lib.rs deleted file mode 100644 index 50caad1..0000000 --- a/program-examples/anchor/anchor-sdk/approve/src/lib.rs +++ /dev/null @@ -1,36 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::ApproveCpi; - -declare_id!("37XmzKqSG2VD1ZBvzyfbt1HN1mT1bqVAmfzX2ziB3KT1"); - -#[program] -pub mod light_token_anchor_approve { - use super::*; - - pub fn approve(ctx: Context, amount: u64) -> Result<()> { - ApproveCpi { - token_account: ctx.accounts.token_account.to_account_info(), - delegate: ctx.accounts.delegate.to_account_info(), - owner: ctx.accounts.owner.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - amount, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct ApproveAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub token_account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub delegate: AccountInfo<'info>, - pub owner: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/anchor-sdk/approve/tests/test.rs b/program-examples/anchor/anchor-sdk/approve/tests/test.rs deleted file mode 100644 index 00d26ec..0000000 --- a/program-examples/anchor/anchor-sdk/approve/tests/test.rs +++ /dev/null @@ -1,122 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_approve::{instruction::Approve, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_approve() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_approve", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens first - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to approve delegate - let delegate = Keypair::new(); - let approve_amount = 500_000u64; - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(delegate.pubkey(), false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Approve { amount: approve_amount }.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/anchor-sdk/burn/Cargo.toml b/program-examples/anchor/anchor-sdk/burn/Cargo.toml deleted file mode 100644 index 9315f14..0000000 --- a/program-examples/anchor/anchor-sdk/burn/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-burn" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_burn" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-sdk/burn/src/lib.rs b/program-examples/anchor/anchor-sdk/burn/src/lib.rs deleted file mode 100644 index 0c1a1c3..0000000 --- a/program-examples/anchor/anchor-sdk/burn/src/lib.rs +++ /dev/null @@ -1,39 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::BurnCpi; - -declare_id!("2TXVn8AqjfyeJvmFBD3kHJmh6fWkC4HNB5T76BmLKV5c"); - -#[program] -pub mod light_token_anchor_burn { - use super::*; - - pub fn burn(ctx: Context, amount: u64) -> Result<()> { - BurnCpi { - source: ctx.accounts.source.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - amount, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct BurnAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub source: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub mint: AccountInfo<'info>, - pub authority: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/anchor-sdk/burn/tests/test.rs b/program-examples/anchor/anchor-sdk/burn/tests/test.rs deleted file mode 100644 index 04bb321..0000000 --- a/program-examples/anchor/anchor-sdk/burn/tests/test.rs +++ /dev/null @@ -1,120 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_burn::{instruction::Burn, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, - system_program, -}; - -#[tokio::test] -async fn test_burn() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_burn", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens first - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to burn tokens - let burn_amount = 250_000u64; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(ata, false), - AccountMeta::new(mint_pda, false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Burn { amount: burn_amount }.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/anchor-sdk/close/Cargo.toml b/program-examples/anchor/anchor-sdk/close/Cargo.toml deleted file mode 100644 index 7cc0c13..0000000 --- a/program-examples/anchor/anchor-sdk/close/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-close" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_close" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-sdk/close/src/lib.rs b/program-examples/anchor/anchor-sdk/close/src/lib.rs deleted file mode 100644 index 0003191..0000000 --- a/program-examples/anchor/anchor-sdk/close/src/lib.rs +++ /dev/null @@ -1,39 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::CloseAccountCpi; - -declare_id!("GXLCuNhnkRVp596eCdbNsZ9ua1ePbKbb344VKS7V3zQQ"); - -#[program] -pub mod light_token_anchor_close { - use super::*; - - pub fn close_account(ctx: Context) -> Result<()> { - CloseAccountCpi { - token_program: ctx.accounts.light_token_program.to_account_info(), - account: ctx.accounts.account.to_account_info(), - destination: ctx.accounts.destination.to_account_info(), - owner: ctx.accounts.owner.to_account_info(), - rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct CloseAccountAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub owner: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, -} diff --git a/program-examples/anchor/anchor-sdk/close/tests/test.rs b/program-examples/anchor/anchor-sdk/close/tests/test.rs deleted file mode 100644 index 7dd4fc2..0000000 --- a/program-examples/anchor/anchor-sdk/close/tests/test.rs +++ /dev/null @@ -1,104 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_close::{instruction::CloseAccount, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_close() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_close", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // Create ATA (empty, no tokens) - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to close account - let rent_sponsor = rent_sponsor_pda(); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(ata, false), - AccountMeta::new(payer.pubkey(), false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new(rent_sponsor, false), - ], - data: CloseAccount {}.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/anchor-sdk/create-ata/Cargo.toml b/program-examples/anchor/anchor-sdk/create-ata/Cargo.toml deleted file mode 100644 index 9df7fd1..0000000 --- a/program-examples/anchor/anchor-sdk/create-ata/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-create-ata" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_create_ata" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-sdk/create-ata/src/lib.rs b/program-examples/anchor/anchor-sdk/create-ata/src/lib.rs deleted file mode 100644 index 9f60bdd..0000000 --- a/program-examples/anchor/anchor-sdk/create-ata/src/lib.rs +++ /dev/null @@ -1,58 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::CreateAssociatedAccountCpi; - -declare_id!("35MukgdfpNUbPMhTmEk63ECV8vjgpNVFRH9nP8ovMN58"); - -#[program] -pub mod light_token_anchor_create_ata { - use super::*; - - pub fn create_ata(ctx: Context, bump: u8, idempotent: bool) -> Result<()> { - let cpi = CreateAssociatedAccountCpi { - payer: ctx.accounts.payer.to_account_info(), - owner: ctx.accounts.owner.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - ata: ctx.accounts.associated_token_account.to_account_info(), - bump, - }; - - if idempotent { - cpi.idempotent().rent_free( - ctx.accounts.compressible_config.to_account_info(), - ctx.accounts.rent_sponsor.to_account_info(), - ctx.accounts.system_program.to_account_info(), - ) - } else { - cpi.rent_free( - ctx.accounts.compressible_config.to_account_info(), - ctx.accounts.rent_sponsor.to_account_info(), - ctx.accounts.system_program.to_account_info(), - ) - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct CreateAtaAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub owner: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - #[account(mut)] - pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub associated_token_account: AccountInfo<'info>, - pub system_program: Program<'info, System>, - /// CHECK: Validated by light-token CPI - pub compressible_config: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, -} diff --git a/program-examples/anchor/anchor-sdk/create-ata/tests/test.rs b/program-examples/anchor/anchor-sdk/create-ata/tests/test.rs deleted file mode 100644 index 5d62acf..0000000 --- a/program-examples/anchor/anchor-sdk/create-ata/tests/test.rs +++ /dev/null @@ -1,106 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_create_ata::{instruction::CreateAta, ID}; -use light_token::instruction::{ - CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, derive_token_ata, - find_mint_address, rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_create_ata() { - let config = - ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_ata", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_mint_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // Derive ATA address and bump - let (ata, ata_bump) = derive_token_ata(&payer.pubkey(), &mint_pda); - - // Call the anchor program to create ATA - let compressible_config = config_pda(); - let rent_sponsor = rent_sponsor_pda(); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new_readonly(payer.pubkey(), false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(compressible_config, false), - AccountMeta::new(rent_sponsor, false), - ], - data: CreateAta { - bump: ata_bump, - idempotent: false, - } - .data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/anchor-sdk/create-mint/Cargo.toml b/program-examples/anchor/anchor-sdk/create-mint/Cargo.toml deleted file mode 100644 index 42d8ad7..0000000 --- a/program-examples/anchor/anchor-sdk/create-mint/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-create-mint" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_create_mint" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-sdk/create-mint/src/lib.rs b/program-examples/anchor/anchor-sdk/create-mint/src/lib.rs deleted file mode 100644 index 642f66e..0000000 --- a/program-examples/anchor/anchor-sdk/create-mint/src/lib.rs +++ /dev/null @@ -1,126 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::{CreateMintCpi, CreateMintParams, SystemAccountInfos}; -use light_token::{CompressedProof, ExtensionInstructionData, TokenMetadataInstructionData}; - -declare_id!("A1rJEoepgKYWZYZ8KVFpxgeeRGwBrU7xk8S39srjVkUX"); - -/// Token metadata parameters for creating a mint with metadata. -#[derive(AnchorSerialize, AnchorDeserialize, Clone)] -pub struct TokenMetadataParams { - pub name: Vec, - pub symbol: Vec, - pub uri: Vec, - pub update_authority: Option, -} - -#[program] -pub mod light_token_anchor_create_mint { - use super::*; - - pub fn create_mint( - ctx: Context, - decimals: u8, - address_merkle_tree_root_index: u16, - compression_address: [u8; 32], - proof: CompressedProof, - freeze_authority: Option, - bump: u8, - rent_payment: Option, - write_top_up: Option, - metadata: Option, - ) -> Result<()> { - let mint = light_token::instruction::find_mint_address(ctx.accounts.mint_seed.key).0; - - let extensions = metadata.map(|m| { - vec![ExtensionInstructionData::TokenMetadata( - TokenMetadataInstructionData { - update_authority: m - .update_authority - .map(|p| p.to_bytes().into()), - name: m.name, - symbol: m.symbol, - uri: m.uri, - additional_metadata: None, - }, - )] - }); - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index, - mint_authority: *ctx.accounts.authority.key, - proof, - compression_address, - mint, - bump, - freeze_authority, - extensions, - rent_payment: rent_payment.unwrap_or(16), // Default: ~24 hours - write_top_up: write_top_up.unwrap_or(766), // Default: ~3 hours per write - }; - - let system_accounts = SystemAccountInfos { - light_system_program: ctx.accounts.light_system_program.to_account_info(), - cpi_authority_pda: ctx.accounts.cpi_authority_pda.to_account_info(), - registered_program_pda: ctx.accounts.registered_program_pda.to_account_info(), - account_compression_authority: ctx.accounts.account_compression_authority.to_account_info(), - account_compression_program: ctx.accounts.account_compression_program.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - }; - - CreateMintCpi { - mint_seed: ctx.accounts.mint_seed.to_account_info(), - authority: ctx.accounts.authority.to_account_info(), - payer: ctx.accounts.payer.to_account_info(), - address_tree: ctx.accounts.address_tree.to_account_info(), - output_queue: ctx.accounts.output_queue.to_account_info(), - compressible_config: ctx.accounts.compressible_config.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), - system_accounts, - cpi_context: None, - cpi_context_account: None, - params, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct CreateMintAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - pub mint_seed: Signer<'info>, - /// CHECK: Validated by light-token CPI - pub authority: AccountInfo<'info>, - #[account(mut)] - pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub address_tree: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub output_queue: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub light_system_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub cpi_authority_pda: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub registered_program_pda: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub account_compression_authority: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub account_compression_program: AccountInfo<'info>, - pub system_program: Program<'info, System>, - /// CHECK: Validated by light-token CPI - use light_token::token::config_pda() - pub compressible_config: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - derived from find_mint_address(mint_seed) - #[account(mut)] - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - use light_token::token::rent_sponsor_pda() - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, -} diff --git a/program-examples/anchor/anchor-sdk/create-mint/tests/test.rs b/program-examples/anchor/anchor-sdk/create-mint/tests/test.rs deleted file mode 100644 index f6ba30d..0000000 --- a/program-examples/anchor/anchor-sdk/create-mint/tests/test.rs +++ /dev/null @@ -1,96 +0,0 @@ -use anchor_lang::InstructionData; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_create_mint::{instruction::CreateMint, ID}; -use light_token::instruction::{ - config_pda, derive_mint_compressed_address, find_mint_address, rent_sponsor_pda, - SystemAccounts, LIGHT_TOKEN_PROGRAM_ID, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_create_mint() { - let config = - ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_mint", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![light_client::indexer::AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let system_accounts = SystemAccounts::default(); - - // Call the anchor program to create mint - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(mint_seed.pubkey(), true), - AccountMeta::new_readonly(mint_authority, false), - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new(address_tree.tree, false), - AccountMeta::new(output_queue, false), - AccountMeta::new_readonly(system_accounts.light_system_program, false), - AccountMeta::new_readonly(system_accounts.cpi_authority_pda, false), - AccountMeta::new_readonly(system_accounts.registered_program_pda, false), - AccountMeta::new_readonly(system_accounts.account_compression_authority, false), - AccountMeta::new_readonly(system_accounts.account_compression_program, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(config_pda(), false), - AccountMeta::new(mint_pda, false), - AccountMeta::new(rent_sponsor_pda(), false), - ], - data: CreateMint { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - compression_address: compression_address.into(), - proof: rpc_result.proof.0.unwrap(), - freeze_authority: None, - bump, - rent_payment: Some(16), - write_top_up: Some(766), - metadata: None, - } - .data(), - }; - - let sig = rpc - .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let compressed_account = rpc - .get_compressed_account(compression_address, None) - .await - .unwrap() - .value; - - assert!(compressed_account.is_some(), "Compressed mint should exist"); - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/anchor-sdk/create-token-account/Cargo.toml b/program-examples/anchor/anchor-sdk/create-token-account/Cargo.toml deleted file mode 100644 index 974dfe4..0000000 --- a/program-examples/anchor/anchor-sdk/create-token-account/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-create-token-account" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_create_token_account" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-sdk/create-token-account/src/lib.rs b/program-examples/anchor/anchor-sdk/create-token-account/src/lib.rs deleted file mode 100644 index 6d2e004..0000000 --- a/program-examples/anchor/anchor-sdk/create-token-account/src/lib.rs +++ /dev/null @@ -1,47 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::CreateTokenAccountCpi; - -declare_id!("zXK1CnWj4WFfFHCArxxr4sh3Qqx2p3oui8ahqpjArgS"); - -#[program] -pub mod light_token_anchor_create_token_account { - use super::*; - - pub fn create_token_account(ctx: Context, owner: Pubkey) -> Result<()> { - CreateTokenAccountCpi { - payer: ctx.accounts.payer.to_account_info(), - account: ctx.accounts.account.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - owner, - } - .rent_free( - ctx.accounts.compressible_config.to_account_info(), - ctx.accounts.rent_sponsor.to_account_info(), - ctx.accounts.system_program.to_account_info(), - &ctx.accounts.light_token_program.key(), - ) - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct CreateTokenAccountAccounts<'info> { - #[account(mut)] - pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub compressible_config: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, - pub system_program: Program<'info, System>, - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, -} diff --git a/program-examples/anchor/anchor-sdk/create-token-account/tests/test.rs b/program-examples/anchor/anchor-sdk/create-token-account/tests/test.rs deleted file mode 100644 index 1fb1032..0000000 --- a/program-examples/anchor/anchor-sdk/create-token-account/tests/test.rs +++ /dev/null @@ -1,105 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_create_token_account::{instruction::CreateTokenAccount, ID}; -use light_token::instruction::{ - CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, - find_mint_address, rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - pubkey::Pubkey, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_create_token_account() { - let config = ProgramTestConfig::new_v2( - true, - Some(vec![("light_token_anchor_create_token_account", ID)]), - ); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - // Create a mint first - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_mint_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // Create a token account - let token_account = Keypair::new(); - let owner = payer.pubkey(); - let compressible_config = config_pda(); - let rent_sponsor = rent_sponsor_pda(); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new(token_account.pubkey(), true), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new_readonly(compressible_config, false), - AccountMeta::new(rent_sponsor, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - ], - data: CreateTokenAccount { owner }.data(), - }; - - let sig = rpc - .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &token_account]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/anchor-sdk/freeze/Cargo.toml b/program-examples/anchor/anchor-sdk/freeze/Cargo.toml deleted file mode 100644 index 8d0c730..0000000 --- a/program-examples/anchor/anchor-sdk/freeze/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-freeze" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_freeze" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-sdk/freeze/src/lib.rs b/program-examples/anchor/anchor-sdk/freeze/src/lib.rs deleted file mode 100644 index 59a4942..0000000 --- a/program-examples/anchor/anchor-sdk/freeze/src/lib.rs +++ /dev/null @@ -1,33 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::FreezeCpi; - -declare_id!("JBMzMJX4sqCQfNVbosP2oqP1KZ5ZDWiwYTrupk687qXZ"); - -#[program] -pub mod light_token_anchor_freeze { - use super::*; - - pub fn freeze(ctx: Context) -> Result<()> { - FreezeCpi { - token_account: ctx.accounts.token_account.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - freeze_authority: ctx.accounts.freeze_authority.to_account_info(), - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct FreezeAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub token_account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - pub freeze_authority: Signer<'info>, -} diff --git a/program-examples/anchor/anchor-sdk/freeze/tests/test.rs b/program-examples/anchor/anchor-sdk/freeze/tests/test.rs deleted file mode 100644 index 830f79f..0000000 --- a/program-examples/anchor/anchor-sdk/freeze/tests/test.rs +++ /dev/null @@ -1,119 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_freeze::{instruction::Freeze, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_freeze() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_freeze", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let freeze_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - // Create mint WITH freeze authority - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: Some(freeze_authority), - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: 1_000_000, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to freeze account - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new_readonly(freeze_authority, true), - ], - data: Freeze {}.data(), - }; - - let sig = rpc - .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/anchor-sdk/mint-to-checked/Cargo.toml b/program-examples/anchor/anchor-sdk/mint-to-checked/Cargo.toml deleted file mode 100644 index 0a5477c..0000000 --- a/program-examples/anchor/anchor-sdk/mint-to-checked/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-mint-to-checked" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_mint_to_checked" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-sdk/mint-to-checked/src/lib.rs b/program-examples/anchor/anchor-sdk/mint-to-checked/src/lib.rs deleted file mode 100644 index d5baaaa..0000000 --- a/program-examples/anchor/anchor-sdk/mint-to-checked/src/lib.rs +++ /dev/null @@ -1,44 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::MintToCheckedCpi; - -declare_id!("DGu3ofzac2Zndn95z2q9gCp8zHgW22YpMeEWj2up3QDb"); - -#[program] -pub mod light_token_anchor_mint_to_checked { - use super::*; - - pub fn mint_to_checked( - ctx: Context, - amount: u64, - decimals: u8, - ) -> Result<()> { - MintToCheckedCpi { - mint: ctx.accounts.mint.to_account_info(), - destination: ctx.accounts.destination.to_account_info(), - amount, - decimals, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct MintToCheckedAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub authority: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/anchor-sdk/mint-to-checked/tests/test.rs b/program-examples/anchor/anchor-sdk/mint-to-checked/tests/test.rs deleted file mode 100644 index 9ad4ade..0000000 --- a/program-examples/anchor/anchor-sdk/mint-to-checked/tests/test.rs +++ /dev/null @@ -1,103 +0,0 @@ -use anchor_lang::InstructionData; -use anchor_lang::system_program; -use light_client::indexer::{AddressWithTree, Indexer}; -use light_program_test::{LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_mint_to_checked::{instruction::MintToChecked, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, derive_mint_compressed_address, - derive_token_ata, find_mint_address, LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test(flavor = "multi_thread")] -async fn test_mint_to_checked() { - let config = ProgramTestConfig::new_v2(false, Some(vec![("light_token_anchor_mint_to_checked", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - let amount = 1_000_000u64; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(mint, false), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(mint_authority, true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: MintToChecked { amount, decimals }.data(), - }; - - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Verify the account exists and has data - let ata_data = rpc.get_account(ata).await.unwrap().unwrap(); - assert!(!ata_data.data.is_empty(), "ATA account should have data"); -} diff --git a/program-examples/anchor/anchor-sdk/mint-to/Cargo.toml b/program-examples/anchor/anchor-sdk/mint-to/Cargo.toml deleted file mode 100644 index 65d6646..0000000 --- a/program-examples/anchor/anchor-sdk/mint-to/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-mint-to" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_mint_to" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-sdk/mint-to/src/lib.rs b/program-examples/anchor/anchor-sdk/mint-to/src/lib.rs deleted file mode 100644 index 25a9015..0000000 --- a/program-examples/anchor/anchor-sdk/mint-to/src/lib.rs +++ /dev/null @@ -1,39 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::MintToCpi; - -declare_id!("8bXEVmHLtAVqDLJp1dYWAZ61WQmqQKoTQ8LpPbRoUDCp"); - -#[program] -pub mod light_token_anchor_mint_to { - use super::*; - - pub fn mint_to(ctx: Context, amount: u64) -> Result<()> { - MintToCpi { - mint: ctx.accounts.mint.to_account_info(), - destination: ctx.accounts.destination.to_account_info(), - amount, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct MintToAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub authority: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/anchor-sdk/mint-to/tests/test.rs b/program-examples/anchor/anchor-sdk/mint-to/tests/test.rs deleted file mode 100644 index c1993d8..0000000 --- a/program-examples/anchor/anchor-sdk/mint-to/tests/test.rs +++ /dev/null @@ -1,103 +0,0 @@ -use anchor_lang::InstructionData; -use anchor_lang::system_program; -use light_client::indexer::{AddressWithTree, Indexer}; -use light_program_test::{LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_mint_to::{instruction::MintTo, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, derive_mint_compressed_address, - derive_token_ata, find_mint_address, LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test(flavor = "multi_thread")] -async fn test_mint_to() { - let config = ProgramTestConfig::new_v2(false, Some(vec![("light_token_anchor_mint_to", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - let amount = 1_000_000u64; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(mint, false), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(mint_authority, true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: MintTo { amount }.data(), - }; - - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Verify the account exists and has data - let ata_data = rpc.get_account(ata).await.unwrap().unwrap(); - assert!(!ata_data.data.is_empty(), "ATA account should have data"); -} diff --git a/program-examples/anchor/anchor-sdk/revoke/Cargo.toml b/program-examples/anchor/anchor-sdk/revoke/Cargo.toml deleted file mode 100644 index 3ca6657..0000000 --- a/program-examples/anchor/anchor-sdk/revoke/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-revoke" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_revoke" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-sdk/revoke/src/lib.rs b/program-examples/anchor/anchor-sdk/revoke/src/lib.rs deleted file mode 100644 index 9ab13a7..0000000 --- a/program-examples/anchor/anchor-sdk/revoke/src/lib.rs +++ /dev/null @@ -1,32 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::RevokeCpi; - -declare_id!("G3ph4MK5qaSdxYnfxToETg31AHEMMqVhPuMRgBhk38tQ"); - -#[program] -pub mod light_token_anchor_revoke { - use super::*; - - pub fn revoke(ctx: Context) -> Result<()> { - RevokeCpi { - token_account: ctx.accounts.token_account.to_account_info(), - owner: ctx.accounts.owner.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct RevokeAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub token_account: AccountInfo<'info>, - pub owner: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/anchor-sdk/revoke/tests/test.rs b/program-examples/anchor/anchor-sdk/revoke/tests/test.rs deleted file mode 100644 index 221122f..0000000 --- a/program-examples/anchor/anchor-sdk/revoke/tests/test.rs +++ /dev/null @@ -1,133 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_revoke::{instruction::Revoke, ID}; -use light_token::instruction::{ - Approve, CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_revoke() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_revoke", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Approve delegate first using SDK - let delegate = Keypair::new(); - let approve_ix = Approve { - token_account: ata, - delegate: delegate.pubkey(), - owner: payer.pubkey(), - amount: 500_000, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[approve_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to revoke delegation - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Revoke {}.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/anchor-sdk/thaw/Cargo.toml b/program-examples/anchor/anchor-sdk/thaw/Cargo.toml deleted file mode 100644 index d114a52..0000000 --- a/program-examples/anchor/anchor-sdk/thaw/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-thaw" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_thaw" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-sdk/thaw/src/lib.rs b/program-examples/anchor/anchor-sdk/thaw/src/lib.rs deleted file mode 100644 index 93e9f6e..0000000 --- a/program-examples/anchor/anchor-sdk/thaw/src/lib.rs +++ /dev/null @@ -1,33 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::ThawCpi; - -declare_id!("7j94EF5hSkDLf7R26bjrd8Qc6s3oLAQpcKiF3re8JYw9"); - -#[program] -pub mod light_token_anchor_thaw { - use super::*; - - pub fn thaw(ctx: Context) -> Result<()> { - ThawCpi { - token_account: ctx.accounts.token_account.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - freeze_authority: ctx.accounts.freeze_authority.to_account_info(), - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct ThawAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub token_account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - pub freeze_authority: Signer<'info>, -} diff --git a/program-examples/anchor/anchor-sdk/thaw/tests/test.rs b/program-examples/anchor/anchor-sdk/thaw/tests/test.rs deleted file mode 100644 index ea9bf49..0000000 --- a/program-examples/anchor/anchor-sdk/thaw/tests/test.rs +++ /dev/null @@ -1,131 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_thaw::{instruction::Thaw, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, Freeze, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_thaw() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_thaw", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let freeze_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - // Create mint WITH freeze authority - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: Some(freeze_authority), - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: 1_000_000, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Freeze account first using SDK - let freeze_ix = Freeze { - token_account: ata, - mint: mint_pda, - freeze_authority, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[freeze_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to thaw account - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new_readonly(freeze_authority, true), - ], - data: Thaw {}.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/anchor-sdk/transfer-checked/Cargo.toml b/program-examples/anchor/anchor-sdk/transfer-checked/Cargo.toml deleted file mode 100644 index 6d91664..0000000 --- a/program-examples/anchor/anchor-sdk/transfer-checked/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-transfer-checked" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_transfer_checked" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-sdk/transfer-checked/src/lib.rs b/program-examples/anchor/anchor-sdk/transfer-checked/src/lib.rs deleted file mode 100644 index 0d82277..0000000 --- a/program-examples/anchor/anchor-sdk/transfer-checked/src/lib.rs +++ /dev/null @@ -1,47 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::TransferCheckedCpi; - -declare_id!("HXmfewpozFdxhM8BayL9v5541gwoGMXTrUoip5KySs2f"); - -#[program] -pub mod light_token_anchor_transfer_checked { - use super::*; - - pub fn transfer_checked( - ctx: Context, - amount: u64, - decimals: u8, - ) -> Result<()> { - TransferCheckedCpi { - source: ctx.accounts.source.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - destination: ctx.accounts.destination.to_account_info(), - amount, - decimals, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct TransferCheckedAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub source: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub authority: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/anchor-sdk/transfer-checked/tests/test.rs b/program-examples/anchor/anchor-sdk/transfer-checked/tests/test.rs deleted file mode 100644 index 893a291..0000000 --- a/program-examples/anchor/anchor-sdk/transfer-checked/tests/test.rs +++ /dev/null @@ -1,142 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_transfer_checked::{instruction::TransferChecked, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, - system_program, -}; - -#[tokio::test] -async fn test_transfer_checked() { - let config = ProgramTestConfig::new_v2( - true, - Some(vec![("light_token_anchor_transfer_checked", ID)]), - ); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // Create source ATA - let (source_ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_source_ata = - CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_source_ata], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens to source - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: source_ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Create destination ATA for recipient - let recipient = Keypair::new(); - let (dest_ata, _) = derive_token_ata(&recipient.pubkey(), &mint_pda); - let create_dest_ata = - CreateAssociatedTokenAccount::new(payer.pubkey(), recipient.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_dest_ata], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to transfer tokens (checked) - let transfer_amount = 100_000u64; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(source_ata, false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new(dest_ata, false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: TransferChecked { - amount: transfer_amount, - decimals, - } - .data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/anchor-sdk/transfer-interface/Cargo.toml b/program-examples/anchor/anchor-sdk/transfer-interface/Cargo.toml deleted file mode 100644 index 7944b7d..0000000 --- a/program-examples/anchor/anchor-sdk/transfer-interface/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "light-token-anchor-transfer-interface" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_transfer_interface" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -light-token-types = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/anchor-sdk/transfer-interface/src/lib.rs b/program-examples/anchor/anchor-sdk/transfer-interface/src/lib.rs deleted file mode 100644 index c3ffb88..0000000 --- a/program-examples/anchor/anchor-sdk/transfer-interface/src/lib.rs +++ /dev/null @@ -1,44 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::TransferInterfaceCpi; - -declare_id!("3rb6sG4jiYNLZC8jo8kLsFHpxr2Ci8e8Hh8UmeCMZmUV"); - -#[program] -pub mod light_token_anchor_transfer_interface { - use super::*; - - pub fn transfer(ctx: Context, amount: u64, decimals: u8) -> Result<()> { - TransferInterfaceCpi::new( - amount, - decimals, - ctx.accounts.source.to_account_info(), - ctx.accounts.destination.to_account_info(), - ctx.accounts.authority.to_account_info(), - ctx.accounts.payer.to_account_info(), - ctx.accounts.cpi_authority.to_account_info(), - ctx.accounts.system_program.to_account_info(), - ) - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct TransferAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub source: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub authority: Signer<'info>, - #[account(mut)] - pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - pub cpi_authority: AccountInfo<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/anchor-sdk/transfer-interface/tests/test.rs b/program-examples/anchor/anchor-sdk/transfer-interface/tests/test.rs deleted file mode 100644 index 4a4d0cb..0000000 --- a/program-examples/anchor/anchor-sdk/transfer-interface/tests/test.rs +++ /dev/null @@ -1,147 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_transfer_interface::{instruction::Transfer, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use light_token_types::CPI_AUTHORITY_PDA; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - pubkey::Pubkey, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_transfer() { - let config = ProgramTestConfig::new_v2( - true, - Some(vec![("light_token_anchor_transfer_interface", ID)]), - ); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // Create source ATA - let (source_ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_source_ata = - CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_source_ata], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens to source - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: source_ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Create destination ATA for recipient - let recipient = Keypair::new(); - let (dest_ata, _) = derive_token_ata(&recipient.pubkey(), &mint_pda); - let create_dest_ata = - CreateAssociatedTokenAccount::new(payer.pubkey(), recipient.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_dest_ata], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to transfer tokens - let transfer_amount = 100_000u64; - let cpi_authority_pda = Pubkey::new_from_array(CPI_AUTHORITY_PDA); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(source_ata, false), - AccountMeta::new(dest_ata, false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new_readonly(cpi_authority_pda, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Transfer { - amount: transfer_amount, - decimals, - } - .data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/macros/Anchor.toml b/program-examples/anchor/macros/Anchor.toml deleted file mode 100644 index 75a3388..0000000 --- a/program-examples/anchor/macros/Anchor.toml +++ /dev/null @@ -1,20 +0,0 @@ -[toolchain] - -[features] -resolution = true -skip-lint = false - -[programs.devnet] -light_token_anchor_create_ata = "8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8" -light_token_anchor_create_mint = "JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j" -light_token_anchor_create_token_account = "FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn" - -[registry] -url = "https://api.apr.dev" - -[provider] -cluster = "devnet" -wallet = "~/.config/solana/id.json" - -[scripts] -test = "cargo test-sbf" diff --git a/program-examples/anchor/macros/Cargo.lock b/program-examples/anchor/macros/Cargo.lock deleted file mode 100644 index 5f39639..0000000 --- a/program-examples/anchor/macros/Cargo.lock +++ /dev/null @@ -1,8864 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[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 = "agave-feature-set" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a2c365c0245cbb8959de725fc2b44c754b673fdf34c9a7f9d4a25c35a7bf1" -dependencies = [ - "ahash", - "solana-epoch-schedule", - "solana-hash", - "solana-pubkey", - "solana-sha256-hasher", - "solana-svm-feature-set", -] - -[[package]] -name = "agave-precompiles" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d60d73657792af7f2464e9181d13c3979e94bb09841d9ffa014eef4ef0492b77" -dependencies = [ - "agave-feature-set", - "bincode", - "digest 0.10.7", - "ed25519-dalek", - "libsecp256k1", - "openssl", - "sha3", - "solana-ed25519-program", - "solana-message", - "solana-precompile-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-secp256k1-program", - "solana-secp256r1-program", -] - -[[package]] -name = "agave-reserved-account-keys" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8289c8a8a2ef5aa10ce49a070f360f4e035ee3410b8d8f3580fb39d8cf042581" -dependencies = [ - "agave-feature-set", - "solana-pubkey", - "solana-sdk-ids", -] - -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "getrandom 0.3.4", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "aligned-sized" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a526ec4434d531d488af59fe866f36b310fe8906691c75dffa664450a3800a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "anchor-attribute-access-control" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f70fd141a4d18adf11253026b32504f885447048c7494faf5fa83b01af9c0cf" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-account" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715a261c57c7679581e06f07a74fa2af874ac30f86bd8ea07cca4a7e5388a064" -dependencies = [ - "anchor-syn", - "bs58", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-constant" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730d6df8ae120321c5c25e0779e61789e4b70dc8297102248902022f286102e4" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-error" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27e6e449cc3a37b2880b74dcafb8e5a17b954c0e58e376432d7adc646fb333ef" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-event" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7710e4c54adf485affcd9be9adec5ef8846d9c71d7f31e16ba86ff9fc1dd49f" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-program" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ecfd49b2aeadeb32f35262230db402abed76ce87e27562b34f61318b2ec83c" -dependencies = [ - "anchor-lang-idl", - "anchor-syn", - "anyhow", - "bs58", - "heck 0.3.3", - "proc-macro2", - "quote", - "serde_json", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-accounts" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be89d160793a88495af462a7010b3978e48e30a630c91de47ce2c1d3cb7a6149" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-serde" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abc6ee78acb7bfe0c2dd2abc677aaa4789c0281a0c0ef01dbf6fe85e0fd9e6e4" -dependencies = [ - "anchor-syn", - "borsh-derive-internal", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-space" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134a01c0703f6fd355a0e472c033f6f3e41fac1ef6e370b20c50f4c8d022cea7" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-lang" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6bab117055905e930f762c196e08f861f8dfe7241b92cee46677a3b15561a0a" -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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e8599d21995f68e296265aa5ab0c3cef582fd58afec014d01bd0bce18a4418" -dependencies = [ - "anchor-lang-idl-spec", - "anyhow", - "heck 0.3.3", - "regex", - "serde", - "serde_json", - "sha2 0.10.9", -] - -[[package]] -name = "anchor-lang-idl-spec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" -dependencies = [ - "anyhow", - "serde", -] - -[[package]] -name = "anchor-syn" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dc7a6d90cc643df0ed2744862cdf180587d1e5d28936538c18fc8908489ed67" -dependencies = [ - "anyhow", - "bs58", - "cargo_toml", - "heck 0.3.3", - "proc-macro2", - "quote", - "serde", - "serde_json", - "sha2 0.10.9", - "syn 1.0.109", - "thiserror 1.0.69", -] - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] -name = "anyhow" -version = "1.0.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" - -[[package]] -name = "ark-bn254" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" -dependencies = [ - "ark-ec 0.4.2", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bn254" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" -dependencies = [ - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-ec" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" -dependencies = [ - "ark-ff 0.4.2", - "ark-poly 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", - "itertools 0.10.5", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-poly 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe 0.6.0", - "fnv", - "hashbrown 0.15.2", - "itertools 0.13.0", - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "digest 0.10.7", - "itertools 0.10.5", - "num-bigint 0.4.6", - "num-traits", - "paste", - "rustc_version", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" -dependencies = [ - "ark-ff-asm 0.5.0", - "ark-ff-macros 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "educe 0.6.0", - "itertools 0.13.0", - "num-bigint 0.4.6", - "num-traits", - "paste", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" -dependencies = [ - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-poly" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" -dependencies = [ - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", -] - -[[package]] -name = "ark-poly" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe 0.6.0", - "fnv", - "hashbrown 0.15.2", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-serialize-derive 0.4.2", - "ark-std 0.4.0", - "digest 0.10.7", - "num-bigint 0.4.6", -] - -[[package]] -name = "ark-serialize" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" -dependencies = [ - "ark-serialize-derive 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "num-bigint 0.4.6", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "ark-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" -dependencies = [ - "num-traits", - "rand 0.8.5", - "rayon", -] - -[[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 = "ascii" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" - -[[package]] -name = "async-compression" -version = "0.4.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" -dependencies = [ - "compression-codecs", - "compression-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[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 = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" -dependencies = [ - "serde_core", -] - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "blake3" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", - "cpufeatures", - "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.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" -dependencies = [ - "borsh-derive 1.6.0", - "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.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" -dependencies = [ - "once_cell", - "proc-macro-crate 3.4.0", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[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 = "brotli" -version = "8.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[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.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" - -[[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 = "bytecount" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" - -[[package]] -name = "bytemuck" -version = "1.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" - -[[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.23", -] - -[[package]] -name = "cc" -version = "1.2.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583" -dependencies = [ - "find-msvc-tools", - "jobserver", - "libc", - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "cfg_eval" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "chrono" -version = "0.4.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-link", -] - -[[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 = "combine" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" -dependencies = [ - "ascii", - "byteorder", - "either", - "memchr", - "unreachable", -] - -[[package]] -name = "compression-codecs" -version = "0.4.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" -dependencies = [ - "brotli", - "compression-core", - "flate2", - "memchr", -] - -[[package]] -name = "compression-core" -version = "0.4.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" - -[[package]] -name = "console" -version = "0.15.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" -dependencies = [ - "encode_unicode", - "libc", - "once_cell", - "unicode-width", - "windows-sys 0.59.0", -] - -[[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.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", -] - -[[package]] -name = "crypto-mac" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -dependencies = [ - "generic-array", - "subtle", -] - -[[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 = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - -[[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.114", -] - -[[package]] -name = "darling" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.114", -] - -[[package]] -name = "darling_macro" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "deranged" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" -dependencies = [ - "powerfmt", - "serde_core", -] - -[[package]] -name = "derivation-path" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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 = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "eager" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" - -[[package]] -name = "ed25519" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" -dependencies = [ - "signature", -] - -[[package]] -name = "ed25519-dalek" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" -dependencies = [ - "curve25519-dalek 3.2.0", - "ed25519", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "zeroize", -] - -[[package]] -name = "ed25519-dalek-bip32" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" -dependencies = [ - "derivation-path", - "ed25519-dalek", - "hmac 0.12.1", - "sha2 0.10.9", -] - -[[package]] -name = "educe" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" -dependencies = [ - "enum-ordinalize 3.1.15", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "educe" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" -dependencies = [ - "enum-ordinalize 4.3.2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - -[[package]] -name = "encode_unicode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" - -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "enum-iterator" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" -dependencies = [ - "enum-iterator-derive", -] - -[[package]] -name = "enum-iterator-derive" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "enum-ordinalize" -version = "3.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "enum-ordinalize" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" -dependencies = [ - "enum-ordinalize-derive", -] - -[[package]] -name = "enum-ordinalize-derive" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "env_logger" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[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 = "find-msvc-tools" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" - -[[package]] -name = "five8" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" -dependencies = [ - "five8_core", -] - -[[package]] -name = "five8_const" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" -dependencies = [ - "five8_core", -] - -[[package]] -name = "five8_core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" - -[[package]] -name = "flate2" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[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 = "gethostname" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "r-efi", - "wasip2", - "wasm-bindgen", -] - -[[package]] -name = "groth16-solana" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6d1ffb18dbf5cfc60b11bd7da88474c672870247c1e5b498619bcb6ba3d8f5" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "num-bigint 0.4.6", - "solana-bn254", - "thiserror 1.0.69", -] - -[[package]] -name = "h2" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.13.0", - "slab", - "tokio", - "tokio-util 0.7.18", - "tracing", -] - -[[package]] -name = "h2" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http 1.4.0", - "indexmap 2.13.0", - "slab", - "tokio", - "tokio-util 0.7.18", - "tracing", -] - -[[package]] -name = "hash32" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[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" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hmac" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" -dependencies = [ - "crypto-mac", - "digest 0.9.0", -] - -[[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 = "hmac-drbg" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" -dependencies = [ - "digest 0.9.0", - "generic-array", - "hmac 0.8.1", -] - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http 1.4.0", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http 1.4.0", - "http-body 1.0.1", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "humantime" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" - -[[package]] -name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.5.10", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "h2 0.4.13", - "http 1.4.0", - "http-body 1.0.1", - "httparse", - "itoa", - "pin-project-lite", - "pin-utils", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" -dependencies = [ - "futures-util", - "http 0.2.12", - "hyper 0.14.32", - "rustls 0.21.12", - "tokio", - "tokio-rustls 0.24.1", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" -dependencies = [ - "http 1.4.0", - "hyper 1.8.1", - "hyper-util", - "rustls 0.23.36", - "rustls-pki-types", - "tokio", - "tokio-rustls 0.26.4", - "tower-service", - "webpki-roots 1.0.5", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper 0.14.32", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper 1.8.1", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http 1.4.0", - "http-body 1.0.1", - "hyper 1.8.1", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2 0.6.2", - "system-configuration 0.6.1", - "tokio", - "tower-service", - "tracing", - "windows-registry", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" - -[[package]] -name = "icu_properties" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" - -[[package]] -name = "icu_provider" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" -dependencies = [ - "equivalent", - "hashbrown 0.16.1", - "serde", - "serde_core", -] - -[[package]] -name = "indicatif" -version = "0.17.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" -dependencies = [ - "console", - "number_prefix", - "portable-atomic", - "unicode-width", - "web-time", -] - -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "generic-array", -] - -[[package]] -name = "ipnet" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" - -[[package]] -name = "iri-string" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" - -[[package]] -name = "jobserver" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" -dependencies = [ - "getrandom 0.3.4", - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "jsonrpc-core" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" -dependencies = [ - "futures", - "futures-executor", - "futures-util", - "log", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "kaigan" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ba15de5aeb137f0f65aa3bf82187647f1285abfe5b20c80c2c37f7007ad519a" -dependencies = [ - "borsh 0.10.4", - "serde", -] - -[[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.180" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" - -[[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", - "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "typenum", -] - -[[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 = "light-account-checks" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f20b8640212dd450e18d452a247e28d8ba6fdce3c713fd8b69f1e95874d1b7ab" -dependencies = [ - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sysvar", - "thiserror 2.0.18", -] - -[[package]] -name = "light-array-map" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bdd13b18028ac9d80d0a987551c0dad7fe81be8140e87cc9d568b80f3728203" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "light-batched-merkle-tree" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01e838c523b49371097f948cd5662bd9a89d9dca037fb61fd38001e99f485702" -dependencies = [ - "aligned-sized", - "borsh 0.10.4", - "light-account-checks", - "light-bloom-filter", - "light-compressed-account", - "light-hasher", - "light-macros", - "light-merkle-tree-metadata", - "light-verifier", - "light-zero-copy", - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sysvar", - "thiserror 2.0.18", - "zerocopy", -] - -[[package]] -name = "light-bloom-filter" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b8cf734ccf5fbc1f5fed8e5308b57ebde6774d9304c167bcb0de2854412d8" -dependencies = [ - "bitvec", - "num-bigint 0.4.6", - "solana-nostd-keccak", - "solana-program-error", - "thiserror 2.0.18", -] - -[[package]] -name = "light-bounded-vec" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58cfa375d028164719e3ffef93d2e5c27855cc8a5bb5bf257b868d17c12a3e66" -dependencies = [ - "bytemuck", - "memoffset", - "solana-program-error", - "thiserror 1.0.69", -] - -[[package]] -name = "light-client" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33203f596d48d28d1cb67dee5762b151e0073207a5e828c63ec68f9efb9a5ee8" -dependencies = [ - "anchor-lang", - "async-trait", - "base64 0.13.1", - "borsh 0.10.4", - "bs58", - "futures", - "lazy_static", - "light-compressed-account", - "light-compressible", - "light-concurrent-merkle-tree", - "light-event", - "light-hasher", - "light-indexed-merkle-tree", - "light-merkle-tree-metadata", - "light-prover-client", - "light-sdk", - "light-token", - "light-token-interface", - "litesvm", - "num-bigint 0.4.6", - "photon-api", - "rand 0.8.5", - "smallvec", - "solana-account", - "solana-account-decoder-client-types", - "solana-address-lookup-table-interface", - "solana-banks-client", - "solana-clock", - "solana-commitment-config", - "solana-compute-budget-interface", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-program-error", - "solana-pubkey", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-signature", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status-client-types", - "spl-pod", - "spl-token-2022-interface", - "thiserror 2.0.18", - "tokio", - "tracing", -] - -[[package]] -name = "light-compressed-account" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c3537bbad9df133ca97fc191b164bba93dba1de4da01a92d979ef63f8ce106" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-hasher", - "light-macros", - "light-poseidon 0.3.0", - "light-program-profiler", - "light-zero-copy", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "thiserror 2.0.18", - "tinyvec", - "zerocopy", -] - -[[package]] -name = "light-compressible" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00d1dc14271907009f4ca23ae99c49279f7d2acc5a83f0f8d7362834b37e2e16" -dependencies = [ - "aligned-sized", - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-account-checks", - "light-compressed-account", - "light-hasher", - "light-macros", - "light-program-profiler", - "light-zero-copy", - "pinocchio-pubkey", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-rent", - "solana-sysvar", - "thiserror 2.0.18", - "zerocopy", -] - -[[package]] -name = "light-concurrent-merkle-tree" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db96f47253a0907aaa46dac15cecb27b5510130e48da0b36690dcd2e99a6d558" -dependencies = [ - "borsh 0.10.4", - "light-bounded-vec", - "light-hasher", - "memoffset", - "solana-program-error", - "thiserror 2.0.18", -] - -[[package]] -name = "light-event" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4bae725ee1d4d944d442ac0bfdf2031b1b2379c04c7e39c475277aaaea08fb1" -dependencies = [ - "borsh 0.10.4", - "light-compressed-account", - "light-hasher", - "light-zero-copy", - "thiserror 2.0.18", -] - -[[package]] -name = "light-hasher" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c822662e6e109bac0e132a43fd52a4ef684811245a794e048cf9cda001e934c8" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "borsh 0.10.4", - "light-poseidon 0.3.0", - "num-bigint 0.4.6", - "sha2 0.10.9", - "sha3", - "solana-program-error", - "thiserror 2.0.18", - "tinyvec", -] - -[[package]] -name = "light-indexed-array" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f14f984030d86b6f07bd8f5ae04e2c40fcd0c3bdfcc7a291fff1ed59c9e6554" -dependencies = [ - "light-hasher", - "num-bigint 0.4.6", - "num-traits", - "thiserror 2.0.18", -] - -[[package]] -name = "light-indexed-merkle-tree" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0824755289075f28de2820fc7d4ec4e6b9e99d404e033c07338b91cce8c71fb8" -dependencies = [ - "light-bounded-vec", - "light-concurrent-merkle-tree", - "light-hasher", - "light-merkle-tree-reference", - "num-bigint 0.4.6", - "num-traits", - "solana-program-error", - "thiserror 2.0.18", -] - -[[package]] -name = "light-instruction-decoder" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f4bd98e842f21b754ec28020a56de37cb0b1089952ef24340d21c2d5afd5c5" -dependencies = [ - "borsh 0.10.4", - "bs58", - "light-compressed-account", - "light-instruction-decoder-derive", - "light-sdk-types", - "light-token-interface", - "serde", - "solana-instruction", - "solana-pubkey", - "solana-signature", - "tabled", -] - -[[package]] -name = "light-instruction-decoder-derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2035d04a0a1590da05634efcac149a2ac852565e28c9a55bd07a6620c0e90bff" -dependencies = [ - "bs58", - "darling", - "heck 0.5.0", - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.114", -] - -[[package]] -name = "light-macros" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "179ac51cadc1d0ca047b4d6265a7cc245ca3affc16a20a2749585aa6464d39c2" -dependencies = [ - "bs58", - "proc-macro2", - "quote", - "solana-pubkey", - "syn 2.0.114", -] - -[[package]] -name = "light-merkle-tree-metadata" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c2e63e8345dcfb80efac69136fdcc6c36a12354675aca6e3daf13ec40422d1" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-compressed-account", - "solana-msg", - "solana-program-error", - "solana-sysvar", - "thiserror 2.0.18", - "zerocopy", -] - -[[package]] -name = "light-merkle-tree-reference" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8d480f62ca32b38a6231bbc5310d693f91d6b5bdcc18bb13c2d9aab7a1c90e8" -dependencies = [ - "light-hasher", - "light-indexed-array", - "num-bigint 0.4.6", - "num-traits", - "thiserror 2.0.18", -] - -[[package]] -name = "light-poseidon" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" -dependencies = [ - "ark-bn254 0.4.0", - "ark-ff 0.4.2", - "num-bigint 0.4.6", - "thiserror 1.0.69", -] - -[[package]] -name = "light-poseidon" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3d87542063daaccbfecd78b60f988079b6ec4e089249658b9455075c78d42" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "num-bigint 0.4.6", - "thiserror 1.0.69", -] - -[[package]] -name = "light-profiler-macro" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a8be18fe4de58a6f754caa74a3fbc6d8a758a26f1f3c24d5b0f5b55df5f5408" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "light-program-profiler" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1d345871581aebd8825868a3f08410290aa1cdddcb189ca7f7e588f61d79fcf" -dependencies = [ - "light-profiler-macro", -] - -[[package]] -name = "light-program-test" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85916a9da34a44971e1a30badaf04cb75213fbfa9f61a139ea6ebd0f021bdde" -dependencies = [ - "anchor-lang", - "async-trait", - "base64 0.13.1", - "borsh 0.10.4", - "bs58", - "bytemuck", - "chrono", - "light-client", - "light-compressed-account", - "light-compressible", - "light-event", - "light-hasher", - "light-indexed-array", - "light-indexed-merkle-tree", - "light-instruction-decoder", - "light-merkle-tree-metadata", - "light-merkle-tree-reference", - "light-prover-client", - "light-sdk", - "light-sdk-types", - "light-token", - "light-token-interface", - "light-zero-copy", - "litesvm", - "log", - "num-bigint 0.4.6", - "num-traits", - "photon-api", - "rand 0.8.5", - "reqwest 0.12.28", - "serde", - "serde_json", - "solana-account", - "solana-banks-client", - "solana-compute-budget", - "solana-instruction", - "solana-pubkey", - "solana-rpc-client-api", - "solana-sdk", - "solana-transaction", - "solana-transaction-status", - "solana-transaction-status-client-types", - "spl-token-2022 7.0.0", - "tabled", - "tokio", -] - -[[package]] -name = "light-prover-client" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd2195f4573628a8aaca37504cde1b1903b8ed20e2706acbad875b7d41acbeab" -dependencies = [ - "ark-bn254 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "light-compressed-account", - "light-hasher", - "light-indexed-array", - "light-sparse-merkle-tree", - "num-bigint 0.4.6", - "num-traits", - "reqwest 0.11.27", - "serde", - "serde_json", - "solana-bn254", - "thiserror 2.0.18", - "tokio", - "tracing", -] - -[[package]] -name = "light-sdk" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f523c64a6fcdafe6df81d647560770529896f2707be8ffcf048d909b7e2b30" -dependencies = [ - "anchor-lang", - "bincode", - "borsh 0.10.4", - "light-account-checks", - "light-compressed-account", - "light-compressible", - "light-hasher", - "light-macros", - "light-sdk-macros", - "light-sdk-types", - "light-zero-copy", - "num-bigint 0.4.6", - "solana-account-info", - "solana-clock", - "solana-cpi", - "solana-instruction", - "solana-loader-v3-interface", - "solana-msg", - "solana-program", - "solana-program-error", - "solana-pubkey", - "solana-system-interface", - "solana-sysvar", - "thiserror 2.0.18", -] - -[[package]] -name = "light-sdk-macros" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3d12bb13b84df21a4871dc0837aafc0b48464d3e9b17e2773c0719b6cc724c5" -dependencies = [ - "darling", - "light-hasher", - "light-sdk-types", - "proc-macro2", - "quote", - "solana-pubkey", - "syn 2.0.114", -] - -[[package]] -name = "light-sdk-types" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d8153b27d057ded7b2b6bbd78c643e3f20bd9a9718ca1a8d4183169ccd812c3" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-account-checks", - "light-compressed-account", - "light-hasher", - "light-macros", - "solana-msg", - "thiserror 2.0.18", -] - -[[package]] -name = "light-sparse-merkle-tree" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4251e79b6c63f4946572dcfd7623680ad0f9e0efe1a761a944733333c5645063" -dependencies = [ - "light-hasher", - "light-indexed-array", - "num-bigint 0.4.6", - "num-traits", - "thiserror 2.0.18", -] - -[[package]] -name = "light-token" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fd2e8ca6d7d70c77658010e1ae6ed6d4fe23e29054964b053f51e5c4676e49" -dependencies = [ - "anchor-lang", - "arrayvec", - "borsh 0.10.4", - "light-account-checks", - "light-batched-merkle-tree", - "light-compressed-account", - "light-compressible", - "light-macros", - "light-program-profiler", - "light-sdk", - "light-sdk-macros", - "light-sdk-types", - "light-token-interface", - "light-token-types", - "light-zero-copy", - "solana-account-info", - "solana-cpi", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "light-token-anchor-create-ata" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-compressible", - "light-program-test", - "light-sdk", - "light-sdk-macros", - "light-sdk-types", - "light-token", - "light-token-interface", - "light-token-types", - "solana-account-info", - "solana-instruction", - "solana-keypair", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sdk", - "solana-signer", - "tokio", -] - -[[package]] -name = "light-token-anchor-create-mint" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-compressible", - "light-program-test", - "light-sdk", - "light-sdk-macros", - "light-sdk-types", - "light-token", - "light-token-interface", - "light-token-types", - "solana-account-info", - "solana-instruction", - "solana-keypair", - "solana-msg", - "solana-program", - "solana-program-error", - "solana-pubkey", - "solana-sdk", - "solana-signer", - "tokio", -] - -[[package]] -name = "light-token-anchor-create-token-account" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-compressible", - "light-program-test", - "light-sdk", - "light-sdk-macros", - "light-sdk-types", - "light-token", - "light-token-interface", - "light-token-types", - "solana-account-info", - "solana-instruction", - "solana-keypair", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sdk", - "solana-signer", - "tokio", -] - -[[package]] -name = "light-token-interface" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46decebc2a13ec984e2ba7f1e691c0d46b9061875c6bdd12636b7c100a60e6c" -dependencies = [ - "aligned-sized", - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-array-map", - "light-compressed-account", - "light-compressible", - "light-hasher", - "light-macros", - "light-program-profiler", - "light-zero-copy", - "pinocchio", - "pinocchio-pubkey", - "solana-account-info", - "solana-pubkey", - "spl-pod", - "spl-token-2022 7.0.0", - "thiserror 2.0.18", - "tinyvec", - "zerocopy", -] - -[[package]] -name = "light-token-types" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "411481fe2e04b1241235c2572480c153c5669507e227f5e3327057b0d2ba5734" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-account-checks", - "light-compressed-account", - "light-macros", - "light-sdk-types", - "solana-msg", - "thiserror 2.0.18", -] - -[[package]] -name = "light-verifier" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecba4c14ac08b078a9d84033d628b12bb2577141f405140d506bacd392a830bc" -dependencies = [ - "groth16-solana", - "light-compressed-account", - "thiserror 2.0.18", -] - -[[package]] -name = "light-zero-copy" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5621fb515e14af46148699c0b65334aabe230a1d2cbd06736ccc7a408c8a4af" -dependencies = [ - "light-zero-copy-derive", - "solana-program-error", - "zerocopy", -] - -[[package]] -name = "light-zero-copy-derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c46425e5c7ab5203ff5c86ae2615b169cca55f9283f5f60f5dd74143be6934" -dependencies = [ - "lazy_static", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "linux-raw-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" - -[[package]] -name = "litemap" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" - -[[package]] -name = "litesvm" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bca37ac374948b348e29c74b324dc36f18bbbd1ccf80e2046d967521cbd143" -dependencies = [ - "agave-feature-set", - "agave-precompiles", - "agave-reserved-account-keys", - "ansi_term", - "bincode", - "indexmap 2.13.0", - "itertools 0.14.0", - "log", - "solana-account", - "solana-address-lookup-table-interface", - "solana-bpf-loader-program", - "solana-builtins", - "solana-clock", - "solana-compute-budget", - "solana-compute-budget-instruction", - "solana-epoch-rewards", - "solana-epoch-schedule", - "solana-fee", - "solana-fee-structure", - "solana-hash", - "solana-instruction", - "solana-instructions-sysvar", - "solana-keypair", - "solana-last-restart-slot", - "solana-loader-v3-interface", - "solana-loader-v4-interface", - "solana-log-collector", - "solana-message", - "solana-native-token 3.0.0", - "solana-nonce", - "solana-nonce-account", - "solana-precompile-error", - "solana-program-error", - "solana-program-runtime", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sha256-hasher", - "solana-signature", - "solana-signer", - "solana-slot-hashes", - "solana-slot-history", - "solana-stake-interface", - "solana-svm-callback", - "solana-svm-transaction", - "solana-system-interface", - "solana-system-program", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "solana-vote-program", - "thiserror 2.0.18", -] - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "lru-slab" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" - -[[package]] -name = "memchr" -version = "2.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" - -[[package]] -name = "memmap2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] - -[[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 = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "mio" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" -dependencies = [ - "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.61.2", -] - -[[package]] -name = "native-tls" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "num" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" -dependencies = [ - "num-bigint 0.2.6", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[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", - "serde", -] - -[[package]] -name = "num-complex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" - -[[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.114", -] - -[[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-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" -dependencies = [ - "autocfg", - "num-bigint 0.2.6", - "num-integer", - "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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" -dependencies = [ - "proc-macro-crate 3.4.0", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - -[[package]] -name = "openssl" -version = "0.10.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" -dependencies = [ - "bitflags 2.10.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - -[[package]] -name = "openssl-src" -version = "300.5.4+3.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" -dependencies = [ - "cc", -] - -[[package]] -name = "openssl-sys" -version = "0.9.111" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" -dependencies = [ - "cc", - "libc", - "openssl-src", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand 0.8.5", - "thiserror 1.0.69", -] - -[[package]] -name = "papergrid" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6978128c8b51d8f4080631ceb2302ab51e32cc6e8615f735ee2f83fd269ae3f1" -dependencies = [ - "bytecount", - "fnv", - "unicode-width", -] - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "percentage" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" -dependencies = [ - "num", -] - -[[package]] -name = "photon-api" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e572dba0c255f5b8176f15b9e849330d915a8927804f7f9702d5bbbc70e4a1ad" -dependencies = [ - "reqwest 0.12.28", - "serde", - "serde_derive", - "serde_json", - "serde_with", - "url", - "uuid", -] - -[[package]] -name = "pin-project" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pinocchio" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b971851087bc3699b001954ad02389d50c41405ece3548cbcafc88b3e20017a" - -[[package]] -name = "pinocchio-pubkey" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0225638cadcbebae8932cb7f49cb5da7c15c21beb19f048f05a5ca7d93f065" -dependencies = [ - "five8_const", - "pinocchio", - "sha2-const-stable", -] - -[[package]] -name = "pkg-config" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" - -[[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 = "portable-atomic" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" - -[[package]] -name = "potential_utf" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -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.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" -dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -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 = "qualifier_attr" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "quinn" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" -dependencies = [ - "bytes", - "cfg_aliases", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash", - "rustls 0.23.36", - "socket2 0.6.2", - "thiserror 2.0.18", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" -dependencies = [ - "bytes", - "getrandom 0.3.4", - "lru-slab", - "rand 0.9.2", - "ring", - "rustc-hash", - "rustls 0.23.36", - "rustls-pki-types", - "slab", - "thiserror 2.0.18", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2 0.6.2", - "tracing", - "windows-sys 0.60.2", -] - -[[package]] -name = "quote" -version = "1.0.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[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" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.5", -] - -[[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_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - -[[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.17", -] - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", -] - -[[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 = "rayon" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.10.0", -] - -[[package]] -name = "ref-cast" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "regex" -version = "1.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" - -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", - "hyper-rustls 0.24.2", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls 0.21.12", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration 0.5.1", - "tokio", - "tokio-native-tls", - "tokio-rustls 0.24.1", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 0.25.4", - "winreg", -] - -[[package]] -name = "reqwest" -version = "0.12.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" -dependencies = [ - "base64 0.22.1", - "bytes", - "encoding_rs", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.4.13", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.8.1", - "hyper-rustls 0.27.7", - "hyper-tls 0.6.0", - "hyper-util", - "js-sys", - "log", - "mime", - "mime_guess", - "native-tls", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls 0.23.36", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 1.0.2", - "tokio", - "tokio-native-tls", - "tokio-rustls 0.26.4", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 1.0.5", -] - -[[package]] -name = "reqwest-middleware" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" -dependencies = [ - "anyhow", - "async-trait", - "http 1.4.0", - "reqwest 0.12.28", - "serde", - "thiserror 1.0.69", - "tower-service", -] - -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.17", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" - -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" -dependencies = [ - "bitflags 2.10.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustls" -version = "0.21.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" -dependencies = [ - "log", - "ring", - "rustls-webpki 0.101.7", - "sct", -] - -[[package]] -name = "rustls" -version = "0.23.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" -dependencies = [ - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki 0.103.9", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - -[[package]] -name = "rustls-pki-types" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" -dependencies = [ - "web-time", - "zeroize", -] - -[[package]] -name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "rustls-webpki" -version = "0.103.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "ryu" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" - -[[package]] -name = "schannel" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "schemars" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.10.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde-big-array" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_bytes" -version = "0.11.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.13.0", - "schemars 0.9.0", - "schemars 1.2.0", - "serde_core", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[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.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha2-const-stable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" - -[[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 = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" -dependencies = [ - "errno", - "libc", -] - -[[package]] -name = "signature" -version = "1.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" - -[[package]] -name = "simd-adler32" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "slab" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "socket2" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" -dependencies = [ - "libc", - "windows-sys 0.60.2", -] - -[[package]] -name = "solana-account" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" -dependencies = [ - "bincode", - "serde", - "serde_bytes", - "serde_derive", - "solana-account-info", - "solana-clock", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-sysvar", -] - -[[package]] -name = "solana-account-decoder" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba71c97fa4d85ce4a1e0e79044ad0406c419382be598c800202903a7688ce71a" -dependencies = [ - "Inflector", - "base64 0.22.1", - "bincode", - "bs58", - "bv", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-account-decoder-client-types", - "solana-address-lookup-table-interface", - "solana-clock", - "solana-config-program-client", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-instruction", - "solana-loader-v3-interface", - "solana-nonce", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-slot-hashes", - "solana-slot-history", - "solana-stake-interface", - "solana-sysvar", - "solana-vote-interface", - "spl-generic-token", - "spl-token 8.0.0", - "spl-token-2022 8.0.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "thiserror 2.0.18", - "zstd", -] - -[[package]] -name = "solana-account-decoder-client-types" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5519e8343325b707f17fbed54fcefb325131b692506d0af9e08a539d15e4f8cf" -dependencies = [ - "base64 0.22.1", - "bs58", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-pubkey", - "zstd", -] - -[[package]] -name = "solana-account-info" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" -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-banks-client" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68548570c38a021c724b5aa0112f45a54bdf7ff1b041a042848e034a95a96994" -dependencies = [ - "borsh 1.6.0", - "futures", - "solana-account", - "solana-banks-interface", - "solana-clock", - "solana-commitment-config", - "solana-hash", - "solana-message", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-signature", - "solana-sysvar", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "tarpc", - "thiserror 2.0.18", - "tokio", - "tokio-serde", -] - -[[package]] -name = "solana-banks-interface" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6d90edc435bf488ef7abed4dcb1f94fa1970102cbabb25688f58417fd948286" -dependencies = [ - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-commitment-config", - "solana-hash", - "solana-message", - "solana-pubkey", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "tarpc", -] - -[[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 0.4.6", - "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-bn254" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4420f125118732833f36facf96a27e7b78314b2d642ba07fa9ffdacd8d79e243" -dependencies = [ - "ark-bn254 0.4.0", - "ark-ec 0.4.2", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "bytemuck", - "solana-define-syscall", - "thiserror 2.0.18", -] - -[[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.6.0", -] - -[[package]] -name = "solana-bpf-loader-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aec57dcd80d0f6879956cad28854a6eebaed6b346ce56908ea01a9f36ab259" -dependencies = [ - "bincode", - "libsecp256k1", - "num-traits", - "qualifier_attr", - "scopeguard", - "solana-account", - "solana-account-info", - "solana-big-mod-exp", - "solana-bincode", - "solana-blake3-hasher", - "solana-bn254", - "solana-clock", - "solana-cpi", - "solana-curve25519", - "solana-hash", - "solana-instruction", - "solana-keccak-hasher", - "solana-loader-v3-interface", - "solana-loader-v4-interface", - "solana-log-collector", - "solana-measure", - "solana-packet", - "solana-poseidon", - "solana-program-entrypoint", - "solana-program-runtime", - "solana-pubkey", - "solana-sbpf", - "solana-sdk-ids", - "solana-secp256k1-recover", - "solana-sha256-hasher", - "solana-stable-layout", - "solana-svm-feature-set", - "solana-system-interface", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", - "solana-transaction-context", - "solana-type-overrides", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-builtins" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d61a31b63b52b0d268cbcd56c76f50314867d7f8e07a0f2c62ee7c9886e07b2" -dependencies = [ - "agave-feature-set", - "solana-bpf-loader-program", - "solana-compute-budget-program", - "solana-hash", - "solana-loader-v4-program", - "solana-program-runtime", - "solana-pubkey", - "solana-sdk-ids", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", - "solana-zk-elgamal-proof-program", - "solana-zk-token-proof-program", -] - -[[package]] -name = "solana-builtins-default-costs" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ca69a299a6c969b18ea381a02b40c9e4dda04b2af0d15a007c1184c82163bbb" -dependencies = [ - "agave-feature-set", - "ahash", - "log", - "solana-bpf-loader-program", - "solana-compute-budget-program", - "solana-loader-v4-program", - "solana-pubkey", - "solana-sdk-ids", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", -] - -[[package]] -name = "solana-client-traits" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" -dependencies = [ - "solana-account", - "solana-commitment-config", - "solana-epoch-info", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-pubkey", - "solana-signature", - "solana-signer", - "solana-system-interface", - "solana-transaction", - "solana-transaction-error", -] - -[[package]] -name = "solana-clock" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", -] - -[[package]] -name = "solana-cluster-type" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" -dependencies = [ - "serde", - "serde_derive", - "solana-hash", -] - -[[package]] -name = "solana-commitment-config" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-compute-budget" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f4fc63bc2276a1618ca0bfc609da7448534ecb43a1cb387cdf9eaa2dc7bc272" -dependencies = [ - "solana-fee-structure", - "solana-program-runtime", -] - -[[package]] -name = "solana-compute-budget-instruction" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503d94430f6d3c5ac1e1fa6a342c1c714d5b03c800999e7b6cf235298f0b5341" -dependencies = [ - "agave-feature-set", - "log", - "solana-borsh", - "solana-builtins-default-costs", - "solana-compute-budget", - "solana-compute-budget-interface", - "solana-instruction", - "solana-packet", - "solana-pubkey", - "solana-sdk-ids", - "solana-svm-transaction", - "solana-transaction-error", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-compute-budget-interface" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8432d2c4c22d0499aa06d62e4f7e333f81777b3d7c96050ae9e5cb71a8c3aee4" -dependencies = [ - "borsh 1.6.0", - "serde", - "serde_derive", - "solana-instruction", - "solana-sdk-ids", -] - -[[package]] -name = "solana-compute-budget-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "072b02beed1862c6b7b7a8a699379594c4470a9371c711856a0a3c266dcf57e5" -dependencies = [ - "solana-program-runtime", -] - -[[package]] -name = "solana-config-program-client" -version = "0.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53aceac36f105fd4922e29b4f0c1f785b69d7b3e7e387e384b8985c8e0c3595e" -dependencies = [ - "bincode", - "borsh 0.10.4", - "kaigan", - "serde", - "solana-program", -] - -[[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.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae4261b9a8613d10e77ac831a8fa60b6fa52b9b103df46d641deff9f9812a23" -dependencies = [ - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "solana-define-syscall", - "subtle", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-decode-error" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" -dependencies = [ - "num-traits", -] - -[[package]] -name = "solana-define-syscall" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" - -[[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-ed25519-program" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" -dependencies = [ - "bytemuck", - "bytemuck_derive", - "ed25519-dalek", - "solana-feature-set", - "solana-instruction", - "solana-precompile-error", - "solana-sdk-ids", -] - -[[package]] -name = "solana-epoch-info" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" -dependencies = [ - "serde", - "serde_derive", -] - -[[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-rewards-hasher" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" -dependencies = [ - "siphasher", - "solana-hash", - "solana-pubkey", -] - -[[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.18", -] - -[[package]] -name = "solana-feature-gate-interface" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" -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-feature-set" -version = "2.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93b93971e289d6425f88e6e3cb6668c4b05df78b3c518c249be55ced8efd6b6d" -dependencies = [ - "ahash", - "lazy_static", - "solana-epoch-schedule", - "solana-hash", - "solana-pubkey", - "solana-sha256-hasher", -] - -[[package]] -name = "solana-fee" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16beda37597046b1edd1cea6fa7caaed033c091f99ec783fe59c82828bc2adb8" -dependencies = [ - "agave-feature-set", - "solana-fee-structure", - "solana-svm-transaction", -] - -[[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-fee-structure" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33adf673581c38e810bf618f745bf31b683a0a4a4377682e6aaac5d9a058dd4e" -dependencies = [ - "serde", - "serde_derive", - "solana-message", - "solana-native-token 2.3.0", -] - -[[package]] -name = "solana-genesis-config" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3725085d47b96d37fef07a29d78d2787fc89a0b9004c66eed7753d1e554989f" -dependencies = [ - "bincode", - "chrono", - "memmap2", - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-cluster-type", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-hash", - "solana-inflation", - "solana-keypair", - "solana-logger", - "solana-poh-config", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sha256-hasher", - "solana-shred-version", - "solana-signer", - "solana-time-utils", -] - -[[package]] -name = "solana-hard-forks" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-hash" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" -dependencies = [ - "borsh 1.6.0", - "bytemuck", - "bytemuck_derive", - "five8", - "js-sys", - "serde", - "serde_derive", - "solana-atomic-u64", - "solana-sanitize", - "wasm-bindgen", -] - -[[package]] -name = "solana-inflation" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-instruction" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab5682934bd1f65f8d2c16f21cb532526fcc1a09f796e2cacdb091eee5774ad" -dependencies = [ - "bincode", - "borsh 1.6.0", - "getrandom 0.2.17", - "js-sys", - "num-traits", - "serde", - "serde_derive", - "serde_json", - "solana-define-syscall", - "solana-pubkey", - "wasm-bindgen", -] - -[[package]] -name = "solana-instructions-sysvar" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" -dependencies = [ - "bitflags 2.10.0", - "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-keypair" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd3f04aa1a05c535e93e121a95f66e7dcccf57e007282e8255535d24bf1e98bb" -dependencies = [ - "ed25519-dalek", - "ed25519-dalek-bip32", - "five8", - "rand 0.7.3", - "solana-derivation-path", - "solana-pubkey", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-signature", - "solana-signer", - "wasm-bindgen", -] - -[[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 = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" -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-loader-v4-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6ab01855d851fa2fb6034b0d48de33d77d5c5f5fb4b0353d8e4a934cc03d48a" -dependencies = [ - "log", - "qualifier_attr", - "solana-account", - "solana-bincode", - "solana-bpf-loader-program", - "solana-instruction", - "solana-loader-v3-interface", - "solana-loader-v4-interface", - "solana-log-collector", - "solana-measure", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-sbpf", - "solana-sdk-ids", - "solana-transaction-context", - "solana-type-overrides", -] - -[[package]] -name = "solana-log-collector" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d945b1cf5bf7cbd6f5b78795beda7376370c827640df43bb2a1c17b492dc106" -dependencies = [ - "log", -] - -[[package]] -name = "solana-logger" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8e777ec1afd733939b532a42492d888ec7c88d8b4127a5d867eb45c6eb5cd5" -dependencies = [ - "env_logger", - "lazy_static", - "libc", - "log", - "signal-hook", -] - -[[package]] -name = "solana-measure" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11dcd67cd2ae6065e494b64e861e0498d046d95a61cbbf1ae3d58be1ea0f42ed" - -[[package]] -name = "solana-message" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" -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-metrics" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0375159d8460f423d39e5103dcff6e07796a5ec1850ee1fcfacfd2482a8f34b5" -dependencies = [ - "crossbeam-channel", - "gethostname", - "log", - "reqwest 0.12.28", - "solana-cluster-type", - "solana-sha256-hasher", - "solana-time-utils", - "thiserror 2.0.18", -] - -[[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.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" - -[[package]] -name = "solana-native-token" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" - -[[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-nonce-account" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" -dependencies = [ - "solana-account", - "solana-hash", - "solana-nonce", - "solana-sdk-ids", -] - -[[package]] -name = "solana-nostd-keccak" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8ced70920435b1baa58f76e6f84bbc1110ddd1d6161ec76b6d731ae8431e9c4" -dependencies = [ - "sha3", -] - -[[package]] -name = "solana-offchain-message" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" -dependencies = [ - "num_enum", - "solana-hash", - "solana-packet", - "solana-pubkey", - "solana-sanitize", - "solana-sha256-hasher", - "solana-signature", - "solana-signer", -] - -[[package]] -name = "solana-packet" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004f2d2daf407b3ec1a1ca5ec34b3ccdfd6866dd2d3c7d0715004a96e4b6d127" -dependencies = [ - "bincode", - "bitflags 2.10.0", - "cfg_eval", - "serde", - "serde_derive", - "serde_with", -] - -[[package]] -name = "solana-poh-config" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-poseidon" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbac4eb90016eeb1d37fa36e592d3a64421510c49666f81020736611c319faff" -dependencies = [ - "ark-bn254 0.4.0", - "light-poseidon 0.2.0", - "solana-define-syscall", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-precompile-error" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d87b2c1f5de77dfe2b175ee8dd318d196aaca4d0f66f02842f80c852811f9f8" -dependencies = [ - "num-traits", - "solana-decode-error", -] - -[[package]] -name = "solana-precompiles" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e92768a57c652edb0f5d1b30a7d0bc64192139c517967c18600debe9ae3832" -dependencies = [ - "lazy_static", - "solana-ed25519-program", - "solana-feature-set", - "solana-message", - "solana-precompile-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-secp256k1-program", - "solana-secp256r1-program", -] - -[[package]] -name = "solana-presigner" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" -dependencies = [ - "solana-pubkey", - "solana-signature", - "solana-signer", -] - -[[package]] -name = "solana-program" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" -dependencies = [ - "bincode", - "blake3", - "borsh 0.10.4", - "borsh 1.6.0", - "bs58", - "bytemuck", - "console_error_panic_hook", - "console_log", - "getrandom 0.2.17", - "lazy_static", - "log", - "memoffset", - "num-bigint 0.4.6", - "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 2.3.0", - "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.18", - "wasm-bindgen", -] - -[[package]] -name = "solana-program-entrypoint" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" -dependencies = [ - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", -] - -[[package]] -name = "solana-program-error" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" -dependencies = [ - "borsh 1.6.0", - "num-traits", - "serde", - "serde_derive", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-pubkey", -] - -[[package]] -name = "solana-program-memory" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" -dependencies = [ - "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-program-runtime" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5653001e07b657c9de6f0417cf9add1cf4325903732c480d415655e10cc86704" -dependencies = [ - "base64 0.22.1", - "bincode", - "enum-iterator", - "itertools 0.12.1", - "log", - "percentage", - "rand 0.8.5", - "serde", - "solana-account", - "solana-clock", - "solana-epoch-rewards", - "solana-epoch-schedule", - "solana-fee-structure", - "solana-hash", - "solana-instruction", - "solana-last-restart-slot", - "solana-log-collector", - "solana-measure", - "solana-metrics", - "solana-program-entrypoint", - "solana-pubkey", - "solana-rent", - "solana-sbpf", - "solana-sdk-ids", - "solana-slot-hashes", - "solana-stable-layout", - "solana-svm-callback", - "solana-svm-feature-set", - "solana-system-interface", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", - "solana-transaction-context", - "solana-type-overrides", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-pubkey" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" -dependencies = [ - "borsh 0.10.4", - "borsh 1.6.0", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "five8", - "five8_const", - "getrandom 0.2.17", - "js-sys", - "num-traits", - "rand 0.8.5", - "serde", - "serde_derive", - "solana-atomic-u64", - "solana-decode-error", - "solana-define-syscall", - "solana-sanitize", - "solana-sha256-hasher", - "wasm-bindgen", -] - -[[package]] -name = "solana-quic-definitions" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf0d4d5b049eb1d0c35f7b18f305a27c8986fc5c0c9b383e97adaa35334379e" -dependencies = [ - "solana-keypair", -] - -[[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-rent-collector" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "127e6dfa51e8c8ae3aa646d8b2672bc4ac901972a338a9e1cd249e030564fb9d" -dependencies = [ - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-epoch-schedule", - "solana-genesis-config", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", -] - -[[package]] -name = "solana-rent-debits" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" -dependencies = [ - "solana-pubkey", - "solana-reward-info", -] - -[[package]] -name = "solana-reserved-account-keys" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4b22ea19ca2a3f28af7cd047c914abf833486bf7a7c4a10fc652fff09b385b1" -dependencies = [ - "lazy_static", - "solana-feature-set", - "solana-pubkey", - "solana-sdk-ids", -] - -[[package]] -name = "solana-reward-info" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-rpc-client" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d3161ac0918178e674c1f7f1bfac40de3e7ed0383bd65747d63113c156eaeb" -dependencies = [ - "async-trait", - "base64 0.22.1", - "bincode", - "bs58", - "futures", - "indicatif", - "log", - "reqwest 0.12.28", - "reqwest-middleware", - "semver", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-account-decoder-client-types", - "solana-clock", - "solana-commitment-config", - "solana-epoch-info", - "solana-epoch-schedule", - "solana-feature-gate-interface", - "solana-hash", - "solana-instruction", - "solana-message", - "solana-pubkey", - "solana-rpc-client-api", - "solana-signature", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status-client-types", - "solana-version", - "solana-vote-interface", - "tokio", -] - -[[package]] -name = "solana-rpc-client-api" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dbc138685c79d88a766a8fd825057a74ea7a21e1dd7f8de275ada899540fff7" -dependencies = [ - "anyhow", - "jsonrpc-core", - "reqwest 0.12.28", - "reqwest-middleware", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder-client-types", - "solana-clock", - "solana-rpc-client-types", - "solana-signer", - "solana-transaction-error", - "solana-transaction-status-client-types", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-rpc-client-types" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea428a81729255d895ea47fba9b30fd4dacbfe571a080448121bd0592751676" -dependencies = [ - "base64 0.22.1", - "bs58", - "semver", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-account-decoder-client-types", - "solana-clock", - "solana-commitment-config", - "solana-fee-calculator", - "solana-inflation", - "solana-pubkey", - "solana-transaction-error", - "solana-transaction-status-client-types", - "solana-version", - "spl-generic-token", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-sanitize" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" - -[[package]] -name = "solana-sbpf" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "474a2d95dc819898ded08d24f29642d02189d3e1497bbb442a92a3997b7eb55f" -dependencies = [ - "byteorder", - "combine", - "hash32", - "libc", - "log", - "rand 0.8.5", - "rustc-demangle", - "thiserror 2.0.18", - "winapi", -] - -[[package]] -name = "solana-sdk" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc0e4a7635b902791c44b6581bfb82f3ada32c5bc0929a64f39fe4bb384c86a" -dependencies = [ - "bincode", - "bs58", - "getrandom 0.1.16", - "js-sys", - "serde", - "serde_json", - "solana-account", - "solana-bn254", - "solana-client-traits", - "solana-cluster-type", - "solana-commitment-config", - "solana-compute-budget-interface", - "solana-decode-error", - "solana-derivation-path", - "solana-ed25519-program", - "solana-epoch-info", - "solana-epoch-rewards-hasher", - "solana-feature-set", - "solana-fee-structure", - "solana-genesis-config", - "solana-hard-forks", - "solana-inflation", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-native-token 2.3.0", - "solana-nonce-account", - "solana-offchain-message", - "solana-packet", - "solana-poh-config", - "solana-precompile-error", - "solana-precompiles", - "solana-presigner", - "solana-program", - "solana-program-memory", - "solana-pubkey", - "solana-quic-definitions", - "solana-rent-collector", - "solana-rent-debits", - "solana-reserved-account-keys", - "solana-reward-info", - "solana-sanitize", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-secp256k1-program", - "solana-secp256k1-recover", - "solana-secp256r1-program", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-serde", - "solana-serde-varint", - "solana-short-vec", - "solana-shred-version", - "solana-signature", - "solana-signer", - "solana-system-transaction", - "solana-time-utils", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "solana-validator-exit", - "thiserror 2.0.18", - "wasm-bindgen", -] - -[[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.114", -] - -[[package]] -name = "solana-secp256k1-program" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f19833e4bc21558fe9ec61f239553abe7d05224347b57d65c2218aeeb82d6149" -dependencies = [ - "bincode", - "digest 0.10.7", - "libsecp256k1", - "serde", - "serde_derive", - "sha3", - "solana-feature-set", - "solana-instruction", - "solana-precompile-error", - "solana-sdk-ids", - "solana-signature", -] - -[[package]] -name = "solana-secp256k1-recover" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" -dependencies = [ - "borsh 1.6.0", - "libsecp256k1", - "solana-define-syscall", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-secp256r1-program" -version = "2.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce0ae46da3071a900f02d367d99b2f3058fe2e90c5062ac50c4f20cfedad8f0f" -dependencies = [ - "bytemuck", - "openssl", - "solana-feature-set", - "solana-instruction", - "solana-precompile-error", - "solana-sdk-ids", -] - -[[package]] -name = "solana-security-txt" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "156bb61a96c605fa124e052d630dba2f6fb57e08c7d15b757e1e958b3ed7b3fe" -dependencies = [ - "hashbrown 0.15.2", -] - -[[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 0.12.1", - "pbkdf2", - "sha2 0.10.9", -] - -[[package]] -name = "solana-serde" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" -dependencies = [ - "serde", -] - -[[package]] -name = "solana-serde-varint" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" -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.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" -dependencies = [ - "sha2 0.10.9", - "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-shred-version" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" -dependencies = [ - "solana-hard-forks", - "solana-hash", - "solana-sha256-hasher", -] - -[[package]] -name = "solana-signature" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" -dependencies = [ - "ed25519-dalek", - "five8", - "rand 0.8.5", - "serde", - "serde-big-array", - "serde_derive", - "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.6.0", - "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-stake-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500e9b9d11573f12de91e94f9c4459882cd5ffc692776af49b610d6fcc0b167f" -dependencies = [ - "agave-feature-set", - "bincode", - "log", - "solana-account", - "solana-bincode", - "solana-clock", - "solana-config-program-client", - "solana-genesis-config", - "solana-instruction", - "solana-log-collector", - "solana-native-token 2.3.0", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-stake-interface", - "solana-sysvar", - "solana-transaction-context", - "solana-type-overrides", - "solana-vote-interface", -] - -[[package]] -name = "solana-svm-callback" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cef9f7d5cfb5d375081a6c8ad712a6f0e055a15890081f845acf55d8254a7a2" -dependencies = [ - "solana-account", - "solana-precompile-error", - "solana-pubkey", -] - -[[package]] -name = "solana-svm-feature-set" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f24b836eb4d74ec255217bdbe0f24f64a07adeac31aca61f334f91cd4a3b1d5" - -[[package]] -name = "solana-svm-transaction" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab717b9539375ebb088872c6c87d1d8832d19f30f154ecc530154d23f60a6f0c" -dependencies = [ - "solana-hash", - "solana-message", - "solana-pubkey", - "solana-sdk-ids", - "solana-signature", - "solana-transaction", -] - -[[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-system-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ca36cef39aea7761be58d4108a56a2e27042fb1e913355fdb142a05fc7eab7" -dependencies = [ - "bincode", - "log", - "serde", - "serde_derive", - "solana-account", - "solana-bincode", - "solana-fee-calculator", - "solana-instruction", - "solana-log-collector", - "solana-nonce", - "solana-nonce-account", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-sdk-ids", - "solana-system-interface", - "solana-sysvar", - "solana-transaction-context", - "solana-type-overrides", -] - -[[package]] -name = "solana-system-transaction" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" -dependencies = [ - "solana-hash", - "solana-keypair", - "solana-message", - "solana-pubkey", - "solana-signer", - "solana-system-interface", - "solana-transaction", -] - -[[package]] -name = "solana-sysvar" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db" -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-time-utils" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" - -[[package]] -name = "solana-timings" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c49b842dfc53c1bf9007eaa6730296dea93b4fce73f457ce1080af43375c0d6" -dependencies = [ - "eager", - "enum-iterator", - "solana-pubkey", -] - -[[package]] -name = "solana-transaction" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80657d6088f721148f5d889c828ca60c7daeedac9a8679f9ec215e0c42bcbf41" -dependencies = [ - "bincode", - "serde", - "serde_derive", - "solana-bincode", - "solana-feature-set", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-precompiles", - "solana-pubkey", - "solana-sanitize", - "solana-sdk-ids", - "solana-short-vec", - "solana-signature", - "solana-signer", - "solana-system-interface", - "solana-transaction-error", - "wasm-bindgen", -] - -[[package]] -name = "solana-transaction-context" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a312304361987a85b2ef2293920558e6612876a639dd1309daf6d0d59ef2fe" -dependencies = [ - "bincode", - "serde", - "serde_derive", - "solana-account", - "solana-instruction", - "solana-instructions-sysvar", - "solana-pubkey", - "solana-rent", - "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 = [ - "serde", - "serde_derive", - "solana-instruction", - "solana-sanitize", -] - -[[package]] -name = "solana-transaction-status" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135f92f4192cc68900c665becf97fc0a6500ae5a67ff347bf2cbc20ecfefa821" -dependencies = [ - "Inflector", - "agave-reserved-account-keys", - "base64 0.22.1", - "bincode", - "borsh 1.6.0", - "bs58", - "log", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder", - "solana-address-lookup-table-interface", - "solana-clock", - "solana-hash", - "solana-instruction", - "solana-loader-v2-interface", - "solana-loader-v3-interface", - "solana-message", - "solana-program-option", - "solana-pubkey", - "solana-reward-info", - "solana-sdk-ids", - "solana-signature", - "solana-stake-interface", - "solana-system-interface", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status-client-types", - "solana-vote-interface", - "spl-associated-token-account", - "spl-memo", - "spl-token 8.0.0", - "spl-token-2022 8.0.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-transaction-status-client-types" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f1d7c2387c35850848212244d2b225847666cb52d3bd59a5c409d2c300303d" -dependencies = [ - "base64 0.22.1", - "bincode", - "bs58", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder-client-types", - "solana-commitment-config", - "solana-message", - "solana-reward-info", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-type-overrides" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d80c44761eb398a157d809a04840865c347e1831ae3859b6100c0ee457bc1a" -dependencies = [ - "rand 0.8.5", -] - -[[package]] -name = "solana-validator-exit" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" - -[[package]] -name = "solana-version" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3324d46c7f7b7f5d34bf7dc71a2883bdc072c7b28ca81d0b2167ecec4cf8da9f" -dependencies = [ - "agave-feature-set", - "rand 0.8.5", - "semver", - "serde", - "serde_derive", - "solana-sanitize", - "solana-serde-varint", -] - -[[package]] -name = "solana-vote-interface" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3" -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-vote-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "908d0e72c8b83e48762eb3e8c9114497cf4b1d66e506e360c46aba9308e71299" -dependencies = [ - "agave-feature-set", - "bincode", - "log", - "num-derive", - "num-traits", - "serde", - "serde_derive", - "solana-account", - "solana-bincode", - "solana-clock", - "solana-epoch-schedule", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-metrics", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-signer", - "solana-slot-hashes", - "solana-transaction", - "solana-transaction-context", - "solana-vote-interface", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-zk-elgamal-proof-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70cea14481d8efede6b115a2581f27bc7c6fdfba0752c20398456c3ac1245fc4" -dependencies = [ - "agave-feature-set", - "bytemuck", - "num-derive", - "num-traits", - "solana-instruction", - "solana-log-collector", - "solana-program-runtime", - "solana-sdk-ids", - "solana-zk-sdk", -] - -[[package]] -name = "solana-zk-sdk" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b9fc6ec37d16d0dccff708ed1dd6ea9ba61796700c3bb7c3b401973f10f63b" -dependencies = [ - "aes-gcm-siv", - "base64 0.22.1", - "bincode", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "itertools 0.12.1", - "js-sys", - "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.18", - "wasm-bindgen", - "zeroize", -] - -[[package]] -name = "solana-zk-token-proof-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579752ad6ea2a671995f13c763bf28288c3c895cb857a518cc4ebab93c9a8dde" -dependencies = [ - "agave-feature-set", - "bytemuck", - "num-derive", - "num-traits", - "solana-instruction", - "solana-log-collector", - "solana-program-runtime", - "solana-sdk-ids", - "solana-zk-token-sdk", -] - -[[package]] -name = "solana-zk-token-sdk" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5055e5df94abd5badf4f947681c893375bdb6f8f543c05d2a7ab9647a6a9d205" -dependencies = [ - "aes-gcm-siv", - "base64 0.22.1", - "bincode", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "itertools 0.12.1", - "merlin", - "num-derive", - "num-traits", - "rand 0.8.5", - "serde", - "serde_derive", - "serde_json", - "sha3", - "solana-curve25519", - "solana-derivation-path", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-signature", - "solana-signer", - "subtle", - "thiserror 2.0.18", - "zeroize", -] - -[[package]] -name = "spl-associated-token-account" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae179d4a26b3c7a20c839898e6aed84cb4477adf108a366c95532f058aea041b" -dependencies = [ - "borsh 1.6.0", - "num-derive", - "num-traits", - "solana-program", - "spl-associated-token-account-client", - "spl-token 8.0.0", - "spl-token-2022 8.0.1", - "thiserror 2.0.18", -] - -[[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.114", -] - -[[package]] -name = "spl-discriminator-syn" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.114", - "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 0.2.1", -] - -[[package]] -name = "spl-elgamal-registry" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65edfeed09cd4231e595616aa96022214f9c9d2be02dea62c2b30d5695a6833a" -dependencies = [ - "bytemuck", - "solana-account-info", - "solana-cpi", - "solana-instruction", - "solana-msg", - "solana-program-entrypoint", - "solana-program-error", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-system-interface", - "solana-sysvar", - "solana-zk-sdk", - "spl-pod", - "spl-token-confidential-transfer-proof-extraction 0.3.0", -] - -[[package]] -name = "spl-generic-token" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "741a62a566d97c58d33f9ed32337ceedd4e35109a686e31b1866c5dfa56abddc" -dependencies = [ - "bytemuck", - "solana-pubkey", -] - -[[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.6.0", - "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.18", -] - -[[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 0.4.1", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-program-error" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" -dependencies = [ - "num-derive", - "num-traits", - "solana-decode-error", - "solana-msg", - "solana-program-error", - "spl-program-error-derive 0.5.0", - "thiserror 2.0.18", -] - -[[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.9", - "syn 2.0.114", -] - -[[package]] -name = "spl-program-error-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.114", -] - -[[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 0.6.0", - "spl-type-length-value 0.7.0", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" -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 0.7.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[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" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-cpi", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sysvar", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-2022" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9048b26b0df0290f929ff91317c83db28b3ef99af2b3493dd35baa146774924c" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-program", - "solana-security-txt", - "solana-zk-sdk", - "spl-elgamal-registry 0.1.1", - "spl-memo", - "spl-pod", - "spl-token 7.0.0", - "spl-token-confidential-transfer-ciphertext-arithmetic 0.2.1", - "spl-token-confidential-transfer-proof-extraction 0.2.1", - "spl-token-confidential-transfer-proof-generation 0.3.0", - "spl-token-group-interface 0.5.0", - "spl-token-metadata-interface 0.6.0", - "spl-transfer-hook-interface 0.9.0", - "spl-type-length-value 0.7.0", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-2022" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f0dfbb079eebaee55e793e92ca5f433744f4b71ee04880bfd6beefba5973e5" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-clock", - "solana-cpi", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-native-token 2.3.0", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-security-txt", - "solana-system-interface", - "solana-sysvar", - "solana-zk-sdk", - "spl-elgamal-registry 0.2.0", - "spl-memo", - "spl-pod", - "spl-token 8.0.0", - "spl-token-confidential-transfer-ciphertext-arithmetic 0.3.1", - "spl-token-confidential-transfer-proof-extraction 0.3.0", - "spl-token-confidential-transfer-proof-generation 0.4.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "spl-transfer-hook-interface 0.10.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-2022-interface" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62d7ae2ee6b856f8ddcbdc3b3a9f4d2141582bbe150f93e5298ee97e0251fa04" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", - "spl-token-confidential-transfer-proof-extraction 0.4.1", - "spl-token-confidential-transfer-proof-generation 0.4.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[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-ciphertext-arithmetic" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cddd52bfc0f1c677b41493dafa3f2dbbb4b47cf0990f08905429e19dc8289b35" -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.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-extraction" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe2629860ff04c17bafa9ba4bed8850a404ecac81074113e1f840dbd0ebb7bd6" -dependencies = [ - "bytemuck", - "solana-account-info", - "solana-curve25519", - "solana-instruction", - "solana-instructions-sysvar", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-extraction" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512c85bdbbb4cbcc2038849a9e164c958b16541f252b53ea1a3933191c0a4a1a" -dependencies = [ - "bytemuck", - "solana-account-info", - "solana-curve25519", - "solana-instruction", - "solana-instructions-sysvar", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-generation" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" -dependencies = [ - "curve25519-dalek 4.1.3", - "solana-zk-sdk", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-generation" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" -dependencies = [ - "curve25519-dalek 4.1.3", - "solana-zk-sdk", - "thiserror 2.0.18", -] - -[[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-group-interface" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" -dependencies = [ - "bytemuck", - "num-derive", - "num-traits", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-discriminator", - "spl-pod", - "thiserror 2.0.18", -] - -[[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.6.0", - "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 0.7.0", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-token-metadata-interface" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" -dependencies = [ - "borsh 1.6.0", - "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 0.8.0", - "thiserror 2.0.18", -] - -[[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 0.6.0", - "spl-tlv-account-resolution 0.9.0", - "spl-type-length-value 0.7.0", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-transfer-hook-interface" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" -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 0.7.0", - "spl-tlv-account-resolution 0.10.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[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 = "spl-type-length-value" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" -dependencies = [ - "bytemuck", - "num-derive", - "num-traits", - "solana-account-info", - "solana-decode-error", - "solana-msg", - "solana-program-error", - "spl-discriminator", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[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.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys 0.5.0", -] - -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags 2.10.0", - "core-foundation", - "system-configuration-sys 0.6.0", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tabled" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e39a2ee1fbcd360805a771e1b300f78cc88fec7b8d3e2f71cd37bbf23e725c7d" -dependencies = [ - "papergrid", - "tabled_derive", - "testing_table", -] - -[[package]] -name = "tabled_derive" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea5d1b13ca6cff1f9231ffd62f15eefd72543dab5e468735f1a456728a02846" -dependencies = [ - "heck 0.5.0", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tarpc" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" -dependencies = [ - "anyhow", - "fnv", - "futures", - "humantime", - "opentelemetry", - "pin-project", - "rand 0.8.5", - "serde", - "static_assertions", - "tarpc-plugins", - "thiserror 1.0.69", - "tokio", - "tokio-serde", - "tokio-util 0.6.10", - "tracing", - "tracing-opentelemetry", -] - -[[package]] -name = "tarpc-plugins" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tempfile" -version = "3.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" -dependencies = [ - "fastrand", - "getrandom 0.3.4", - "once_cell", - "rustix", - "windows-sys 0.61.2", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "testing_table" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f8daae29995a24f65619e19d8d31dea5b389f3d853d8bf297bbf607cd0014cc" -dependencies = [ - "unicode-width", -] - -[[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.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl 2.0.18", -] - -[[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.114", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "thread_local" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "time" -version = "0.3.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde_core", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" - -[[package]] -name = "time-macros" -version = "0.2.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinystr" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" -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 = "tokio" -version = "1.49.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" -dependencies = [ - "bytes", - "libc", - "mio", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2 0.6.2", - "tokio-macros", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-macros" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" -dependencies = [ - "rustls 0.21.12", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" -dependencies = [ - "rustls 0.23.36", - "tokio", -] - -[[package]] -name = "tokio-serde" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" -dependencies = [ - "bincode", - "bytes", - "educe 0.4.23", - "futures-core", - "futures-sink", - "pin-project", - "serde", - "serde_json", -] - -[[package]] -name = "tokio-util" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "slab", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[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.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_edit 0.22.27", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap 2.13.0", - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_write", - "winnow", -] - -[[package]] -name = "toml_edit" -version = "0.23.10+spec-1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" -dependencies = [ - "indexmap 2.13.0", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml_parser" -version = "1.0.6+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" -dependencies = [ - "winnow", -] - -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper 1.0.2", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-http" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" -dependencies = [ - "async-compression", - "bitflags 2.10.0", - "bytes", - "futures-core", - "futures-util", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "iri-string", - "pin-project-lite", - "tokio", - "tokio-util 0.7.18", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-opentelemetry" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" -dependencies = [ - "once_cell", - "opentelemetry", - "tracing", - "tracing-core", - "tracing-subscriber", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" -dependencies = [ - "sharded-slab", - "thread_local", - "tracing-core", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typenum" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" - -[[package]] -name = "unicase" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" - -[[package]] -name = "unicode-ident" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - -[[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 = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -dependencies = [ - "void", -] - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[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 = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "uuid" -version = "1.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" -dependencies = [ - "getrandom 0.3.4", - "js-sys", - "serde_core", - "wasm-bindgen", -] - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[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.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.2+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" -dependencies = [ - "cfg-if", - "futures-util", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 2.0.114", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "web-sys" -version = "0.3.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "0.25.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" - -[[package]] -name = "webpki-roots" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-registry" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" -dependencies = [ - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[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_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[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_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - -[[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_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[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_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[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_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - -[[package]] -name = "winnow" -version = "0.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" - -[[package]] -name = "writeable" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "yoke" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zerotrie" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zmij" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439" - -[[package]] -name = "zstd" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "7.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" -dependencies = [ - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.16+zstd.1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/program-examples/anchor/macros/Cargo.toml b/program-examples/anchor/macros/Cargo.toml deleted file mode 100644 index bc00ccb..0000000 --- a/program-examples/anchor/macros/Cargo.toml +++ /dev/null @@ -1,44 +0,0 @@ -[workspace] -members = [ - "programs/create-ata", - "programs/create-mint", - "programs/create-token-account", -] -resolver = "2" - -[profile.release] -lto = "fat" -codegen-units = 1 -panic = "abort" -overflow-checks = true - -[profile.release.build-override] -opt-level = 3 -incremental = false -codegen-units = 1 - -[workspace.dependencies] -blake3 = { version = "=1.8.2", default-features = false } -anchor-lang = "0.31.1" -borsh = "0.10.4" -tokio = "1.43.0" -solana-sdk = "2.2" -solana-program = "2.2" -solana-instruction = "2.2" -solana-keypair = "2.2" -solana-pubkey = "2.2" -solana-signer = "2.2" -solana-msg = "2.2" -solana-program-error = "2.2" -solana-account-info = "2.2" -light-sdk = { version = "0.19.0", features = ["anchor", "idl-build", "v2", "anchor-discriminator", "cpi-context"] } -light-sdk-macros = "0.19.0" -light-sdk-types = { version = "0.19.0", features = ["v2", "cpi-context"] } -light-compressible = { version = "0.4.0", features = ["anchor"] } -light-hasher = "5.0.0" -light-token = { version = "0.4.0", features = ["anchor"] } -light-token-types = { version = "0.4.0", features = ["anchor"] } -light-token-interface = "0.3.0" -light-program-test = "0.19.0" -light-client = { version = "0.19.0", features = ["v2", "anchor"] } -light-anchor-spl = { version = "0.31.1", features = ["idl-build"] } diff --git a/program-examples/anchor/macros/README.md b/program-examples/anchor/macros/README.md deleted file mode 100644 index 568ee06..0000000 --- a/program-examples/anchor/macros/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# Light Token Anchor Programs (Macro approach) - -Anchor program examples using `#[light_account]` macros for automatic compressed account creation. - -## Programs - -| Program | Description | -|---------|-------------| -| [create-ata](programs/create-ata/src/lib.rs) | Create compressed associated token account | -| [create-mint](programs/create-mint/src/lib.rs) | Create compressed mint with metadata | -| [create-token-account](programs/create-token-account/src/lib.rs) | Create compressed token account (vault pattern) | - -## Pattern - -These programs use Light SDK macros to automatically generate CPI calls: - -```rust -use light_sdk_macros::{derive_light_cpi_signer, light_program}; - -#[light_program] -#[program] -pub mod light_token_anchor_create_ata { - use super::*; - - pub fn create_ata<'info>( - ctx: Context<'_, '_, '_, 'info, CreateAta<'info>>, - params: CreateAtaParams, - ) -> Result<()> { - // Empty body - account creation handled by LightFinalize trait - Ok(()) - } -} - -#[derive(Accounts, LightAccounts)] -pub struct CreateAta<'info> { - #[account(mut)] - pub payer: Signer<'info>, - pub mint: AccountInfo<'info>, - pub owner: AccountInfo<'info>, - #[light_account(init, associated_token::authority = owner, associated_token::mint = mint)] - #[account(mut)] - pub ata: UncheckedAccount<'info>, - // ... other accounts -} -``` - -## How it works - -1. The `#[light_program]` macro generates a `LightFinalize` trait implementation -2. The `#[light_account(init, ...)]` macro marks accounts for automatic creation -3. After the instruction handler returns `Ok(())`, the generated `LightFinalize` implementation runs -4. The `LightFinalize` implementation generates the actual CPI calls to create the accounts - -The empty instruction handler body is intentional - all work happens in the macro-generated epilogue. - -## Build - -```bash -anchor build -``` - -## Test - -```bash -cargo test-sbf -``` diff --git a/program-examples/anchor/macros/programs/create-ata/Cargo.toml b/program-examples/anchor/macros/programs/create-ata/Cargo.toml deleted file mode 100644 index 5fb4a71..0000000 --- a/program-examples/anchor/macros/programs/create-ata/Cargo.toml +++ /dev/null @@ -1,43 +0,0 @@ -[package] -name = "light-token-anchor-create-ata" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_create_ata" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-sdk-macros = { workspace = true } -light-sdk-types = { workspace = true } -light-compressible = { workspace = true } -light-token = { workspace = true } -solana-pubkey = { workspace = true } -solana-msg = { workspace = true } -solana-program-error = { workspace = true } -solana-account-info = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -light-token-types = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } -solana-instruction = { workspace = true } -solana-keypair = { workspace = true } -solana-pubkey = { workspace = true } -solana-signer = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/macros/programs/create-ata/src/lib.rs b/program-examples/anchor/macros/programs/create-ata/src/lib.rs deleted file mode 100644 index 48e0f76..0000000 --- a/program-examples/anchor/macros/programs/create-ata/src/lib.rs +++ /dev/null @@ -1,75 +0,0 @@ -//! Example: Create a compressed associated token account using the Light SDK macros. -//! -//! Demonstrates the `#[light_account(init, associated_token, ...)]` macro attribute -//! for creating compressed ATAs with automatic CPI generation. - -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_compressible::CreateAccountsProof; -use light_sdk::derive_light_cpi_signer; -use light_sdk_macros::{light_program, LightAccounts}; -use light_sdk_types::{CpiSigner, LIGHT_TOKEN_PROGRAM_ID}; -use light_token::instruction::{COMPRESSIBLE_CONFIG_V1, RENT_SPONSOR as LIGHT_TOKEN_RENT_SPONSOR}; - -declare_id!("8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8"); - -pub const LIGHT_CPI_SIGNER: CpiSigner = - derive_light_cpi_signer!("8yizawASBjGGCPnqtMsvBscwPUgDuNjJA93QBdm3PZY8"); - -#[derive(AnchorSerialize, AnchorDeserialize, Clone)] -pub struct CreateAtaParams { - pub create_accounts_proof: CreateAccountsProof, - pub ata_bump: u8, -} - -#[derive(Accounts, LightAccounts)] -#[instruction(params: CreateAtaParams)] -pub struct CreateAta<'info> { - #[account(mut)] - pub payer: Signer<'info>, - - /// CHECK: Token mint for the ATA. - pub mint: AccountInfo<'info>, - - /// CHECK: Owner of the ATA. - pub owner: AccountInfo<'info>, - - /// CHECK: Initialized by light_account macro. - #[account(mut)] - #[light_account(init, associated_token::authority = owner, associated_token::mint = mint, associated_token::bump = params.ata_bump)] - pub ata: UncheckedAccount<'info>, - - /// CHECK: Light token compressible config. - #[account(address = COMPRESSIBLE_CONFIG_V1)] - pub light_token_compressible_config: AccountInfo<'info>, - - /// CHECK: Light token rent sponsor. - #[account(mut, address = LIGHT_TOKEN_RENT_SPONSOR)] - pub light_token_rent_sponsor: AccountInfo<'info>, - - /// CHECK: Light Token Program for CPI. - #[account(address = LIGHT_TOKEN_PROGRAM_ID.into())] - pub light_token_program: AccountInfo<'info>, - - pub system_program: Program<'info, System>, -} - -#[light_program] -#[program] -pub mod light_token_anchor_create_ata { - use super::*; - - /// Create a compressed associated token account. - /// - /// The ATA is created by the LightFinalize trait implementation - /// generated by the `#[light_account(init, associated_token, ...)]` macro. - #[allow(unused_variables)] - pub fn create_ata<'info>( - ctx: Context<'_, '_, '_, 'info, CreateAta<'info>>, - params: CreateAtaParams, - ) -> Result<()> { - // ATA creation is handled by the macro-generated LightFinalize implementation. - Ok(()) - } -} diff --git a/program-examples/anchor/macros/programs/create-ata/tests/test.rs b/program-examples/anchor/macros/programs/create-ata/tests/test.rs deleted file mode 100644 index 1e08112..0000000 --- a/program-examples/anchor/macros/programs/create-ata/tests/test.rs +++ /dev/null @@ -1,156 +0,0 @@ -use anchor_lang::{InstructionData, ToAccountMetas}; -use light_client::indexer::{AddressWithTree, Indexer}; -use light_client::interface::{get_create_accounts_proof, InitializeRentFreeConfig}; -use light_program_test::program_test::{setup_mock_program_data, LightProgramTest}; -use light_program_test::{ProgramTestConfig, Rpc}; -use light_sdk_types::LIGHT_TOKEN_PROGRAM_ID; -use light_token::instruction::{ - CreateMint, CreateMintParams, COMPRESSIBLE_CONFIG_V1, RENT_SPONSOR, - derive_mint_compressed_address, derive_token_ata, find_mint_address, -}; -use light_token_anchor_create_ata::{CreateAtaParams, ID}; -use solana_sdk::{ - instruction::Instruction, - signature::Keypair, - signer::Signer, - system_program, -}; - -async fn setup_create_mint( - rpc: &mut (impl Rpc + Indexer), - payer: &Keypair, - mint_authority: solana_sdk::pubkey::Pubkey, - decimals: u8, -) -> (solana_sdk::pubkey::Pubkey, Keypair) { - let mint_seed = Keypair::new(); - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_mint_builder = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ); - let instruction = create_mint_builder.instruction().unwrap(); - - rpc.create_and_send_transaction(&[instruction], &payer.pubkey(), &[payer, &mint_seed]) - .await - .unwrap(); - - (mint, mint_seed) -} - -#[tokio::test] -async fn test_create_ata() { - let mut config = - ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_ata", ID)])); - config = config.with_light_protocol_events(); - - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let program_data_pda = setup_mock_program_data(&mut rpc, &payer, &ID); - - let (init_config_ix, _config_pda) = InitializeRentFreeConfig::new( - &ID, - &payer.pubkey(), - &program_data_pda, - RENT_SPONSOR, - payer.pubkey(), - ) - .build(); - - rpc.create_and_send_transaction(&[init_config_ix], &payer.pubkey(), &[&payer]) - .await - .expect("Initialize config should succeed"); - - let (mint_pda, _mint_seed) = setup_create_mint(&mut rpc, &payer, payer.pubkey(), 9).await; - - let (ata, ata_bump) = derive_token_ata(&payer.pubkey(), &mint_pda); - - let proof_result = get_create_accounts_proof(&rpc, &ID, vec![]) - .await - .unwrap(); - - let accounts = light_token_anchor_create_ata::accounts::CreateAta { - payer: payer.pubkey(), - mint: mint_pda, - owner: payer.pubkey(), - ata, - light_token_compressible_config: COMPRESSIBLE_CONFIG_V1, - light_token_rent_sponsor: RENT_SPONSOR, - light_token_program: LIGHT_TOKEN_PROGRAM_ID.into(), - system_program: system_program::ID, - }; - - let instruction_data = light_token_anchor_create_ata::instruction::CreateAta { - params: CreateAtaParams { - create_accounts_proof: proof_result.create_accounts_proof, - ata_bump, - }, - }; - - let ix = Instruction { - program_id: ID, - accounts: [ - accounts.to_account_metas(None), - proof_result.remaining_accounts, - ] - .concat(), - data: instruction_data.data(), - }; - - let sig = rpc - .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); - - let ata_account = rpc - .get_account(ata) - .await - .unwrap() - .expect("ATA should exist on-chain"); - - use light_token_interface::state::Token; - let token: Token = borsh::BorshDeserialize::deserialize(&mut &ata_account.data[..]) - .expect("Failed to deserialize Token"); - - assert_eq!(token.owner, payer.pubkey().to_bytes(), "ATA owner should match"); - assert_eq!(token.mint, mint_pda.to_bytes(), "ATA mint should match"); - assert_eq!(token.amount, 0, "ATA amount should be 0 initially"); -} diff --git a/program-examples/anchor/macros/programs/create-mint/Cargo.toml b/program-examples/anchor/macros/programs/create-mint/Cargo.toml deleted file mode 100644 index 3288ede..0000000 --- a/program-examples/anchor/macros/programs/create-mint/Cargo.toml +++ /dev/null @@ -1,49 +0,0 @@ -[package] -name = "light-token-anchor-create-mint" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_create_mint" - -[features] -no-entrypoint = [] -no-idl = [] -no-log-ix-name = [] -cpi = ["no-entrypoint"] -default = [] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] -test-sbf = [] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-sdk-types = { workspace = true } -light-sdk-macros = { workspace = true } -light-compressible = { workspace = true } -light-token = { workspace = true } -light-token-types = { workspace = true } -solana-program = { workspace = true } -solana-pubkey = { workspace = true } -solana-msg = { workspace = true } -solana-program-error = { workspace = true } -solana-account-info = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token = { workspace = true } -light-token-types = { workspace = true } -light-token-interface = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } -solana-instruction = { workspace = true } -solana-keypair = { workspace = true } -solana-pubkey = { workspace = true } -solana-signer = { workspace = true } -borsh = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/macros/programs/create-mint/src/lib.rs b/program-examples/anchor/macros/programs/create-mint/src/lib.rs deleted file mode 100644 index 4ee3943..0000000 --- a/program-examples/anchor/macros/programs/create-mint/src/lib.rs +++ /dev/null @@ -1,78 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_compressible::CreateAccountsProof; -use light_sdk::derive_light_cpi_signer; -use light_sdk_macros::{light_program, LightAccounts}; -use light_sdk_types::CpiSigner; - -declare_id!("JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j"); - -pub const LIGHT_CPI_SIGNER: CpiSigner = - derive_light_cpi_signer!("JD5N2ZwvCpdcJguF2zRHgpPdrBXf3R9kmhFC7aLALB6j"); - -pub const MINT_SIGNER_SEED: &[u8] = b"mint_signer"; - -#[derive(AnchorSerialize, AnchorDeserialize, Clone)] -pub struct CreateMintParams { - pub create_accounts_proof: CreateAccountsProof, - pub mint_signer_bump: u8, -} - -#[derive(Accounts, LightAccounts)] -#[instruction(params: CreateMintParams)] -pub struct CreateMint<'info> { - #[account(mut)] - pub fee_payer: Signer<'info>, - - pub authority: Signer<'info>, - - /// CHECK: PDA derived from authority - #[account( - seeds = [MINT_SIGNER_SEED, authority.key().as_ref()], - bump, - )] - pub mint_signer: UncheckedAccount<'info>, - - /// CHECK: Initialized by light_mint CPI - #[account(mut)] - #[light_account(init, - mint::signer = mint_signer, - mint::authority = fee_payer, - mint::decimals = 9, - mint::seeds = &[MINT_SIGNER_SEED, self.authority.to_account_info().key.as_ref(), &[params.mint_signer_bump]] - )] - pub mint: UncheckedAccount<'info>, - - /// CHECK: Compression config - pub compression_config: AccountInfo<'info>, - - /// CHECK: CToken config - pub light_token_compressible_config: AccountInfo<'info>, - - /// CHECK: CToken rent sponsor - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, - - /// CHECK: CToken program - pub light_token_program: AccountInfo<'info>, - - /// CHECK: CToken CPI authority - pub light_token_cpi_authority: AccountInfo<'info>, - - pub system_program: Program<'info, System>, -} - -#[light_program] -#[program] -pub mod light_token_anchor_create_mint { - use super::*; - - #[allow(unused_variables)] - pub fn create_mint<'info>( - ctx: Context<'_, '_, '_, 'info, CreateMint<'info>>, - params: CreateMintParams, - ) -> Result<()> { - Ok(()) - } -} diff --git a/program-examples/anchor/macros/programs/create-mint/tests/test.rs b/program-examples/anchor/macros/programs/create-mint/tests/test.rs deleted file mode 100644 index 2966517..0000000 --- a/program-examples/anchor/macros/programs/create-mint/tests/test.rs +++ /dev/null @@ -1,139 +0,0 @@ -//! Integration tests for Light mint creation using #[light_account(init, mint::...)] macro. - -use anchor_lang::{InstructionData, ToAccountMetas}; -use light_client::interface::{ - get_create_accounts_proof, CreateAccountsProofInput, InitializeRentFreeConfig, -}; -use light_program_test::{ - program_test::{setup_mock_program_data, LightProgramTest}, - ProgramTestConfig, Rpc, -}; -use light_sdk_types::LIGHT_TOKEN_PROGRAM_ID; -use light_token::instruction::{find_mint_address, COMPRESSIBLE_CONFIG_V1, RENT_SPONSOR}; -use solana_instruction::Instruction; -use solana_keypair::Keypair; -use solana_pubkey::Pubkey; -use solana_signer::Signer; - -use light_token_anchor_create_mint::{CreateMintParams, MINT_SIGNER_SEED, ID}; - -/// Test creating a Light mint using the #[light_account(init, mint::...)] macro. -#[tokio::test] -async fn test_create_mint() { - let program_id = ID; - let mut config = ProgramTestConfig::new_v2( - true, - Some(vec![("light_token_anchor_create_mint", program_id)]), - ); - config = config.with_light_protocol_events(); - - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - // Setup program data for rent-free config - let program_data_pda = setup_mock_program_data(&mut rpc, &payer, &program_id); - - // Initialize rent-free config - let (init_config_ix, config_pda) = InitializeRentFreeConfig::new( - &program_id, - &payer.pubkey(), - &program_data_pda, - RENT_SPONSOR, - payer.pubkey(), - ) - .build(); - - rpc.create_and_send_transaction(&[init_config_ix], &payer.pubkey(), &[&payer]) - .await - .expect("Initialize config should succeed"); - - // Authority keypair (mint authority) - let authority = Keypair::new(); - - // Derive mint signer PDA - let (mint_signer_pda, mint_signer_bump) = Pubkey::find_program_address( - &[MINT_SIGNER_SEED, authority.pubkey().as_ref()], - &program_id, - ); - - // Derive mint PDA from mint signer - let (mint_pda, _) = find_mint_address(&mint_signer_pda); - - // Get proof for the mint - let proof_result = get_create_accounts_proof( - &rpc, - &program_id, - vec![CreateAccountsProofInput::mint(mint_signer_pda)], - ) - .await - .unwrap(); - - println!("Light Mint test setup completed"); - println!("Program ID: {:?}", program_id); - println!( - "Mint Signer PDA: {:?} (bump: {})", - mint_signer_pda, mint_signer_bump - ); - println!("Light Mint PDA: {:?}", mint_pda); - - // Build create_mint instruction - let accounts = light_token_anchor_create_mint::accounts::CreateMint { - fee_payer: payer.pubkey(), - authority: authority.pubkey(), - mint_signer: mint_signer_pda, - mint: mint_pda, - compression_config: config_pda, - light_token_compressible_config: COMPRESSIBLE_CONFIG_V1, - rent_sponsor: RENT_SPONSOR, - light_token_program: LIGHT_TOKEN_PROGRAM_ID.into(), - light_token_cpi_authority: light_token_types::CPI_AUTHORITY_PDA.into(), - system_program: solana_sdk::system_program::ID, - }; - - let instruction_data = light_token_anchor_create_mint::instruction::CreateMint { - params: CreateMintParams { - create_accounts_proof: proof_result.create_accounts_proof, - mint_signer_bump, - }, - }; - - let instruction = Instruction { - program_id, - accounts: [ - accounts.to_account_metas(None), - proof_result.remaining_accounts, - ] - .concat(), - data: instruction_data.data(), - }; - - rpc.create_and_send_transaction(&[instruction], &payer.pubkey(), &[&payer, &authority]) - .await - .expect("CreateMint should succeed"); - - // Verify mint exists on-chain - let mint_account = rpc - .get_account(mint_pda) - .await - .unwrap() - .expect("Mint should exist on-chain"); - - // Parse and verify mint data - use light_token_interface::state::Mint; - let mint: Mint = borsh::BorshDeserialize::deserialize(&mut &mint_account.data[..]) - .expect("Failed to deserialize Mint"); - - // Verify decimals match what was specified in #[light_account(init)] - assert_eq!(mint.base.decimals, 9, "Mint should have 9 decimals"); - - // Verify mint authority - assert_eq!( - mint.base.mint_authority, - Some(payer.pubkey().to_bytes().into()), - "Mint authority should be fee_payer" - ); - - println!("Light Mint created and verified successfully!"); - println!("Mint account size: {} bytes", mint_account.data.len()); - println!("Mint PDA: {}", mint_pda); -} diff --git a/program-examples/anchor/macros/programs/create-token-account/Cargo.toml b/program-examples/anchor/macros/programs/create-token-account/Cargo.toml deleted file mode 100644 index dac4327..0000000 --- a/program-examples/anchor/macros/programs/create-token-account/Cargo.toml +++ /dev/null @@ -1,43 +0,0 @@ -[package] -name = "light-token-anchor-create-token-account" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_create_token_account" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-compressible = { workspace = true } -light-sdk = { workspace = true } -light-sdk-macros = { workspace = true } -light-sdk-types = { workspace = true } -light-token = { workspace = true } -light-token-types = { workspace = true } -solana-pubkey = { workspace = true } -solana-msg = { workspace = true } -solana-program-error = { workspace = true } -solana-account-info = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } -solana-keypair = { workspace = true } -solana-pubkey = { workspace = true } -solana-signer = { workspace = true } -solana-instruction = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/macros/programs/create-token-account/src/lib.rs b/program-examples/anchor/macros/programs/create-token-account/src/lib.rs deleted file mode 100644 index 87f8d00..0000000 --- a/program-examples/anchor/macros/programs/create-token-account/src/lib.rs +++ /dev/null @@ -1,102 +0,0 @@ -//! Example: Create a compressed token account using the Light SDK macros. -//! -//! Demonstrates the `#[light_account(init, token, ...)]` macro attribute -//! for creating compressed token accounts with automatic CPI generation. -//! -//! This example creates a token vault owned by a PDA authority. - -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_compressible::CreateAccountsProof; -use light_sdk::derive_light_cpi_signer; -use light_sdk_macros::{light_program, LightAccounts}; -use light_sdk_types::CpiSigner; -use light_token::instruction::{COMPRESSIBLE_CONFIG_V1, RENT_SPONSOR as LIGHT_TOKEN_RENT_SPONSOR}; - -declare_id!("FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn"); - -pub const LIGHT_CPI_SIGNER: CpiSigner = - derive_light_cpi_signer!("FCczCsMBwaqUSqunWPGQjNP55EeqYrkSwYdLmztgmvKn"); - -/// Seed for the token account authority PDA. -pub const TOKEN_AUTH_SEED: &[u8] = b"token_auth"; -/// Seed for the token account PDA. -pub const TOKEN_ACCOUNT_SEED: &[u8] = b"token_account"; - -#[derive(AnchorSerialize, AnchorDeserialize, Clone)] -pub struct CreateTokenAccountParams { - pub create_accounts_proof: CreateAccountsProof, - /// Bump for the token account PDA (needed for invoke_signed). - pub account_bump: u8, -} - -/// Accounts for creating a compressed token account using the Light SDK macros. -/// -/// The token account is owned by a PDA authority derived from the program. -#[derive(Accounts, LightAccounts)] -#[instruction(params: CreateTokenAccountParams)] -pub struct CreateTokenAccountAccounts<'info> { - #[account(mut)] - pub payer: Signer<'info>, - - /// CHECK: Token mint for the account. - pub mint: AccountInfo<'info>, - - /// CHECK: PDA authority that owns the token account. - #[account( - seeds = [TOKEN_AUTH_SEED], - bump, - )] - pub token_authority: UncheckedAccount<'info>, - - /// CHECK: Initialized by light_account macro. - #[account( - mut, - seeds = [TOKEN_ACCOUNT_SEED, mint.key().as_ref()], - bump, - )] - #[light_account(init, token, - token::authority = [TOKEN_ACCOUNT_SEED, self.mint.key()], - token::mint = mint, - token::owner = token_authority, - token::bump = params.account_bump - )] - pub account: UncheckedAccount<'info>, - - /// CHECK: Light token compressible config. - #[account(address = COMPRESSIBLE_CONFIG_V1)] - pub light_token_compressible_config: AccountInfo<'info>, - - /// CHECK: Light token rent sponsor. - #[account(mut, address = LIGHT_TOKEN_RENT_SPONSOR)] - pub light_token_rent_sponsor: AccountInfo<'info>, - - /// CHECK: Light token CPI authority (required for token account creation). - pub light_token_cpi_authority: AccountInfo<'info>, - - /// CHECK: Light token program for CPI. - pub light_token_program: AccountInfo<'info>, - - pub system_program: Program<'info, System>, -} - -#[light_program] -#[program] -pub mod light_token_anchor_create_token_account { - use super::*; - - /// Create a compressed token account. - /// - /// The token account is created by the LightFinalize trait implementation - /// generated by the `#[light_account(init, token, ...)]` macro. - /// The account is owned by the `token_authority` PDA. - #[allow(unused_variables)] - pub fn create_token_account<'info>( - ctx: Context<'_, '_, '_, 'info, CreateTokenAccountAccounts<'info>>, - params: CreateTokenAccountParams, - ) -> Result<()> { - // Token account creation is handled by the macro-generated LightFinalize implementation. - Ok(()) - } -} diff --git a/program-examples/anchor/macros/programs/create-token-account/tests/test.rs b/program-examples/anchor/macros/programs/create-token-account/tests/test.rs deleted file mode 100644 index 22cb83a..0000000 --- a/program-examples/anchor/macros/programs/create-token-account/tests/test.rs +++ /dev/null @@ -1,174 +0,0 @@ -//! Integration test for compressed token account creation using macros. - -use anchor_lang::{InstructionData, ToAccountMetas}; -use light_client::indexer::AddressWithTree; -use light_client::interface::{get_create_accounts_proof, InitializeRentFreeConfig}; -use light_program_test::program_test::{setup_mock_program_data, LightProgramTest}; -use light_program_test::{Indexer, ProgramTestConfig, Rpc}; -use light_sdk_types::LIGHT_TOKEN_PROGRAM_ID; -use light_token::instruction::{ - CreateMint, CreateMintParams, COMPRESSIBLE_CONFIG_V1, RENT_SPONSOR, - derive_mint_compressed_address, find_mint_address, -}; -use light_token_anchor_create_token_account::{ - CreateTokenAccountParams, TOKEN_AUTH_SEED, TOKEN_ACCOUNT_SEED, ID, -}; -use solana_instruction::Instruction; -use solana_keypair::Keypair; -use solana_pubkey::Pubkey; -use solana_signer::Signer; - -/// Setup helper: Creates a compressed mint directly using the ctoken SDK. -/// Returns (mint_pda, mint_seed_keypair) -async fn setup_create_mint( - rpc: &mut (impl Rpc + Indexer), - payer: &Keypair, - mint_authority: Pubkey, - decimals: u8, -) -> (Pubkey, Keypair) { - let mint_seed = Keypair::new(); - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_mint_builder = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ); - let instruction = create_mint_builder.instruction().unwrap(); - - rpc.create_and_send_transaction(&[instruction], &payer.pubkey(), &[payer, &mint_seed]) - .await - .unwrap(); - - (mint, mint_seed) -} - -#[tokio::test] -async fn test_create_token_account() { - let mut config = - ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_token_account", ID)])); - config = config.with_light_protocol_events(); - - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let program_data_pda = setup_mock_program_data(&mut rpc, &payer, &ID); - - let (init_config_ix, _config_pda) = InitializeRentFreeConfig::new( - &ID, - &payer.pubkey(), - &program_data_pda, - RENT_SPONSOR, - payer.pubkey(), - ) - .build(); - - rpc.create_and_send_transaction(&[init_config_ix], &payer.pubkey(), &[&payer]) - .await - .expect("Initialize config should succeed"); - - // Create a mint first - let (mint_pda, _mint_seed) = setup_create_mint(&mut rpc, &payer, payer.pubkey(), 9).await; - - // Derive the token authority PDA (owner of the token account) - let (token_authority, _auth_bump) = Pubkey::find_program_address(&[TOKEN_AUTH_SEED], &ID); - - // Derive the token account PDA - let (account_pda, account_bump) = - Pubkey::find_program_address(&[TOKEN_ACCOUNT_SEED, mint_pda.as_ref()], &ID); - - // Get proof for account creation - let proof_result = get_create_accounts_proof(&rpc, &ID, vec![]) - .await - .unwrap(); - - let accounts = light_token_anchor_create_token_account::accounts::CreateTokenAccountAccounts { - payer: payer.pubkey(), - mint: mint_pda, - token_authority, - account: account_pda, - light_token_compressible_config: COMPRESSIBLE_CONFIG_V1, - light_token_rent_sponsor: RENT_SPONSOR, - light_token_cpi_authority: light_token_types::CPI_AUTHORITY_PDA.into(), - light_token_program: LIGHT_TOKEN_PROGRAM_ID.into(), - system_program: solana_sdk::system_program::ID, - }; - - let instruction_data = light_token_anchor_create_token_account::instruction::CreateTokenAccount { - params: CreateTokenAccountParams { - create_accounts_proof: proof_result.create_accounts_proof, - account_bump, - }, - }; - - let ix = Instruction { - program_id: ID, - accounts: [ - accounts.to_account_metas(None), - proof_result.remaining_accounts, - ] - .concat(), - data: instruction_data.data(), - }; - - let sig = rpc - .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); - - // Verify token account exists on-chain - let token_account = rpc - .get_account(account_pda) - .await - .unwrap() - .expect("Token account should exist on-chain"); - - // Parse and verify token data - use light_token_interface::state::Token; - let token: Token = borsh::BorshDeserialize::deserialize(&mut &token_account.data[..]) - .expect("Failed to deserialize Token"); - - assert_eq!( - token.owner, - token_authority.to_bytes(), - "Token owner should be token_authority PDA" - ); - assert_eq!(token.mint, mint_pda.to_bytes(), "Token mint should match"); - assert_eq!(token.amount, 0, "Token amount should be 0 initially"); -} diff --git a/program-examples/anchor/sdk/Anchor.toml b/program-examples/anchor/sdk/Anchor.toml deleted file mode 100644 index 0d8edef..0000000 --- a/program-examples/anchor/sdk/Anchor.toml +++ /dev/null @@ -1,29 +0,0 @@ -[toolchain] - -[features] -resolution = true -skip-lint = false - -[programs.devnet] -light_token_anchor_approve = "37XmzKqSG2VD1ZBvzyfbt1HN1mT1bqVAmfzX2ziB3KT1" -light_token_anchor_burn = "2TXVn8AqjfyeJvmFBD3kHJmh6fWkC4HNB5T76BmLKV5c" -light_token_anchor_close = "GXLCuNhnkRVp596eCdbNsZ9ua1ePbKbb344VKS7V3zQQ" -light_token_anchor_create_ata = "35MukgdfpNUbPMhTmEk63ECV8vjgpNVFRH9nP8ovMN58" -light_token_anchor_create_mint = "A1rJEoepgKYWZYZ8KVFpxgeeRGwBrU7xk8S39srjVkUX" -light_token_anchor_create_token_account = "zXK1CnWj4WFfFHCArxxr4sh3Qqx2p3oui8ahqpjArgS" -light_token_anchor_freeze = "JBMzMJX4sqCQfNVbosP2oqP1KZ5ZDWiwYTrupk687qXZ" -light_token_anchor_mint_to = "8bXEVmHLtAVqDLJp1dYWAZ61WQmqQKoTQ8LpPbRoUDCp" -light_token_anchor_revoke = "G3ph4MK5qaSdxYnfxToETg31AHEMMqVhPuMRgBhk38tQ" -light_token_anchor_thaw = "7j94EF5hSkDLf7R26bjrd8Qc6s3oLAQpcKiF3re8JYw9" -light_token_anchor_transfer_checked = "HXmfewpozFdxhM8BayL9v5541gwoGMXTrUoip5KySs2f" -light_token_anchor_transfer_interface = "3rb6sG4jiYNLZC8jo8kLsFHpxr2Ci8e8Hh8UmeCMZmUV" - -[registry] -url = "https://api.apr.dev" - -[provider] -cluster = "devnet" -wallet = "~/.config/solana/id.json" - -[scripts] -test = "cargo test-sbf" diff --git a/program-examples/anchor/sdk/Cargo.lock b/program-examples/anchor/sdk/Cargo.lock deleted file mode 100644 index 35a54be..0000000 --- a/program-examples/anchor/sdk/Cargo.lock +++ /dev/null @@ -1,8963 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[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 = "agave-feature-set" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a2c365c0245cbb8959de725fc2b44c754b673fdf34c9a7f9d4a25c35a7bf1" -dependencies = [ - "ahash", - "solana-epoch-schedule", - "solana-hash", - "solana-pubkey", - "solana-sha256-hasher", - "solana-svm-feature-set", -] - -[[package]] -name = "agave-precompiles" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d60d73657792af7f2464e9181d13c3979e94bb09841d9ffa014eef4ef0492b77" -dependencies = [ - "agave-feature-set", - "bincode", - "digest 0.10.7", - "ed25519-dalek", - "libsecp256k1", - "openssl", - "sha3", - "solana-ed25519-program", - "solana-message", - "solana-precompile-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-secp256k1-program", - "solana-secp256r1-program", -] - -[[package]] -name = "agave-reserved-account-keys" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8289c8a8a2ef5aa10ce49a070f360f4e035ee3410b8d8f3580fb39d8cf042581" -dependencies = [ - "agave-feature-set", - "solana-pubkey", - "solana-sdk-ids", -] - -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "getrandom 0.3.4", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "aligned-sized" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a526ec4434d531d488af59fe866f36b310fe8906691c75dffa664450a3800a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "anchor-attribute-access-control" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f70fd141a4d18adf11253026b32504f885447048c7494faf5fa83b01af9c0cf" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-account" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715a261c57c7679581e06f07a74fa2af874ac30f86bd8ea07cca4a7e5388a064" -dependencies = [ - "anchor-syn", - "bs58", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-constant" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730d6df8ae120321c5c25e0779e61789e4b70dc8297102248902022f286102e4" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-error" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27e6e449cc3a37b2880b74dcafb8e5a17b954c0e58e376432d7adc646fb333ef" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-event" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7710e4c54adf485affcd9be9adec5ef8846d9c71d7f31e16ba86ff9fc1dd49f" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-program" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ecfd49b2aeadeb32f35262230db402abed76ce87e27562b34f61318b2ec83c" -dependencies = [ - "anchor-lang-idl", - "anchor-syn", - "anyhow", - "bs58", - "heck 0.3.3", - "proc-macro2", - "quote", - "serde_json", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-accounts" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be89d160793a88495af462a7010b3978e48e30a630c91de47ce2c1d3cb7a6149" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-serde" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abc6ee78acb7bfe0c2dd2abc677aaa4789c0281a0c0ef01dbf6fe85e0fd9e6e4" -dependencies = [ - "anchor-syn", - "borsh-derive-internal", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-space" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134a01c0703f6fd355a0e472c033f6f3e41fac1ef6e370b20c50f4c8d022cea7" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-lang" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6bab117055905e930f762c196e08f861f8dfe7241b92cee46677a3b15561a0a" -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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e8599d21995f68e296265aa5ab0c3cef582fd58afec014d01bd0bce18a4418" -dependencies = [ - "anchor-lang-idl-spec", - "anyhow", - "heck 0.3.3", - "regex", - "serde", - "serde_json", - "sha2 0.10.9", -] - -[[package]] -name = "anchor-lang-idl-spec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" -dependencies = [ - "anyhow", - "serde", -] - -[[package]] -name = "anchor-syn" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dc7a6d90cc643df0ed2744862cdf180587d1e5d28936538c18fc8908489ed67" -dependencies = [ - "anyhow", - "bs58", - "cargo_toml", - "heck 0.3.3", - "proc-macro2", - "quote", - "serde", - "serde_json", - "sha2 0.10.9", - "syn 1.0.109", - "thiserror 1.0.69", -] - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] -name = "anyhow" -version = "1.0.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" - -[[package]] -name = "ark-bn254" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" -dependencies = [ - "ark-ec 0.4.2", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bn254" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" -dependencies = [ - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-ec" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" -dependencies = [ - "ark-ff 0.4.2", - "ark-poly 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", - "itertools 0.10.5", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-poly 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe 0.6.0", - "fnv", - "hashbrown 0.15.2", - "itertools 0.13.0", - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "digest 0.10.7", - "itertools 0.10.5", - "num-bigint 0.4.6", - "num-traits", - "paste", - "rustc_version", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" -dependencies = [ - "ark-ff-asm 0.5.0", - "ark-ff-macros 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "educe 0.6.0", - "itertools 0.13.0", - "num-bigint 0.4.6", - "num-traits", - "paste", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" -dependencies = [ - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-poly" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" -dependencies = [ - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", -] - -[[package]] -name = "ark-poly" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe 0.6.0", - "fnv", - "hashbrown 0.15.2", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-serialize-derive 0.4.2", - "ark-std 0.4.0", - "digest 0.10.7", - "num-bigint 0.4.6", -] - -[[package]] -name = "ark-serialize" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" -dependencies = [ - "ark-serialize-derive 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "num-bigint 0.4.6", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "ark-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" -dependencies = [ - "num-traits", - "rand 0.8.5", - "rayon", -] - -[[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 = "ascii" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" - -[[package]] -name = "async-compression" -version = "0.4.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" -dependencies = [ - "compression-codecs", - "compression-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[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 = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" -dependencies = [ - "serde_core", -] - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "blake3" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", - "cpufeatures", - "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.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" -dependencies = [ - "borsh-derive 1.6.0", - "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.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" -dependencies = [ - "once_cell", - "proc-macro-crate 3.4.0", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[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 = "brotli" -version = "8.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[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.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" - -[[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 = "bytecount" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" - -[[package]] -name = "bytemuck" -version = "1.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" - -[[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.23", -] - -[[package]] -name = "cc" -version = "1.2.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583" -dependencies = [ - "find-msvc-tools", - "jobserver", - "libc", - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "cfg_eval" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "chrono" -version = "0.4.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-link", -] - -[[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 = "combine" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" -dependencies = [ - "ascii", - "byteorder", - "either", - "memchr", - "unreachable", -] - -[[package]] -name = "compression-codecs" -version = "0.4.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" -dependencies = [ - "brotli", - "compression-core", - "flate2", - "memchr", -] - -[[package]] -name = "compression-core" -version = "0.4.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" - -[[package]] -name = "console" -version = "0.15.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" -dependencies = [ - "encode_unicode", - "libc", - "once_cell", - "unicode-width", - "windows-sys 0.59.0", -] - -[[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.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", -] - -[[package]] -name = "crypto-mac" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -dependencies = [ - "generic-array", - "subtle", -] - -[[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 = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - -[[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.114", -] - -[[package]] -name = "darling" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.114", -] - -[[package]] -name = "darling_macro" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "deranged" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" -dependencies = [ - "powerfmt", - "serde_core", -] - -[[package]] -name = "derivation-path" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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 = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "eager" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" - -[[package]] -name = "ed25519" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" -dependencies = [ - "signature", -] - -[[package]] -name = "ed25519-dalek" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" -dependencies = [ - "curve25519-dalek 3.2.0", - "ed25519", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "zeroize", -] - -[[package]] -name = "ed25519-dalek-bip32" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" -dependencies = [ - "derivation-path", - "ed25519-dalek", - "hmac 0.12.1", - "sha2 0.10.9", -] - -[[package]] -name = "educe" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" -dependencies = [ - "enum-ordinalize 3.1.15", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "educe" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" -dependencies = [ - "enum-ordinalize 4.3.2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - -[[package]] -name = "encode_unicode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" - -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "enum-iterator" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" -dependencies = [ - "enum-iterator-derive", -] - -[[package]] -name = "enum-iterator-derive" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "enum-ordinalize" -version = "3.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "enum-ordinalize" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" -dependencies = [ - "enum-ordinalize-derive", -] - -[[package]] -name = "enum-ordinalize-derive" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "env_logger" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[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 = "find-msvc-tools" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" - -[[package]] -name = "five8" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" -dependencies = [ - "five8_core", -] - -[[package]] -name = "five8_const" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" -dependencies = [ - "five8_core", -] - -[[package]] -name = "five8_core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" - -[[package]] -name = "flate2" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[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 = "gethostname" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "r-efi", - "wasip2", - "wasm-bindgen", -] - -[[package]] -name = "groth16-solana" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6d1ffb18dbf5cfc60b11bd7da88474c672870247c1e5b498619bcb6ba3d8f5" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "num-bigint 0.4.6", - "solana-bn254", - "thiserror 1.0.69", -] - -[[package]] -name = "h2" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.13.0", - "slab", - "tokio", - "tokio-util 0.7.18", - "tracing", -] - -[[package]] -name = "h2" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http 1.4.0", - "indexmap 2.13.0", - "slab", - "tokio", - "tokio-util 0.7.18", - "tracing", -] - -[[package]] -name = "hash32" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[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" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hmac" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" -dependencies = [ - "crypto-mac", - "digest 0.9.0", -] - -[[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 = "hmac-drbg" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" -dependencies = [ - "digest 0.9.0", - "generic-array", - "hmac 0.8.1", -] - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http 1.4.0", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http 1.4.0", - "http-body 1.0.1", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "humantime" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" - -[[package]] -name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.5.10", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "h2 0.4.13", - "http 1.4.0", - "http-body 1.0.1", - "httparse", - "itoa", - "pin-project-lite", - "pin-utils", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" -dependencies = [ - "futures-util", - "http 0.2.12", - "hyper 0.14.32", - "rustls 0.21.12", - "tokio", - "tokio-rustls 0.24.1", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" -dependencies = [ - "http 1.4.0", - "hyper 1.8.1", - "hyper-util", - "rustls 0.23.36", - "rustls-pki-types", - "tokio", - "tokio-rustls 0.26.4", - "tower-service", - "webpki-roots 1.0.5", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper 0.14.32", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper 1.8.1", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http 1.4.0", - "http-body 1.0.1", - "hyper 1.8.1", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2 0.6.2", - "system-configuration 0.6.1", - "tokio", - "tower-service", - "tracing", - "windows-registry", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" - -[[package]] -name = "icu_properties" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" - -[[package]] -name = "icu_provider" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" -dependencies = [ - "equivalent", - "hashbrown 0.16.1", - "serde", - "serde_core", -] - -[[package]] -name = "indicatif" -version = "0.17.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" -dependencies = [ - "console", - "number_prefix", - "portable-atomic", - "unicode-width", - "web-time", -] - -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "generic-array", -] - -[[package]] -name = "ipnet" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" - -[[package]] -name = "iri-string" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" - -[[package]] -name = "jobserver" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" -dependencies = [ - "getrandom 0.3.4", - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "jsonrpc-core" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" -dependencies = [ - "futures", - "futures-executor", - "futures-util", - "log", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "kaigan" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ba15de5aeb137f0f65aa3bf82187647f1285abfe5b20c80c2c37f7007ad519a" -dependencies = [ - "borsh 0.10.4", - "serde", -] - -[[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.180" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" - -[[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", - "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "typenum", -] - -[[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 = "light-account-checks" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f20b8640212dd450e18d452a247e28d8ba6fdce3c713fd8b69f1e95874d1b7ab" -dependencies = [ - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sysvar", - "thiserror 2.0.18", -] - -[[package]] -name = "light-array-map" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bdd13b18028ac9d80d0a987551c0dad7fe81be8140e87cc9d568b80f3728203" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "light-batched-merkle-tree" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01e838c523b49371097f948cd5662bd9a89d9dca037fb61fd38001e99f485702" -dependencies = [ - "aligned-sized", - "borsh 0.10.4", - "light-account-checks", - "light-bloom-filter", - "light-compressed-account", - "light-hasher", - "light-macros", - "light-merkle-tree-metadata", - "light-verifier", - "light-zero-copy", - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sysvar", - "thiserror 2.0.18", - "zerocopy", -] - -[[package]] -name = "light-bloom-filter" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b8cf734ccf5fbc1f5fed8e5308b57ebde6774d9304c167bcb0de2854412d8" -dependencies = [ - "bitvec", - "num-bigint 0.4.6", - "solana-nostd-keccak", - "solana-program-error", - "thiserror 2.0.18", -] - -[[package]] -name = "light-bounded-vec" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58cfa375d028164719e3ffef93d2e5c27855cc8a5bb5bf257b868d17c12a3e66" -dependencies = [ - "bytemuck", - "memoffset", - "solana-program-error", - "thiserror 1.0.69", -] - -[[package]] -name = "light-client" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33203f596d48d28d1cb67dee5762b151e0073207a5e828c63ec68f9efb9a5ee8" -dependencies = [ - "anchor-lang", - "async-trait", - "base64 0.13.1", - "borsh 0.10.4", - "bs58", - "futures", - "lazy_static", - "light-compressed-account", - "light-compressible", - "light-concurrent-merkle-tree", - "light-event", - "light-hasher", - "light-indexed-merkle-tree", - "light-merkle-tree-metadata", - "light-prover-client", - "light-sdk", - "light-token", - "light-token-interface", - "litesvm", - "num-bigint 0.4.6", - "photon-api", - "rand 0.8.5", - "smallvec", - "solana-account", - "solana-account-decoder-client-types", - "solana-address-lookup-table-interface", - "solana-banks-client", - "solana-clock", - "solana-commitment-config", - "solana-compute-budget-interface", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-program-error", - "solana-pubkey", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-signature", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status-client-types", - "spl-pod", - "spl-token-2022-interface", - "thiserror 2.0.18", - "tokio", - "tracing", -] - -[[package]] -name = "light-compressed-account" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c3537bbad9df133ca97fc191b164bba93dba1de4da01a92d979ef63f8ce106" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-hasher", - "light-macros", - "light-poseidon 0.3.0", - "light-program-profiler", - "light-zero-copy", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "thiserror 2.0.18", - "tinyvec", - "zerocopy", -] - -[[package]] -name = "light-compressible" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00d1dc14271907009f4ca23ae99c49279f7d2acc5a83f0f8d7362834b37e2e16" -dependencies = [ - "aligned-sized", - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-account-checks", - "light-compressed-account", - "light-hasher", - "light-macros", - "light-program-profiler", - "light-zero-copy", - "pinocchio-pubkey", - "solana-pubkey", - "solana-rent", - "thiserror 2.0.18", - "zerocopy", -] - -[[package]] -name = "light-concurrent-merkle-tree" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db96f47253a0907aaa46dac15cecb27b5510130e48da0b36690dcd2e99a6d558" -dependencies = [ - "borsh 0.10.4", - "light-bounded-vec", - "light-hasher", - "memoffset", - "solana-program-error", - "thiserror 2.0.18", -] - -[[package]] -name = "light-event" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4bae725ee1d4d944d442ac0bfdf2031b1b2379c04c7e39c475277aaaea08fb1" -dependencies = [ - "borsh 0.10.4", - "light-compressed-account", - "light-hasher", - "light-zero-copy", - "thiserror 2.0.18", -] - -[[package]] -name = "light-hasher" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c822662e6e109bac0e132a43fd52a4ef684811245a794e048cf9cda001e934c8" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "borsh 0.10.4", - "light-poseidon 0.3.0", - "num-bigint 0.4.6", - "sha2 0.10.9", - "sha3", - "solana-program-error", - "thiserror 2.0.18", - "tinyvec", -] - -[[package]] -name = "light-indexed-array" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f14f984030d86b6f07bd8f5ae04e2c40fcd0c3bdfcc7a291fff1ed59c9e6554" -dependencies = [ - "light-hasher", - "num-bigint 0.4.6", - "num-traits", - "thiserror 2.0.18", -] - -[[package]] -name = "light-indexed-merkle-tree" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0824755289075f28de2820fc7d4ec4e6b9e99d404e033c07338b91cce8c71fb8" -dependencies = [ - "light-bounded-vec", - "light-concurrent-merkle-tree", - "light-hasher", - "light-merkle-tree-reference", - "num-bigint 0.4.6", - "num-traits", - "solana-program-error", - "thiserror 2.0.18", -] - -[[package]] -name = "light-instruction-decoder" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f4bd98e842f21b754ec28020a56de37cb0b1089952ef24340d21c2d5afd5c5" -dependencies = [ - "borsh 0.10.4", - "bs58", - "light-compressed-account", - "light-instruction-decoder-derive", - "light-sdk-types", - "light-token-interface", - "serde", - "solana-instruction", - "solana-pubkey", - "solana-signature", - "tabled", -] - -[[package]] -name = "light-instruction-decoder-derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2035d04a0a1590da05634efcac149a2ac852565e28c9a55bd07a6620c0e90bff" -dependencies = [ - "bs58", - "darling", - "heck 0.5.0", - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.114", -] - -[[package]] -name = "light-macros" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "179ac51cadc1d0ca047b4d6265a7cc245ca3affc16a20a2749585aa6464d39c2" -dependencies = [ - "bs58", - "proc-macro2", - "quote", - "solana-pubkey", - "syn 2.0.114", -] - -[[package]] -name = "light-merkle-tree-metadata" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c2e63e8345dcfb80efac69136fdcc6c36a12354675aca6e3daf13ec40422d1" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-compressed-account", - "solana-msg", - "solana-program-error", - "solana-sysvar", - "thiserror 2.0.18", - "zerocopy", -] - -[[package]] -name = "light-merkle-tree-reference" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8d480f62ca32b38a6231bbc5310d693f91d6b5bdcc18bb13c2d9aab7a1c90e8" -dependencies = [ - "light-hasher", - "light-indexed-array", - "num-bigint 0.4.6", - "num-traits", - "thiserror 2.0.18", -] - -[[package]] -name = "light-poseidon" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" -dependencies = [ - "ark-bn254 0.4.0", - "ark-ff 0.4.2", - "num-bigint 0.4.6", - "thiserror 1.0.69", -] - -[[package]] -name = "light-poseidon" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3d87542063daaccbfecd78b60f988079b6ec4e089249658b9455075c78d42" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "num-bigint 0.4.6", - "thiserror 1.0.69", -] - -[[package]] -name = "light-profiler-macro" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a8be18fe4de58a6f754caa74a3fbc6d8a758a26f1f3c24d5b0f5b55df5f5408" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "light-program-profiler" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1d345871581aebd8825868a3f08410290aa1cdddcb189ca7f7e588f61d79fcf" -dependencies = [ - "light-profiler-macro", -] - -[[package]] -name = "light-program-test" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85916a9da34a44971e1a30badaf04cb75213fbfa9f61a139ea6ebd0f021bdde" -dependencies = [ - "anchor-lang", - "async-trait", - "base64 0.13.1", - "borsh 0.10.4", - "bs58", - "bytemuck", - "chrono", - "light-client", - "light-compressed-account", - "light-compressible", - "light-event", - "light-hasher", - "light-indexed-array", - "light-indexed-merkle-tree", - "light-instruction-decoder", - "light-merkle-tree-metadata", - "light-merkle-tree-reference", - "light-prover-client", - "light-sdk", - "light-sdk-types", - "light-token", - "light-token-interface", - "light-zero-copy", - "litesvm", - "log", - "num-bigint 0.4.6", - "num-traits", - "photon-api", - "rand 0.8.5", - "reqwest 0.12.28", - "serde", - "serde_json", - "solana-account", - "solana-banks-client", - "solana-compute-budget", - "solana-instruction", - "solana-pubkey", - "solana-rpc-client-api", - "solana-sdk", - "solana-transaction", - "solana-transaction-status", - "solana-transaction-status-client-types", - "spl-token-2022 7.0.0", - "tabled", - "tokio", -] - -[[package]] -name = "light-prover-client" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd2195f4573628a8aaca37504cde1b1903b8ed20e2706acbad875b7d41acbeab" -dependencies = [ - "ark-bn254 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "light-compressed-account", - "light-hasher", - "light-indexed-array", - "light-sparse-merkle-tree", - "num-bigint 0.4.6", - "num-traits", - "reqwest 0.11.27", - "serde", - "serde_json", - "solana-bn254", - "thiserror 2.0.18", - "tokio", - "tracing", -] - -[[package]] -name = "light-sdk" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f523c64a6fcdafe6df81d647560770529896f2707be8ffcf048d909b7e2b30" -dependencies = [ - "anchor-lang", - "bincode", - "borsh 0.10.4", - "light-account-checks", - "light-compressed-account", - "light-compressible", - "light-hasher", - "light-macros", - "light-sdk-macros", - "light-sdk-types", - "light-zero-copy", - "num-bigint 0.4.6", - "solana-account-info", - "solana-clock", - "solana-cpi", - "solana-instruction", - "solana-loader-v3-interface", - "solana-msg", - "solana-program", - "solana-program-error", - "solana-pubkey", - "solana-system-interface", - "solana-sysvar", - "thiserror 2.0.18", -] - -[[package]] -name = "light-sdk-macros" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3d12bb13b84df21a4871dc0837aafc0b48464d3e9b17e2773c0719b6cc724c5" -dependencies = [ - "darling", - "light-hasher", - "light-sdk-types", - "proc-macro2", - "quote", - "solana-pubkey", - "syn 2.0.114", -] - -[[package]] -name = "light-sdk-types" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d8153b27d057ded7b2b6bbd78c643e3f20bd9a9718ca1a8d4183169ccd812c3" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-account-checks", - "light-compressed-account", - "light-hasher", - "light-macros", - "solana-msg", - "thiserror 2.0.18", -] - -[[package]] -name = "light-sparse-merkle-tree" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4251e79b6c63f4946572dcfd7623680ad0f9e0efe1a761a944733333c5645063" -dependencies = [ - "light-hasher", - "light-indexed-array", - "num-bigint 0.4.6", - "num-traits", - "thiserror 2.0.18", -] - -[[package]] -name = "light-token" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fd2e8ca6d7d70c77658010e1ae6ed6d4fe23e29054964b053f51e5c4676e49" -dependencies = [ - "anchor-lang", - "arrayvec", - "borsh 0.10.4", - "light-account-checks", - "light-batched-merkle-tree", - "light-compressed-account", - "light-compressible", - "light-macros", - "light-program-profiler", - "light-sdk", - "light-sdk-macros", - "light-sdk-types", - "light-token-interface", - "light-token-types", - "light-zero-copy", - "solana-account-info", - "solana-cpi", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "light-token-anchor-approve" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-burn" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-close" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-create-ata" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-create-mint" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-create-token-account" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-freeze" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-mint-to" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-revoke" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-thaw" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-transfer-checked" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-transfer-interface" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "light-token-types", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-interface" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46decebc2a13ec984e2ba7f1e691c0d46b9061875c6bdd12636b7c100a60e6c" -dependencies = [ - "aligned-sized", - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-array-map", - "light-compressed-account", - "light-compressible", - "light-hasher", - "light-macros", - "light-program-profiler", - "light-zero-copy", - "pinocchio", - "pinocchio-pubkey", - "solana-account-info", - "solana-pubkey", - "spl-pod", - "spl-token-2022 7.0.0", - "thiserror 2.0.18", - "tinyvec", - "zerocopy", -] - -[[package]] -name = "light-token-types" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "411481fe2e04b1241235c2572480c153c5669507e227f5e3327057b0d2ba5734" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-account-checks", - "light-compressed-account", - "light-macros", - "light-sdk-types", - "solana-msg", - "thiserror 2.0.18", -] - -[[package]] -name = "light-verifier" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecba4c14ac08b078a9d84033d628b12bb2577141f405140d506bacd392a830bc" -dependencies = [ - "groth16-solana", - "light-compressed-account", - "thiserror 2.0.18", -] - -[[package]] -name = "light-zero-copy" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5621fb515e14af46148699c0b65334aabe230a1d2cbd06736ccc7a408c8a4af" -dependencies = [ - "light-zero-copy-derive", - "solana-program-error", - "zerocopy", -] - -[[package]] -name = "light-zero-copy-derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c46425e5c7ab5203ff5c86ae2615b169cca55f9283f5f60f5dd74143be6934" -dependencies = [ - "lazy_static", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "linux-raw-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" - -[[package]] -name = "litemap" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" - -[[package]] -name = "litesvm" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bca37ac374948b348e29c74b324dc36f18bbbd1ccf80e2046d967521cbd143" -dependencies = [ - "agave-feature-set", - "agave-precompiles", - "agave-reserved-account-keys", - "ansi_term", - "bincode", - "indexmap 2.13.0", - "itertools 0.14.0", - "log", - "solana-account", - "solana-address-lookup-table-interface", - "solana-bpf-loader-program", - "solana-builtins", - "solana-clock", - "solana-compute-budget", - "solana-compute-budget-instruction", - "solana-epoch-rewards", - "solana-epoch-schedule", - "solana-fee", - "solana-fee-structure", - "solana-hash", - "solana-instruction", - "solana-instructions-sysvar", - "solana-keypair", - "solana-last-restart-slot", - "solana-loader-v3-interface", - "solana-loader-v4-interface", - "solana-log-collector", - "solana-message", - "solana-native-token 3.0.0", - "solana-nonce", - "solana-nonce-account", - "solana-precompile-error", - "solana-program-error", - "solana-program-runtime", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sha256-hasher", - "solana-signature", - "solana-signer", - "solana-slot-hashes", - "solana-slot-history", - "solana-stake-interface", - "solana-svm-callback", - "solana-svm-transaction", - "solana-system-interface", - "solana-system-program", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "solana-vote-program", - "thiserror 2.0.18", -] - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "lru-slab" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" - -[[package]] -name = "memchr" -version = "2.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" - -[[package]] -name = "memmap2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] - -[[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 = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "mio" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" -dependencies = [ - "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.61.2", -] - -[[package]] -name = "native-tls" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "num" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" -dependencies = [ - "num-bigint 0.2.6", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[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", - "serde", -] - -[[package]] -name = "num-complex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" - -[[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.114", -] - -[[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-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" -dependencies = [ - "autocfg", - "num-bigint 0.2.6", - "num-integer", - "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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" -dependencies = [ - "proc-macro-crate 3.4.0", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - -[[package]] -name = "openssl" -version = "0.10.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" -dependencies = [ - "bitflags 2.10.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - -[[package]] -name = "openssl-src" -version = "300.5.4+3.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" -dependencies = [ - "cc", -] - -[[package]] -name = "openssl-sys" -version = "0.9.111" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" -dependencies = [ - "cc", - "libc", - "openssl-src", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand 0.8.5", - "thiserror 1.0.69", -] - -[[package]] -name = "papergrid" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6978128c8b51d8f4080631ceb2302ab51e32cc6e8615f735ee2f83fd269ae3f1" -dependencies = [ - "bytecount", - "fnv", - "unicode-width", -] - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "percentage" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" -dependencies = [ - "num", -] - -[[package]] -name = "photon-api" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e572dba0c255f5b8176f15b9e849330d915a8927804f7f9702d5bbbc70e4a1ad" -dependencies = [ - "reqwest 0.12.28", - "serde", - "serde_derive", - "serde_json", - "serde_with", - "url", - "uuid", -] - -[[package]] -name = "pin-project" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pinocchio" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b971851087bc3699b001954ad02389d50c41405ece3548cbcafc88b3e20017a" - -[[package]] -name = "pinocchio-pubkey" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0225638cadcbebae8932cb7f49cb5da7c15c21beb19f048f05a5ca7d93f065" -dependencies = [ - "five8_const", - "pinocchio", - "sha2-const-stable", -] - -[[package]] -name = "pkg-config" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" - -[[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 = "portable-atomic" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" - -[[package]] -name = "potential_utf" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -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.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" -dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -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 = "qualifier_attr" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "quinn" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" -dependencies = [ - "bytes", - "cfg_aliases", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash", - "rustls 0.23.36", - "socket2 0.6.2", - "thiserror 2.0.18", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" -dependencies = [ - "bytes", - "getrandom 0.3.4", - "lru-slab", - "rand 0.9.2", - "ring", - "rustc-hash", - "rustls 0.23.36", - "rustls-pki-types", - "slab", - "thiserror 2.0.18", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2 0.6.2", - "tracing", - "windows-sys 0.60.2", -] - -[[package]] -name = "quote" -version = "1.0.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[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" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.5", -] - -[[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_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - -[[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.17", -] - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", -] - -[[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 = "rayon" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.10.0", -] - -[[package]] -name = "ref-cast" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "regex" -version = "1.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" - -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", - "hyper-rustls 0.24.2", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls 0.21.12", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration 0.5.1", - "tokio", - "tokio-native-tls", - "tokio-rustls 0.24.1", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 0.25.4", - "winreg", -] - -[[package]] -name = "reqwest" -version = "0.12.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" -dependencies = [ - "base64 0.22.1", - "bytes", - "encoding_rs", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.4.13", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.8.1", - "hyper-rustls 0.27.7", - "hyper-tls 0.6.0", - "hyper-util", - "js-sys", - "log", - "mime", - "mime_guess", - "native-tls", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls 0.23.36", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 1.0.2", - "tokio", - "tokio-native-tls", - "tokio-rustls 0.26.4", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 1.0.5", -] - -[[package]] -name = "reqwest-middleware" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" -dependencies = [ - "anyhow", - "async-trait", - "http 1.4.0", - "reqwest 0.12.28", - "serde", - "thiserror 1.0.69", - "tower-service", -] - -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.17", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" - -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" -dependencies = [ - "bitflags 2.10.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustls" -version = "0.21.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" -dependencies = [ - "log", - "ring", - "rustls-webpki 0.101.7", - "sct", -] - -[[package]] -name = "rustls" -version = "0.23.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" -dependencies = [ - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki 0.103.9", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - -[[package]] -name = "rustls-pki-types" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" -dependencies = [ - "web-time", - "zeroize", -] - -[[package]] -name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "rustls-webpki" -version = "0.103.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "ryu" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" - -[[package]] -name = "schannel" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "schemars" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.10.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde-big-array" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_bytes" -version = "0.11.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.13.0", - "schemars 0.9.0", - "schemars 1.2.0", - "serde_core", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[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.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha2-const-stable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" - -[[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 = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" -dependencies = [ - "errno", - "libc", -] - -[[package]] -name = "signature" -version = "1.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" - -[[package]] -name = "simd-adler32" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "slab" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "socket2" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" -dependencies = [ - "libc", - "windows-sys 0.60.2", -] - -[[package]] -name = "solana-account" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" -dependencies = [ - "bincode", - "serde", - "serde_bytes", - "serde_derive", - "solana-account-info", - "solana-clock", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-sysvar", -] - -[[package]] -name = "solana-account-decoder" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba71c97fa4d85ce4a1e0e79044ad0406c419382be598c800202903a7688ce71a" -dependencies = [ - "Inflector", - "base64 0.22.1", - "bincode", - "bs58", - "bv", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-account-decoder-client-types", - "solana-address-lookup-table-interface", - "solana-clock", - "solana-config-program-client", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-instruction", - "solana-loader-v3-interface", - "solana-nonce", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-slot-hashes", - "solana-slot-history", - "solana-stake-interface", - "solana-sysvar", - "solana-vote-interface", - "spl-generic-token", - "spl-token 8.0.0", - "spl-token-2022 8.0.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "thiserror 2.0.18", - "zstd", -] - -[[package]] -name = "solana-account-decoder-client-types" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5519e8343325b707f17fbed54fcefb325131b692506d0af9e08a539d15e4f8cf" -dependencies = [ - "base64 0.22.1", - "bs58", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-pubkey", - "zstd", -] - -[[package]] -name = "solana-account-info" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" -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-banks-client" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68548570c38a021c724b5aa0112f45a54bdf7ff1b041a042848e034a95a96994" -dependencies = [ - "borsh 1.6.0", - "futures", - "solana-account", - "solana-banks-interface", - "solana-clock", - "solana-commitment-config", - "solana-hash", - "solana-message", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-signature", - "solana-sysvar", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "tarpc", - "thiserror 2.0.18", - "tokio", - "tokio-serde", -] - -[[package]] -name = "solana-banks-interface" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6d90edc435bf488ef7abed4dcb1f94fa1970102cbabb25688f58417fd948286" -dependencies = [ - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-commitment-config", - "solana-hash", - "solana-message", - "solana-pubkey", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "tarpc", -] - -[[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 0.4.6", - "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-bn254" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4420f125118732833f36facf96a27e7b78314b2d642ba07fa9ffdacd8d79e243" -dependencies = [ - "ark-bn254 0.4.0", - "ark-ec 0.4.2", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "bytemuck", - "solana-define-syscall", - "thiserror 2.0.18", -] - -[[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.6.0", -] - -[[package]] -name = "solana-bpf-loader-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aec57dcd80d0f6879956cad28854a6eebaed6b346ce56908ea01a9f36ab259" -dependencies = [ - "bincode", - "libsecp256k1", - "num-traits", - "qualifier_attr", - "scopeguard", - "solana-account", - "solana-account-info", - "solana-big-mod-exp", - "solana-bincode", - "solana-blake3-hasher", - "solana-bn254", - "solana-clock", - "solana-cpi", - "solana-curve25519", - "solana-hash", - "solana-instruction", - "solana-keccak-hasher", - "solana-loader-v3-interface", - "solana-loader-v4-interface", - "solana-log-collector", - "solana-measure", - "solana-packet", - "solana-poseidon", - "solana-program-entrypoint", - "solana-program-runtime", - "solana-pubkey", - "solana-sbpf", - "solana-sdk-ids", - "solana-secp256k1-recover", - "solana-sha256-hasher", - "solana-stable-layout", - "solana-svm-feature-set", - "solana-system-interface", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", - "solana-transaction-context", - "solana-type-overrides", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-builtins" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d61a31b63b52b0d268cbcd56c76f50314867d7f8e07a0f2c62ee7c9886e07b2" -dependencies = [ - "agave-feature-set", - "solana-bpf-loader-program", - "solana-compute-budget-program", - "solana-hash", - "solana-loader-v4-program", - "solana-program-runtime", - "solana-pubkey", - "solana-sdk-ids", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", - "solana-zk-elgamal-proof-program", - "solana-zk-token-proof-program", -] - -[[package]] -name = "solana-builtins-default-costs" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ca69a299a6c969b18ea381a02b40c9e4dda04b2af0d15a007c1184c82163bbb" -dependencies = [ - "agave-feature-set", - "ahash", - "log", - "solana-bpf-loader-program", - "solana-compute-budget-program", - "solana-loader-v4-program", - "solana-pubkey", - "solana-sdk-ids", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", -] - -[[package]] -name = "solana-client-traits" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" -dependencies = [ - "solana-account", - "solana-commitment-config", - "solana-epoch-info", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-pubkey", - "solana-signature", - "solana-signer", - "solana-system-interface", - "solana-transaction", - "solana-transaction-error", -] - -[[package]] -name = "solana-clock" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", -] - -[[package]] -name = "solana-cluster-type" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" -dependencies = [ - "serde", - "serde_derive", - "solana-hash", -] - -[[package]] -name = "solana-commitment-config" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-compute-budget" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f4fc63bc2276a1618ca0bfc609da7448534ecb43a1cb387cdf9eaa2dc7bc272" -dependencies = [ - "solana-fee-structure", - "solana-program-runtime", -] - -[[package]] -name = "solana-compute-budget-instruction" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503d94430f6d3c5ac1e1fa6a342c1c714d5b03c800999e7b6cf235298f0b5341" -dependencies = [ - "agave-feature-set", - "log", - "solana-borsh", - "solana-builtins-default-costs", - "solana-compute-budget", - "solana-compute-budget-interface", - "solana-instruction", - "solana-packet", - "solana-pubkey", - "solana-sdk-ids", - "solana-svm-transaction", - "solana-transaction-error", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-compute-budget-interface" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8432d2c4c22d0499aa06d62e4f7e333f81777b3d7c96050ae9e5cb71a8c3aee4" -dependencies = [ - "borsh 1.6.0", - "serde", - "serde_derive", - "solana-instruction", - "solana-sdk-ids", -] - -[[package]] -name = "solana-compute-budget-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "072b02beed1862c6b7b7a8a699379594c4470a9371c711856a0a3c266dcf57e5" -dependencies = [ - "solana-program-runtime", -] - -[[package]] -name = "solana-config-program-client" -version = "0.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53aceac36f105fd4922e29b4f0c1f785b69d7b3e7e387e384b8985c8e0c3595e" -dependencies = [ - "bincode", - "borsh 0.10.4", - "kaigan", - "serde", - "solana-program", -] - -[[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.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae4261b9a8613d10e77ac831a8fa60b6fa52b9b103df46d641deff9f9812a23" -dependencies = [ - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "solana-define-syscall", - "subtle", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-decode-error" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" -dependencies = [ - "num-traits", -] - -[[package]] -name = "solana-define-syscall" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" - -[[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-ed25519-program" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" -dependencies = [ - "bytemuck", - "bytemuck_derive", - "ed25519-dalek", - "solana-feature-set", - "solana-instruction", - "solana-precompile-error", - "solana-sdk-ids", -] - -[[package]] -name = "solana-epoch-info" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" -dependencies = [ - "serde", - "serde_derive", -] - -[[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-rewards-hasher" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" -dependencies = [ - "siphasher", - "solana-hash", - "solana-pubkey", -] - -[[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.18", -] - -[[package]] -name = "solana-feature-gate-interface" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" -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-feature-set" -version = "2.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93b93971e289d6425f88e6e3cb6668c4b05df78b3c518c249be55ced8efd6b6d" -dependencies = [ - "ahash", - "lazy_static", - "solana-epoch-schedule", - "solana-hash", - "solana-pubkey", - "solana-sha256-hasher", -] - -[[package]] -name = "solana-fee" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16beda37597046b1edd1cea6fa7caaed033c091f99ec783fe59c82828bc2adb8" -dependencies = [ - "agave-feature-set", - "solana-fee-structure", - "solana-svm-transaction", -] - -[[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-fee-structure" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33adf673581c38e810bf618f745bf31b683a0a4a4377682e6aaac5d9a058dd4e" -dependencies = [ - "serde", - "serde_derive", - "solana-message", - "solana-native-token 2.3.0", -] - -[[package]] -name = "solana-genesis-config" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3725085d47b96d37fef07a29d78d2787fc89a0b9004c66eed7753d1e554989f" -dependencies = [ - "bincode", - "chrono", - "memmap2", - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-cluster-type", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-hash", - "solana-inflation", - "solana-keypair", - "solana-logger", - "solana-poh-config", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sha256-hasher", - "solana-shred-version", - "solana-signer", - "solana-time-utils", -] - -[[package]] -name = "solana-hard-forks" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-hash" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" -dependencies = [ - "borsh 1.6.0", - "bytemuck", - "bytemuck_derive", - "five8", - "js-sys", - "serde", - "serde_derive", - "solana-atomic-u64", - "solana-sanitize", - "wasm-bindgen", -] - -[[package]] -name = "solana-inflation" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-instruction" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab5682934bd1f65f8d2c16f21cb532526fcc1a09f796e2cacdb091eee5774ad" -dependencies = [ - "bincode", - "borsh 1.6.0", - "getrandom 0.2.17", - "js-sys", - "num-traits", - "serde", - "serde_derive", - "serde_json", - "solana-define-syscall", - "solana-pubkey", - "wasm-bindgen", -] - -[[package]] -name = "solana-instructions-sysvar" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" -dependencies = [ - "bitflags 2.10.0", - "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-keypair" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd3f04aa1a05c535e93e121a95f66e7dcccf57e007282e8255535d24bf1e98bb" -dependencies = [ - "ed25519-dalek", - "ed25519-dalek-bip32", - "five8", - "rand 0.7.3", - "solana-derivation-path", - "solana-pubkey", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-signature", - "solana-signer", - "wasm-bindgen", -] - -[[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 = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" -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-loader-v4-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6ab01855d851fa2fb6034b0d48de33d77d5c5f5fb4b0353d8e4a934cc03d48a" -dependencies = [ - "log", - "qualifier_attr", - "solana-account", - "solana-bincode", - "solana-bpf-loader-program", - "solana-instruction", - "solana-loader-v3-interface", - "solana-loader-v4-interface", - "solana-log-collector", - "solana-measure", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-sbpf", - "solana-sdk-ids", - "solana-transaction-context", - "solana-type-overrides", -] - -[[package]] -name = "solana-log-collector" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d945b1cf5bf7cbd6f5b78795beda7376370c827640df43bb2a1c17b492dc106" -dependencies = [ - "log", -] - -[[package]] -name = "solana-logger" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8e777ec1afd733939b532a42492d888ec7c88d8b4127a5d867eb45c6eb5cd5" -dependencies = [ - "env_logger", - "lazy_static", - "libc", - "log", - "signal-hook", -] - -[[package]] -name = "solana-measure" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11dcd67cd2ae6065e494b64e861e0498d046d95a61cbbf1ae3d58be1ea0f42ed" - -[[package]] -name = "solana-message" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" -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-metrics" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0375159d8460f423d39e5103dcff6e07796a5ec1850ee1fcfacfd2482a8f34b5" -dependencies = [ - "crossbeam-channel", - "gethostname", - "log", - "reqwest 0.12.28", - "solana-cluster-type", - "solana-sha256-hasher", - "solana-time-utils", - "thiserror 2.0.18", -] - -[[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.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" - -[[package]] -name = "solana-native-token" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" - -[[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-nonce-account" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" -dependencies = [ - "solana-account", - "solana-hash", - "solana-nonce", - "solana-sdk-ids", -] - -[[package]] -name = "solana-nostd-keccak" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8ced70920435b1baa58f76e6f84bbc1110ddd1d6161ec76b6d731ae8431e9c4" -dependencies = [ - "sha3", -] - -[[package]] -name = "solana-offchain-message" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" -dependencies = [ - "num_enum", - "solana-hash", - "solana-packet", - "solana-pubkey", - "solana-sanitize", - "solana-sha256-hasher", - "solana-signature", - "solana-signer", -] - -[[package]] -name = "solana-packet" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004f2d2daf407b3ec1a1ca5ec34b3ccdfd6866dd2d3c7d0715004a96e4b6d127" -dependencies = [ - "bincode", - "bitflags 2.10.0", - "cfg_eval", - "serde", - "serde_derive", - "serde_with", -] - -[[package]] -name = "solana-poh-config" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-poseidon" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbac4eb90016eeb1d37fa36e592d3a64421510c49666f81020736611c319faff" -dependencies = [ - "ark-bn254 0.4.0", - "light-poseidon 0.2.0", - "solana-define-syscall", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-precompile-error" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d87b2c1f5de77dfe2b175ee8dd318d196aaca4d0f66f02842f80c852811f9f8" -dependencies = [ - "num-traits", - "solana-decode-error", -] - -[[package]] -name = "solana-precompiles" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e92768a57c652edb0f5d1b30a7d0bc64192139c517967c18600debe9ae3832" -dependencies = [ - "lazy_static", - "solana-ed25519-program", - "solana-feature-set", - "solana-message", - "solana-precompile-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-secp256k1-program", - "solana-secp256r1-program", -] - -[[package]] -name = "solana-presigner" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" -dependencies = [ - "solana-pubkey", - "solana-signature", - "solana-signer", -] - -[[package]] -name = "solana-program" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" -dependencies = [ - "bincode", - "blake3", - "borsh 0.10.4", - "borsh 1.6.0", - "bs58", - "bytemuck", - "console_error_panic_hook", - "console_log", - "getrandom 0.2.17", - "lazy_static", - "log", - "memoffset", - "num-bigint 0.4.6", - "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 2.3.0", - "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.18", - "wasm-bindgen", -] - -[[package]] -name = "solana-program-entrypoint" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" -dependencies = [ - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", -] - -[[package]] -name = "solana-program-error" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" -dependencies = [ - "borsh 1.6.0", - "num-traits", - "serde", - "serde_derive", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-pubkey", -] - -[[package]] -name = "solana-program-memory" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" -dependencies = [ - "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-program-runtime" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5653001e07b657c9de6f0417cf9add1cf4325903732c480d415655e10cc86704" -dependencies = [ - "base64 0.22.1", - "bincode", - "enum-iterator", - "itertools 0.12.1", - "log", - "percentage", - "rand 0.8.5", - "serde", - "solana-account", - "solana-clock", - "solana-epoch-rewards", - "solana-epoch-schedule", - "solana-fee-structure", - "solana-hash", - "solana-instruction", - "solana-last-restart-slot", - "solana-log-collector", - "solana-measure", - "solana-metrics", - "solana-program-entrypoint", - "solana-pubkey", - "solana-rent", - "solana-sbpf", - "solana-sdk-ids", - "solana-slot-hashes", - "solana-stable-layout", - "solana-svm-callback", - "solana-svm-feature-set", - "solana-system-interface", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", - "solana-transaction-context", - "solana-type-overrides", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-pubkey" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" -dependencies = [ - "borsh 0.10.4", - "borsh 1.6.0", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "five8", - "five8_const", - "getrandom 0.2.17", - "js-sys", - "num-traits", - "rand 0.8.5", - "serde", - "serde_derive", - "solana-atomic-u64", - "solana-decode-error", - "solana-define-syscall", - "solana-sanitize", - "solana-sha256-hasher", - "wasm-bindgen", -] - -[[package]] -name = "solana-quic-definitions" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf0d4d5b049eb1d0c35f7b18f305a27c8986fc5c0c9b383e97adaa35334379e" -dependencies = [ - "solana-keypair", -] - -[[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-rent-collector" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "127e6dfa51e8c8ae3aa646d8b2672bc4ac901972a338a9e1cd249e030564fb9d" -dependencies = [ - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-epoch-schedule", - "solana-genesis-config", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", -] - -[[package]] -name = "solana-rent-debits" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" -dependencies = [ - "solana-pubkey", - "solana-reward-info", -] - -[[package]] -name = "solana-reserved-account-keys" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4b22ea19ca2a3f28af7cd047c914abf833486bf7a7c4a10fc652fff09b385b1" -dependencies = [ - "lazy_static", - "solana-feature-set", - "solana-pubkey", - "solana-sdk-ids", -] - -[[package]] -name = "solana-reward-info" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-rpc-client" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d3161ac0918178e674c1f7f1bfac40de3e7ed0383bd65747d63113c156eaeb" -dependencies = [ - "async-trait", - "base64 0.22.1", - "bincode", - "bs58", - "futures", - "indicatif", - "log", - "reqwest 0.12.28", - "reqwest-middleware", - "semver", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-account-decoder-client-types", - "solana-clock", - "solana-commitment-config", - "solana-epoch-info", - "solana-epoch-schedule", - "solana-feature-gate-interface", - "solana-hash", - "solana-instruction", - "solana-message", - "solana-pubkey", - "solana-rpc-client-api", - "solana-signature", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status-client-types", - "solana-version", - "solana-vote-interface", - "tokio", -] - -[[package]] -name = "solana-rpc-client-api" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dbc138685c79d88a766a8fd825057a74ea7a21e1dd7f8de275ada899540fff7" -dependencies = [ - "anyhow", - "jsonrpc-core", - "reqwest 0.12.28", - "reqwest-middleware", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder-client-types", - "solana-clock", - "solana-rpc-client-types", - "solana-signer", - "solana-transaction-error", - "solana-transaction-status-client-types", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-rpc-client-types" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea428a81729255d895ea47fba9b30fd4dacbfe571a080448121bd0592751676" -dependencies = [ - "base64 0.22.1", - "bs58", - "semver", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-account-decoder-client-types", - "solana-clock", - "solana-commitment-config", - "solana-fee-calculator", - "solana-inflation", - "solana-pubkey", - "solana-transaction-error", - "solana-transaction-status-client-types", - "solana-version", - "spl-generic-token", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-sanitize" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" - -[[package]] -name = "solana-sbpf" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "474a2d95dc819898ded08d24f29642d02189d3e1497bbb442a92a3997b7eb55f" -dependencies = [ - "byteorder", - "combine", - "hash32", - "libc", - "log", - "rand 0.8.5", - "rustc-demangle", - "thiserror 2.0.18", - "winapi", -] - -[[package]] -name = "solana-sdk" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc0e4a7635b902791c44b6581bfb82f3ada32c5bc0929a64f39fe4bb384c86a" -dependencies = [ - "bincode", - "bs58", - "getrandom 0.1.16", - "js-sys", - "serde", - "serde_json", - "solana-account", - "solana-bn254", - "solana-client-traits", - "solana-cluster-type", - "solana-commitment-config", - "solana-compute-budget-interface", - "solana-decode-error", - "solana-derivation-path", - "solana-ed25519-program", - "solana-epoch-info", - "solana-epoch-rewards-hasher", - "solana-feature-set", - "solana-fee-structure", - "solana-genesis-config", - "solana-hard-forks", - "solana-inflation", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-native-token 2.3.0", - "solana-nonce-account", - "solana-offchain-message", - "solana-packet", - "solana-poh-config", - "solana-precompile-error", - "solana-precompiles", - "solana-presigner", - "solana-program", - "solana-program-memory", - "solana-pubkey", - "solana-quic-definitions", - "solana-rent-collector", - "solana-rent-debits", - "solana-reserved-account-keys", - "solana-reward-info", - "solana-sanitize", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-secp256k1-program", - "solana-secp256k1-recover", - "solana-secp256r1-program", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-serde", - "solana-serde-varint", - "solana-short-vec", - "solana-shred-version", - "solana-signature", - "solana-signer", - "solana-system-transaction", - "solana-time-utils", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "solana-validator-exit", - "thiserror 2.0.18", - "wasm-bindgen", -] - -[[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.114", -] - -[[package]] -name = "solana-secp256k1-program" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f19833e4bc21558fe9ec61f239553abe7d05224347b57d65c2218aeeb82d6149" -dependencies = [ - "bincode", - "digest 0.10.7", - "libsecp256k1", - "serde", - "serde_derive", - "sha3", - "solana-feature-set", - "solana-instruction", - "solana-precompile-error", - "solana-sdk-ids", - "solana-signature", -] - -[[package]] -name = "solana-secp256k1-recover" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" -dependencies = [ - "borsh 1.6.0", - "libsecp256k1", - "solana-define-syscall", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-secp256r1-program" -version = "2.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce0ae46da3071a900f02d367d99b2f3058fe2e90c5062ac50c4f20cfedad8f0f" -dependencies = [ - "bytemuck", - "openssl", - "solana-feature-set", - "solana-instruction", - "solana-precompile-error", - "solana-sdk-ids", -] - -[[package]] -name = "solana-security-txt" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "156bb61a96c605fa124e052d630dba2f6fb57e08c7d15b757e1e958b3ed7b3fe" -dependencies = [ - "hashbrown 0.15.2", -] - -[[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 0.12.1", - "pbkdf2", - "sha2 0.10.9", -] - -[[package]] -name = "solana-serde" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" -dependencies = [ - "serde", -] - -[[package]] -name = "solana-serde-varint" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" -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.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" -dependencies = [ - "sha2 0.10.9", - "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-shred-version" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" -dependencies = [ - "solana-hard-forks", - "solana-hash", - "solana-sha256-hasher", -] - -[[package]] -name = "solana-signature" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" -dependencies = [ - "ed25519-dalek", - "five8", - "rand 0.8.5", - "serde", - "serde-big-array", - "serde_derive", - "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.6.0", - "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-stake-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500e9b9d11573f12de91e94f9c4459882cd5ffc692776af49b610d6fcc0b167f" -dependencies = [ - "agave-feature-set", - "bincode", - "log", - "solana-account", - "solana-bincode", - "solana-clock", - "solana-config-program-client", - "solana-genesis-config", - "solana-instruction", - "solana-log-collector", - "solana-native-token 2.3.0", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-stake-interface", - "solana-sysvar", - "solana-transaction-context", - "solana-type-overrides", - "solana-vote-interface", -] - -[[package]] -name = "solana-svm-callback" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cef9f7d5cfb5d375081a6c8ad712a6f0e055a15890081f845acf55d8254a7a2" -dependencies = [ - "solana-account", - "solana-precompile-error", - "solana-pubkey", -] - -[[package]] -name = "solana-svm-feature-set" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f24b836eb4d74ec255217bdbe0f24f64a07adeac31aca61f334f91cd4a3b1d5" - -[[package]] -name = "solana-svm-transaction" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab717b9539375ebb088872c6c87d1d8832d19f30f154ecc530154d23f60a6f0c" -dependencies = [ - "solana-hash", - "solana-message", - "solana-pubkey", - "solana-sdk-ids", - "solana-signature", - "solana-transaction", -] - -[[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-system-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ca36cef39aea7761be58d4108a56a2e27042fb1e913355fdb142a05fc7eab7" -dependencies = [ - "bincode", - "log", - "serde", - "serde_derive", - "solana-account", - "solana-bincode", - "solana-fee-calculator", - "solana-instruction", - "solana-log-collector", - "solana-nonce", - "solana-nonce-account", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-sdk-ids", - "solana-system-interface", - "solana-sysvar", - "solana-transaction-context", - "solana-type-overrides", -] - -[[package]] -name = "solana-system-transaction" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" -dependencies = [ - "solana-hash", - "solana-keypair", - "solana-message", - "solana-pubkey", - "solana-signer", - "solana-system-interface", - "solana-transaction", -] - -[[package]] -name = "solana-sysvar" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db" -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-time-utils" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" - -[[package]] -name = "solana-timings" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c49b842dfc53c1bf9007eaa6730296dea93b4fce73f457ce1080af43375c0d6" -dependencies = [ - "eager", - "enum-iterator", - "solana-pubkey", -] - -[[package]] -name = "solana-transaction" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80657d6088f721148f5d889c828ca60c7daeedac9a8679f9ec215e0c42bcbf41" -dependencies = [ - "bincode", - "serde", - "serde_derive", - "solana-bincode", - "solana-feature-set", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-precompiles", - "solana-pubkey", - "solana-sanitize", - "solana-sdk-ids", - "solana-short-vec", - "solana-signature", - "solana-signer", - "solana-system-interface", - "solana-transaction-error", - "wasm-bindgen", -] - -[[package]] -name = "solana-transaction-context" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a312304361987a85b2ef2293920558e6612876a639dd1309daf6d0d59ef2fe" -dependencies = [ - "bincode", - "serde", - "serde_derive", - "solana-account", - "solana-instruction", - "solana-instructions-sysvar", - "solana-pubkey", - "solana-rent", - "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 = [ - "serde", - "serde_derive", - "solana-instruction", - "solana-sanitize", -] - -[[package]] -name = "solana-transaction-status" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135f92f4192cc68900c665becf97fc0a6500ae5a67ff347bf2cbc20ecfefa821" -dependencies = [ - "Inflector", - "agave-reserved-account-keys", - "base64 0.22.1", - "bincode", - "borsh 1.6.0", - "bs58", - "log", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder", - "solana-address-lookup-table-interface", - "solana-clock", - "solana-hash", - "solana-instruction", - "solana-loader-v2-interface", - "solana-loader-v3-interface", - "solana-message", - "solana-program-option", - "solana-pubkey", - "solana-reward-info", - "solana-sdk-ids", - "solana-signature", - "solana-stake-interface", - "solana-system-interface", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status-client-types", - "solana-vote-interface", - "spl-associated-token-account", - "spl-memo", - "spl-token 8.0.0", - "spl-token-2022 8.0.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-transaction-status-client-types" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f1d7c2387c35850848212244d2b225847666cb52d3bd59a5c409d2c300303d" -dependencies = [ - "base64 0.22.1", - "bincode", - "bs58", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder-client-types", - "solana-commitment-config", - "solana-message", - "solana-reward-info", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-type-overrides" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d80c44761eb398a157d809a04840865c347e1831ae3859b6100c0ee457bc1a" -dependencies = [ - "rand 0.8.5", -] - -[[package]] -name = "solana-validator-exit" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" - -[[package]] -name = "solana-version" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3324d46c7f7b7f5d34bf7dc71a2883bdc072c7b28ca81d0b2167ecec4cf8da9f" -dependencies = [ - "agave-feature-set", - "rand 0.8.5", - "semver", - "serde", - "serde_derive", - "solana-sanitize", - "solana-serde-varint", -] - -[[package]] -name = "solana-vote-interface" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3" -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-vote-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "908d0e72c8b83e48762eb3e8c9114497cf4b1d66e506e360c46aba9308e71299" -dependencies = [ - "agave-feature-set", - "bincode", - "log", - "num-derive", - "num-traits", - "serde", - "serde_derive", - "solana-account", - "solana-bincode", - "solana-clock", - "solana-epoch-schedule", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-metrics", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-signer", - "solana-slot-hashes", - "solana-transaction", - "solana-transaction-context", - "solana-vote-interface", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-zk-elgamal-proof-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70cea14481d8efede6b115a2581f27bc7c6fdfba0752c20398456c3ac1245fc4" -dependencies = [ - "agave-feature-set", - "bytemuck", - "num-derive", - "num-traits", - "solana-instruction", - "solana-log-collector", - "solana-program-runtime", - "solana-sdk-ids", - "solana-zk-sdk", -] - -[[package]] -name = "solana-zk-sdk" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b9fc6ec37d16d0dccff708ed1dd6ea9ba61796700c3bb7c3b401973f10f63b" -dependencies = [ - "aes-gcm-siv", - "base64 0.22.1", - "bincode", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "itertools 0.12.1", - "js-sys", - "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.18", - "wasm-bindgen", - "zeroize", -] - -[[package]] -name = "solana-zk-token-proof-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579752ad6ea2a671995f13c763bf28288c3c895cb857a518cc4ebab93c9a8dde" -dependencies = [ - "agave-feature-set", - "bytemuck", - "num-derive", - "num-traits", - "solana-instruction", - "solana-log-collector", - "solana-program-runtime", - "solana-sdk-ids", - "solana-zk-token-sdk", -] - -[[package]] -name = "solana-zk-token-sdk" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5055e5df94abd5badf4f947681c893375bdb6f8f543c05d2a7ab9647a6a9d205" -dependencies = [ - "aes-gcm-siv", - "base64 0.22.1", - "bincode", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "itertools 0.12.1", - "merlin", - "num-derive", - "num-traits", - "rand 0.8.5", - "serde", - "serde_derive", - "serde_json", - "sha3", - "solana-curve25519", - "solana-derivation-path", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-signature", - "solana-signer", - "subtle", - "thiserror 2.0.18", - "zeroize", -] - -[[package]] -name = "spl-associated-token-account" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae179d4a26b3c7a20c839898e6aed84cb4477adf108a366c95532f058aea041b" -dependencies = [ - "borsh 1.6.0", - "num-derive", - "num-traits", - "solana-program", - "spl-associated-token-account-client", - "spl-token 8.0.0", - "spl-token-2022 8.0.1", - "thiserror 2.0.18", -] - -[[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.114", -] - -[[package]] -name = "spl-discriminator-syn" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.114", - "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 0.2.1", -] - -[[package]] -name = "spl-elgamal-registry" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65edfeed09cd4231e595616aa96022214f9c9d2be02dea62c2b30d5695a6833a" -dependencies = [ - "bytemuck", - "solana-account-info", - "solana-cpi", - "solana-instruction", - "solana-msg", - "solana-program-entrypoint", - "solana-program-error", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-system-interface", - "solana-sysvar", - "solana-zk-sdk", - "spl-pod", - "spl-token-confidential-transfer-proof-extraction 0.3.0", -] - -[[package]] -name = "spl-generic-token" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "741a62a566d97c58d33f9ed32337ceedd4e35109a686e31b1866c5dfa56abddc" -dependencies = [ - "bytemuck", - "solana-pubkey", -] - -[[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.6.0", - "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.18", -] - -[[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 0.4.1", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-program-error" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" -dependencies = [ - "num-derive", - "num-traits", - "solana-decode-error", - "solana-msg", - "solana-program-error", - "spl-program-error-derive 0.5.0", - "thiserror 2.0.18", -] - -[[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.9", - "syn 2.0.114", -] - -[[package]] -name = "spl-program-error-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.114", -] - -[[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 0.6.0", - "spl-type-length-value 0.7.0", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" -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 0.7.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[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" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-cpi", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sysvar", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-2022" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9048b26b0df0290f929ff91317c83db28b3ef99af2b3493dd35baa146774924c" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-program", - "solana-security-txt", - "solana-zk-sdk", - "spl-elgamal-registry 0.1.1", - "spl-memo", - "spl-pod", - "spl-token 7.0.0", - "spl-token-confidential-transfer-ciphertext-arithmetic 0.2.1", - "spl-token-confidential-transfer-proof-extraction 0.2.1", - "spl-token-confidential-transfer-proof-generation 0.3.0", - "spl-token-group-interface 0.5.0", - "spl-token-metadata-interface 0.6.0", - "spl-transfer-hook-interface 0.9.0", - "spl-type-length-value 0.7.0", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-2022" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f0dfbb079eebaee55e793e92ca5f433744f4b71ee04880bfd6beefba5973e5" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-clock", - "solana-cpi", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-native-token 2.3.0", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-security-txt", - "solana-system-interface", - "solana-sysvar", - "solana-zk-sdk", - "spl-elgamal-registry 0.2.0", - "spl-memo", - "spl-pod", - "spl-token 8.0.0", - "spl-token-confidential-transfer-ciphertext-arithmetic 0.3.1", - "spl-token-confidential-transfer-proof-extraction 0.3.0", - "spl-token-confidential-transfer-proof-generation 0.4.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "spl-transfer-hook-interface 0.10.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-2022-interface" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62d7ae2ee6b856f8ddcbdc3b3a9f4d2141582bbe150f93e5298ee97e0251fa04" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", - "spl-token-confidential-transfer-proof-extraction 0.4.1", - "spl-token-confidential-transfer-proof-generation 0.4.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[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-ciphertext-arithmetic" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cddd52bfc0f1c677b41493dafa3f2dbbb4b47cf0990f08905429e19dc8289b35" -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.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-extraction" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe2629860ff04c17bafa9ba4bed8850a404ecac81074113e1f840dbd0ebb7bd6" -dependencies = [ - "bytemuck", - "solana-account-info", - "solana-curve25519", - "solana-instruction", - "solana-instructions-sysvar", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-extraction" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512c85bdbbb4cbcc2038849a9e164c958b16541f252b53ea1a3933191c0a4a1a" -dependencies = [ - "bytemuck", - "solana-account-info", - "solana-curve25519", - "solana-instruction", - "solana-instructions-sysvar", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-generation" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" -dependencies = [ - "curve25519-dalek 4.1.3", - "solana-zk-sdk", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-generation" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" -dependencies = [ - "curve25519-dalek 4.1.3", - "solana-zk-sdk", - "thiserror 2.0.18", -] - -[[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-group-interface" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" -dependencies = [ - "bytemuck", - "num-derive", - "num-traits", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-discriminator", - "spl-pod", - "thiserror 2.0.18", -] - -[[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.6.0", - "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 0.7.0", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-token-metadata-interface" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" -dependencies = [ - "borsh 1.6.0", - "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 0.8.0", - "thiserror 2.0.18", -] - -[[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 0.6.0", - "spl-tlv-account-resolution 0.9.0", - "spl-type-length-value 0.7.0", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-transfer-hook-interface" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" -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 0.7.0", - "spl-tlv-account-resolution 0.10.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[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 = "spl-type-length-value" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" -dependencies = [ - "bytemuck", - "num-derive", - "num-traits", - "solana-account-info", - "solana-decode-error", - "solana-msg", - "solana-program-error", - "spl-discriminator", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[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.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys 0.5.0", -] - -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags 2.10.0", - "core-foundation", - "system-configuration-sys 0.6.0", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tabled" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e39a2ee1fbcd360805a771e1b300f78cc88fec7b8d3e2f71cd37bbf23e725c7d" -dependencies = [ - "papergrid", - "tabled_derive", - "testing_table", -] - -[[package]] -name = "tabled_derive" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea5d1b13ca6cff1f9231ffd62f15eefd72543dab5e468735f1a456728a02846" -dependencies = [ - "heck 0.5.0", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tarpc" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" -dependencies = [ - "anyhow", - "fnv", - "futures", - "humantime", - "opentelemetry", - "pin-project", - "rand 0.8.5", - "serde", - "static_assertions", - "tarpc-plugins", - "thiserror 1.0.69", - "tokio", - "tokio-serde", - "tokio-util 0.6.10", - "tracing", - "tracing-opentelemetry", -] - -[[package]] -name = "tarpc-plugins" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tempfile" -version = "3.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" -dependencies = [ - "fastrand", - "getrandom 0.3.4", - "once_cell", - "rustix", - "windows-sys 0.61.2", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "testing_table" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f8daae29995a24f65619e19d8d31dea5b389f3d853d8bf297bbf607cd0014cc" -dependencies = [ - "unicode-width", -] - -[[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.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl 2.0.18", -] - -[[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.114", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "thread_local" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "time" -version = "0.3.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde_core", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" - -[[package]] -name = "time-macros" -version = "0.2.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinystr" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" -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 = "tokio" -version = "1.49.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" -dependencies = [ - "bytes", - "libc", - "mio", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2 0.6.2", - "tokio-macros", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-macros" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" -dependencies = [ - "rustls 0.21.12", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" -dependencies = [ - "rustls 0.23.36", - "tokio", -] - -[[package]] -name = "tokio-serde" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" -dependencies = [ - "bincode", - "bytes", - "educe 0.4.23", - "futures-core", - "futures-sink", - "pin-project", - "serde", - "serde_json", -] - -[[package]] -name = "tokio-util" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "slab", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[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.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_edit 0.22.27", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap 2.13.0", - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_write", - "winnow", -] - -[[package]] -name = "toml_edit" -version = "0.23.10+spec-1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" -dependencies = [ - "indexmap 2.13.0", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml_parser" -version = "1.0.6+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" -dependencies = [ - "winnow", -] - -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper 1.0.2", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-http" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" -dependencies = [ - "async-compression", - "bitflags 2.10.0", - "bytes", - "futures-core", - "futures-util", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "iri-string", - "pin-project-lite", - "tokio", - "tokio-util 0.7.18", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-opentelemetry" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" -dependencies = [ - "once_cell", - "opentelemetry", - "tracing", - "tracing-core", - "tracing-subscriber", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" -dependencies = [ - "sharded-slab", - "thread_local", - "tracing-core", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typenum" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" - -[[package]] -name = "unicase" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" - -[[package]] -name = "unicode-ident" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - -[[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 = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -dependencies = [ - "void", -] - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[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 = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "uuid" -version = "1.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" -dependencies = [ - "getrandom 0.3.4", - "js-sys", - "serde_core", - "wasm-bindgen", -] - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[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.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.2+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" -dependencies = [ - "cfg-if", - "futures-util", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 2.0.114", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "web-sys" -version = "0.3.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "0.25.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" - -[[package]] -name = "webpki-roots" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-registry" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" -dependencies = [ - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[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_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[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_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - -[[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_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[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_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[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_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - -[[package]] -name = "winnow" -version = "0.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" - -[[package]] -name = "writeable" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "yoke" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zerotrie" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zmij" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439" - -[[package]] -name = "zstd" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "7.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" -dependencies = [ - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.16+zstd.1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/program-examples/anchor/sdk/Cargo.toml b/program-examples/anchor/sdk/Cargo.toml deleted file mode 100644 index eec59b2..0000000 --- a/program-examples/anchor/sdk/Cargo.toml +++ /dev/null @@ -1,41 +0,0 @@ -[workspace] -members = [ - "programs/approve", - "programs/burn", - "programs/close", - "programs/create-ata", - "programs/create-mint", - "programs/create-token-account", - "programs/freeze", - "programs/mint-to", - "programs/revoke", - "programs/thaw", - "programs/transfer-interface", - "programs/transfer-checked", -] -resolver = "2" - -[profile.release] -lto = "fat" -codegen-units = 1 -panic = "abort" -overflow-checks = true - -[profile.release.build-override] -opt-level = 3 -incremental = false -codegen-units = 1 - -[workspace.dependencies] -blake3 = { version = "=1.8.2", default-features = false } -anchor-lang = "0.31.1" -borsh = "0.10.4" -tokio = "1.43.0" -solana-sdk = "2.2" -solana-program = "2.2" -light-sdk = { version = "0.19.0", features = ["anchor", "idl-build", "v2", "anchor-discriminator", "cpi-context"] } -light-token = { version = "0.4.0", features = ["anchor"] } -light-token-types = { version = "0.4.0", features = ["anchor"] } -light-token-interface = "0.3.0" -light-program-test = "0.19.0" -light-client = { version = "0.19.0", features = ["v2", "anchor"] } diff --git a/program-examples/anchor/sdk/README.md b/program-examples/anchor/sdk/README.md deleted file mode 100644 index 65c55be..0000000 --- a/program-examples/anchor/sdk/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# Light Token Anchor Programs (SDK approach) - -Anchor program examples using explicit CPI calls to the Light Token Program. - -## Programs - -All 12 programs demonstrating Light Token CPI integration: - -| Program | Description | -|---------|-------------| -| [approve](programs/approve/src/lib.rs) | Approve delegate for token account | -| [burn](programs/burn/src/lib.rs) | Burn tokens from token account | -| [close](programs/close/src/lib.rs) | Close token account and reclaim rent | -| [create-ata](programs/create-ata/src/lib.rs) | Create compressed associated token account | -| [create-mint](programs/create-mint/src/lib.rs) | Create compressed mint | -| [create-token-account](programs/create-token-account/src/lib.rs) | Create compressed token account (vault pattern) | -| [freeze](programs/freeze/src/lib.rs) | Freeze token account | -| [mint-to](programs/mint-to/src/lib.rs) | Mint tokens to destination | -| [revoke](programs/revoke/src/lib.rs) | Revoke delegate from token account | -| [thaw](programs/thaw/src/lib.rs) | Thaw frozen token account | -| [transfer-checked](programs/transfer-checked/src/lib.rs) | Transfer tokens with mint validation | -| [transfer-interface](programs/transfer-interface/src/lib.rs) | Transfer tokens with decimals handling | - -## Pattern - -These programs use explicit CPI structs from `light_token::instruction`: - -```rust -use light_token::instruction::MintToCpi; - -pub fn mint_to(ctx: Context, amount: u64) -> Result<()> { - MintToCpi { - mint: ctx.accounts.mint.to_account_info(), - destination: ctx.accounts.destination.to_account_info(), - amount, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) -} -``` - -## Account validation - -Accounts are validated by the light-token program during CPI. The pattern `/// CHECK: Validated by light-token CPI` indicates the calling program delegates validation to the CPI target. - -## Build - -```bash -anchor build -``` - -## Test - -```bash -cargo test-sbf -``` - -## Note on close program - -The `close` program uses `CloseAccountCpi` which requires an explicit `token_program` account, unlike other CPI builders that handle program routing internally. diff --git a/program-examples/anchor/sdk/programs/approve/Cargo.toml b/program-examples/anchor/sdk/programs/approve/Cargo.toml deleted file mode 100644 index 08c1e58..0000000 --- a/program-examples/anchor/sdk/programs/approve/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-approve" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_approve" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/approve/src/lib.rs b/program-examples/anchor/sdk/programs/approve/src/lib.rs deleted file mode 100644 index f7bbbed..0000000 --- a/program-examples/anchor/sdk/programs/approve/src/lib.rs +++ /dev/null @@ -1,34 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::ApproveCpi; - -declare_id!("37XmzKqSG2VD1ZBvzyfbt1HN1mT1bqVAmfzX2ziB3KT1"); - -#[program] -pub mod light_token_anchor_approve { - use super::*; - - pub fn approve(ctx: Context, amount: u64) -> Result<()> { - ApproveCpi { - token_account: ctx.accounts.token_account.to_account_info(), - delegate: ctx.accounts.delegate.to_account_info(), - owner: ctx.accounts.owner.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - amount, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct ApproveAccounts<'info> { - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub token_account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub delegate: AccountInfo<'info>, - pub owner: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/sdk/programs/approve/tests/test.rs b/program-examples/anchor/sdk/programs/approve/tests/test.rs deleted file mode 100644 index b71f79e..0000000 --- a/program-examples/anchor/sdk/programs/approve/tests/test.rs +++ /dev/null @@ -1,120 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_approve::{instruction::Approve, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_approve() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_approve", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens first - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to approve delegate - let delegate = Keypair::new(); - let approve_amount = 500_000u64; - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new(ata, false), - AccountMeta::new_readonly(delegate.pubkey(), false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Approve { amount: approve_amount }.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk/programs/burn/Cargo.toml b/program-examples/anchor/sdk/programs/burn/Cargo.toml deleted file mode 100644 index 9315f14..0000000 --- a/program-examples/anchor/sdk/programs/burn/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-burn" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_burn" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/burn/src/lib.rs b/program-examples/anchor/sdk/programs/burn/src/lib.rs deleted file mode 100644 index 0ae1a8c..0000000 --- a/program-examples/anchor/sdk/programs/burn/src/lib.rs +++ /dev/null @@ -1,37 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::BurnCpi; - -declare_id!("2TXVn8AqjfyeJvmFBD3kHJmh6fWkC4HNB5T76BmLKV5c"); - -#[program] -pub mod light_token_anchor_burn { - use super::*; - - pub fn burn(ctx: Context, amount: u64) -> Result<()> { - BurnCpi { - source: ctx.accounts.source.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - amount, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct BurnAccounts<'info> { - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub source: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub mint: AccountInfo<'info>, - pub authority: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/sdk/programs/burn/tests/test.rs b/program-examples/anchor/sdk/programs/burn/tests/test.rs deleted file mode 100644 index 3d7359e..0000000 --- a/program-examples/anchor/sdk/programs/burn/tests/test.rs +++ /dev/null @@ -1,118 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_burn::{instruction::Burn, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, - system_program, -}; - -#[tokio::test] -async fn test_burn() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_burn", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens first - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to burn tokens - let burn_amount = 250_000u64; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new(ata, false), - AccountMeta::new(mint_pda, false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Burn { amount: burn_amount }.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk/programs/close/Cargo.toml b/program-examples/anchor/sdk/programs/close/Cargo.toml deleted file mode 100644 index 7cc0c13..0000000 --- a/program-examples/anchor/sdk/programs/close/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-close" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_close" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/close/src/lib.rs b/program-examples/anchor/sdk/programs/close/src/lib.rs deleted file mode 100644 index ad2ab52..0000000 --- a/program-examples/anchor/sdk/programs/close/src/lib.rs +++ /dev/null @@ -1,39 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::CloseAccountCpi; - -declare_id!("GXLCuNhnkRVp596eCdbNsZ9ua1ePbKbb344VKS7V3zQQ"); - -#[program] -pub mod light_token_anchor_close { - use super::*; - - pub fn close_account(ctx: Context) -> Result<()> { - CloseAccountCpi { - token_program: ctx.accounts.token_program.to_account_info(), - account: ctx.accounts.account.to_account_info(), - destination: ctx.accounts.destination.to_account_info(), - owner: ctx.accounts.owner.to_account_info(), - rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct CloseAccountAccounts<'info> { - /// CHECK: Validated by light-token CPI - pub token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub owner: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, -} diff --git a/program-examples/anchor/sdk/programs/close/tests/test.rs b/program-examples/anchor/sdk/programs/close/tests/test.rs deleted file mode 100644 index 7dd4fc2..0000000 --- a/program-examples/anchor/sdk/programs/close/tests/test.rs +++ /dev/null @@ -1,104 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_close::{instruction::CloseAccount, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_close() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_close", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // Create ATA (empty, no tokens) - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to close account - let rent_sponsor = rent_sponsor_pda(); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(ata, false), - AccountMeta::new(payer.pubkey(), false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new(rent_sponsor, false), - ], - data: CloseAccount {}.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk/programs/create-ata/Cargo.toml b/program-examples/anchor/sdk/programs/create-ata/Cargo.toml deleted file mode 100644 index 9df7fd1..0000000 --- a/program-examples/anchor/sdk/programs/create-ata/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-create-ata" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_create_ata" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/create-ata/src/lib.rs b/program-examples/anchor/sdk/programs/create-ata/src/lib.rs deleted file mode 100644 index 8c0935d..0000000 --- a/program-examples/anchor/sdk/programs/create-ata/src/lib.rs +++ /dev/null @@ -1,56 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::CreateAssociatedAccountCpi; - -declare_id!("35MukgdfpNUbPMhTmEk63ECV8vjgpNVFRH9nP8ovMN58"); - -#[program] -pub mod light_token_anchor_create_ata { - use super::*; - - pub fn create_ata(ctx: Context, bump: u8, idempotent: bool) -> Result<()> { - let cpi = CreateAssociatedAccountCpi { - payer: ctx.accounts.payer.to_account_info(), - owner: ctx.accounts.owner.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - ata: ctx.accounts.associated_token_account.to_account_info(), - bump, - }; - - if idempotent { - cpi.idempotent().rent_free( - ctx.accounts.compressible_config.to_account_info(), - ctx.accounts.rent_sponsor.to_account_info(), - ctx.accounts.system_program.to_account_info(), - ) - } else { - cpi.rent_free( - ctx.accounts.compressible_config.to_account_info(), - ctx.accounts.rent_sponsor.to_account_info(), - ctx.accounts.system_program.to_account_info(), - ) - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct CreateAtaAccounts<'info> { - /// CHECK: Validated by light-token CPI - pub owner: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - #[account(mut)] - pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub associated_token_account: AccountInfo<'info>, - pub system_program: Program<'info, System>, - /// CHECK: Validated by light-token CPI - pub compressible_config: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, -} diff --git a/program-examples/anchor/sdk/programs/create-ata/tests/test.rs b/program-examples/anchor/sdk/programs/create-ata/tests/test.rs deleted file mode 100644 index c50075d..0000000 --- a/program-examples/anchor/sdk/programs/create-ata/tests/test.rs +++ /dev/null @@ -1,105 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_create_ata::{instruction::CreateAta, ID}; -use light_token::instruction::{ - CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, derive_token_ata, - find_mint_address, rent_sponsor_pda, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_create_ata() { - let config = - ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_ata", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_mint_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // Derive ATA address and bump - let (ata, ata_bump) = derive_token_ata(&payer.pubkey(), &mint_pda); - - // Call the anchor program to create ATA - let compressible_config = config_pda(); - let rent_sponsor = rent_sponsor_pda(); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(payer.pubkey(), false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(compressible_config, false), - AccountMeta::new(rent_sponsor, false), - ], - data: CreateAta { - bump: ata_bump, - idempotent: false, - } - .data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk/programs/create-mint/Cargo.toml b/program-examples/anchor/sdk/programs/create-mint/Cargo.toml deleted file mode 100644 index 42d8ad7..0000000 --- a/program-examples/anchor/sdk/programs/create-mint/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-create-mint" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_create_mint" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/create-mint/src/lib.rs b/program-examples/anchor/sdk/programs/create-mint/src/lib.rs deleted file mode 100644 index 053fbff..0000000 --- a/program-examples/anchor/sdk/programs/create-mint/src/lib.rs +++ /dev/null @@ -1,124 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::{CreateMintCpi, CreateMintParams, SystemAccountInfos}; -use light_token::{CompressedProof, ExtensionInstructionData, TokenMetadataInstructionData}; - -declare_id!("A1rJEoepgKYWZYZ8KVFpxgeeRGwBrU7xk8S39srjVkUX"); - -/// Token metadata parameters for creating a mint with metadata. -#[derive(AnchorSerialize, AnchorDeserialize, Clone)] -pub struct TokenMetadataParams { - pub name: Vec, - pub symbol: Vec, - pub uri: Vec, - pub update_authority: Option, -} - -#[program] -pub mod light_token_anchor_create_mint { - use super::*; - - pub fn create_mint( - ctx: Context, - decimals: u8, - address_merkle_tree_root_index: u16, - compression_address: [u8; 32], - proof: CompressedProof, - freeze_authority: Option, - bump: u8, - rent_payment: Option, - write_top_up: Option, - metadata: Option, - ) -> Result<()> { - let mint = light_token::instruction::find_mint_address(ctx.accounts.mint_seed.key).0; - - let extensions = metadata.map(|m| { - vec![ExtensionInstructionData::TokenMetadata( - TokenMetadataInstructionData { - update_authority: m - .update_authority - .map(|p| p.to_bytes().into()), - name: m.name, - symbol: m.symbol, - uri: m.uri, - additional_metadata: None, - }, - )] - }); - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index, - mint_authority: *ctx.accounts.authority.key, - proof, - compression_address, - mint, - bump, - freeze_authority, - extensions, - rent_payment: rent_payment.unwrap_or(16), // Default: ~24 hours - write_top_up: write_top_up.unwrap_or(766), // Default: ~3 hours per write - }; - - let system_accounts = SystemAccountInfos { - light_system_program: ctx.accounts.light_system_program.to_account_info(), - cpi_authority_pda: ctx.accounts.cpi_authority_pda.to_account_info(), - registered_program_pda: ctx.accounts.registered_program_pda.to_account_info(), - account_compression_authority: ctx.accounts.account_compression_authority.to_account_info(), - account_compression_program: ctx.accounts.account_compression_program.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - }; - - CreateMintCpi { - mint_seed: ctx.accounts.mint_seed.to_account_info(), - authority: ctx.accounts.authority.to_account_info(), - payer: ctx.accounts.payer.to_account_info(), - address_tree: ctx.accounts.address_tree.to_account_info(), - output_queue: ctx.accounts.output_queue.to_account_info(), - compressible_config: ctx.accounts.compressible_config.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), - system_accounts, - cpi_context: None, - cpi_context_account: None, - params, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct CreateMintAccounts<'info> { - pub mint_seed: Signer<'info>, - /// CHECK: Validated by light-token CPI - pub authority: AccountInfo<'info>, - #[account(mut)] - pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub address_tree: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub output_queue: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub light_system_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub cpi_authority_pda: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub registered_program_pda: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub account_compression_authority: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub account_compression_program: AccountInfo<'info>, - pub system_program: Program<'info, System>, - /// CHECK: Validated by light-token CPI - use light_token::token::config_pda() - pub compressible_config: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - derived from find_mint_address(mint_seed) - #[account(mut)] - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - use light_token::token::rent_sponsor_pda() - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, -} diff --git a/program-examples/anchor/sdk/programs/create-mint/tests/test.rs b/program-examples/anchor/sdk/programs/create-mint/tests/test.rs deleted file mode 100644 index 90ae585..0000000 --- a/program-examples/anchor/sdk/programs/create-mint/tests/test.rs +++ /dev/null @@ -1,95 +0,0 @@ -use anchor_lang::InstructionData; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_create_mint::{instruction::CreateMint, ID}; -use light_token::instruction::{ - config_pda, derive_mint_compressed_address, find_mint_address, rent_sponsor_pda, - SystemAccounts, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_create_mint() { - let config = - ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_mint", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![light_client::indexer::AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let system_accounts = SystemAccounts::default(); - - // Call the anchor program to create mint - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new(mint_seed.pubkey(), true), - AccountMeta::new_readonly(mint_authority, false), - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new(address_tree.tree, false), - AccountMeta::new(output_queue, false), - AccountMeta::new_readonly(system_accounts.light_system_program, false), - AccountMeta::new_readonly(system_accounts.cpi_authority_pda, false), - AccountMeta::new_readonly(system_accounts.registered_program_pda, false), - AccountMeta::new_readonly(system_accounts.account_compression_authority, false), - AccountMeta::new_readonly(system_accounts.account_compression_program, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(config_pda(), false), - AccountMeta::new(mint_pda, false), - AccountMeta::new(rent_sponsor_pda(), false), - ], - data: CreateMint { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - compression_address: compression_address.into(), - proof: rpc_result.proof.0.unwrap(), - freeze_authority: None, - bump, - rent_payment: Some(16), - write_top_up: Some(766), - metadata: None, - } - .data(), - }; - - let sig = rpc - .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let compressed_account = rpc - .get_compressed_account(compression_address, None) - .await - .unwrap() - .value; - - assert!(compressed_account.is_some(), "Compressed mint should exist"); - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk/programs/create-token-account/Cargo.toml b/program-examples/anchor/sdk/programs/create-token-account/Cargo.toml deleted file mode 100644 index 974dfe4..0000000 --- a/program-examples/anchor/sdk/programs/create-token-account/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-create-token-account" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_create_token_account" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/create-token-account/src/lib.rs b/program-examples/anchor/sdk/programs/create-token-account/src/lib.rs deleted file mode 100644 index 6d2e004..0000000 --- a/program-examples/anchor/sdk/programs/create-token-account/src/lib.rs +++ /dev/null @@ -1,47 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::CreateTokenAccountCpi; - -declare_id!("zXK1CnWj4WFfFHCArxxr4sh3Qqx2p3oui8ahqpjArgS"); - -#[program] -pub mod light_token_anchor_create_token_account { - use super::*; - - pub fn create_token_account(ctx: Context, owner: Pubkey) -> Result<()> { - CreateTokenAccountCpi { - payer: ctx.accounts.payer.to_account_info(), - account: ctx.accounts.account.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - owner, - } - .rent_free( - ctx.accounts.compressible_config.to_account_info(), - ctx.accounts.rent_sponsor.to_account_info(), - ctx.accounts.system_program.to_account_info(), - &ctx.accounts.light_token_program.key(), - ) - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct CreateTokenAccountAccounts<'info> { - #[account(mut)] - pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub compressible_config: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, - pub system_program: Program<'info, System>, - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, -} diff --git a/program-examples/anchor/sdk/programs/create-token-account/tests/test.rs b/program-examples/anchor/sdk/programs/create-token-account/tests/test.rs deleted file mode 100644 index 5355ba0..0000000 --- a/program-examples/anchor/sdk/programs/create-token-account/tests/test.rs +++ /dev/null @@ -1,105 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_create_token_account::{instruction::CreateTokenAccount, ID}; -use light_token::instruction::{ - CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, - find_mint_address, rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - pubkey::Pubkey, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_create_token_account() { - let config = ProgramTestConfig::new_v2( - true, - Some(vec![("light_token_anchor_create_token_account", ID)]), - ); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - // Create a mint first - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_mint_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // Create a token account - let token_account = Keypair::new(); - let owner = payer.pubkey(); - let compressible_config = config_pda(); - let rent_sponsor = rent_sponsor_pda(); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new(token_account.pubkey(), false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new_readonly(compressible_config, false), - AccountMeta::new(rent_sponsor, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - ], - data: CreateTokenAccount { owner }.data(), - }; - - let sig = rpc - .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk/programs/freeze/Cargo.toml b/program-examples/anchor/sdk/programs/freeze/Cargo.toml deleted file mode 100644 index 8d0c730..0000000 --- a/program-examples/anchor/sdk/programs/freeze/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-freeze" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_freeze" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/freeze/src/lib.rs b/program-examples/anchor/sdk/programs/freeze/src/lib.rs deleted file mode 100644 index e3c2aac..0000000 --- a/program-examples/anchor/sdk/programs/freeze/src/lib.rs +++ /dev/null @@ -1,31 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::FreezeCpi; - -declare_id!("JBMzMJX4sqCQfNVbosP2oqP1KZ5ZDWiwYTrupk687qXZ"); - -#[program] -pub mod light_token_anchor_freeze { - use super::*; - - pub fn freeze(ctx: Context) -> Result<()> { - FreezeCpi { - token_account: ctx.accounts.token_account.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - freeze_authority: ctx.accounts.freeze_authority.to_account_info(), - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct FreezeAccounts<'info> { - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub token_account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - pub freeze_authority: Signer<'info>, -} diff --git a/program-examples/anchor/sdk/programs/freeze/tests/test.rs b/program-examples/anchor/sdk/programs/freeze/tests/test.rs deleted file mode 100644 index 4916bac..0000000 --- a/program-examples/anchor/sdk/programs/freeze/tests/test.rs +++ /dev/null @@ -1,117 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_freeze::{instruction::Freeze, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_freeze() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_freeze", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let freeze_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - // Create mint WITH freeze authority - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: Some(freeze_authority), - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: 1_000_000, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to freeze account - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new(ata, false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new_readonly(freeze_authority, true), - ], - data: Freeze {}.data(), - }; - - let sig = rpc - .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk/programs/mint-to/Cargo.toml b/program-examples/anchor/sdk/programs/mint-to/Cargo.toml deleted file mode 100644 index 65d6646..0000000 --- a/program-examples/anchor/sdk/programs/mint-to/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-mint-to" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_mint_to" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/mint-to/src/lib.rs b/program-examples/anchor/sdk/programs/mint-to/src/lib.rs deleted file mode 100644 index 102b0e0..0000000 --- a/program-examples/anchor/sdk/programs/mint-to/src/lib.rs +++ /dev/null @@ -1,37 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::MintToCpi; - -declare_id!("8bXEVmHLtAVqDLJp1dYWAZ61WQmqQKoTQ8LpPbRoUDCp"); - -#[program] -pub mod light_token_anchor_mint_to { - use super::*; - - pub fn mint_to(ctx: Context, amount: u64) -> Result<()> { - MintToCpi { - mint: ctx.accounts.mint.to_account_info(), - destination: ctx.accounts.destination.to_account_info(), - amount, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct MintToAccounts<'info> { - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub authority: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/sdk/programs/mint-to/tests/test.rs b/program-examples/anchor/sdk/programs/mint-to/tests/test.rs deleted file mode 100644 index e447648..0000000 --- a/program-examples/anchor/sdk/programs/mint-to/tests/test.rs +++ /dev/null @@ -1,102 +0,0 @@ -use anchor_lang::InstructionData; -use anchor_lang::system_program; -use light_client::indexer::{AddressWithTree, Indexer}; -use light_program_test::{LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_mint_to::{instruction::MintTo, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, derive_mint_compressed_address, - derive_token_ata, find_mint_address, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test(flavor = "multi_thread")] -async fn test_mint_to() { - let config = ProgramTestConfig::new_v2(false, Some(vec![("light_token_anchor_mint_to", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - let amount = 1_000_000u64; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new(mint, false), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(mint_authority, true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: MintTo { amount }.data(), - }; - - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Verify the account exists and has data - let ata_data = rpc.get_account(ata).await.unwrap().unwrap(); - assert!(!ata_data.data.is_empty(), "ATA account should have data"); -} diff --git a/program-examples/anchor/sdk/programs/revoke/Cargo.toml b/program-examples/anchor/sdk/programs/revoke/Cargo.toml deleted file mode 100644 index 3ca6657..0000000 --- a/program-examples/anchor/sdk/programs/revoke/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-revoke" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_revoke" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/revoke/src/lib.rs b/program-examples/anchor/sdk/programs/revoke/src/lib.rs deleted file mode 100644 index fcdc58b..0000000 --- a/program-examples/anchor/sdk/programs/revoke/src/lib.rs +++ /dev/null @@ -1,30 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::RevokeCpi; - -declare_id!("G3ph4MK5qaSdxYnfxToETg31AHEMMqVhPuMRgBhk38tQ"); - -#[program] -pub mod light_token_anchor_revoke { - use super::*; - - pub fn revoke(ctx: Context) -> Result<()> { - RevokeCpi { - token_account: ctx.accounts.token_account.to_account_info(), - owner: ctx.accounts.owner.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct RevokeAccounts<'info> { - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub token_account: AccountInfo<'info>, - pub owner: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/sdk/programs/revoke/tests/test.rs b/program-examples/anchor/sdk/programs/revoke/tests/test.rs deleted file mode 100644 index 56ffdf6..0000000 --- a/program-examples/anchor/sdk/programs/revoke/tests/test.rs +++ /dev/null @@ -1,131 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_revoke::{instruction::Revoke, ID}; -use light_token::instruction::{ - Approve, CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_revoke() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_revoke", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Approve delegate first using SDK - let delegate = Keypair::new(); - let approve_ix = Approve { - token_account: ata, - delegate: delegate.pubkey(), - owner: payer.pubkey(), - amount: 500_000, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[approve_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to revoke delegation - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new(ata, false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Revoke {}.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk/programs/thaw/Cargo.toml b/program-examples/anchor/sdk/programs/thaw/Cargo.toml deleted file mode 100644 index d114a52..0000000 --- a/program-examples/anchor/sdk/programs/thaw/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-thaw" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_thaw" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/thaw/src/lib.rs b/program-examples/anchor/sdk/programs/thaw/src/lib.rs deleted file mode 100644 index a178d45..0000000 --- a/program-examples/anchor/sdk/programs/thaw/src/lib.rs +++ /dev/null @@ -1,31 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::ThawCpi; - -declare_id!("7j94EF5hSkDLf7R26bjrd8Qc6s3oLAQpcKiF3re8JYw9"); - -#[program] -pub mod light_token_anchor_thaw { - use super::*; - - pub fn thaw(ctx: Context) -> Result<()> { - ThawCpi { - token_account: ctx.accounts.token_account.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - freeze_authority: ctx.accounts.freeze_authority.to_account_info(), - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct ThawAccounts<'info> { - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub token_account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - pub freeze_authority: Signer<'info>, -} diff --git a/program-examples/anchor/sdk/programs/thaw/tests/test.rs b/program-examples/anchor/sdk/programs/thaw/tests/test.rs deleted file mode 100644 index 95ea32a..0000000 --- a/program-examples/anchor/sdk/programs/thaw/tests/test.rs +++ /dev/null @@ -1,129 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_thaw::{instruction::Thaw, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, Freeze, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_thaw() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_thaw", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let freeze_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - // Create mint WITH freeze authority - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: Some(freeze_authority), - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: 1_000_000, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Freeze account first using SDK - let freeze_ix = Freeze { - token_account: ata, - mint: mint_pda, - freeze_authority, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[freeze_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to thaw account - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new(ata, false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new_readonly(freeze_authority, true), - ], - data: Thaw {}.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk/programs/transfer-checked/Cargo.toml b/program-examples/anchor/sdk/programs/transfer-checked/Cargo.toml deleted file mode 100644 index 6d91664..0000000 --- a/program-examples/anchor/sdk/programs/transfer-checked/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-transfer-checked" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_transfer_checked" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/transfer-checked/src/lib.rs b/program-examples/anchor/sdk/programs/transfer-checked/src/lib.rs deleted file mode 100644 index 958655b..0000000 --- a/program-examples/anchor/sdk/programs/transfer-checked/src/lib.rs +++ /dev/null @@ -1,45 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::TransferCheckedCpi; - -declare_id!("HXmfewpozFdxhM8BayL9v5541gwoGMXTrUoip5KySs2f"); - -#[program] -pub mod light_token_anchor_transfer_checked { - use super::*; - - pub fn transfer_checked( - ctx: Context, - amount: u64, - decimals: u8, - ) -> Result<()> { - TransferCheckedCpi { - source: ctx.accounts.source.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - destination: ctx.accounts.destination.to_account_info(), - amount, - decimals, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct TransferCheckedAccounts<'info> { - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub source: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub authority: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/sdk/programs/transfer-checked/tests/test.rs b/program-examples/anchor/sdk/programs/transfer-checked/tests/test.rs deleted file mode 100644 index bc9e190..0000000 --- a/program-examples/anchor/sdk/programs/transfer-checked/tests/test.rs +++ /dev/null @@ -1,140 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_transfer_checked::{instruction::TransferChecked, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, - system_program, -}; - -#[tokio::test] -async fn test_transfer_checked() { - let config = ProgramTestConfig::new_v2( - true, - Some(vec![("light_token_anchor_transfer_checked", ID)]), - ); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // Create source ATA - let (source_ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_source_ata = - CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_source_ata], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens to source - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: source_ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Create destination ATA for recipient - let recipient = Keypair::new(); - let (dest_ata, _) = derive_token_ata(&recipient.pubkey(), &mint_pda); - let create_dest_ata = - CreateAssociatedTokenAccount::new(payer.pubkey(), recipient.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_dest_ata], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to transfer tokens (checked) - let transfer_amount = 100_000u64; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new(source_ata, false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new(dest_ata, false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: TransferChecked { - amount: transfer_amount, - decimals, - } - .data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk/programs/transfer-interface/Cargo.toml b/program-examples/anchor/sdk/programs/transfer-interface/Cargo.toml deleted file mode 100644 index 7944b7d..0000000 --- a/program-examples/anchor/sdk/programs/transfer-interface/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "light-token-anchor-transfer-interface" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_transfer_interface" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -light-token-types = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/sdk/programs/transfer-interface/src/lib.rs b/program-examples/anchor/sdk/programs/transfer-interface/src/lib.rs deleted file mode 100644 index 7bb17aa..0000000 --- a/program-examples/anchor/sdk/programs/transfer-interface/src/lib.rs +++ /dev/null @@ -1,42 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::TransferInterfaceCpi; - -declare_id!("3rb6sG4jiYNLZC8jo8kLsFHpxr2Ci8e8Hh8UmeCMZmUV"); - -#[program] -pub mod light_token_anchor_transfer_interface { - use super::*; - - pub fn transfer(ctx: Context, amount: u64, decimals: u8) -> Result<()> { - TransferInterfaceCpi::new( - amount, - decimals, - ctx.accounts.source.to_account_info(), - ctx.accounts.destination.to_account_info(), - ctx.accounts.authority.to_account_info(), - ctx.accounts.payer.to_account_info(), - ctx.accounts.cpi_authority.to_account_info(), - ctx.accounts.system_program.to_account_info(), - ) - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct TransferAccounts<'info> { - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub source: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub authority: Signer<'info>, - #[account(mut)] - pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - pub cpi_authority: AccountInfo<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/sdk/programs/transfer-interface/tests/test.rs b/program-examples/anchor/sdk/programs/transfer-interface/tests/test.rs deleted file mode 100644 index 3c9e77c..0000000 --- a/program-examples/anchor/sdk/programs/transfer-interface/tests/test.rs +++ /dev/null @@ -1,145 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_transfer_interface::{instruction::Transfer, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, -}; -use light_token_types::CPI_AUTHORITY_PDA; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - pubkey::Pubkey, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_transfer() { - let config = ProgramTestConfig::new_v2( - true, - Some(vec![("light_token_anchor_transfer_interface", ID)]), - ); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // Create source ATA - let (source_ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_source_ata = - CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_source_ata], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens to source - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: source_ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Create destination ATA for recipient - let recipient = Keypair::new(); - let (dest_ata, _) = derive_token_ata(&recipient.pubkey(), &mint_pda); - let create_dest_ata = - CreateAssociatedTokenAccount::new(payer.pubkey(), recipient.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_dest_ata], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to transfer tokens - let transfer_amount = 100_000u64; - let cpi_authority_pda = Pubkey::new_from_array(CPI_AUTHORITY_PDA); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new(source_ata, false), - AccountMeta::new(dest_ata, false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new_readonly(cpi_authority_pda, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Transfer { - amount: transfer_amount, - decimals, - } - .data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} From fc8e837ff0583579ce2f9d90bd960e5c6f366723 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Mon, 26 Jan 2026 20:23:16 +0000 Subject: [PATCH 15/23] fix: remove stale macro-basics refs, clean gitignore --- program-examples/anchor/.gitignore | 7 ------- program-examples/anchor/README.md | 10 ---------- 2 files changed, 17 deletions(-) diff --git a/program-examples/anchor/.gitignore b/program-examples/anchor/.gitignore index 267284c..42392b8 100644 --- a/program-examples/anchor/.gitignore +++ b/program-examples/anchor/.gitignore @@ -8,17 +8,10 @@ target/ # Test artifacts test-ledger/ -# TypeScript -*.ts -tsconfig.json - # Package files package.json package-lock.json -# Documentation (internal) -BURN_ARCHITECTURE.md - # IDE/Editor .claude/ .vscode/ diff --git a/program-examples/anchor/README.md b/program-examples/anchor/README.md index 62cd3bd..0e72754 100644 --- a/program-examples/anchor/README.md +++ b/program-examples/anchor/README.md @@ -1,13 +1,5 @@ # Light Token Anchor Solana Programs -## Macro programs - -- [**create-mint**](macro-basics/create-mint-macro/src/lib.rs) - Create a light-token mint using `#[light_account]` macro | [Test](macro-basics/create-mint-macro/tests/test.rs) -- [**create-ata**](macro-basics/create-ata-macro/src/lib.rs) - Create an associated light-token account using `#[light_account]` macro | [Test](macro-basics/create-ata-macro/tests/test.rs) -- [**create-token-account**](macro-basics/create-token-account-macro/src/lib.rs) - Create a light-token account using `#[light_account]` macro | [Test](macro-basics/create-token-account-macro/tests/test.rs) -- [**mint-to**](macro-basics/mint-to-macro/src/lib.rs) - Mint tokens using `#[light_account]` macro | [Test](macro-basics/mint-to-macro/tests/test.rs) -- [**transfer**](macro-basics/transfer-macro/src/lib.rs) - Transfer tokens using `#[light_account]` macro | [Test](macro-basics/transfer-macro/tests/test.rs) - ## SDK programs - [**create-mint**](sdk-basics/create-mint/src/lib.rs) - Create a light-token mint via CPI | [Test](sdk-basics/create-mint/tests/test.rs) @@ -28,7 +20,6 @@ ```bash cd sdk-basics && anchor build -cd macro-basics && anchor build ``` ## Test @@ -43,7 +34,6 @@ cd macro-basics && anchor build ```bash cd sdk-basics && cargo test-sbf -cd macro-basics && cargo test-sbf ``` ## Disclaimer From 07d0b9c1eb95e1f83f17cfa4ac4203e3164d6d01 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Tue, 27 Jan 2026 00:11:10 +0000 Subject: [PATCH 16/23] latest --- .../{sdk-basics => programs-sdk}/Anchor.toml | 0 .../{sdk-basics => programs-sdk}/Cargo.lock | 104 +++++------ .../{sdk-basics => programs-sdk}/Cargo.toml | 1 + .../{sdk-basics => programs-sdk}/README.md | 11 +- .../approve/Cargo.toml | 1 + .../approve/src/lib.rs | 0 .../anchor/programs-sdk/approve/tests/test.rs | 44 +++++ .../burn/Cargo.toml | 2 + .../burn/src/lib.rs | 0 .../anchor/programs-sdk/burn/tests/test.rs | 41 +++++ .../close/Cargo.toml | 1 + .../close/src/lib.rs | 0 .../anchor/programs-sdk/close/tests/test.rs | 39 ++++ .../create-ata/Cargo.toml | 0 .../create-ata/src/lib.rs | 0 .../create-ata/tests/test.rs | 5 +- .../create-mint/Cargo.toml | 0 .../create-mint/src/lib.rs | 0 .../create-mint/tests/test.rs | 6 +- .../create-token-account/Cargo.toml | 0 .../create-token-account/src/lib.rs | 0 .../create-token-account/tests/test.rs | 5 +- .../freeze/Cargo.toml | 1 + .../freeze/src/lib.rs | 0 .../anchor/programs-sdk/freeze/tests/test.rs | 37 ++++ .../mint-to-checked/Cargo.toml | 1 + .../mint-to-checked/src/lib.rs | 0 .../mint-to-checked/tests/test.rs | 40 ++++ .../mint-to/Cargo.toml | 1 + .../mint-to/src/lib.rs | 0 .../anchor/programs-sdk/mint-to/tests/test.rs | 38 ++++ .../revoke/Cargo.toml | 1 + .../revoke/src/lib.rs | 0 .../anchor/programs-sdk/revoke/tests/test.rs | 56 ++++++ .../anchor/programs-sdk/test-utils/Cargo.toml | 11 ++ .../anchor/programs-sdk/test-utils/src/lib.rs | 174 ++++++++++++++++++ .../thaw/Cargo.toml | 1 + .../thaw/src/lib.rs | 0 .../anchor/programs-sdk/thaw/tests/test.rs | 51 +++++ .../transfer-checked/Cargo.toml | 4 +- .../transfer-checked/src/lib.rs | 0 .../transfer-checked/tests/test.rs | 53 ++++++ .../transfer-interface/Cargo.toml | 4 +- .../transfer-interface/src/lib.rs | 0 .../transfer-interface/tests/test.rs | 55 ++++++ .../anchor/sdk-basics/approve/tests/test.rs | 122 ------------ .../anchor/sdk-basics/burn/tests/test.rs | 120 ------------ .../anchor/sdk-basics/close/tests/test.rs | 104 ----------- .../anchor/sdk-basics/freeze/tests/test.rs | 119 ------------ .../sdk-basics/mint-to-checked/tests/test.rs | 103 ----------- .../anchor/sdk-basics/mint-to/tests/test.rs | 103 ----------- .../anchor/sdk-basics/revoke/tests/test.rs | 133 ------------- .../anchor/sdk-basics/thaw/tests/test.rs | 131 ------------- .../sdk-basics/transfer-checked/tests/test.rs | 142 -------------- .../transfer-interface/tests/test.rs | 147 --------------- 55 files changed, 719 insertions(+), 1293 deletions(-) rename program-examples/anchor/{sdk-basics => programs-sdk}/Anchor.toml (100%) rename program-examples/anchor/{sdk-basics => programs-sdk}/Cargo.lock (99%) rename program-examples/anchor/{sdk-basics => programs-sdk}/Cargo.toml (98%) rename program-examples/anchor/{sdk-basics => programs-sdk}/README.md (87%) rename program-examples/anchor/{sdk-basics => programs-sdk}/approve/Cargo.toml (94%) rename program-examples/anchor/{sdk-basics => programs-sdk}/approve/src/lib.rs (100%) create mode 100644 program-examples/anchor/programs-sdk/approve/tests/test.rs rename program-examples/anchor/{sdk-basics => programs-sdk}/burn/Cargo.toml (90%) rename program-examples/anchor/{sdk-basics => programs-sdk}/burn/src/lib.rs (100%) create mode 100644 program-examples/anchor/programs-sdk/burn/tests/test.rs rename program-examples/anchor/{sdk-basics => programs-sdk}/close/Cargo.toml (94%) rename program-examples/anchor/{sdk-basics => programs-sdk}/close/src/lib.rs (100%) create mode 100644 program-examples/anchor/programs-sdk/close/tests/test.rs rename program-examples/anchor/{sdk-basics => programs-sdk}/create-ata/Cargo.toml (100%) rename program-examples/anchor/{sdk-basics => programs-sdk}/create-ata/src/lib.rs (100%) rename program-examples/anchor/{sdk-basics => programs-sdk}/create-ata/tests/test.rs (94%) rename program-examples/anchor/{sdk-basics => programs-sdk}/create-mint/Cargo.toml (100%) rename program-examples/anchor/{sdk-basics => programs-sdk}/create-mint/src/lib.rs (100%) rename program-examples/anchor/{sdk-basics => programs-sdk}/create-mint/tests/test.rs (94%) rename program-examples/anchor/{sdk-basics => programs-sdk}/create-token-account/Cargo.toml (100%) rename program-examples/anchor/{sdk-basics => programs-sdk}/create-token-account/src/lib.rs (100%) rename program-examples/anchor/{sdk-basics => programs-sdk}/create-token-account/tests/test.rs (94%) rename program-examples/anchor/{sdk-basics => programs-sdk}/freeze/Cargo.toml (94%) rename program-examples/anchor/{sdk-basics => programs-sdk}/freeze/src/lib.rs (100%) create mode 100644 program-examples/anchor/programs-sdk/freeze/tests/test.rs rename program-examples/anchor/{sdk-basics => programs-sdk}/mint-to-checked/Cargo.toml (95%) rename program-examples/anchor/{sdk-basics => programs-sdk}/mint-to-checked/src/lib.rs (100%) create mode 100644 program-examples/anchor/programs-sdk/mint-to-checked/tests/test.rs rename program-examples/anchor/{sdk-basics => programs-sdk}/mint-to/Cargo.toml (94%) rename program-examples/anchor/{sdk-basics => programs-sdk}/mint-to/src/lib.rs (100%) create mode 100644 program-examples/anchor/programs-sdk/mint-to/tests/test.rs rename program-examples/anchor/{sdk-basics => programs-sdk}/revoke/Cargo.toml (94%) rename program-examples/anchor/{sdk-basics => programs-sdk}/revoke/src/lib.rs (100%) create mode 100644 program-examples/anchor/programs-sdk/revoke/tests/test.rs create mode 100644 program-examples/anchor/programs-sdk/test-utils/Cargo.toml create mode 100644 program-examples/anchor/programs-sdk/test-utils/src/lib.rs rename program-examples/anchor/{sdk-basics => programs-sdk}/thaw/Cargo.toml (94%) rename program-examples/anchor/{sdk-basics => programs-sdk}/thaw/src/lib.rs (100%) create mode 100644 program-examples/anchor/programs-sdk/thaw/tests/test.rs rename program-examples/anchor/{sdk-basics => programs-sdk}/transfer-checked/Cargo.toml (89%) rename program-examples/anchor/{sdk-basics => programs-sdk}/transfer-checked/src/lib.rs (100%) create mode 100644 program-examples/anchor/programs-sdk/transfer-checked/tests/test.rs rename program-examples/anchor/{sdk-basics => programs-sdk}/transfer-interface/Cargo.toml (89%) rename program-examples/anchor/{sdk-basics => programs-sdk}/transfer-interface/src/lib.rs (100%) create mode 100644 program-examples/anchor/programs-sdk/transfer-interface/tests/test.rs delete mode 100644 program-examples/anchor/sdk-basics/approve/tests/test.rs delete mode 100644 program-examples/anchor/sdk-basics/burn/tests/test.rs delete mode 100644 program-examples/anchor/sdk-basics/close/tests/test.rs delete mode 100644 program-examples/anchor/sdk-basics/freeze/tests/test.rs delete mode 100644 program-examples/anchor/sdk-basics/mint-to-checked/tests/test.rs delete mode 100644 program-examples/anchor/sdk-basics/mint-to/tests/test.rs delete mode 100644 program-examples/anchor/sdk-basics/revoke/tests/test.rs delete mode 100644 program-examples/anchor/sdk-basics/thaw/tests/test.rs delete mode 100644 program-examples/anchor/sdk-basics/transfer-checked/tests/test.rs delete mode 100644 program-examples/anchor/sdk-basics/transfer-interface/tests/test.rs diff --git a/program-examples/anchor/sdk-basics/Anchor.toml b/program-examples/anchor/programs-sdk/Anchor.toml similarity index 100% rename from program-examples/anchor/sdk-basics/Anchor.toml rename to program-examples/anchor/programs-sdk/Anchor.toml diff --git a/program-examples/anchor/sdk-basics/Cargo.lock b/program-examples/anchor/programs-sdk/Cargo.lock similarity index 99% rename from program-examples/anchor/sdk-basics/Cargo.lock rename to program-examples/anchor/programs-sdk/Cargo.lock index 43956cd..3021b29 100644 --- a/program-examples/anchor/sdk-basics/Cargo.lock +++ b/program-examples/anchor/programs-sdk/Cargo.lock @@ -1230,12 +1230,12 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.5" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", - "serde_core", + "serde", ] [[package]] @@ -1457,7 +1457,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -2060,8 +2060,8 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.2", - "system-configuration 0.6.1", + "socket2 0.5.10", + "system-configuration", "tokio", "tower-service", "tracing", @@ -2980,6 +2980,7 @@ dependencies = [ "light-token", "light-token-interface", "solana-sdk", + "test-utils", "tokio", ] @@ -2995,6 +2996,7 @@ dependencies = [ "light-token", "light-token-interface", "solana-sdk", + "test-utils", "tokio", ] @@ -3010,6 +3012,7 @@ dependencies = [ "light-token", "light-token-interface", "solana-sdk", + "test-utils", "tokio", ] @@ -3070,6 +3073,7 @@ dependencies = [ "light-token", "light-token-interface", "solana-sdk", + "test-utils", "tokio", ] @@ -3085,6 +3089,7 @@ dependencies = [ "light-token", "light-token-interface", "solana-sdk", + "test-utils", "tokio", ] @@ -3100,6 +3105,7 @@ dependencies = [ "light-token", "light-token-interface", "solana-sdk", + "test-utils", "tokio", ] @@ -3115,6 +3121,7 @@ dependencies = [ "light-token", "light-token-interface", "solana-sdk", + "test-utils", "tokio", ] @@ -3130,6 +3137,7 @@ dependencies = [ "light-token", "light-token-interface", "solana-sdk", + "test-utils", "tokio", ] @@ -3139,12 +3147,11 @@ version = "0.1.0" dependencies = [ "anchor-lang", "borsh 0.10.4", - "light-client", "light-program-test", "light-sdk", "light-token", - "light-token-interface", "solana-sdk", + "test-utils", "tokio", ] @@ -3154,13 +3161,12 @@ version = "0.1.0" dependencies = [ "anchor-lang", "borsh 0.10.4", - "light-client", "light-program-test", "light-sdk", "light-token", - "light-token-interface", "light-token-types", "solana-sdk", + "test-utils", "tokio", ] @@ -3256,9 +3262,9 @@ checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "litesvm" -version = "0.7.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bca37ac374948b348e29c74b324dc36f18bbbd1ccf80e2046d967521cbd143" +checksum = "1b57cf6c4dac872c3e0e1f2f6f9cfd4e09143d6af04acf2fd34394a3041b0468" dependencies = [ "agave-feature-set", "agave-precompiles", @@ -3476,9 +3482,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.2.0" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-derive" @@ -3903,7 +3909,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls 0.23.36", - "socket2 0.6.2", + "socket2 0.5.10", "thiserror 2.0.18", "tokio", "tracing", @@ -3940,9 +3946,9 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.2", + "socket2 0.5.10", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] @@ -4175,7 +4181,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper 0.1.2", - "system-configuration 0.5.1", + "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls 0.24.1", @@ -4295,7 +4301,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -7680,18 +7686,7 @@ checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", "core-foundation", - "system-configuration-sys 0.5.0", -] - -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags 2.10.0", - "core-foundation", - "system-configuration-sys 0.6.0", + "system-configuration-sys", ] [[package]] @@ -7704,16 +7699,6 @@ dependencies = [ "libc", ] -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "tabled" version = "0.20.0" @@ -7789,7 +7774,7 @@ dependencies = [ "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -7801,6 +7786,17 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "test-utils" +version = "0.1.0" +dependencies = [ + "light-client", + "light-program-test", + "light-token", + "solana-sdk", + "tokio", +] + [[package]] name = "testing_table" version = "0.3.0" @@ -7861,30 +7857,30 @@ dependencies = [ [[package]] name = "time" -version = "0.3.46" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", "num-conv", "powerfmt", - "serde_core", + "serde", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.8" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.26" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ "num-conv", "time-core", @@ -8475,7 +8471,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.48.0", ] [[package]] @@ -8850,18 +8846,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.33" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" +checksum = "71ddd76bcebeed25db614f82bf31a9f4222d3fbba300e6fb6c00afa26cbd4d9d" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.33" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" +checksum = "d8187381b52e32220d50b255276aa16a084ec0a9017a0ca2152a1f55c539758d" dependencies = [ "proc-macro2", "quote", diff --git a/program-examples/anchor/sdk-basics/Cargo.toml b/program-examples/anchor/programs-sdk/Cargo.toml similarity index 98% rename from program-examples/anchor/sdk-basics/Cargo.toml rename to program-examples/anchor/programs-sdk/Cargo.toml index efc32db..6f9a038 100644 --- a/program-examples/anchor/sdk-basics/Cargo.toml +++ b/program-examples/anchor/programs-sdk/Cargo.toml @@ -10,6 +10,7 @@ members = [ "mint-to", "mint-to-checked", "revoke", + "test-utils", "thaw", "transfer-interface", "transfer-checked", diff --git a/program-examples/anchor/sdk-basics/README.md b/program-examples/anchor/programs-sdk/README.md similarity index 87% rename from program-examples/anchor/sdk-basics/README.md rename to program-examples/anchor/programs-sdk/README.md index 92262ef..db9d278 100644 --- a/program-examples/anchor/sdk-basics/README.md +++ b/program-examples/anchor/programs-sdk/README.md @@ -1,4 +1,4 @@ -# Light Token Anchor Programs (SDK) +# Light Token Anchor Programs using SDK - **[approve](approve/src/lib.rs)** - Approve delegate - **[burn](burn/src/lib.rs)** - Burn tokens @@ -13,13 +13,16 @@ - **[transfer-checked](transfer-checked/src/lib.rs)** - Transfer with mint validation - **[transfer-interface](transfer-interface/src/lib.rs)** - Transfer between light-token, T22, and SPL accounts -## Build +## Build and Test ```bash -anchor build +# for localnet +npm i -g @lightprotocol/zk-compression-cli@alpha ``` -## Test +```bash +anchor build +``` ```bash cargo test-sbf diff --git a/program-examples/anchor/sdk-basics/approve/Cargo.toml b/program-examples/anchor/programs-sdk/approve/Cargo.toml similarity index 94% rename from program-examples/anchor/sdk-basics/approve/Cargo.toml rename to program-examples/anchor/programs-sdk/approve/Cargo.toml index 08c1e58..58449e9 100644 --- a/program-examples/anchor/sdk-basics/approve/Cargo.toml +++ b/program-examples/anchor/programs-sdk/approve/Cargo.toml @@ -25,6 +25,7 @@ light-token-interface = { workspace = true } borsh = { workspace = true } tokio = { workspace = true } solana-sdk = { workspace = true } +test-utils = { path = "../test-utils" } [lints.rust.unexpected_cfgs] level = "allow" diff --git a/program-examples/anchor/sdk-basics/approve/src/lib.rs b/program-examples/anchor/programs-sdk/approve/src/lib.rs similarity index 100% rename from program-examples/anchor/sdk-basics/approve/src/lib.rs rename to program-examples/anchor/programs-sdk/approve/src/lib.rs diff --git a/program-examples/anchor/programs-sdk/approve/tests/test.rs b/program-examples/anchor/programs-sdk/approve/tests/test.rs new file mode 100644 index 0000000..22e2590 --- /dev/null +++ b/program-examples/anchor/programs-sdk/approve/tests/test.rs @@ -0,0 +1,44 @@ +use anchor_lang::InstructionData; +use light_program_test::Rpc; +use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; +use light_token_anchor_approve::{instruction::Approve, ID}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, + system_program, +}; +use test_utils::{mint_tokens, setup_test_env}; + +#[tokio::test] +async fn test_approve() { + let mut env = setup_test_env("light_token_anchor_approve", ID).await; + + // Mint tokens first + let mint_amount = 1_000_000u64; + mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, mint_amount).await; + + // Call the anchor program to approve delegate + let delegate = Keypair::new(); + let approve_amount = 500_000u64; + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(env.ata, false), + AccountMeta::new_readonly(delegate.pubkey(), false), + AccountMeta::new_readonly(env.payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: Approve { amount: approve_amount }.data(), + }; + + let sig = env + .rpc + .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/burn/Cargo.toml b/program-examples/anchor/programs-sdk/burn/Cargo.toml similarity index 90% rename from program-examples/anchor/sdk-basics/burn/Cargo.toml rename to program-examples/anchor/programs-sdk/burn/Cargo.toml index 9315f14..42e3134 100644 --- a/program-examples/anchor/sdk-basics/burn/Cargo.toml +++ b/program-examples/anchor/programs-sdk/burn/Cargo.toml @@ -21,10 +21,12 @@ light-token = { workspace = true } [dev-dependencies] light-program-test = { workspace = true } light-client = { workspace = true } +light-token = { workspace = true } light-token-interface = { workspace = true } borsh = { workspace = true } tokio = { workspace = true } solana-sdk = { workspace = true } +test-utils = { path = "../test-utils" } [lints.rust.unexpected_cfgs] level = "allow" diff --git a/program-examples/anchor/sdk-basics/burn/src/lib.rs b/program-examples/anchor/programs-sdk/burn/src/lib.rs similarity index 100% rename from program-examples/anchor/sdk-basics/burn/src/lib.rs rename to program-examples/anchor/programs-sdk/burn/src/lib.rs diff --git a/program-examples/anchor/programs-sdk/burn/tests/test.rs b/program-examples/anchor/programs-sdk/burn/tests/test.rs new file mode 100644 index 0000000..d33c9fe --- /dev/null +++ b/program-examples/anchor/programs-sdk/burn/tests/test.rs @@ -0,0 +1,41 @@ +use anchor_lang::InstructionData; +use light_program_test::Rpc; +use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; +use light_token_anchor_burn::{instruction::Burn, ID}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signer::Signer, + system_program, +}; +use test_utils::{mint_tokens, setup_test_env}; + +#[tokio::test] +async fn test_burn() { + let mut env = setup_test_env("light_token_anchor_burn", ID).await; + + // Mint tokens first + let mint_amount = 1_000_000u64; + mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, mint_amount).await; + + // Call the anchor program to burn tokens + let burn_amount = 250_000u64; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(env.ata, false), + AccountMeta::new(env.mint_pda, false), + AccountMeta::new_readonly(env.payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: Burn { amount: burn_amount }.data(), + }; + + let sig = env + .rpc + .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/close/Cargo.toml b/program-examples/anchor/programs-sdk/close/Cargo.toml similarity index 94% rename from program-examples/anchor/sdk-basics/close/Cargo.toml rename to program-examples/anchor/programs-sdk/close/Cargo.toml index 7cc0c13..e59afd2 100644 --- a/program-examples/anchor/sdk-basics/close/Cargo.toml +++ b/program-examples/anchor/programs-sdk/close/Cargo.toml @@ -25,6 +25,7 @@ light-token-interface = { workspace = true } borsh = { workspace = true } tokio = { workspace = true } solana-sdk = { workspace = true } +test-utils = { path = "../test-utils" } [lints.rust.unexpected_cfgs] level = "allow" diff --git a/program-examples/anchor/sdk-basics/close/src/lib.rs b/program-examples/anchor/programs-sdk/close/src/lib.rs similarity index 100% rename from program-examples/anchor/sdk-basics/close/src/lib.rs rename to program-examples/anchor/programs-sdk/close/src/lib.rs diff --git a/program-examples/anchor/programs-sdk/close/tests/test.rs b/program-examples/anchor/programs-sdk/close/tests/test.rs new file mode 100644 index 0000000..0a542a0 --- /dev/null +++ b/program-examples/anchor/programs-sdk/close/tests/test.rs @@ -0,0 +1,39 @@ +use anchor_lang::InstructionData; +use light_program_test::Rpc; +use light_token::instruction::{rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID}; +use light_token_anchor_close::{instruction::CloseAccount, ID}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signer::Signer, +}; +use test_utils::setup_test_env; + +#[tokio::test] +async fn test_close() { + let mut env = setup_test_env("light_token_anchor_close", ID).await; + + // ATA must be empty to close (no mint_tokens call). + + // Call the anchor program to close account + let rent_sponsor = rent_sponsor_pda(); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(env.ata, false), + AccountMeta::new(env.payer.pubkey(), false), + AccountMeta::new_readonly(env.payer.pubkey(), true), + AccountMeta::new(rent_sponsor, false), + ], + data: CloseAccount {}.data(), + }; + + let sig = env + .rpc + .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/create-ata/Cargo.toml b/program-examples/anchor/programs-sdk/create-ata/Cargo.toml similarity index 100% rename from program-examples/anchor/sdk-basics/create-ata/Cargo.toml rename to program-examples/anchor/programs-sdk/create-ata/Cargo.toml diff --git a/program-examples/anchor/sdk-basics/create-ata/src/lib.rs b/program-examples/anchor/programs-sdk/create-ata/src/lib.rs similarity index 100% rename from program-examples/anchor/sdk-basics/create-ata/src/lib.rs rename to program-examples/anchor/programs-sdk/create-ata/src/lib.rs diff --git a/program-examples/anchor/sdk-basics/create-ata/tests/test.rs b/program-examples/anchor/programs-sdk/create-ata/tests/test.rs similarity index 94% rename from program-examples/anchor/sdk-basics/create-ata/tests/test.rs rename to program-examples/anchor/programs-sdk/create-ata/tests/test.rs index 5d62acf..2728fab 100644 --- a/program-examples/anchor/sdk-basics/create-ata/tests/test.rs +++ b/program-examples/anchor/programs-sdk/create-ata/tests/test.rs @@ -54,8 +54,8 @@ async fn test_create_ata() { bump, freeze_authority: None, extensions: None, - rent_payment: 16, - write_top_up: 766, + rent_payment: 16, // ~24 hours rent + write_top_up: 766, // ~3 hours rent per write }; let create_mint_ix = CreateMint::new( @@ -72,6 +72,7 @@ async fn test_create_ata() { .await .unwrap(); + // You can use light, spl, t22 mints to create a light token ATA. // Derive ATA address and bump let (ata, ata_bump) = derive_token_ata(&payer.pubkey(), &mint_pda); diff --git a/program-examples/anchor/sdk-basics/create-mint/Cargo.toml b/program-examples/anchor/programs-sdk/create-mint/Cargo.toml similarity index 100% rename from program-examples/anchor/sdk-basics/create-mint/Cargo.toml rename to program-examples/anchor/programs-sdk/create-mint/Cargo.toml diff --git a/program-examples/anchor/sdk-basics/create-mint/src/lib.rs b/program-examples/anchor/programs-sdk/create-mint/src/lib.rs similarity index 100% rename from program-examples/anchor/sdk-basics/create-mint/src/lib.rs rename to program-examples/anchor/programs-sdk/create-mint/src/lib.rs diff --git a/program-examples/anchor/sdk-basics/create-mint/tests/test.rs b/program-examples/anchor/programs-sdk/create-mint/tests/test.rs similarity index 94% rename from program-examples/anchor/sdk-basics/create-mint/tests/test.rs rename to program-examples/anchor/programs-sdk/create-mint/tests/test.rs index f6ba30d..2a6f6a7 100644 --- a/program-examples/anchor/sdk-basics/create-mint/tests/test.rs +++ b/program-examples/anchor/programs-sdk/create-mint/tests/test.rs @@ -73,8 +73,8 @@ async fn test_create_mint() { proof: rpc_result.proof.0.unwrap(), freeze_authority: None, bump, - rent_payment: Some(16), - write_top_up: Some(766), + rent_payment: Some(16), // ~24 hours rent + write_top_up: Some(766), // ~3 hours rent per write metadata: None, } .data(), @@ -91,6 +91,6 @@ async fn test_create_mint() { .unwrap() .value; - assert!(compressed_account.is_some(), "Compressed mint should exist"); + assert!(compressed_account.is_some(), "Light-mint should exist"); println!("Tx: {}", sig); } diff --git a/program-examples/anchor/sdk-basics/create-token-account/Cargo.toml b/program-examples/anchor/programs-sdk/create-token-account/Cargo.toml similarity index 100% rename from program-examples/anchor/sdk-basics/create-token-account/Cargo.toml rename to program-examples/anchor/programs-sdk/create-token-account/Cargo.toml diff --git a/program-examples/anchor/sdk-basics/create-token-account/src/lib.rs b/program-examples/anchor/programs-sdk/create-token-account/src/lib.rs similarity index 100% rename from program-examples/anchor/sdk-basics/create-token-account/src/lib.rs rename to program-examples/anchor/programs-sdk/create-token-account/src/lib.rs diff --git a/program-examples/anchor/sdk-basics/create-token-account/tests/test.rs b/program-examples/anchor/programs-sdk/create-token-account/tests/test.rs similarity index 94% rename from program-examples/anchor/sdk-basics/create-token-account/tests/test.rs rename to program-examples/anchor/programs-sdk/create-token-account/tests/test.rs index 1fb1032..3fdef55 100644 --- a/program-examples/anchor/sdk-basics/create-token-account/tests/test.rs +++ b/program-examples/anchor/programs-sdk/create-token-account/tests/test.rs @@ -58,8 +58,8 @@ async fn test_create_token_account() { bump, freeze_authority: None, extensions: None, - rent_payment: 16, - write_top_up: 766, + rent_payment: 16, // ~24 hours rent + write_top_up: 766, // ~3 hours rent per write }; let create_mint_ix = CreateMint::new( @@ -76,6 +76,7 @@ async fn test_create_token_account() { .await .unwrap(); + // You can use light, spl, t22 mints to create a light token account. // Create a token account let token_account = Keypair::new(); let owner = payer.pubkey(); diff --git a/program-examples/anchor/sdk-basics/freeze/Cargo.toml b/program-examples/anchor/programs-sdk/freeze/Cargo.toml similarity index 94% rename from program-examples/anchor/sdk-basics/freeze/Cargo.toml rename to program-examples/anchor/programs-sdk/freeze/Cargo.toml index 8d0c730..03bb5d0 100644 --- a/program-examples/anchor/sdk-basics/freeze/Cargo.toml +++ b/program-examples/anchor/programs-sdk/freeze/Cargo.toml @@ -25,6 +25,7 @@ light-token-interface = { workspace = true } borsh = { workspace = true } tokio = { workspace = true } solana-sdk = { workspace = true } +test-utils = { path = "../test-utils" } [lints.rust.unexpected_cfgs] level = "allow" diff --git a/program-examples/anchor/sdk-basics/freeze/src/lib.rs b/program-examples/anchor/programs-sdk/freeze/src/lib.rs similarity index 100% rename from program-examples/anchor/sdk-basics/freeze/src/lib.rs rename to program-examples/anchor/programs-sdk/freeze/src/lib.rs diff --git a/program-examples/anchor/programs-sdk/freeze/tests/test.rs b/program-examples/anchor/programs-sdk/freeze/tests/test.rs new file mode 100644 index 0000000..105597c --- /dev/null +++ b/program-examples/anchor/programs-sdk/freeze/tests/test.rs @@ -0,0 +1,37 @@ +use anchor_lang::InstructionData; +use light_program_test::Rpc; +use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; +use light_token_anchor_freeze::{instruction::Freeze, ID}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signer::Signer, +}; +use test_utils::{mint_tokens, setup_test_env_with_freeze}; + +#[tokio::test] +async fn test_freeze() { + let mut env = setup_test_env_with_freeze("light_token_anchor_freeze", ID).await; + + // Mint tokens first + mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, 1_000_000).await; + + // Call the anchor program to freeze account + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(env.ata, false), + AccountMeta::new_readonly(env.mint_pda, false), + AccountMeta::new_readonly(env.freeze_authority, true), + ], + data: Freeze {}.data(), + }; + + let sig = env + .rpc + .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/mint-to-checked/Cargo.toml b/program-examples/anchor/programs-sdk/mint-to-checked/Cargo.toml similarity index 95% rename from program-examples/anchor/sdk-basics/mint-to-checked/Cargo.toml rename to program-examples/anchor/programs-sdk/mint-to-checked/Cargo.toml index 0a5477c..e494d47 100644 --- a/program-examples/anchor/sdk-basics/mint-to-checked/Cargo.toml +++ b/program-examples/anchor/programs-sdk/mint-to-checked/Cargo.toml @@ -25,6 +25,7 @@ light-token-interface = { workspace = true } borsh = { workspace = true } tokio = { workspace = true } solana-sdk = { workspace = true } +test-utils = { path = "../test-utils" } [lints.rust.unexpected_cfgs] level = "allow" diff --git a/program-examples/anchor/sdk-basics/mint-to-checked/src/lib.rs b/program-examples/anchor/programs-sdk/mint-to-checked/src/lib.rs similarity index 100% rename from program-examples/anchor/sdk-basics/mint-to-checked/src/lib.rs rename to program-examples/anchor/programs-sdk/mint-to-checked/src/lib.rs diff --git a/program-examples/anchor/programs-sdk/mint-to-checked/tests/test.rs b/program-examples/anchor/programs-sdk/mint-to-checked/tests/test.rs new file mode 100644 index 0000000..8288a27 --- /dev/null +++ b/program-examples/anchor/programs-sdk/mint-to-checked/tests/test.rs @@ -0,0 +1,40 @@ +use anchor_lang::InstructionData; +use light_program_test::Rpc; +use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; +use light_token_anchor_mint_to_checked::{instruction::MintToChecked, ID}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signer::Signer, + system_program, +}; +use test_utils::setup_test_env; + +#[tokio::test(flavor = "multi_thread")] +async fn test_mint_to_checked() { + let mut env = setup_test_env("light_token_anchor_mint_to_checked", ID).await; + + // MintToChecked validates decimals match the mint's decimals. + // No mint_tokens call - the test IS minting tokens via CPI. + let amount = 1_000_000u64; + let decimals = 9u8; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(env.mint_pda, false), + AccountMeta::new(env.ata, false), + AccountMeta::new_readonly(env.payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: MintToChecked { amount, decimals }.data(), + }; + + env.rpc + .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) + .await + .unwrap(); + + // Verify the account exists and has data + let ata_data = env.rpc.get_account(env.ata).await.unwrap().unwrap(); + assert!(!ata_data.data.is_empty(), "ATA account should have data"); +} diff --git a/program-examples/anchor/sdk-basics/mint-to/Cargo.toml b/program-examples/anchor/programs-sdk/mint-to/Cargo.toml similarity index 94% rename from program-examples/anchor/sdk-basics/mint-to/Cargo.toml rename to program-examples/anchor/programs-sdk/mint-to/Cargo.toml index 65d6646..80f5772 100644 --- a/program-examples/anchor/sdk-basics/mint-to/Cargo.toml +++ b/program-examples/anchor/programs-sdk/mint-to/Cargo.toml @@ -25,6 +25,7 @@ light-token-interface = { workspace = true } borsh = { workspace = true } tokio = { workspace = true } solana-sdk = { workspace = true } +test-utils = { path = "../test-utils" } [lints.rust.unexpected_cfgs] level = "allow" diff --git a/program-examples/anchor/sdk-basics/mint-to/src/lib.rs b/program-examples/anchor/programs-sdk/mint-to/src/lib.rs similarity index 100% rename from program-examples/anchor/sdk-basics/mint-to/src/lib.rs rename to program-examples/anchor/programs-sdk/mint-to/src/lib.rs diff --git a/program-examples/anchor/programs-sdk/mint-to/tests/test.rs b/program-examples/anchor/programs-sdk/mint-to/tests/test.rs new file mode 100644 index 0000000..916ee15 --- /dev/null +++ b/program-examples/anchor/programs-sdk/mint-to/tests/test.rs @@ -0,0 +1,38 @@ +use anchor_lang::InstructionData; +use light_program_test::Rpc; +use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; +use light_token_anchor_mint_to::{instruction::MintTo, ID}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signer::Signer, + system_program, +}; +use test_utils::setup_test_env; + +#[tokio::test(flavor = "multi_thread")] +async fn test_mint_to() { + let mut env = setup_test_env("light_token_anchor_mint_to", ID).await; + + // No mint_tokens call - the test IS minting tokens via CPI. + let amount = 1_000_000u64; + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(env.mint_pda, false), + AccountMeta::new(env.ata, false), + AccountMeta::new_readonly(env.payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: MintTo { amount }.data(), + }; + + env.rpc + .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) + .await + .unwrap(); + + // Verify the account exists and has data + let ata_data = env.rpc.get_account(env.ata).await.unwrap().unwrap(); + assert!(!ata_data.data.is_empty(), "ATA account should have data"); +} diff --git a/program-examples/anchor/sdk-basics/revoke/Cargo.toml b/program-examples/anchor/programs-sdk/revoke/Cargo.toml similarity index 94% rename from program-examples/anchor/sdk-basics/revoke/Cargo.toml rename to program-examples/anchor/programs-sdk/revoke/Cargo.toml index 3ca6657..5f2780c 100644 --- a/program-examples/anchor/sdk-basics/revoke/Cargo.toml +++ b/program-examples/anchor/programs-sdk/revoke/Cargo.toml @@ -25,6 +25,7 @@ light-token-interface = { workspace = true } borsh = { workspace = true } tokio = { workspace = true } solana-sdk = { workspace = true } +test-utils = { path = "../test-utils" } [lints.rust.unexpected_cfgs] level = "allow" diff --git a/program-examples/anchor/sdk-basics/revoke/src/lib.rs b/program-examples/anchor/programs-sdk/revoke/src/lib.rs similarity index 100% rename from program-examples/anchor/sdk-basics/revoke/src/lib.rs rename to program-examples/anchor/programs-sdk/revoke/src/lib.rs diff --git a/program-examples/anchor/programs-sdk/revoke/tests/test.rs b/program-examples/anchor/programs-sdk/revoke/tests/test.rs new file mode 100644 index 0000000..93efa2b --- /dev/null +++ b/program-examples/anchor/programs-sdk/revoke/tests/test.rs @@ -0,0 +1,56 @@ +use anchor_lang::InstructionData; +use light_program_test::Rpc; +use light_token::instruction::{Approve, LIGHT_TOKEN_PROGRAM_ID}; +use light_token_anchor_revoke::{instruction::Revoke, ID}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, + system_program, +}; +use test_utils::{mint_tokens, setup_test_env}; + +#[tokio::test] +async fn test_revoke() { + let mut env = setup_test_env("light_token_anchor_revoke", ID).await; + + // Mint tokens first + let mint_amount = 1_000_000u64; + mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, mint_amount).await; + + // Approve delegate first using SDK + let delegate = Keypair::new(); + let approve_ix = Approve { + token_account: env.ata, + delegate: delegate.pubkey(), + owner: env.payer.pubkey(), + amount: 500_000, + } + .instruction() + .unwrap(); + + env.rpc + .create_and_send_transaction(&[approve_ix], &env.payer.pubkey(), &[&env.payer]) + .await + .unwrap(); + + // Call the anchor program to revoke delegation + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(env.ata, false), + AccountMeta::new_readonly(env.payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: Revoke {}.data(), + }; + + let sig = env + .rpc + .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/programs-sdk/test-utils/Cargo.toml b/program-examples/anchor/programs-sdk/test-utils/Cargo.toml new file mode 100644 index 0000000..05458c4 --- /dev/null +++ b/program-examples/anchor/programs-sdk/test-utils/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "test-utils" +version = "0.1.0" +edition = "2021" + +[dependencies] +light-program-test = { workspace = true } +light-client = { workspace = true } +light-token = { workspace = true } +solana-sdk = { workspace = true } +tokio = { workspace = true } diff --git a/program-examples/anchor/programs-sdk/test-utils/src/lib.rs b/program-examples/anchor/programs-sdk/test-utils/src/lib.rs new file mode 100644 index 0000000..63d1056 --- /dev/null +++ b/program-examples/anchor/programs-sdk/test-utils/src/lib.rs @@ -0,0 +1,174 @@ +//! Shared test utilities for programs-sdk examples. + +use light_client::indexer::AddressWithTree; +use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; +use light_token::instruction::{ + CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, + derive_mint_compressed_address, derive_token_ata, find_mint_address, +}; +use solana_sdk::{pubkey::Pubkey, signature::Keypair, signer::Signer}; + +/// Test environment with RPC, payer, and mint details. +pub struct TestEnv { + pub rpc: LightProgramTest, + pub payer: Keypair, + pub mint_pda: Pubkey, + pub ata: Pubkey, +} + +/// Test environment with freeze authority enabled on mint. +pub struct TestEnvWithFreeze { + pub rpc: LightProgramTest, + pub payer: Keypair, + pub mint_pda: Pubkey, + pub ata: Pubkey, + pub freeze_authority: Pubkey, +} + +/// Sets up a test environment with an initialized Light token mint and ATA. +pub async fn setup_test_env(program_name: &'static str, program_id: Pubkey) -> TestEnv { + let config = ProgramTestConfig::new_v2(true, Some(vec![(program_name, program_id)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + + let (mint_pda, _mint_seed) = create_mint(&mut rpc, &payer, None).await; + let ata = create_ata(&mut rpc, &payer, &mint_pda).await; + + TestEnv { + rpc, + payer, + mint_pda, + ata, + } +} + +/// Sets up a test environment with freeze authority enabled on the mint. +pub async fn setup_test_env_with_freeze( + program_name: &'static str, + program_id: Pubkey, +) -> TestEnvWithFreeze { + let config = ProgramTestConfig::new_v2(true, Some(vec![(program_name, program_id)])); + let mut rpc = LightProgramTest::new(config).await.unwrap(); + let payer = rpc.get_payer().insecure_clone(); + let freeze_authority = payer.pubkey(); + + let (mint_pda, _mint_seed) = create_mint(&mut rpc, &payer, Some(freeze_authority)).await; + let ata = create_ata(&mut rpc, &payer, &mint_pda).await; + + TestEnvWithFreeze { + rpc, + payer, + mint_pda, + ata, + freeze_authority, + } +} + +/// Creates a Light-mint with optional freeze authority. Returns its PDA and seed keypair. +pub async fn create_mint( + rpc: &mut LightProgramTest, + payer: &Keypair, + freeze_authority: Option, +) -> (Pubkey, Keypair) { + let mint_seed = Keypair::new(); + let mint_authority = payer.pubkey(); + let decimals = 9u8; + + let address_tree = rpc.get_address_tree_v2(); + let output_queue = rpc.get_random_state_tree_info().unwrap().queue; + + let compression_address = + derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); + let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); + + let rpc_result = rpc + .get_validity_proof( + vec![], + vec![AddressWithTree { + address: compression_address, + tree: address_tree.tree, + }], + None, + ) + .await + .unwrap() + .value; + + let params = CreateMintParams { + decimals, + address_merkle_tree_root_index: rpc_result.addresses[0].root_index, + mint_authority, + proof: rpc_result.proof.0.unwrap(), + compression_address, + mint: mint_pda, + bump, + freeze_authority, + extensions: None, + rent_payment: 16, + write_top_up: 766, + }; + + let create_ix = CreateMint::new( + params, + mint_seed.pubkey(), + payer.pubkey(), + address_tree.tree, + output_queue, + ) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[payer, &mint_seed]) + .await + .unwrap(); + + (mint_pda, mint_seed) +} + +/// Creates a Light-ATA for the payer. +pub async fn create_ata(rpc: &mut LightProgramTest, payer: &Keypair, mint_pda: &Pubkey) -> Pubkey { + create_ata_for_owner(rpc, payer, &payer.pubkey(), mint_pda).await +} + +/// Creates a Light-ATA for a specific owner. +pub async fn create_ata_for_owner( + rpc: &mut LightProgramTest, + payer: &Keypair, + owner: &Pubkey, + mint_pda: &Pubkey, +) -> Pubkey { + let (ata, _) = derive_token_ata(owner, mint_pda); + let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), *owner, *mint_pda) + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[payer]) + .await + .unwrap(); + + ata +} + +/// Mints tokens to the specified ATA. +pub async fn mint_tokens( + rpc: &mut LightProgramTest, + payer: &Keypair, + mint_pda: Pubkey, + ata: Pubkey, + amount: u64, +) { + let mint_to_ix = MintTo { + mint: mint_pda, + destination: ata, + amount, + authority: payer.pubkey(), + max_top_up: None, + fee_payer: None, + } + .instruction() + .unwrap(); + + rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[payer]) + .await + .unwrap(); +} diff --git a/program-examples/anchor/sdk-basics/thaw/Cargo.toml b/program-examples/anchor/programs-sdk/thaw/Cargo.toml similarity index 94% rename from program-examples/anchor/sdk-basics/thaw/Cargo.toml rename to program-examples/anchor/programs-sdk/thaw/Cargo.toml index d114a52..f5b17ca 100644 --- a/program-examples/anchor/sdk-basics/thaw/Cargo.toml +++ b/program-examples/anchor/programs-sdk/thaw/Cargo.toml @@ -25,6 +25,7 @@ light-token-interface = { workspace = true } borsh = { workspace = true } tokio = { workspace = true } solana-sdk = { workspace = true } +test-utils = { path = "../test-utils" } [lints.rust.unexpected_cfgs] level = "allow" diff --git a/program-examples/anchor/sdk-basics/thaw/src/lib.rs b/program-examples/anchor/programs-sdk/thaw/src/lib.rs similarity index 100% rename from program-examples/anchor/sdk-basics/thaw/src/lib.rs rename to program-examples/anchor/programs-sdk/thaw/src/lib.rs diff --git a/program-examples/anchor/programs-sdk/thaw/tests/test.rs b/program-examples/anchor/programs-sdk/thaw/tests/test.rs new file mode 100644 index 0000000..39530d1 --- /dev/null +++ b/program-examples/anchor/programs-sdk/thaw/tests/test.rs @@ -0,0 +1,51 @@ +use anchor_lang::InstructionData; +use light_program_test::Rpc; +use light_token::instruction::{Freeze, LIGHT_TOKEN_PROGRAM_ID}; +use light_token_anchor_thaw::{instruction::Thaw, ID}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signer::Signer, +}; +use test_utils::{mint_tokens, setup_test_env_with_freeze}; + +#[tokio::test] +async fn test_thaw() { + let mut env = setup_test_env_with_freeze("light_token_anchor_thaw", ID).await; + + // Mint tokens first + mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, 1_000_000).await; + + // Freeze account first using SDK + let freeze_ix = Freeze { + token_account: env.ata, + mint: env.mint_pda, + freeze_authority: env.freeze_authority, + } + .instruction() + .unwrap(); + + env.rpc + .create_and_send_transaction(&[freeze_ix], &env.payer.pubkey(), &[&env.payer]) + .await + .unwrap(); + + // Call the anchor program to thaw account + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(env.ata, false), + AccountMeta::new_readonly(env.mint_pda, false), + AccountMeta::new_readonly(env.freeze_authority, true), + ], + data: Thaw {}.data(), + }; + + let sig = env + .rpc + .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/transfer-checked/Cargo.toml b/program-examples/anchor/programs-sdk/transfer-checked/Cargo.toml similarity index 89% rename from program-examples/anchor/sdk-basics/transfer-checked/Cargo.toml rename to program-examples/anchor/programs-sdk/transfer-checked/Cargo.toml index 6d91664..888029e 100644 --- a/program-examples/anchor/sdk-basics/transfer-checked/Cargo.toml +++ b/program-examples/anchor/programs-sdk/transfer-checked/Cargo.toml @@ -20,11 +20,11 @@ light-token = { workspace = true } [dev-dependencies] light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } +light-token = { workspace = true } borsh = { workspace = true } tokio = { workspace = true } solana-sdk = { workspace = true } +test-utils = { path = "../test-utils" } [lints.rust.unexpected_cfgs] level = "allow" diff --git a/program-examples/anchor/sdk-basics/transfer-checked/src/lib.rs b/program-examples/anchor/programs-sdk/transfer-checked/src/lib.rs similarity index 100% rename from program-examples/anchor/sdk-basics/transfer-checked/src/lib.rs rename to program-examples/anchor/programs-sdk/transfer-checked/src/lib.rs diff --git a/program-examples/anchor/programs-sdk/transfer-checked/tests/test.rs b/program-examples/anchor/programs-sdk/transfer-checked/tests/test.rs new file mode 100644 index 0000000..0215531 --- /dev/null +++ b/program-examples/anchor/programs-sdk/transfer-checked/tests/test.rs @@ -0,0 +1,53 @@ +use anchor_lang::InstructionData; +use light_program_test::Rpc; +use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; +use light_token_anchor_transfer_checked::{instruction::TransferChecked, ID}; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + signature::Keypair, + signer::Signer, + system_program, +}; +use test_utils::{create_ata_for_owner, mint_tokens, setup_test_env}; + +#[tokio::test] +async fn test_transfer_checked() { + let mut env = setup_test_env("light_token_anchor_transfer_checked", ID).await; + mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, 1_000_000).await; + + // Create destination ATA for recipient + let recipient = Keypair::new(); + let dest_ata = + create_ata_for_owner(&mut env.rpc, &env.payer, &recipient.pubkey(), &env.mint_pda).await; + + // TransferChecked validates decimals match the mint's decimals. + // Only use for Light->Light transfers. + // Use TransferInterface for all other transfers (Light, SPL or Token-2022). + let transfer_amount = 100_000u64; + let decimals = 9u8; + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(env.ata, false), + AccountMeta::new_readonly(env.mint_pda, false), + AccountMeta::new(dest_ata, false), + AccountMeta::new_readonly(env.payer.pubkey(), true), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: TransferChecked { + amount: transfer_amount, + decimals, + } + .data(), + }; + + let sig = env + .rpc + .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/transfer-interface/Cargo.toml b/program-examples/anchor/programs-sdk/transfer-interface/Cargo.toml similarity index 89% rename from program-examples/anchor/sdk-basics/transfer-interface/Cargo.toml rename to program-examples/anchor/programs-sdk/transfer-interface/Cargo.toml index 7944b7d..d3d598a 100644 --- a/program-examples/anchor/sdk-basics/transfer-interface/Cargo.toml +++ b/program-examples/anchor/programs-sdk/transfer-interface/Cargo.toml @@ -20,12 +20,12 @@ light-token = { workspace = true } [dev-dependencies] light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } +light-token = { workspace = true } light-token-types = { workspace = true } borsh = { workspace = true } tokio = { workspace = true } solana-sdk = { workspace = true } +test-utils = { path = "../test-utils" } [lints.rust.unexpected_cfgs] level = "allow" diff --git a/program-examples/anchor/sdk-basics/transfer-interface/src/lib.rs b/program-examples/anchor/programs-sdk/transfer-interface/src/lib.rs similarity index 100% rename from program-examples/anchor/sdk-basics/transfer-interface/src/lib.rs rename to program-examples/anchor/programs-sdk/transfer-interface/src/lib.rs diff --git a/program-examples/anchor/programs-sdk/transfer-interface/tests/test.rs b/program-examples/anchor/programs-sdk/transfer-interface/tests/test.rs new file mode 100644 index 0000000..410720c --- /dev/null +++ b/program-examples/anchor/programs-sdk/transfer-interface/tests/test.rs @@ -0,0 +1,55 @@ +use anchor_lang::system_program; +use anchor_lang::InstructionData; +use light_program_test::Rpc; +use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; +use light_token_anchor_transfer_interface::{instruction::Transfer, ID}; +use light_token_types::CPI_AUTHORITY_PDA; +use solana_sdk::{ + instruction::{AccountMeta, Instruction}, + pubkey::Pubkey, + signature::Keypair, + signer::Signer, +}; +use test_utils::{create_ata_for_owner, mint_tokens, setup_test_env}; + +#[tokio::test] +async fn test_transfer() { + let mut env = setup_test_env("light_token_anchor_transfer_interface", ID).await; + mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, 1_000_000).await; + + // Create destination ATA for recipient + let recipient = Keypair::new(); + let dest_ata = + create_ata_for_owner(&mut env.rpc, &env.payer, &recipient.pubkey(), &env.mint_pda).await; + + // Transfers tokens between accounts (SPL, Token-2022, or Light) in a single call. + let transfer_amount = 100_000u64; + let decimals = 9u8; + let cpi_authority_pda = Pubkey::new_from_array(CPI_AUTHORITY_PDA); + + let ix = Instruction { + program_id: ID, + accounts: vec![ + AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), + AccountMeta::new(env.ata, false), + AccountMeta::new(dest_ata, false), + AccountMeta::new_readonly(env.payer.pubkey(), true), + AccountMeta::new(env.payer.pubkey(), true), + AccountMeta::new_readonly(cpi_authority_pda, false), + AccountMeta::new_readonly(system_program::ID, false), + ], + data: Transfer { + amount: transfer_amount, + decimals, + } + .data(), + }; + + let sig = env + .rpc + .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) + .await + .unwrap(); + + println!("Tx: {}", sig); +} diff --git a/program-examples/anchor/sdk-basics/approve/tests/test.rs b/program-examples/anchor/sdk-basics/approve/tests/test.rs deleted file mode 100644 index 00d26ec..0000000 --- a/program-examples/anchor/sdk-basics/approve/tests/test.rs +++ /dev/null @@ -1,122 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_approve::{instruction::Approve, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_approve() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_approve", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens first - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to approve delegate - let delegate = Keypair::new(); - let approve_amount = 500_000u64; - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(delegate.pubkey(), false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Approve { amount: approve_amount }.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk-basics/burn/tests/test.rs b/program-examples/anchor/sdk-basics/burn/tests/test.rs deleted file mode 100644 index 04bb321..0000000 --- a/program-examples/anchor/sdk-basics/burn/tests/test.rs +++ /dev/null @@ -1,120 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_burn::{instruction::Burn, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, - system_program, -}; - -#[tokio::test] -async fn test_burn() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_burn", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens first - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to burn tokens - let burn_amount = 250_000u64; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(ata, false), - AccountMeta::new(mint_pda, false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Burn { amount: burn_amount }.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk-basics/close/tests/test.rs b/program-examples/anchor/sdk-basics/close/tests/test.rs deleted file mode 100644 index 7dd4fc2..0000000 --- a/program-examples/anchor/sdk-basics/close/tests/test.rs +++ /dev/null @@ -1,104 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_close::{instruction::CloseAccount, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_close() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_close", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // Create ATA (empty, no tokens) - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to close account - let rent_sponsor = rent_sponsor_pda(); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(ata, false), - AccountMeta::new(payer.pubkey(), false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new(rent_sponsor, false), - ], - data: CloseAccount {}.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk-basics/freeze/tests/test.rs b/program-examples/anchor/sdk-basics/freeze/tests/test.rs deleted file mode 100644 index 830f79f..0000000 --- a/program-examples/anchor/sdk-basics/freeze/tests/test.rs +++ /dev/null @@ -1,119 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_freeze::{instruction::Freeze, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_freeze() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_freeze", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let freeze_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - // Create mint WITH freeze authority - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: Some(freeze_authority), - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: 1_000_000, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to freeze account - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new_readonly(freeze_authority, true), - ], - data: Freeze {}.data(), - }; - - let sig = rpc - .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk-basics/mint-to-checked/tests/test.rs b/program-examples/anchor/sdk-basics/mint-to-checked/tests/test.rs deleted file mode 100644 index 9ad4ade..0000000 --- a/program-examples/anchor/sdk-basics/mint-to-checked/tests/test.rs +++ /dev/null @@ -1,103 +0,0 @@ -use anchor_lang::InstructionData; -use anchor_lang::system_program; -use light_client::indexer::{AddressWithTree, Indexer}; -use light_program_test::{LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_mint_to_checked::{instruction::MintToChecked, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, derive_mint_compressed_address, - derive_token_ata, find_mint_address, LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test(flavor = "multi_thread")] -async fn test_mint_to_checked() { - let config = ProgramTestConfig::new_v2(false, Some(vec![("light_token_anchor_mint_to_checked", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - let amount = 1_000_000u64; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(mint, false), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(mint_authority, true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: MintToChecked { amount, decimals }.data(), - }; - - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Verify the account exists and has data - let ata_data = rpc.get_account(ata).await.unwrap().unwrap(); - assert!(!ata_data.data.is_empty(), "ATA account should have data"); -} diff --git a/program-examples/anchor/sdk-basics/mint-to/tests/test.rs b/program-examples/anchor/sdk-basics/mint-to/tests/test.rs deleted file mode 100644 index c1993d8..0000000 --- a/program-examples/anchor/sdk-basics/mint-to/tests/test.rs +++ /dev/null @@ -1,103 +0,0 @@ -use anchor_lang::InstructionData; -use anchor_lang::system_program; -use light_client::indexer::{AddressWithTree, Indexer}; -use light_program_test::{LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_mint_to::{instruction::MintTo, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, derive_mint_compressed_address, - derive_token_ata, find_mint_address, LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test(flavor = "multi_thread")] -async fn test_mint_to() { - let config = ProgramTestConfig::new_v2(false, Some(vec![("light_token_anchor_mint_to", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - let amount = 1_000_000u64; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(mint, false), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(mint_authority, true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: MintTo { amount }.data(), - }; - - rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Verify the account exists and has data - let ata_data = rpc.get_account(ata).await.unwrap().unwrap(); - assert!(!ata_data.data.is_empty(), "ATA account should have data"); -} diff --git a/program-examples/anchor/sdk-basics/revoke/tests/test.rs b/program-examples/anchor/sdk-basics/revoke/tests/test.rs deleted file mode 100644 index 221122f..0000000 --- a/program-examples/anchor/sdk-basics/revoke/tests/test.rs +++ /dev/null @@ -1,133 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_revoke::{instruction::Revoke, ID}; -use light_token::instruction::{ - Approve, CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_revoke() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_revoke", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Approve delegate first using SDK - let delegate = Keypair::new(); - let approve_ix = Approve { - token_account: ata, - delegate: delegate.pubkey(), - owner: payer.pubkey(), - amount: 500_000, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[approve_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to revoke delegation - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Revoke {}.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk-basics/thaw/tests/test.rs b/program-examples/anchor/sdk-basics/thaw/tests/test.rs deleted file mode 100644 index ea9bf49..0000000 --- a/program-examples/anchor/sdk-basics/thaw/tests/test.rs +++ /dev/null @@ -1,131 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_thaw::{instruction::Thaw, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, Freeze, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_thaw() { - let config = ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_thaw", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let freeze_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - // Create mint WITH freeze authority - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: Some(freeze_authority), - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let (ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount: 1_000_000, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Freeze account first using SDK - let freeze_ix = Freeze { - token_account: ata, - mint: mint_pda, - freeze_authority, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[freeze_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to thaw account - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new_readonly(freeze_authority, true), - ], - data: Thaw {}.data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk-basics/transfer-checked/tests/test.rs b/program-examples/anchor/sdk-basics/transfer-checked/tests/test.rs deleted file mode 100644 index 893a291..0000000 --- a/program-examples/anchor/sdk-basics/transfer-checked/tests/test.rs +++ /dev/null @@ -1,142 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_transfer_checked::{instruction::TransferChecked, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, - system_program, -}; - -#[tokio::test] -async fn test_transfer_checked() { - let config = ProgramTestConfig::new_v2( - true, - Some(vec![("light_token_anchor_transfer_checked", ID)]), - ); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // Create source ATA - let (source_ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_source_ata = - CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_source_ata], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens to source - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: source_ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Create destination ATA for recipient - let recipient = Keypair::new(); - let (dest_ata, _) = derive_token_ata(&recipient.pubkey(), &mint_pda); - let create_dest_ata = - CreateAssociatedTokenAccount::new(payer.pubkey(), recipient.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_dest_ata], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to transfer tokens (checked) - let transfer_amount = 100_000u64; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(source_ata, false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new(dest_ata, false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: TransferChecked { - amount: transfer_amount, - decimals, - } - .data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/sdk-basics/transfer-interface/tests/test.rs b/program-examples/anchor/sdk-basics/transfer-interface/tests/test.rs deleted file mode 100644 index 4a4d0cb..0000000 --- a/program-examples/anchor/sdk-basics/transfer-interface/tests/test.rs +++ /dev/null @@ -1,147 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_transfer_interface::{instruction::Transfer, ID}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, - LIGHT_TOKEN_PROGRAM_ID, -}; -use light_token_types::CPI_AUTHORITY_PDA; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - pubkey::Pubkey, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_transfer() { - let config = ProgramTestConfig::new_v2( - true, - Some(vec![("light_token_anchor_transfer_interface", ID)]), - ); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // Create source ATA - let (source_ata, _) = derive_token_ata(&payer.pubkey(), &mint_pda); - let create_source_ata = - CreateAssociatedTokenAccount::new(payer.pubkey(), payer.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_source_ata], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Mint tokens to source - let mint_amount = 1_000_000u64; - let mint_to_ix = MintTo { - mint: mint_pda, - destination: source_ata, - amount: mint_amount, - authority: mint_authority, - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Create destination ATA for recipient - let recipient = Keypair::new(); - let (dest_ata, _) = derive_token_ata(&recipient.pubkey(), &mint_pda); - let create_dest_ata = - CreateAssociatedTokenAccount::new(payer.pubkey(), recipient.pubkey(), mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_dest_ata], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - // Call the anchor program to transfer tokens - let transfer_amount = 100_000u64; - let cpi_authority_pda = Pubkey::new_from_array(CPI_AUTHORITY_PDA); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(source_ata, false), - AccountMeta::new(dest_ata, false), - AccountMeta::new_readonly(payer.pubkey(), true), - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new_readonly(cpi_authority_pda, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Transfer { - amount: transfer_amount, - decimals, - } - .data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} From cf7c94f2b5cb0665835b3c40ea66cc5d8e52d362 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Thu, 29 Jan 2026 19:28:06 +0000 Subject: [PATCH 17/23] chore: bump versions --- toolkits/streaming-tokens/Cargo.lock | 2321 +++++++++++++++++++++---- toolkits/streaming-tokens/Cargo.toml | 6 +- toolkits/streaming-tokens/README.mdx | 423 ++--- toolkits/streaming-tokens/src/main.rs | 71 +- 4 files changed, 2176 insertions(+), 645 deletions(-) diff --git a/toolkits/streaming-tokens/Cargo.lock b/toolkits/streaming-tokens/Cargo.lock index 203db72..b8aa6c0 100644 --- a/toolkits/streaming-tokens/Cargo.lock +++ b/toolkits/streaming-tokens/Cargo.lock @@ -60,11 +60,11 @@ version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "401c88cbf88986ff413b1f582659facfb1d1d6e53b373c9df8ecc4ef8562370f" dependencies = [ - "ahash", - "solana-epoch-schedule", + "ahash 0.8.12", + "solana-epoch-schedule 3.0.0", "solana-hash 3.1.0", "solana-pubkey 3.0.0", - "solana-sha256-hasher", + "solana-sha256-hasher 3.1.0", "solana-svm-feature-set", ] @@ -76,7 +76,18 @@ checksum = "997e580e670daab5b0e26331b292e0dd06771d3dd732d58393cea1f52f8187a1" dependencies = [ "agave-feature-set", "solana-pubkey 3.0.0", - "solana-sdk-ids", + "solana-sdk-ids 3.1.0", +] + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.16", + "once_cell", + "version_check", ] [[package]] @@ -101,6 +112,23 @@ dependencies = [ "memchr", ] +[[package]] +name = "aligned-sized" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48a526ec4434d531d488af59fe866f36b310fe8906691c75dffa664450a3800a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -122,6 +150,12 @@ 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 = "ascii" version = "0.9.3" @@ -160,7 +194,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -171,7 +205,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -285,6 +319,12 @@ dependencies = [ "tower-service", ] +[[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" @@ -318,6 +358,30 @@ version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +[[package]] +name = "blake3" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures", + "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" @@ -327,16 +391,39 @@ 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.12.3", +] + [[package]] name = "borsh" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" dependencies = [ - "borsh-derive", + "borsh-derive 1.6.0", "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.6.0" @@ -344,10 +431,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" dependencies = [ "once_cell", - "proc-macro-crate", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[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", + "syn 1.0.109", ] [[package]] @@ -392,7 +501,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -439,7 +548,7 @@ checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -496,6 +605,32 @@ version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" +[[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.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + [[package]] name = "core-foundation" version = "0.9.4" @@ -540,6 +675,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + [[package]] name = "crypto-common" version = "0.1.7" @@ -547,7 +688,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "typenum", ] @@ -569,9 +710,9 @@ dependencies = [ "cfg-if", "cpufeatures", "curve25519-dalek-derive", - "digest", + "digest 0.10.7", "fiat-crypto", - "rand_core", + "rand_core 0.6.4", "rustc_version", "serde", "subtle", @@ -586,7 +727,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -610,7 +751,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.111", ] [[package]] @@ -621,7 +762,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -630,13 +771,22 @@ 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", + "block-buffer 0.10.4", "crypto-common", "subtle", ] @@ -649,7 +799,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -731,6 +881,15 @@ dependencies = [ "five8_core 1.0.0", ] +[[package]] +name = "five8_const" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" +dependencies = [ + "five8_core 0.1.2", +] + [[package]] name = "five8_const" version = "1.0.0" @@ -780,6 +939,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -860,7 +1025,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -903,6 +1068,17 @@ dependencies = [ "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.16" @@ -912,7 +1088,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] @@ -980,6 +1156,20 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] [[package]] name = "hashbrown" @@ -1009,11 +1199,11 @@ dependencies = [ "laserstream-core-proto", "prost 0.12.6", "prost-types 0.12.6", - "rand", + "rand 0.8.5", "reqwest", "serde", "serde_json", - "sha2", + "sha2 0.10.9", "thiserror 1.0.69", "tokio", "tokio-stream", @@ -1031,7 +1221,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -1454,16 +1644,16 @@ dependencies = [ "prost 0.14.1", "prost-types 0.14.1", "protobuf-src", - "solana-account", + "solana-account 3.2.0", "solana-account-decoder", - "solana-clock", + "solana-clock 3.0.0", "solana-hash 3.1.0", - "solana-message", + "solana-message 3.0.1", "solana-pubkey 3.0.0", - "solana-signature", + "solana-signature 3.1.0", "solana-transaction", "solana-transaction-context", - "solana-transaction-error", + "solana-transaction-error 3.0.0", "solana-transaction-status", "tonic 0.14.2", "tonic-build 0.14.2", @@ -1483,6 +1673,202 @@ version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" +[[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 = "light-account-checks" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f20b8640212dd450e18d452a247e28d8ba6fdce3c713fd8b69f1e95874d1b7ab" +dependencies = [ + "thiserror 2.0.17", +] + +[[package]] +name = "light-array-map" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bdd13b18028ac9d80d0a987551c0dad7fe81be8140e87cc9d568b80f3728203" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "light-compressed-account" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c3537bbad9df133ca97fc191b164bba93dba1de4da01a92d979ef63f8ce106" +dependencies = [ + "borsh 0.10.4", + "light-hasher", + "light-macros", + "light-program-profiler", + "light-zero-copy", + "thiserror 2.0.17", + "tinyvec", + "zerocopy", +] + +[[package]] +name = "light-compressible" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00d1dc14271907009f4ca23ae99c49279f7d2acc5a83f0f8d7362834b37e2e16" +dependencies = [ + "aligned-sized", + "borsh 0.10.4", + "bytemuck", + "light-account-checks", + "light-compressed-account", + "light-hasher", + "light-macros", + "light-program-profiler", + "light-zero-copy", + "pinocchio-pubkey", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "thiserror 2.0.17", + "zerocopy", +] + +[[package]] +name = "light-hasher" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c822662e6e109bac0e132a43fd52a4ef684811245a794e048cf9cda001e934c8" +dependencies = [ + "borsh 0.10.4", + "num-bigint", + "thiserror 2.0.17", + "tinyvec", +] + +[[package]] +name = "light-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "179ac51cadc1d0ca047b4d6265a7cc245ca3affc16a20a2749585aa6464d39c2" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "solana-pubkey 2.4.0", + "syn 2.0.111", +] + +[[package]] +name = "light-profiler-macro" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a8be18fe4de58a6f754caa74a3fbc6d8a758a26f1f3c24d5b0f5b55df5f5408" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "light-program-profiler" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1d345871581aebd8825868a3f08410290aa1cdddcb189ca7f7e588f61d79fcf" +dependencies = [ + "light-profiler-macro", +] + +[[package]] +name = "light-token-interface" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46decebc2a13ec984e2ba7f1e691c0d46b9061875c6bdd12636b7c100a60e6c" +dependencies = [ + "aligned-sized", + "borsh 0.10.4", + "bytemuck", + "light-array-map", + "light-compressed-account", + "light-compressible", + "light-hasher", + "light-macros", + "light-program-profiler", + "light-zero-copy", + "pinocchio", + "pinocchio-pubkey", + "solana-account-info 2.3.0", + "solana-pubkey 2.4.0", + "spl-pod 0.5.1", + "spl-token-2022", + "thiserror 2.0.17", + "tinyvec", + "zerocopy", +] + +[[package]] +name = "light-zero-copy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5621fb515e14af46148699c0b65334aabe230a1d2cbd06736ccc7a408c8a4af" +dependencies = [ + "light-zero-copy-derive", + "zerocopy", +] + +[[package]] +name = "light-zero-copy-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41c46425e5c7ab5203ff5c86ae2615b169cca55f9283f5f60f5dd74143be6934" +dependencies = [ + "lazy_static", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "linux-raw-sys" version = "0.11.0" @@ -1537,6 +1923,15 @@ version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +[[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" @@ -1545,7 +1940,7 @@ checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" dependencies = [ "byteorder", "keccak", - "rand_core", + "rand_core 0.6.4", "zeroize", ] @@ -1572,7 +1967,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", - "wasi", + "wasi 0.11.1+wasi-snapshot-preview1", "windows-sys 0.61.2", ] @@ -1609,14 +2004,33 @@ dependencies = [ ] [[package]] -name = "num-derive" -version = "0.4.2" +name = "num-bigint" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ - "proc-macro2", + "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", + "syn 2.0.111", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", ] [[package]] @@ -1644,10 +2058,10 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -1685,7 +2099,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -1735,7 +2149,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -1781,7 +2195,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -1796,6 +2210,23 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pinocchio" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b971851087bc3699b001954ad02389d50c41405ece3548cbcafc88b3e20017a" + +[[package]] +name = "pinocchio-pubkey" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0225638cadcbebae8932cb7f49cb5da7c15c21beb19f048f05a5ca7d93f065" +dependencies = [ + "five8_const 0.1.4", + "pinocchio", + "sha2-const-stable", +] + [[package]] name = "pkg-config" version = "0.3.32" @@ -1839,7 +2270,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.111", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", ] [[package]] @@ -1906,7 +2346,7 @@ dependencies = [ "prost 0.12.6", "prost-types 0.12.6", "regex", - "syn", + "syn 2.0.111", "tempfile", ] @@ -1928,7 +2368,7 @@ dependencies = [ "pulldown-cmark", "pulldown-cmark-to-cmark", "regex", - "syn", + "syn 2.0.111", "tempfile", ] @@ -1942,7 +2382,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -1955,7 +2395,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -2029,6 +2469,19 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[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" @@ -2036,8 +2489,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "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]] @@ -2047,7 +2510,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "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]] @@ -2059,6 +2531,15 @@ dependencies = [ "getrandom 0.2.16", ] +[[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.18" @@ -2397,7 +2878,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -2444,7 +2925,20 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn", + "syn 2.0.111", +] + +[[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]] @@ -2455,16 +2949,22 @@ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", ] +[[package]] +name = "sha2-const-stable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" + [[package]] name = "sha3" version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "digest", + "digest 0.10.7", "keccak", ] @@ -2530,6 +3030,19 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "solana-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" +dependencies = [ + "solana-account-info 2.3.0", + "solana-clock 2.2.2", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", +] + [[package]] name = "solana-account" version = "3.2.0" @@ -2540,12 +3053,12 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-account-info", - "solana-clock", + "solana-account-info 3.1.0", + "solana-clock 3.0.0", "solana-instruction-error", "solana-pubkey 3.0.0", - "solana-sdk-ids", - "solana-sysvar", + "solana-sdk-ids 3.1.0", + "solana-sysvar 3.1.1", ] [[package]] @@ -2561,31 +3074,31 @@ dependencies = [ "bv", "serde", "serde_json", - "solana-account", + "solana-account 3.2.0", "solana-account-decoder-client-types", - "solana-address-lookup-table-interface", - "solana-clock", + "solana-address-lookup-table-interface 3.0.0", + "solana-clock 3.0.0", "solana-config-interface", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-instruction", - "solana-loader-v3-interface", - "solana-nonce", - "solana-program-option", - "solana-program-pack", + "solana-epoch-schedule 3.0.0", + "solana-fee-calculator 3.0.0", + "solana-instruction 3.1.0", + "solana-loader-v3-interface 6.1.0", + "solana-nonce 3.0.0", + "solana-program-option 3.0.0", + "solana-program-pack 3.0.0", "solana-pubkey 3.0.0", - "solana-rent", - "solana-sdk-ids", - "solana-slot-hashes", - "solana-slot-history", - "solana-stake-interface", - "solana-sysvar", - "solana-vote-interface", + "solana-rent 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-slot-hashes 3.0.0", + "solana-slot-history 3.0.0", + "solana-stake-interface 2.0.2", + "solana-sysvar 3.1.1", + "solana-vote-interface 4.0.4", "spl-generic-token", "spl-token-2022-interface", - "spl-token-group-interface", + "spl-token-group-interface 0.7.1", "spl-token-interface", - "spl-token-metadata-interface", + "spl-token-metadata-interface 0.8.0", "thiserror 2.0.17", "zstd", ] @@ -2600,11 +3113,24 @@ dependencies = [ "bs58", "serde", "serde_json", - "solana-account", + "solana-account 3.2.0", "solana-pubkey 3.0.0", "zstd", ] +[[package]] +name = "solana-account-info" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" +dependencies = [ + "bincode", + "serde", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-pubkey 2.4.0", +] + [[package]] name = "solana-account-info" version = "3.1.0" @@ -2612,8 +3138,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc3397241392f5756925029acaa8515dc70fcbe3d8059d4885d7d6533baf64fd" dependencies = [ "solana-address 2.0.0", - "solana-program-error", - "solana-program-memory", + "solana-program-error 3.0.0", + "solana-program-memory 3.1.0", ] [[package]] @@ -2631,19 +3157,36 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e37320fd2945c5d654b2c6210624a52d66c3f1f73b653ed211ab91a703b35bdd" dependencies = [ - "borsh", + "borsh 1.6.0", "bytemuck", "bytemuck_derive", "curve25519-dalek", "five8 1.0.0", - "five8_const", + "five8_const 1.0.0", "serde", "serde_derive", - "solana-atomic-u64", + "solana-atomic-u64 3.0.0", "solana-define-syscall 4.0.1", - "solana-program-error", - "solana-sanitize", - "solana-sha256-hasher", + "solana-program-error 3.0.0", + "solana-sanitize 3.0.1", + "solana-sha256-hasher 3.1.0", +] + +[[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 2.2.2", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-slot-hashes 2.2.1", ] [[package]] @@ -2656,12 +3199,21 @@ dependencies = [ "bytemuck", "serde", "serde_derive", - "solana-clock", - "solana-instruction", + "solana-clock 3.0.0", + "solana-instruction 3.1.0", "solana-instruction-error", "solana-pubkey 3.0.0", - "solana-sdk-ids", - "solana-slot-hashes", + "solana-sdk-ids 3.1.0", + "solana-slot-hashes 3.0.0", +] + +[[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]] @@ -2673,13 +3225,70 @@ 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 2.3.0", +] + +[[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 2.3.3", +] + +[[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 2.3.0", + "solana-hash 2.3.0", + "solana-sanitize 2.2.1", +] + +[[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.6.0", +] + [[package]] name = "solana-borsh" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc402b16657abbfa9991cd5cbfac5a11d809f7e7d28d3bb291baeb088b39060e" dependencies = [ - "borsh", + "borsh 1.6.0", +] + +[[package]] +name = "solana-clock" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", ] [[package]] @@ -2690,9 +3299,9 @@ checksum = "fb62e9381182459a4520b5fe7fb22d423cae736239a6427fc398a88743d0ed59" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", ] [[package]] @@ -2710,12 +3319,26 @@ dependencies = [ "bincode", "serde", "serde_derive", - "solana-account", - "solana-instruction", + "solana-account 3.2.0", + "solana-instruction 3.1.0", "solana-pubkey 3.0.0", - "solana-sdk-ids", - "solana-short-vec", - "solana-system-interface", + "solana-sdk-ids 3.1.0", + "solana-short-vec 3.1.0", + "solana-system-interface 2.0.0", +] + +[[package]] +name = "solana-cpi" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11" +dependencies = [ + "solana-account-info 2.3.0", + "solana-define-syscall 2.3.0", + "solana-instruction 2.3.3", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-stable-layout 2.2.1", ] [[package]] @@ -2724,12 +3347,26 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dea26709d867aada85d0d3617db0944215c8bb28d3745b912de7db13a23280c" dependencies = [ - "solana-account-info", + "solana-account-info 3.1.0", "solana-define-syscall 4.0.1", - "solana-instruction", - "solana-program-error", + "solana-instruction 3.1.0", + "solana-program-error 3.0.0", "solana-pubkey 4.0.0", - "solana-stable-layout", + "solana-stable-layout 3.0.0", +] + +[[package]] +name = "solana-curve25519" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae4261b9a8613d10e77ac831a8fa60b6fa52b9b103df46d641deff9f9812a23" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "solana-define-syscall 2.3.0", + "subtle", + "thiserror 2.0.17", ] [[package]] @@ -2746,6 +3383,21 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "solana-decode-error" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-define-syscall" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" + [[package]] name = "solana-define-syscall" version = "3.0.0" @@ -2758,6 +3410,17 @@ version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57e5b1c0bc1d4a4d10c88a4100499d954c09d3fecfae4912c1a074dff68b1738" +[[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-derivation-path" version = "3.0.0" @@ -2769,6 +3432,20 @@ dependencies = [ "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 2.3.0", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + [[package]] name = "solana-epoch-rewards" version = "3.0.0" @@ -2778,9 +3455,22 @@ dependencies = [ "serde", "serde_derive", "solana-hash 3.1.0", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[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 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", ] [[package]] @@ -2791,9 +3481,60 @@ checksum = "6e5481e72cc4d52c169db73e4c0cd16de8bc943078aac587ec4817a75cc6388f" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[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 2.2.2", + "solana-clock 2.2.2", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-keccak-hasher", + "solana-message 2.4.0", + "solana-nonce 2.2.1", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-feature-gate-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account 2.2.1", + "solana-account-info 2.3.0", + "solana-instruction 2.3.3", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", +] + +[[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]] @@ -2807,6 +3548,24 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "solana-hash" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" +dependencies = [ + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "five8 0.2.1", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64 2.2.1", + "solana-sanitize 2.2.1", + "wasm-bindgen", +] + [[package]] name = "solana-hash" version = "3.1.0" @@ -2822,14 +3581,33 @@ version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a5d48a6ee7b91fc7b998944ab026ed7b3e2fc8ee3bc58452644a86c2648152f" dependencies = [ - "borsh", + "borsh 1.6.0", "bytemuck", "bytemuck_derive", "five8 1.0.0", "serde", "serde_derive", - "solana-atomic-u64", - "solana-sanitize", + "solana-atomic-u64 3.0.0", + "solana-sanitize 3.0.1", +] + +[[package]] +name = "solana-instruction" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab5682934bd1f65f8d2c16f21cb532526fcc1a09f796e2cacdb091eee5774ad" +dependencies = [ + "bincode", + "borsh 1.6.0", + "getrandom 0.2.16", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "serde_json", + "solana-define-syscall 2.3.0", + "solana-pubkey 2.4.0", + "wasm-bindgen", ] [[package]] @@ -2839,7 +3617,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee1b699a2c1518028a9982e255e0eca10c44d90006542d9d7f9f40dbce3f7c78" dependencies = [ "bincode", - "borsh", + "borsh 1.6.0", "serde", "serde_derive", "solana-define-syscall 4.0.1", @@ -2856,7 +3634,24 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-program-error", + "solana-program-error 3.0.0", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" +dependencies = [ + "bitflags 2.10.0", + "solana-account-info 2.3.0", + "solana-instruction 2.3.3", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-serialize-utils 2.2.1", + "solana-sysvar-id 2.2.1", ] [[package]] @@ -2866,28 +3661,67 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ddf67876c541aa1e21ee1acae35c95c6fbc61119814bfef70579317a5e26955" dependencies = [ "bitflags 2.10.0", - "solana-account-info", - "solana-instruction", + "solana-account-info 3.1.0", + "solana-instruction 3.1.0", "solana-instruction-error", - "solana-program-error", + "solana-program-error 3.0.0", "solana-pubkey 3.0.0", - "solana-sanitize", - "solana-sdk-ids", - "solana-serialize-utils", - "solana-sysvar-id", + "solana-sanitize 3.0.1", + "solana-sdk-ids 3.1.0", + "solana-serialize-utils 3.1.0", + "solana-sysvar-id 3.1.0", ] [[package]] -name = "solana-last-restart-slot" -version = "3.0.0" +name = "solana-keccak-hasher" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcda154ec827f5fc1e4da0af3417951b7e9b8157540f81f936c4a8b1156134d0" +checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79" dependencies = [ - "serde", - "serde_derive", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", + "sha3", + "solana-define-syscall 2.3.0", + "solana-hash 2.3.0", + "solana-sanitize 2.2.1", +] + +[[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 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-last-restart-slot" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcda154ec827f5fc1e4da0af3417951b7e9b8157540f81f936c4a8b1156134d0" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[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 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", ] [[package]] @@ -2899,9 +3733,24 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction", + "solana-instruction 3.1.0", "solana-pubkey 3.0.0", - "solana-sdk-ids", + "solana-sdk-ids 3.1.0", +] + +[[package]] +name = "solana-loader-v3-interface" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", ] [[package]] @@ -2913,10 +3762,48 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction", + "solana-instruction 3.1.0", "solana-pubkey 3.0.0", - "solana-sdk-ids", - "solana-system-interface", + "solana-sdk-ids 3.1.0", + "solana-system-interface 2.0.0", +] + +[[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 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", +] + +[[package]] +name = "solana-message" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" +dependencies = [ + "bincode", + "blake3", + "lazy_static", + "serde", + "serde_derive", + "solana-bincode", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-short-vec 2.2.1", + "solana-system-interface 1.0.0", + "solana-transaction-error 2.2.1", + "wasm-bindgen", ] [[package]] @@ -2930,11 +3817,20 @@ dependencies = [ "serde_derive", "solana-address 1.1.0", "solana-hash 3.1.0", - "solana-instruction", - "solana-sanitize", - "solana-sdk-ids", - "solana-short-vec", - "solana-transaction-error", + "solana-instruction 3.1.0", + "solana-sanitize 3.0.1", + "solana-sdk-ids 3.1.0", + "solana-short-vec 3.1.0", + "solana-transaction-error 3.0.0", +] + +[[package]] +name = "solana-msg" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092" +dependencies = [ + "solana-define-syscall 2.3.0", ] [[package]] @@ -2946,6 +3842,26 @@ dependencies = [ "solana-define-syscall 3.0.0", ] +[[package]] +name = "solana-native-token" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" + +[[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 2.2.1", + "solana-hash 2.3.0", + "solana-pubkey 2.4.0", + "solana-sha256-hasher 2.3.0", +] + [[package]] name = "solana-nonce" version = "3.0.0" @@ -2954,10 +3870,102 @@ checksum = "abbdc6c8caf1c08db9f36a50967539d0f72b9f1d4aea04fec5430f532e5afadc" dependencies = [ "serde", "serde_derive", - "solana-fee-calculator", + "solana-fee-calculator 3.0.0", "solana-hash 3.1.0", "solana-pubkey 3.0.0", - "solana-sha256-hasher", + "solana-sha256-hasher 3.1.0", +] + +[[package]] +name = "solana-program" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" +dependencies = [ + "bincode", + "blake3", + "borsh 0.10.4", + "borsh 1.6.0", + "bs58", + "bytemuck", + "console_error_panic_hook", + "console_log", + "getrandom 0.2.16", + "lazy_static", + "log", + "memoffset", + "num-bigint", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_bytes", + "serde_derive", + "solana-account-info 2.3.0", + "solana-address-lookup-table-interface 2.2.2", + "solana-atomic-u64 2.2.1", + "solana-big-mod-exp", + "solana-bincode", + "solana-blake3-hasher", + "solana-borsh 2.2.1", + "solana-clock 2.2.2", + "solana-cpi 2.2.1", + "solana-decode-error", + "solana-define-syscall 2.3.0", + "solana-epoch-rewards 2.2.1", + "solana-epoch-schedule 2.2.1", + "solana-example-mocks", + "solana-feature-gate-interface", + "solana-fee-calculator 2.2.1", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-instructions-sysvar 2.2.2", + "solana-keccak-hasher", + "solana-last-restart-slot 2.2.1", + "solana-loader-v2-interface 2.2.1", + "solana-loader-v3-interface 5.0.0", + "solana-loader-v4-interface", + "solana-message 2.4.0", + "solana-msg 2.2.1", + "solana-native-token", + "solana-nonce 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-program-option 2.2.1", + "solana-program-pack 2.2.1", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-secp256k1-recover", + "solana-serde-varint 2.2.2", + "solana-serialize-utils 2.2.1", + "solana-sha256-hasher 2.3.0", + "solana-short-vec 2.2.1", + "solana-slot-hashes 2.2.1", + "solana-slot-history 2.2.1", + "solana-stable-layout 2.2.1", + "solana-stake-interface 1.2.1", + "solana-system-interface 1.0.0", + "solana-sysvar 2.3.0", + "solana-sysvar-id 2.2.1", + "solana-vote-interface 2.2.6", + "thiserror 2.0.17", + "wasm-bindgen", +] + +[[package]] +name = "solana-program-entrypoint" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" +dependencies = [ + "solana-account-info 2.3.0", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", ] [[package]] @@ -2966,19 +3974,44 @@ version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84c9b0a1ff494e05f503a08b3d51150b73aa639544631e510279d6375f290997" dependencies = [ - "solana-account-info", + "solana-account-info 3.1.0", "solana-define-syscall 4.0.1", - "solana-program-error", + "solana-program-error 3.0.0", "solana-pubkey 4.0.0", ] +[[package]] +name = "solana-program-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" +dependencies = [ + "borsh 1.6.0", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-pubkey 2.4.0", +] + [[package]] name = "solana-program-error" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1af32c995a7b692a915bb7414d5f8e838450cf7c70414e763d8abcae7b51f28" dependencies = [ - "borsh", + "borsh 1.6.0", +] + +[[package]] +name = "solana-program-memory" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" +dependencies = [ + "solana-define-syscall 2.3.0", ] [[package]] @@ -2990,19 +4023,60 @@ dependencies = [ "solana-define-syscall 4.0.1", ] +[[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-option" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e7b4ddb464f274deb4a497712664c3b612e3f5f82471d4e47710fc4ab1c3095" +[[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 2.2.2", +] + [[package]] name = "solana-program-pack" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c169359de21f6034a63ebf96d6b380980307df17a8d371344ff04a883ec4e9d0" dependencies = [ - "solana-program-error", + "solana-program-error 3.0.0", +] + +[[package]] +name = "solana-pubkey" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" +dependencies = [ + "borsh 0.10.4", + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "five8 0.2.1", + "five8_const 0.1.4", + "getrandom 0.2.16", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-atomic-u64 2.2.1", + "solana-decode-error", + "solana-define-syscall 2.3.0", + "solana-sanitize 2.2.1", + "solana-sha256-hasher 2.3.0", + "wasm-bindgen", ] [[package]] @@ -3023,6 +4097,19 @@ dependencies = [ "solana-address 2.0.0", ] +[[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 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + [[package]] name = "solana-rent" version = "3.1.0" @@ -3031,9 +4118,9 @@ checksum = "e860d5499a705369778647e97d760f7670adfb6fc8419dd3d568deccd46d5487" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", ] [[package]] @@ -3046,6 +4133,12 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "solana-sanitize" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" + [[package]] name = "solana-sanitize" version = "3.0.1" @@ -3066,6 +4159,15 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "solana-sdk-ids" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f" +dependencies = [ + "solana-pubkey 2.4.0", +] + [[package]] name = "solana-sdk-ids" version = "3.1.0" @@ -3075,6 +4177,18 @@ dependencies = [ "solana-address 2.0.0", ] +[[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.111", +] + [[package]] name = "solana-sdk-macro" version = "3.0.0" @@ -3084,7 +4198,36 @@ dependencies = [ "bs58", "proc-macro2", "quote", - "syn", + "syn 2.0.111", +] + +[[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 2.3.0", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "156bb61a96c605fa124e052d630dba2f6fb57e08c7d15b757e1e958b3ed7b3fe" +dependencies = [ + "hashbrown 0.15.2", +] + +[[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 2.2.1", ] [[package]] @@ -3093,7 +4236,18 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff7bdb72758e3bec33ed0e2658a920f1f35dfb9ed576b951d20d63cb61ecd95c" dependencies = [ - "solana-derivation-path", + "solana-derivation-path 3.0.0", +] + +[[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.9", ] [[package]] @@ -3104,7 +4258,16 @@ checksum = "dc905b200a95f2ea9146e43f2a7181e3aeb55de6bc12afb36462d00a3c7310de" dependencies = [ "hmac", "pbkdf2", - "sha2", + "sha2 0.10.9", +] + +[[package]] +name = "solana-serde-varint" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" +dependencies = [ + "serde", ] [[package]] @@ -3116,6 +4279,17 @@ 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 2.3.3", + "solana-pubkey 2.4.0", + "solana-sanitize 2.2.1", +] + [[package]] name = "solana-serialize-utils" version = "3.1.0" @@ -3124,7 +4298,18 @@ checksum = "56e41dd8feea239516c623a02f0a81c2367f4b604d7965237fed0751aeec33ed" dependencies = [ "solana-instruction-error", "solana-pubkey 3.0.0", - "solana-sanitize", + "solana-sanitize 3.0.1", +] + +[[package]] +name = "solana-sha256-hasher" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" +dependencies = [ + "sha2 0.10.9", + "solana-define-syscall 2.3.0", + "solana-hash 2.3.0", ] [[package]] @@ -3133,11 +4318,20 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" dependencies = [ - "sha2", + "sha2 0.10.9", "solana-define-syscall 4.0.1", "solana-hash 4.0.1", ] +[[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-short-vec" version = "3.1.0" @@ -3147,6 +4341,16 @@ dependencies = [ "serde_core", ] +[[package]] +name = "solana-signature" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" +dependencies = [ + "five8 0.2.1", + "solana-sanitize 2.2.1", +] + [[package]] name = "solana-signature" version = "3.1.0" @@ -3157,7 +4361,18 @@ dependencies = [ "serde", "serde-big-array", "serde_derive", - "solana-sanitize", + "solana-sanitize 3.0.1", +] + +[[package]] +name = "solana-signer" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b" +dependencies = [ + "solana-pubkey 2.4.0", + "solana-signature 2.3.0", + "solana-transaction-error 2.2.1", ] [[package]] @@ -3167,8 +4382,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bfea97951fee8bae0d6038f39a5efcb6230ecdfe33425ac75196d1a1e3e3235" dependencies = [ "solana-pubkey 3.0.0", - "solana-signature", - "solana-transaction-error", + "solana-signature 3.1.0", + "solana-transaction-error 3.0.0", +] + +[[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 2.3.0", + "solana-sdk-ids 2.2.1", + "solana-sysvar-id 2.2.1", ] [[package]] @@ -3180,8 +4408,21 @@ dependencies = [ "serde", "serde_derive", "solana-hash 3.1.0", - "solana-sdk-ids", - "solana-sysvar-id", + "solana-sdk-ids 3.1.0", + "solana-sysvar-id 3.1.0", +] + +[[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 2.2.1", + "solana-sysvar-id 2.2.1", ] [[package]] @@ -3193,8 +4434,18 @@ dependencies = [ "bv", "serde", "serde_derive", - "solana-sdk-ids", - "solana-sysvar-id", + "solana-sdk-ids 3.1.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-stable-layout" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54" +dependencies = [ + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", ] [[package]] @@ -3203,10 +4454,31 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1da74507795b6e8fb60b7c7306c0c36e2c315805d16eaaf479452661234685ac" dependencies = [ - "solana-instruction", + "solana-instruction 3.1.0", "solana-pubkey 3.0.0", ] +[[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.6.0", + "num-traits", + "serde", + "serde_derive", + "solana-clock 2.2.2", + "solana-cpi 2.2.1", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-system-interface 1.0.0", + "solana-sysvar-id 2.2.1", +] + [[package]] name = "solana-stake-interface" version = "2.0.2" @@ -3216,14 +4488,14 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-clock", - "solana-cpi", - "solana-instruction", - "solana-program-error", + "solana-clock 3.0.0", + "solana-cpi 3.1.0", + "solana-instruction 3.1.0", + "solana-program-error 3.0.0", "solana-pubkey 3.0.0", - "solana-system-interface", - "solana-sysvar", - "solana-sysvar-id", + "solana-system-interface 2.0.0", + "solana-sysvar 3.1.1", + "solana-sysvar-id 3.1.0", ] [[package]] @@ -3232,6 +4504,22 @@ version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ed3c3ca42d7765231c72600d10038db54329b7970c6fd13d6c1ffb30adda81b" +[[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 2.3.3", + "solana-pubkey 2.4.0", + "wasm-bindgen", +] + [[package]] name = "solana-system-interface" version = "2.0.0" @@ -3241,12 +4529,49 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-instruction", - "solana-msg", - "solana-program-error", + "solana-instruction 3.1.0", + "solana-msg 3.0.0", + "solana-program-error 3.0.0", "solana-pubkey 3.0.0", ] +[[package]] +name = "solana-sysvar" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db" +dependencies = [ + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "lazy_static", + "serde", + "serde_derive", + "solana-account-info 2.3.0", + "solana-clock 2.2.2", + "solana-define-syscall 2.3.0", + "solana-epoch-rewards 2.2.1", + "solana-epoch-schedule 2.2.1", + "solana-fee-calculator 2.2.1", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-instructions-sysvar 2.2.2", + "solana-last-restart-slot 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-slot-hashes 2.2.1", + "solana-slot-history 2.2.1", + "solana-stake-interface 1.2.1", + "solana-sysvar-id 2.2.1", +] + [[package]] name = "solana-sysvar" version = "3.1.1" @@ -3258,25 +4583,35 @@ dependencies = [ "lazy_static", "serde", "serde_derive", - "solana-account-info", - "solana-clock", + "solana-account-info 3.1.0", + "solana-clock 3.0.0", "solana-define-syscall 4.0.1", - "solana-epoch-rewards", - "solana-epoch-schedule", - "solana-fee-calculator", + "solana-epoch-rewards 3.0.0", + "solana-epoch-schedule 3.0.0", + "solana-fee-calculator 3.0.0", "solana-hash 4.0.1", - "solana-instruction", - "solana-last-restart-slot", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", + "solana-instruction 3.1.0", + "solana-last-restart-slot 3.0.0", + "solana-program-entrypoint 3.1.1", + "solana-program-error 3.0.0", + "solana-program-memory 3.1.0", "solana-pubkey 4.0.0", - "solana-rent", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-slot-hashes", - "solana-slot-history", - "solana-sysvar-id", + "solana-rent 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-slot-hashes 3.0.0", + "solana-slot-history 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-sysvar-id" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1" +dependencies = [ + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", ] [[package]] @@ -3286,7 +4621,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" dependencies = [ "solana-address 2.0.0", - "solana-sdk-ids", + "solana-sdk-ids 3.1.0", ] [[package]] @@ -3299,14 +4634,14 @@ dependencies = [ "serde_derive", "solana-address 2.0.0", "solana-hash 4.0.1", - "solana-instruction", + "solana-instruction 3.1.0", "solana-instruction-error", - "solana-message", - "solana-sanitize", - "solana-sdk-ids", - "solana-short-vec", - "solana-signature", - "solana-transaction-error", + "solana-message 3.0.1", + "solana-sanitize 3.0.1", + "solana-sdk-ids 3.1.0", + "solana-short-vec 3.1.0", + "solana-signature 3.1.0", + "solana-transaction-error 3.0.0", ] [[package]] @@ -3317,13 +4652,23 @@ checksum = "ddceebc27e616cdb37c6aa30a5272145018db0307965a2c9c2ad630f48afd37f" dependencies = [ "bincode", "serde", - "solana-account", - "solana-instruction", - "solana-instructions-sysvar", + "solana-account 3.2.0", + "solana-instruction 3.1.0", + "solana-instructions-sysvar 3.0.0", "solana-pubkey 3.0.0", - "solana-rent", + "solana-rent 3.1.0", "solana-sbpf", - "solana-sdk-ids", + "solana-sdk-ids 3.1.0", +] + +[[package]] +name = "solana-transaction-error" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" +dependencies = [ + "solana-instruction 2.3.3", + "solana-sanitize 2.2.1", ] [[package]] @@ -3335,7 +4680,7 @@ dependencies = [ "serde", "serde_derive", "solana-instruction-error", - "solana-sanitize", + "solana-sanitize 3.0.1", ] [[package]] @@ -3348,36 +4693,36 @@ dependencies = [ "agave-reserved-account-keys", "base64 0.22.1", "bincode", - "borsh", + "borsh 1.6.0", "bs58", "log", "serde", "serde_json", "solana-account-decoder", - "solana-address-lookup-table-interface", - "solana-clock", + "solana-address-lookup-table-interface 3.0.0", + "solana-clock 3.0.0", "solana-hash 3.1.0", - "solana-instruction", - "solana-loader-v2-interface", - "solana-loader-v3-interface", - "solana-message", - "solana-program-option", + "solana-instruction 3.1.0", + "solana-loader-v2-interface 3.0.0", + "solana-loader-v3-interface 6.1.0", + "solana-message 3.0.1", + "solana-program-option 3.0.0", "solana-pubkey 3.0.0", "solana-reward-info", - "solana-sdk-ids", - "solana-signature", - "solana-stake-interface", - "solana-system-interface", + "solana-sdk-ids 3.1.0", + "solana-signature 3.1.0", + "solana-stake-interface 2.0.2", + "solana-system-interface 2.0.0", "solana-transaction", - "solana-transaction-error", + "solana-transaction-error 3.0.0", "solana-transaction-status-client-types", - "solana-vote-interface", + "solana-vote-interface 4.0.4", "spl-associated-token-account-interface", "spl-memo-interface", "spl-token-2022-interface", - "spl-token-group-interface", + "spl-token-group-interface 0.7.1", "spl-token-interface", - "spl-token-metadata-interface", + "spl-token-metadata-interface 0.8.0", "thiserror 2.0.17", ] @@ -3394,17 +4739,41 @@ dependencies = [ "serde_json", "solana-account-decoder-client-types", "solana-commitment-config", - "solana-instruction", - "solana-message", + "solana-instruction 3.1.0", + "solana-message 3.0.1", "solana-pubkey 3.0.0", "solana-reward-info", - "solana-signature", + "solana-signature 3.1.0", "solana-transaction", "solana-transaction-context", - "solana-transaction-error", + "solana-transaction-error 3.0.0", "thiserror 2.0.17", ] +[[package]] +name = "solana-vote-interface" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3" +dependencies = [ + "bincode", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "solana-clock 2.2.2", + "solana-decode-error", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-serde-varint 2.2.2", + "solana-serialize-utils 2.2.1", + "solana-short-vec 2.2.1", + "solana-system-interface 1.0.0", +] + [[package]] name = "solana-vote-interface" version = "4.0.4" @@ -3418,17 +4787,53 @@ dependencies = [ "serde", "serde_derive", "serde_with", - "solana-clock", + "solana-clock 3.0.0", "solana-hash 3.1.0", - "solana-instruction", + "solana-instruction 3.1.0", "solana-instruction-error", "solana-pubkey 3.0.0", - "solana-rent", - "solana-sdk-ids", - "solana-serde-varint", - "solana-serialize-utils", - "solana-short-vec", - "solana-system-interface", + "solana-rent 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-serde-varint 3.0.0", + "solana-serialize-utils 3.1.0", + "solana-short-vec 3.1.0", + "solana-system-interface 2.0.0", +] + +[[package]] +name = "solana-zk-sdk" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b9fc6ec37d16d0dccff708ed1dd6ea9ba61796700c3bb7c3b401973f10f63b" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "itertools 0.12.1", + "js-sys", + "merlin", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "serde_json", + "sha3", + "solana-derivation-path 2.2.1", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-seed-derivable 2.2.1", + "solana-seed-phrase 2.2.1", + "solana-signature 2.3.0", + "solana-signer 2.2.1", + "subtle", + "thiserror 2.0.17", + "wasm-bindgen", + "zeroize", ] [[package]] @@ -3449,19 +4854,19 @@ dependencies = [ "merlin", "num-derive", "num-traits", - "rand", + "rand 0.8.5", "serde", "serde_derive", "serde_json", "sha3", - "solana-derivation-path", - "solana-instruction", + "solana-derivation-path 3.0.0", + "solana-instruction 3.1.0", "solana-pubkey 3.0.0", - "solana-sdk-ids", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-signature", - "solana-signer", + "solana-sdk-ids 3.1.0", + "solana-seed-derivable 3.0.0", + "solana-seed-phrase 3.0.0", + "solana-signature 3.1.0", + "solana-signer 3.0.0", "subtle", "thiserror 2.0.17", "wasm-bindgen", @@ -3474,11 +4879,23 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6433917b60441d68d99a17e121d9db0ea15a9a69c0e5afa34649cf5ba12612f" dependencies = [ - "borsh", - "solana-instruction", + "borsh 1.6.0", + "solana-instruction 3.1.0", "solana-pubkey 3.0.0", ] +[[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 2.2.2", + "solana-sha256-hasher 2.3.0", + "spl-discriminator-derive", +] + [[package]] name = "spl-discriminator" version = "0.5.1" @@ -3486,8 +4903,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d48cc11459e265d5b501534144266620289720b4c44522a47bc6b63cd295d2f3" dependencies = [ "bytemuck", - "solana-program-error", - "solana-sha256-hasher", + "solana-program-error 3.0.0", + "solana-sha256-hasher 3.1.0", "spl-discriminator-derive", ] @@ -3499,7 +4916,7 @@ checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", "spl-discriminator-syn", - "syn", + "syn 2.0.111", ] [[package]] @@ -3510,11 +4927,24 @@ checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67" dependencies = [ "proc-macro2", "quote", - "sha2", - "syn", + "sha2 0.10.9", + "syn 2.0.111", "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 2.3.13", + "spl-pod 0.5.1", + "spl-token-confidential-transfer-proof-extraction 0.2.1", +] + [[package]] name = "spl-generic-token" version = "2.0.1" @@ -3525,32 +4955,156 @@ dependencies = [ "solana-pubkey 3.0.0", ] +[[package]] +name = "spl-memo" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f09647c0974e33366efeb83b8e2daebb329f0420149e74d3a4bd2c08cf9f7cb" +dependencies = [ + "solana-account-info 2.3.0", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", +] + [[package]] name = "spl-memo-interface" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d4e2aedd58f858337fa609af5ad7100d4a243fdaf6a40d6eb4c28c5f19505d3" dependencies = [ - "solana-instruction", + "solana-instruction 3.1.0", "solana-pubkey 3.0.0", ] +[[package]] +name = "spl-pod" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d994afaf86b779104b4a95ba9ca75b8ced3fdb17ee934e38cb69e72afbe17799" +dependencies = [ + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "num-derive", + "num-traits", + "solana-decode-error", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-program-option 2.2.1", + "solana-pubkey 2.4.0", + "solana-zk-sdk 2.3.13", + "thiserror 2.0.17", +] + [[package]] name = "spl-pod" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1233fdecd7461611d69bb87bc2e95af742df47291975d21232a0be8217da9de" dependencies = [ - "borsh", + "borsh 1.6.0", "bytemuck", "bytemuck_derive", "num-derive", "num-traits", "num_enum", - "solana-program-error", - "solana-program-option", + "solana-program-error 3.0.0", + "solana-program-option 3.0.0", "solana-pubkey 3.0.0", - "solana-zk-sdk", + "solana-zk-sdk 4.0.0", + "thiserror 2.0.17", +] + +[[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.9", + "syn 2.0.111", +] + +[[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 2.3.0", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "spl-discriminator 0.4.1", + "spl-pod 0.5.1", + "spl-program-error", + "spl-type-length-value 0.7.0", + "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 = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9048b26b0df0290f929ff91317c83db28b3ef99af2b3493dd35baa146774924c" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-program", + "solana-security-txt", + "solana-zk-sdk 2.3.13", + "spl-elgamal-registry", + "spl-memo", + "spl-pod 0.5.1", + "spl-token", + "spl-token-confidential-transfer-ciphertext-arithmetic", + "spl-token-confidential-transfer-proof-extraction 0.2.1", + "spl-token-confidential-transfer-proof-generation 0.3.0", + "spl-token-group-interface 0.5.0", + "spl-token-metadata-interface 0.6.0", + "spl-transfer-hook-interface", + "spl-type-length-value 0.7.0", "thiserror 2.0.17", ] @@ -3565,20 +5119,46 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-account-info", - "solana-instruction", - "solana-program-error", - "solana-program-option", - "solana-program-pack", + "solana-account-info 3.1.0", + "solana-instruction 3.1.0", + "solana-program-error 3.0.0", + "solana-program-option 3.0.0", + "solana-program-pack 3.0.0", "solana-pubkey 3.0.0", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", - "spl-token-confidential-transfer-proof-extraction", - "spl-token-confidential-transfer-proof-generation", - "spl-token-group-interface", - "spl-token-metadata-interface", - "spl-type-length-value", + "solana-sdk-ids 3.1.0", + "solana-zk-sdk 4.0.0", + "spl-pod 0.7.1", + "spl-token-confidential-transfer-proof-extraction 0.5.1", + "spl-token-confidential-transfer-proof-generation 0.5.1", + "spl-token-group-interface 0.7.1", + "spl-token-metadata-interface 0.8.0", + "spl-type-length-value 0.9.0", + "thiserror 2.0.17", +] + +[[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 2.3.13", + "solana-zk-sdk 2.3.13", +] + +[[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 2.3.13", + "solana-program", + "solana-zk-sdk 2.3.13", + "spl-pod 0.5.1", "thiserror 2.0.17", ] @@ -3589,16 +5169,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879a9ebad0d77383d3ea71e7de50503554961ff0f4ef6cbca39ad126e6f6da3a" dependencies = [ "bytemuck", - "solana-account-info", - "solana-curve25519", - "solana-instruction", - "solana-instructions-sysvar", - "solana-msg", - "solana-program-error", + "solana-account-info 3.1.0", + "solana-curve25519 3.1.4", + "solana-instruction 3.1.0", + "solana-instructions-sysvar 3.0.0", + "solana-msg 3.0.0", + "solana-program-error 3.0.0", "solana-pubkey 3.0.0", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", + "solana-sdk-ids 3.1.0", + "solana-zk-sdk 4.0.0", + "spl-pod 0.7.1", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" +dependencies = [ + "curve25519-dalek", + "solana-zk-sdk 2.3.13", "thiserror 2.0.17", ] @@ -3609,10 +5200,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0cd59fce3dc00f563c6fa364d67c3f200d278eae681f4dc250240afcfe044b1" dependencies = [ "curve25519-dalek", - "solana-zk-sdk", + "solana-zk-sdk 4.0.0", "thiserror 2.0.17", ] +[[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 2.3.3", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "spl-discriminator 0.4.1", + "spl-pod 0.5.1", + "thiserror 1.0.69", +] + [[package]] name = "spl-token-group-interface" version = "0.7.1" @@ -3623,11 +5233,11 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-instruction", - "solana-program-error", + "solana-instruction 3.1.0", + "solana-program-error 3.0.0", "solana-pubkey 3.0.0", - "spl-discriminator", - "spl-pod", + "spl-discriminator 0.5.1", + "spl-pod 0.7.1", "thiserror 2.0.17", ] @@ -3642,34 +5252,98 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-instruction", - "solana-program-error", - "solana-program-option", - "solana-program-pack", + "solana-instruction 3.1.0", + "solana-program-error 3.0.0", + "solana-program-option 3.0.0", + "solana-program-pack 3.0.0", "solana-pubkey 3.0.0", - "solana-sdk-ids", + "solana-sdk-ids 3.1.0", "thiserror 2.0.17", ] +[[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.6.0", + "num-derive", + "num-traits", + "solana-borsh 2.2.1", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "spl-discriminator 0.4.1", + "spl-pod 0.5.1", + "spl-type-length-value 0.7.0", + "thiserror 1.0.69", +] + [[package]] name = "spl-token-metadata-interface" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c467c7c3bd056f8fe60119e7ec34ddd6f23052c2fa8f1f51999098063b72676" dependencies = [ - "borsh", + "borsh 1.6.0", "num-derive", "num-traits", - "solana-borsh", - "solana-instruction", - "solana-program-error", + "solana-borsh 3.0.0", + "solana-instruction 3.1.0", + "solana-program-error 3.0.0", "solana-pubkey 3.0.0", - "spl-discriminator", - "spl-pod", - "spl-type-length-value", + "spl-discriminator 0.5.1", + "spl-pod 0.7.1", + "spl-type-length-value 0.9.0", "thiserror 2.0.17", ] +[[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 2.3.0", + "solana-cpi 2.2.1", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "spl-discriminator 0.4.1", + "spl-pod 0.5.1", + "spl-program-error", + "spl-tlv-account-resolution", + "spl-type-length-value 0.7.0", + "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 2.3.0", + "solana-decode-error", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "spl-discriminator 0.4.1", + "spl-pod 0.5.1", + "thiserror 1.0.69", +] + [[package]] name = "spl-type-length-value" version = "0.9.0" @@ -3680,11 +5354,11 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-account-info", - "solana-msg", - "solana-program-error", - "spl-discriminator", - "spl-pod", + "solana-account-info 3.1.0", + "solana-msg 3.0.0", + "solana-program-error 3.0.0", + "spl-discriminator 0.5.1", + "spl-pod 0.7.1", "thiserror 2.0.17", ] @@ -3699,10 +5373,13 @@ name = "streaming-tokens" version = "0.1.0" dependencies = [ "anyhow", + "borsh 0.10.4", "bs58", "dotenvy", "futures", "helius-laserstream", + "light-compressed-account", + "light-token-interface", "tokio", ] @@ -3718,6 +5395,17 @@ 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.111" @@ -3749,7 +5437,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -3812,7 +5500,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -3823,7 +5511,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -3885,7 +5573,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -3943,6 +5631,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + [[package]] name = "toml_datetime" version = "0.7.3" @@ -4050,7 +5747,7 @@ dependencies = [ "proc-macro2", "prost-build 0.12.6", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -4062,7 +5759,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -4100,7 +5797,7 @@ dependencies = [ "prost-build 0.14.1", "prost-types 0.14.1", "quote", - "syn", + "syn 2.0.111", "tempfile", "tonic-build 0.14.2", ] @@ -4116,7 +5813,7 @@ dependencies = [ "indexmap 1.9.3", "pin-project", "pin-project-lite", - "rand", + "rand 0.8.5", "slab", "tokio", "tokio-util", @@ -4175,7 +5872,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -4338,6 +6035,12 @@ dependencies = [ "try-lock", ] +[[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.1+wasi-snapshot-preview1" @@ -4398,7 +6101,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.111", "wasm-bindgen-shared", ] @@ -4448,7 +6151,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -4459,7 +6162,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -4758,7 +6461,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", "synstructure", ] @@ -4779,7 +6482,7 @@ checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -4799,7 +6502,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", "synstructure", ] @@ -4820,7 +6523,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -4853,7 +6556,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] diff --git a/toolkits/streaming-tokens/Cargo.toml b/toolkits/streaming-tokens/Cargo.toml index 1694c6e..70e2071 100644 --- a/toolkits/streaming-tokens/Cargo.toml +++ b/toolkits/streaming-tokens/Cargo.toml @@ -9,4 +9,8 @@ tokio = { version = "1", features = ["full"] } futures = "0.3" anyhow = "1" dotenvy = "0.15" -bs58 = "0.5" \ No newline at end of file +bs58 = "0.5" +borsh = "0.10" + +light-token-interface = "0.3.0" +light-compressed-account = { version = "0.9.0", features = ["std"] } diff --git a/toolkits/streaming-tokens/README.mdx b/toolkits/streaming-tokens/README.mdx index a71b1a3..f9672ca 100644 --- a/toolkits/streaming-tokens/README.mdx +++ b/toolkits/streaming-tokens/README.mdx @@ -1,4 +1,6 @@ -# Indexing new mints +# Streaming light-mint accounts + +Light mints are Solana accounts (CMint PDAs) owned by the Light Token Program. Subscribe to account updates to detect new mints and metadata changes. - New mints - New mints with TokenMetadata @@ -6,66 +8,101 @@ - TokenMetadata updates ```rust +use borsh::BorshDeserialize; use futures::StreamExt; -use helius_laserstream::{ subscribe, CommitmentLevel, LaserstreamConfig, SubscribeRequest }; -use solana_pubkey::Pubkey; +use helius_laserstream::grpc::subscribe_request_filter_accounts_filter::Filter; +use helius_laserstream::grpc::subscribe_request_filter_accounts_filter_memcmp::Data; +use helius_laserstream::grpc::{ + SubscribeRequestFilterAccounts, SubscribeRequestFilterAccountsFilter, + SubscribeRequestFilterAccountsFilterMemcmp, +}; +use helius_laserstream::{subscribe, LaserstreamConfig}; +use light_token_interface::state::{ExtensionStruct, Mint}; -use light_compressed_account::indexer_event::parse::event_from_light_transaction; -use light_token_types::state::{ CompressedMint, ExtensionStruct }; +const LIGHT_TOKEN_PROGRAM_ID: &str = "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m"; -const LIGHT_SYSTEM_PROGRAM: &str = "SySTEM1eSU2p4BGQfQpimFEWWSC1XDFeun3Nqzz3rT7"; +/// Byte offset of account_type in the Mint account data. +/// BaseMint (82) + MintMetadata (67) + reserved (16) = 165 +const ACCOUNT_TYPE_OFFSET: u64 = 165; #[tokio::main] async fn main() -> anyhow::Result<()> { - let config = LaserstreamConfig { - api_key: std::env::var("API_KEY")?, - endpoint: "https://laserstream-mainnet-ewr.helius-rpc.com".to_string(), - }; - - let request = SubscribeRequest { - commitment: CommitmentLevel::Confirmed, - transactions: serde_json::json!({ - "light": { - "vote": false, - "failed": false, - "accountInclude": [LIGHT_SYSTEM_PROGRAM] - } - }), + dotenvy::dotenv().ok(); + + let api_key = std::env::var("API_KEY")?; + let endpoint = "https://laserstream-mainnet-ewr.helius-rpc.com".to_string(); + + let config = LaserstreamConfig::new(endpoint, api_key); + + // Subscribe to Solana accounts owned by the Light Token Program + // with account_type = 1 (Mint) at byte offset 165 + let request = helius_laserstream::grpc::SubscribeRequest { + accounts: [( + "light_mints".to_string(), + SubscribeRequestFilterAccounts { + owner: vec![LIGHT_TOKEN_PROGRAM_ID.to_string()], + filters: vec![SubscribeRequestFilterAccountsFilter { + filter: Some(Filter::Memcmp(SubscribeRequestFilterAccountsFilterMemcmp { + offset: ACCOUNT_TYPE_OFFSET, + data: Some(Data::Bytes(vec![1])), + })), + }], + ..Default::default() + }, + )] + .into(), ..Default::default() }; - let mut stream = subscribe(config, request).await?; + let (stream, _handle) = subscribe(config, request); + tokio::pin!(stream); while let Some(update) = stream.next().await { - if let Some(tx) = update?.transaction { - process_transaction(&tx.transaction).await?; - } - } - Ok(()) -} - -async fn process_transaction(tx: &Transaction) -> anyhow::Result<()> { - let (program_ids, instructions, accounts) = extract_light_transaction( - &tx.transaction.message.account_keys, - &tx.transaction.message.instructions, - |ix| (ix.program_id_index, &ix.accounts, &ix.data) - ); - if let Some(batches) = event_from_light_transaction(&program_ids, &instruction_data, accounts_per_ix)? { - for event in batches { - // new mints - for m in extract_new_mints(&event, light_token_program_id, mint_storage)? { - println!("new Light Token mint: {}", m.mint.metadata.spl_mint); - if let Some(meta) = extract_token_metadata(m.mint) { - println!("{} ({})", meta.name, meta.symbol); + match update { + Ok(msg) => { + if let Some(helius_laserstream::grpc::subscribe_update::UpdateOneof::Account( + account_update, + )) = msg.update_oneof + { + if let Some(account_info) = account_update.account { + let pubkey = bs58::encode(&account_info.pubkey).into_string(); + + match Mint::deserialize(&mut account_info.data.as_slice()) { + Ok(mint) => { + println!("Mint: {}", pubkey); + println!(" decimals: {}", mint.base.decimals); + println!(" supply: {}", mint.base.supply); + + if let Some(extensions) = &mint.extensions { + for ext in extensions { + if let ExtensionStruct::TokenMetadata(meta) = ext { + let name = + String::from_utf8_lossy(&meta.name).to_string(); + let symbol = + String::from_utf8_lossy(&meta.symbol).to_string(); + let uri = + String::from_utf8_lossy(&meta.uri).to_string(); + println!(" name: {}", name); + println!(" symbol: {}", symbol); + println!(" uri: {}", uri); + } + } + } + println!(); + } + Err(e) => { + eprintln!("Failed to deserialize mint {}: {}", pubkey, e); + } + } + } } } - - // updates - for m in extract_mint_updates(&event, light_token_program_id, mint_storage)? { - println!("mint update: {}", m.mint.metadata.spl_mint); + Err(e) => { + eprintln!("Stream error: {:?}", e); } } } + Ok(()) } ``` @@ -74,17 +111,21 @@ async fn process_transaction(tx: &Transaction) -> anyhow::Result<()> { ### Mint +Light mints are Solana accounts with this layout: + ```rust #[repr(C)] -#[derive(Debug, PartialEq, Eq, Clone, BorshSerialize, BorshDeserialize)] -pub struct CompressedMint { +pub struct Mint { pub base: BaseMint, - pub metadata: CompressedMintMetadata, + pub metadata: MintMetadata, + pub reserved: [u8; 16], + pub account_type: u8, + pub compression: CompressionInfo, pub extensions: Option>, } -// Uses custom borsh serde for SPL-token compat -// 82 bytes +/// SPL-compatible base mint structure (82 bytes) +#[repr(C)] pub struct BaseMint { pub mint_authority: Option, pub supply: u64, @@ -93,22 +134,14 @@ pub struct BaseMint { pub freeze_authority: Option, } -// 34 bytes +/// Light Protocol metadata (67 bytes) #[repr(C)] -#[derive(Debug, PartialEq, Eq, Clone, BorshSerialize, BorshDeserialize)] -pub struct CompressedMintMetadata { - /// Version (3) +pub struct MintMetadata { pub version: u8, - pub spl_mint_initialized: bool, - /// Canonical mint address - pub spl_mint: Pubkey, -} - -#[derive(Debug, Clone, Hash, PartialEq, Eq, BorshSerialize, BorshDeserialize)] -#[repr(C)] -pub enum ExtensionStruct { - // ... - TokenMetadata(TokenMetadata), // 19 + pub mint_decompressed: bool, + pub mint: Pubkey, + pub mint_signer: [u8; 32], + pub bump: u8, } ``` @@ -116,279 +149,27 @@ pub enum ExtensionStruct { ```rust #[repr(C)] -#[derive(Debug, Clone, Hash, PartialEq, Eq, BorshSerialize, BorshDeserialize)] pub struct TokenMetadata { - /// The authority that can sign to update the metadata (32 bytes) - /// [0u8; 32] = None (immutable) - pub update_authority: Pubkey, - /// The associated mint (32 bytes) + pub update_authority: Pubkey, // [0u8; 32] = immutable pub mint: Pubkey, - /// The longer name of the token (Vec, Borsh-encoded: u32 len + bytes) pub name: Vec, - /// The shortened symbol for the token (Vec, Borsh-encoded: u32 len + bytes) pub symbol: Vec, - /// The URI pointing to richer metadata (Vec, Borsh-encoded: u32 len + bytes) pub uri: Vec, - /// Any additional metadata as key-value pairs (Vec) pub additional_metadata: Vec, } -#[repr(C)] -#[derive(Debug, Clone, Hash, PartialEq, Eq, BorshSerialize, BorshDeserialize)] pub struct AdditionalMetadata { - /// The key of the metadata (Vec, Borsh-encoded: u32 len + bytes) pub key: Vec, - /// The value of the metadata (Vec, Borsh-encoded: u32 len + bytes) pub value: Vec, } ``` -# Helpers - -You can directly import these via `light-compressed-token-sdk`. - -## `extract_light_transaction` - -```rust -pub fn extract_light_transaction( - account_keys: &[Pubkey], - instructions: &[I], - extract_fn: F, -) -> (Vec, Vec>, Vec>) -where - F: Fn(&I) -> (u8, &[u8], &[u8]), -{ - let num_instructions = instructions.len(); - - let mut program_ids = Vec::with_capacity(num_instructions); - let mut instruction_data = Vec::with_capacity(num_instructions); - let mut accounts_per_ix = Vec::with_capacity(num_instructions); - - for ix in instructions { - let (program_id_index, account_indices, data) = extract_fn(ix); - - let program_id_idx = program_id_index as usize; - let program_id = if program_id_idx < account_keys.len() { - account_keys[program_id_idx] - } else { - Pubkey::default() - }; - program_ids.push(program_id); - - instruction_data.push(data.to_vec()); - - let mut ix_accounts = Vec::with_capacity(account_indices.len()); - for &account_idx in account_indices { - let idx = account_idx as usize; - if idx < account_keys.len() { - ix_accounts.push(account_keys[idx]); - } - } - accounts_per_ix.push(ix_accounts); - } - - (program_ids, instruction_data, accounts_per_ix) -} -``` - -## `extract_mints` - -```rust -pub fn extract_new_mints<'a>( - event: &'a PublicTransactionEvent, - light_token_program_id: &Pubkey, - mint_storage: &'a mut Vec, -) -> Result>, std::io::Error> { - let mints = extract_mints(event, light_token_program_id, mint_storage)?; - Ok(mints.into_iter().filter(|m| m.is_new).collect()) -} - -pub fn extract_mint_updates<'a>( - event: &'a PublicTransactionEvent, - light_token_program_id: &Pubkey, - mint_storage: &'a mut Vec, -) -> Result>, std::io::Error> { - let mints = extract_mints(event, light_token_program_id, mint_storage)?; - Ok(mints.into_iter().filter(|m| !m.is_new).collect()) -} - -pub fn extract_mints<'a>( - event: &'a PublicTransactionEvent, - light_token_program_id: &Pubkey, - mint_storage: &'a mut Vec, -) -> Result>, std::io::Error> { - let mut indices = Vec::new(); - - for (idx, output) in event.output_compressed_accounts.iter().enumerate() { - - if output.compressed_account.owner != *light_token_program_id { - continue; - } - - let data = match &output.compressed_account.data { - Some(d) if d.discriminator == TOKEN_MINT_DISCRIMINATOR => &d.data, - _ => continue, - }; - - let mint = CompressedMint::deserialize(&mut &data[..])?; - mint_storage.push(mint); - indices.push(idx); - } - - // Pass 2: - let mut results = Vec::with_capacity(mint_storage.len()); - for (storage_idx, output_idx) in indices.iter().enumerate() { - let output = &event.output_compressed_accounts[*output_idx]; - - let is_new = match output.compressed_account.address { - Some(addr) => !event - .input_compressed_account_hashes - .iter() - .any(|h| *h == addr), - None => true, - }; - - results.push(MintRef { - mint: &mint_storage[storage_idx], - account_hash: &event.output_compressed_account_hashes[*output_idx], - leaf_index: event.output_leaf_indices[*output_idx], - merkle_tree_index: output.merkle_tree_index, - is_new, - }); - } - - Ok(results) -} -``` - -## `extract_token_metadata` - -```rust -pub fn extract_token_metadata(mint: &CompressedMint) -> Option { - let extensions = mint.extensions.as_ref()?; - - for ext in extensions { - if let ExtensionStruct::TokenMetadata(m) = ext { - let name = parse_utf8(&m.name); - let symbol = parse_utf8(&m.symbol); - let uri = parse_utf8(&m.uri); - - let update_authority = if m.update_authority.to_bytes() == [0u8; 32] { - None - } else { - Some(Pubkey::new_from_array(m.update_authority.to_bytes())) - }; - - return Some(MintMetadata { - name, - symbol, - uri, - update_authority, - }); - } - } - - None -} -``` - -## `BaseMint` spl-compatible serde - -Available via `light-token-types/src/state/mint/borsh.rs` - -```rust -use borsh::{BorshDeserialize, BorshSerialize}; -use light_compressed_account::Pubkey; -use super::compressed_mint::BaseMint; - -// Manual implementation of BorshSerialize for SPL compatibility -impl BorshSerialize for BaseMint { - fn serialize(&self, writer: &mut W) -> std::io::Result<()> { - // Write mint_authority as COption (4 bytes + 32 bytes) - if let Some(authority) = self.mint_authority { - writer.write_all(&[1, 0, 0, 0])?; // COption Some discriminator - writer.write_all(&authority.to_bytes())?; - } else { - writer.write_all(&[0; 36])?; // COption None (4 bytes) + empty pubkey (32 bytes) - } - - // Write supply (8 bytes) - writer.write_all(&self.supply.to_le_bytes())?; - - // Write decimals (1 byte) - writer.write_all(&[self.decimals])?; - - // Write is_initialized (1 byte) - writer.write_all(&[if self.is_initialized { 1 } else { 0 }])?; - - // Write freeze_authority as COption (4 bytes + 32 bytes) - if let Some(authority) = self.freeze_authority { - writer.write_all(&[1, 0, 0, 0])?; // COption Some discriminator - writer.write_all(&authority.to_bytes())?; - } else { - writer.write_all(&[0; 36])?; // COption None (4 bytes) + empty pubkey (32 bytes) - } - - Ok(()) - } -} - -impl BorshDeserialize for BaseMint { - fn deserialize_reader(buf: &mut R) -> std::io::Result { - // Read mint_authority COption - let mut discriminator = [0u8; 4]; - buf.read_exact(&mut discriminator)?; - let mut pubkey_bytes = [0u8; 32]; - buf.read_exact(&mut pubkey_bytes)?; - let mint_authority = if u32::from_le_bytes(discriminator) == 1 { - Some(Pubkey::from(pubkey_bytes)) - } else { - None - }; - - // Read supply - let mut supply_bytes = [0u8; 8]; - buf.read_exact(&mut supply_bytes)?; - let supply = u64::from_le_bytes(supply_bytes); - - // Read decimals - let mut decimals = [0u8; 1]; - buf.read_exact(&mut decimals)?; - let decimals = decimals[0]; - - // Read is_initialized - let mut is_initialized = [0u8; 1]; - buf.read_exact(&mut is_initialized)?; - let is_initialized = is_initialized[0] != 0; - - // Read freeze_authority COption - let mut discriminator = [0u8; 4]; - buf.read_exact(&mut discriminator)?; - let mut pubkey_bytes = [0u8; 32]; - buf.read_exact(&mut pubkey_bytes)?; - let freeze_authority = if u32::from_le_bytes(discriminator) == 1 { - Some(Pubkey::from(pubkey_bytes)) - } else { - None - }; - - Ok(Self { - mint_authority, - supply, - decimals, - is_initialized, - freeze_authority, - }) - } -} -``` - # Indexing Markets -cToken accounts follow the same layout as SPL-token accounts, so you can reuse your existing parsers. +cToken accounts follow the same layout as SPL-token accounts, so you can reuse your existing parsers. -They include an extra compressible extension, which can be safely ignored. +They include an extra compressible extension, which can be safely ignored. -wWhen a market becomes inactive, its token accounts and related PDAs will be **compressed** — their state is committed and effectively frozen until a client decompresses it. While compressed, pure on-chain lookups will return uninitialized. +When a market becomes inactive, its token accounts and related PDAs will be **compressed** — their state is committed and effectively frozen until a client decompresses it. While compressed, pure on-chain lookups will return uninitialized. -Your indexer should be able to keep tracking, quoting, and routing markets even if the on-chain account `is_initialized: false`, `is_compressed: true`. To trade a cold market, the first client to trade must prepend an idempotent decompress “warm up” instruction. \ No newline at end of file +Your indexer should be able to keep tracking, quoting, and routing markets even if the on-chain account `is_initialized: false`, `is_compressed: true`. To trade a cold market, the first client to trade must prepend an idempotent decompress "warm up" instruction. diff --git a/toolkits/streaming-tokens/src/main.rs b/toolkits/streaming-tokens/src/main.rs index ce5519c..37509b1 100644 --- a/toolkits/streaming-tokens/src/main.rs +++ b/toolkits/streaming-tokens/src/main.rs @@ -1,8 +1,20 @@ +use borsh::BorshDeserialize; use futures::StreamExt; +use helius_laserstream::grpc::subscribe_request_filter_accounts_filter::Filter; +use helius_laserstream::grpc::subscribe_request_filter_accounts_filter_memcmp::Data; +use helius_laserstream::grpc::{ + SubscribeRequestFilterAccounts, SubscribeRequestFilterAccountsFilter, + SubscribeRequestFilterAccountsFilterMemcmp, +}; use helius_laserstream::{subscribe, LaserstreamConfig}; +use light_token_interface::state::{ExtensionStruct, Mint}; const LIGHT_TOKEN_PROGRAM_ID: &str = "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m"; +/// Byte offset of account_type in the Mint account data. +/// BaseMint (82) + MintMetadata (67) + reserved (16) = 165 +const ACCOUNT_TYPE_OFFSET: u64 = 165; + #[tokio::main] async fn main() -> anyhow::Result<()> { dotenvy::dotenv().ok(); @@ -13,12 +25,16 @@ async fn main() -> anyhow::Result<()> { let config = LaserstreamConfig::new(endpoint, api_key); let request = helius_laserstream::grpc::SubscribeRequest { - transactions: [( - "light_token".to_string(), - helius_laserstream::grpc::SubscribeRequestFilterTransactions { - vote: Some(false), - failed: Some(false), - account_include: vec![LIGHT_TOKEN_PROGRAM_ID.to_string()], + accounts: [( + "light_mints".to_string(), + SubscribeRequestFilterAccounts { + owner: vec![LIGHT_TOKEN_PROGRAM_ID.to_string()], + filters: vec![SubscribeRequestFilterAccountsFilter { + filter: Some(Filter::Memcmp(SubscribeRequestFilterAccountsFilterMemcmp { + offset: ACCOUNT_TYPE_OFFSET, + data: Some(Data::Bytes(vec![1])), // account_type = Mint + })), + }], ..Default::default() }, )] @@ -29,17 +45,44 @@ async fn main() -> anyhow::Result<()> { let (stream, _handle) = subscribe(config, request); tokio::pin!(stream); - println!("Connected to Laserstream (devnet) ...\n"); - println!("Listening for transactions ...\n"); + println!("Listening for light-mint accounts (devnet)...\n"); while let Some(update) = stream.next().await { match update { Ok(msg) => { - if let Some(update_oneof) = msg.update_oneof { - if let helius_laserstream::grpc::subscribe_update::UpdateOneof::Transaction(tx_info) = update_oneof { - if let Some(tx_wrapper) = &tx_info.transaction { - let sig = bs58::encode(&tx_wrapper.signature).into_string(); - println!("Transaction: https://explorer.solana.com/tx/{}?cluster=devnet\n", sig); + if let Some(helius_laserstream::grpc::subscribe_update::UpdateOneof::Account( + account_update, + )) = msg.update_oneof + { + if let Some(account_info) = account_update.account { + let pubkey = bs58::encode(&account_info.pubkey).into_string(); + + match Mint::deserialize(&mut account_info.data.as_slice()) { + Ok(mint) => { + println!("Mint: {}", pubkey); + println!(" decimals: {}", mint.base.decimals); + println!(" supply: {}", mint.base.supply); + + if let Some(extensions) = &mint.extensions { + for ext in extensions { + if let ExtensionStruct::TokenMetadata(meta) = ext { + let name = + String::from_utf8_lossy(&meta.name).to_string(); + let symbol = + String::from_utf8_lossy(&meta.symbol).to_string(); + let uri = + String::from_utf8_lossy(&meta.uri).to_string(); + println!(" name: {}", name); + println!(" symbol: {}", symbol); + println!(" uri: {}", uri); + } + } + } + println!(); + } + Err(e) => { + eprintln!("Failed to deserialize mint {}: {}", pubkey, e); + } } } } @@ -51,4 +94,4 @@ async fn main() -> anyhow::Result<()> { } Ok(()) -} \ No newline at end of file +} From da749aa0b3de29a470ec81f2cd3faefc59132102 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Fri, 30 Jan 2026 15:37:50 +0000 Subject: [PATCH 18/23] add interface --- .../test-tokens/create-mint.ts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 toolkits/streaming-tokens/test-tokens/create-mint.ts diff --git a/toolkits/streaming-tokens/test-tokens/create-mint.ts b/toolkits/streaming-tokens/test-tokens/create-mint.ts new file mode 100644 index 0000000..ccf4ebf --- /dev/null +++ b/toolkits/streaming-tokens/test-tokens/create-mint.ts @@ -0,0 +1,40 @@ +import { config } from "dotenv"; +config({ path: "../.env" }); +import { Keypair } from "@solana/web3.js"; +import { createRpc, confirmTx } from "@lightprotocol/stateless.js"; +import { createMintInterface, createTokenMetadata } from "@lightprotocol/compressed-token"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +const payer = Keypair.fromSecretKey( + new Uint8Array( + JSON.parse(readFileSync(`${homedir()}/.config/solana/id.json`, "utf8")) + ) +); + +(async function () { + const rpc = createRpc(RPC_URL); + + // Airdrop if needed + const balance = await rpc.getBalance(payer.publicKey); + if (balance.value < 1_000_000_000) { + const sig = await rpc.requestAirdrop(payer.publicKey, 2_000_000_000); + await confirmTx(rpc, sig); + } + + const { mint, transactionSignature } = await createMintInterface( + rpc, + payer, + payer, + null, + 9, + undefined, + undefined, + undefined, + createTokenMetadata("StreamTest", "STR", "https://example.com/metadata.json") + ); + + console.log("Mint:", mint.toBase58()); + console.log("Tx:", transactionSignature); +})(); From b822bd8839cd42dedd265764dd9826e5781ada82 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Fri, 30 Jan 2026 16:19:30 +0000 Subject: [PATCH 19/23] update --- typescript-client/actions/create-mint.ts | 12 ++-- .../create-spl-mint-with-interface-pda.ts | 38 ++++++++++++ typescript-client/actions/delegate-approve.ts | 16 ++--- typescript-client/actions/delegate-revoke.ts | 14 ++--- typescript-client/actions/load-ata.ts | 21 ++++--- .../actions/transfer-interface.ts | 1 + typescript-client/actions/unwrap.ts | 28 ++++++--- typescript-client/actions/wrap.ts | 41 ++++++------- typescript-client/instructions/create-ata.ts | 6 +- typescript-client/instructions/create-mint.ts | 6 +- .../create-spl-mint-with-interface-pda.ts | 58 +++++++++++++++++++ typescript-client/instructions/load-ata.ts | 15 ++--- typescript-client/instructions/mint-to.ts | 6 +- .../instructions/transfer-interface.ts | 7 ++- typescript-client/instructions/unwrap.ts | 33 ++++++----- typescript-client/instructions/wrap.ts | 26 ++++++--- typescript-client/package.json | 4 +- 17 files changed, 223 insertions(+), 109 deletions(-) create mode 100644 typescript-client/actions/create-spl-mint-with-interface-pda.ts create mode 100644 typescript-client/instructions/create-spl-mint-with-interface-pda.ts diff --git a/typescript-client/actions/create-mint.ts b/typescript-client/actions/create-mint.ts index b43c94c..d03db4c 100644 --- a/typescript-client/actions/create-mint.ts +++ b/typescript-client/actions/create-mint.ts @@ -27,14 +27,10 @@ const payer = Keypair.fromSecretKey( payer, null, 9, - undefined, - undefined, - undefined, - createTokenMetadata( - "Example Token", - "EXT", - "https://example.com/metadata.json", - ), + undefined, // keypair + undefined, // confirmOptions (default) + undefined, // programId (CTOKEN_PROGRAM_ID) + createTokenMetadata("Example Token", "EXT", "https://example.com/metadata.json"), ); console.log("Mint:", mint.toBase58()); diff --git a/typescript-client/actions/create-spl-mint-with-interface-pda.ts b/typescript-client/actions/create-spl-mint-with-interface-pda.ts new file mode 100644 index 0000000..58fd8ed --- /dev/null +++ b/typescript-client/actions/create-spl-mint-with-interface-pda.ts @@ -0,0 +1,38 @@ +import "dotenv/config"; +import { Keypair } from "@solana/web3.js"; +import { createRpc } from "@lightprotocol/stateless.js"; +import { + createMint, + CompressedTokenProgram, +} from "@lightprotocol/compressed-token"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +// devnet: +const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +// localnet: +// const RPC_URL = undefined; +const payer = Keypair.fromSecretKey( + new Uint8Array( + JSON.parse(readFileSync(`${homedir()}/.config/solana/id.json`, "utf8")) + ) +); + +(async function () { + const rpc = createRpc(RPC_URL); + + // Creates SPL mint and SPL interface PDA in one transaction + // SPL interface PDA holds SPL tokens that are wrapped to light-token + const { mint, transactionSignature } = await createMint( + rpc, + payer, + payer.publicKey, + 9, + ); + + const splInterfacePda = CompressedTokenProgram.deriveSplInterfacePda(mint); + + console.log("SPL Mint:", mint.toBase58()); + console.log("SPL Interface PDA:", splInterfacePda.toBase58()); + console.log("Tx:", transactionSignature); +})(); diff --git a/typescript-client/actions/delegate-approve.ts b/typescript-client/actions/delegate-approve.ts index 278cf7b..929e77e 100644 --- a/typescript-client/actions/delegate-approve.ts +++ b/typescript-client/actions/delegate-approve.ts @@ -1,7 +1,11 @@ import "dotenv/config"; import { Keypair } from "@solana/web3.js"; -import { createRpc, bn } from "@lightprotocol/stateless.js"; -import { createMint, mintTo, approve } from "@lightprotocol/compressed-token"; +import { createRpc } from "@lightprotocol/stateless.js"; +import { + createMintInterface, + mintToCompressed, + approve, +} from "@lightprotocol/compressed-token"; import { homedir } from "os"; import { readFileSync } from "fs"; @@ -18,17 +22,15 @@ const payer = Keypair.fromSecretKey( ); (async function () { - // Setup: Get compressed tokens - const { mint } = await createMint(rpc, payer, payer.publicKey, 9); - await mintTo(rpc, payer, mint, payer.publicKey, payer, bn(1000)); + const { mint } = await createMintInterface(rpc, payer, payer, null, 9); + await mintToCompressed(rpc, payer, mint, payer, [{ recipient: payer.publicKey, amount: 1000n }]); - // Approve delegation const delegate = Keypair.generate(); const tx = await approve( rpc, payer, mint, - bn(500), + 500, payer, delegate.publicKey, ); diff --git a/typescript-client/actions/delegate-revoke.ts b/typescript-client/actions/delegate-revoke.ts index ecbe802..102b3a2 100644 --- a/typescript-client/actions/delegate-revoke.ts +++ b/typescript-client/actions/delegate-revoke.ts @@ -1,9 +1,9 @@ import "dotenv/config"; import { Keypair } from "@solana/web3.js"; -import { createRpc, bn } from "@lightprotocol/stateless.js"; +import { createRpc } from "@lightprotocol/stateless.js"; import { - createMint, - mintTo, + createMintInterface, + mintToCompressed, approve, revoke, } from "@lightprotocol/compressed-token"; @@ -23,13 +23,11 @@ const payer = Keypair.fromSecretKey( ); (async function () { - // Setup: Get compressed tokens - const { mint } = await createMint(rpc, payer, payer.publicKey, 9); - await mintTo(rpc, payer, mint, payer.publicKey, payer, bn(1000)); + const { mint } = await createMintInterface(rpc, payer, payer, null, 9); + await mintToCompressed(rpc, payer, mint, payer, [{ recipient: payer.publicKey, amount: 1000n }]); - // Approve then revoke delegation const delegate = Keypair.generate(); - await approve(rpc, payer, mint, bn(500), payer, delegate.publicKey); + await approve(rpc, payer, mint, 500, payer, delegate.publicKey); const delegatedAccounts = await rpc.getCompressedTokenAccountsByDelegate( delegate.publicKey, diff --git a/typescript-client/actions/load-ata.ts b/typescript-client/actions/load-ata.ts index 90ffd12..80a50bd 100644 --- a/typescript-client/actions/load-ata.ts +++ b/typescript-client/actions/load-ata.ts @@ -1,9 +1,9 @@ import "dotenv/config"; import { Keypair } from "@solana/web3.js"; -import { createRpc, bn } from "@lightprotocol/stateless.js"; +import { createRpc } from "@lightprotocol/stateless.js"; import { - createMint, - mintTo, + createMintInterface, + mintToCompressed, loadAta, getAssociatedTokenAddressInterface, } from "@lightprotocol/compressed-token"; @@ -23,15 +23,14 @@ const payer = Keypair.fromSecretKey( ); (async function () { - // Setup: Get compressed tokens (cold storage) - const { mint } = await createMint(rpc, payer, payer.publicKey, 9); - await mintTo(rpc, payer, mint, payer.publicKey, payer, bn(1000)); + // Inactive Light Tokens are cryptographically preserved on the Solana ledger + // as compressed tokens (cold storage) + // Setup: Get compressed tokens in light-token associated token account + const { mint } = await createMintInterface(rpc, payer, payer, null, 9); + await mintToCompressed(rpc, payer, mint, payer, [{ recipient: payer.publicKey, amount: 1000n }]); - // Load compressed tokens to hot balance - const lightTokenAta = getAssociatedTokenAddressInterface( - mint, - payer.publicKey, - ); + // Load compressed tokens to light associated token account (hot balance) + const lightTokenAta = getAssociatedTokenAddressInterface(mint, payer.publicKey); const tx = await loadAta(rpc, lightTokenAta, payer, mint, payer); console.log("Tx:", tx); diff --git a/typescript-client/actions/transfer-interface.ts b/typescript-client/actions/transfer-interface.ts index 51516fc..7c3bf56 100644 --- a/typescript-client/actions/transfer-interface.ts +++ b/typescript-client/actions/transfer-interface.ts @@ -41,6 +41,7 @@ const payer = Keypair.fromSecretKey( recipient.publicKey, ); + // Transfer tokens between light-token associated token accounts const tx = await transferInterface( rpc, payer, diff --git a/typescript-client/actions/unwrap.ts b/typescript-client/actions/unwrap.ts index 98056df..83ac7f4 100644 --- a/typescript-client/actions/unwrap.ts +++ b/typescript-client/actions/unwrap.ts @@ -1,9 +1,17 @@ import "dotenv/config"; import { Keypair } from "@solana/web3.js"; -import { createRpc, bn } from "@lightprotocol/stateless.js"; -import { createMint, mintTo } from "@lightprotocol/compressed-token"; +import { createRpc } from "@lightprotocol/stateless.js"; +import { + createMintInterface, + createAtaInterface, + mintToInterface, + getAssociatedTokenAddressInterface, +} from "@lightprotocol/compressed-token"; import { unwrap } from "@lightprotocol/compressed-token/unified"; -import { createAssociatedTokenAccount } from "@solana/spl-token"; +import { + createAssociatedTokenAccount, + TOKEN_2022_PROGRAM_ID, +} from "@solana/spl-token"; import { homedir } from "os"; import { readFileSync } from "fs"; @@ -20,18 +28,22 @@ const payer = Keypair.fromSecretKey( ); (async function () { - // Setup: Get compressed tokens (cold storage) - const { mint } = await createMint(rpc, payer, payer.publicKey, 9); - await mintTo(rpc, payer, mint, payer.publicKey, payer, bn(1000)); + // Setup: Create and mint tokens to light-token associated token account + const { mint } = await createMintInterface(rpc, payer, payer, null, 9); + await createAtaInterface(rpc, payer, mint, payer.publicKey); + const destination = getAssociatedTokenAddressInterface(mint, payer.publicKey); + await mintToInterface(rpc, payer, mint, destination, payer, 1000); - // Unwrap rent-free tokens to SPL ATA + // Unwrap light-token to SPL associated token account const splAta = await createAssociatedTokenAccount( rpc, payer, mint, payer.publicKey, + undefined, + TOKEN_2022_PROGRAM_ID, ); - const tx = await unwrap(rpc, payer, splAta, payer, mint, bn(500)); + const tx = await unwrap(rpc, payer, splAta, payer, mint, 500); console.log("Tx:", tx); })(); diff --git a/typescript-client/actions/wrap.ts b/typescript-client/actions/wrap.ts index 87a18c1..59aa690 100644 --- a/typescript-client/actions/wrap.ts +++ b/typescript-client/actions/wrap.ts @@ -1,15 +1,19 @@ import "dotenv/config"; import { Keypair } from "@solana/web3.js"; -import { createRpc, bn } from "@lightprotocol/stateless.js"; +import { createRpc } from "@lightprotocol/stateless.js"; import { - createMint, - mintTo, - decompress, + createMintInterface, + createAtaInterface, + mintToInterface, + decompressInterface, wrap, getAssociatedTokenAddressInterface, createAtaInterfaceIdempotent, } from "@lightprotocol/compressed-token"; -import { createAssociatedTokenAccount } from "@solana/spl-token"; +import { + createAssociatedTokenAccount, + TOKEN_2022_PROGRAM_ID, +} from "@solana/spl-token"; import { homedir } from "os"; import { readFileSync } from "fs"; @@ -27,32 +31,25 @@ const payer = Keypair.fromSecretKey( (async function () { // Setup: Get SPL tokens (needed to wrap) - const { mint } = await createMint(rpc, payer, payer.publicKey, 9); + const { mint } = await createMintInterface(rpc, payer, payer, null, 9); + await createAtaInterface(rpc, payer, mint, payer.publicKey); + const destination = getAssociatedTokenAddressInterface(mint, payer.publicKey); + await mintToInterface(rpc, payer, mint, destination, payer, 1000); const splAta = await createAssociatedTokenAccount( rpc, payer, mint, payer.publicKey, + undefined, + TOKEN_2022_PROGRAM_ID, ); - await mintTo(rpc, payer, mint, payer.publicKey, payer, bn(1000)); - await decompress(rpc, payer, mint, bn(1000), payer, splAta); + await decompressInterface(rpc, payer, payer, mint, 1000); - // Wrap SPL tokens to rent-free token ATA - const lightTokenAta = getAssociatedTokenAddressInterface( - mint, - payer.publicKey, - ); + // Wrap SPL tokens to light-token associated token account + const lightTokenAta = getAssociatedTokenAddressInterface(mint, payer.publicKey); await createAtaInterfaceIdempotent(rpc, payer, mint, payer.publicKey); - const tx = await wrap( - rpc, - payer, - splAta, - lightTokenAta, - payer, - mint, - bn(500), - ); + const tx = await wrap(rpc, payer, splAta, lightTokenAta, payer, mint, 500); console.log("Tx:", tx); })(); diff --git a/typescript-client/instructions/create-ata.ts b/typescript-client/instructions/create-ata.ts index ff2009c..13fdab5 100644 --- a/typescript-client/instructions/create-ata.ts +++ b/typescript-client/instructions/create-ata.ts @@ -14,10 +14,10 @@ import { homedir } from "os"; import { readFileSync } from "fs"; // devnet: -// const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; -// const rpc = createRpc(RPC_URL); +const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +const rpc = createRpc(RPC_URL); // localnet: -const rpc = createRpc(); +// const rpc = createRpc(); const payer = Keypair.fromSecretKey( new Uint8Array( diff --git a/typescript-client/instructions/create-mint.ts b/typescript-client/instructions/create-mint.ts index 48dec81..662c6d0 100644 --- a/typescript-client/instructions/create-mint.ts +++ b/typescript-client/instructions/create-mint.ts @@ -29,10 +29,10 @@ function findMintAddress(mintSigner: PublicKey): [PublicKey, number] { } // devnet: -// const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; -// const rpc = createRpc(RPC_URL); +const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +const rpc = createRpc(RPC_URL); // localnet: -const rpc = createRpc(); +// const rpc = createRpc(); const payer = Keypair.fromSecretKey( new Uint8Array( diff --git a/typescript-client/instructions/create-spl-mint-with-interface-pda.ts b/typescript-client/instructions/create-spl-mint-with-interface-pda.ts new file mode 100644 index 0000000..41397af --- /dev/null +++ b/typescript-client/instructions/create-spl-mint-with-interface-pda.ts @@ -0,0 +1,58 @@ +import "dotenv/config"; +import { + Keypair, + ComputeBudgetProgram, + Transaction, + sendAndConfirmTransaction, +} from "@solana/web3.js"; +import { createRpc } from "@lightprotocol/stateless.js"; +import { + CompressedTokenProgram, +} from "@lightprotocol/compressed-token"; +import { MINT_SIZE } from "@solana/spl-token"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +// devnet: +const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +const rpc = createRpc(RPC_URL); +// localnet: +// const rpc = createRpc(); + +const payer = Keypair.fromSecretKey( + new Uint8Array( + JSON.parse(readFileSync(`${homedir()}/.config/solana/id.json`, "utf8")) + ) +); + +(async function () { + const mintKeypair = Keypair.generate(); + + const instructions = await CompressedTokenProgram.createMint({ + feePayer: payer.publicKey, + mint: mintKeypair.publicKey, + authority: payer.publicKey, + freezeAuthority: null, + decimals: 9, + rentExemptBalance: await rpc.getMinimumBalanceForRentExemption(MINT_SIZE), + }); + + // Creates SPL mint and SPL interface PDA in one transaction + // SPL interface PDA holds SPL tokens that are wrapped to light-token + const splInterfacePda = CompressedTokenProgram.deriveSplInterfacePda( + mintKeypair.publicKey + ); + + const tx = new Transaction().add( + ComputeBudgetProgram.setComputeUnitLimit({ units: 200_000 }), + ...instructions + ); + const signature = await sendAndConfirmTransaction(rpc, tx, [ + payer, + mintKeypair, + ]); + + console.log("SPL Mint:", mintKeypair.publicKey.toBase58()); + console.log("SPL Interface PDA:", splInterfacePda.toBase58()); + console.log("Tx:", signature); +})(); diff --git a/typescript-client/instructions/load-ata.ts b/typescript-client/instructions/load-ata.ts index 9168f1c..b3be00d 100644 --- a/typescript-client/instructions/load-ata.ts +++ b/typescript-client/instructions/load-ata.ts @@ -2,13 +2,12 @@ import "dotenv/config"; import { Keypair } from "@solana/web3.js"; import { createRpc, - bn, buildAndSignTx, sendAndConfirmTx, } from "@lightprotocol/stateless.js"; import { - createMint, - mintTo, + createMintInterface, + mintToCompressed, createLoadAtaInstructions, getAssociatedTokenAddressInterface, } from "@lightprotocol/compressed-token"; @@ -28,16 +27,18 @@ const payer = Keypair.fromSecretKey( ); (async function () { - // Setup: mint directly to cold state - const { mint } = await createMint(rpc, payer, payer.publicKey, 9); - await mintTo(rpc, payer, mint, payer.publicKey, payer, bn(1000)); + // Inactive Light Tokens are cryptographically preserved on the Solana ledger + // as compressed tokens (cold storage) + // Setup: Get compressed tokens in light-token associated token account + const { mint } = await createMintInterface(rpc, payer, payer, null, 9); + await mintToCompressed(rpc, payer, mint, payer, [{ recipient: payer.publicKey, amount: 1000n }]); const lightTokenAta = getAssociatedTokenAddressInterface( mint, payer.publicKey, ); - // load from cold to hot state + // Load compressed tokens to light associated token account (hot balance) const ixs = await createLoadAtaInstructions( rpc, lightTokenAta, diff --git a/typescript-client/instructions/mint-to.ts b/typescript-client/instructions/mint-to.ts index a867274..2492ad5 100644 --- a/typescript-client/instructions/mint-to.ts +++ b/typescript-client/instructions/mint-to.ts @@ -17,10 +17,10 @@ import { homedir } from "os"; import { readFileSync } from "fs"; // devnet: -// const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; -// const rpc = createRpc(RPC_URL); +const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +const rpc = createRpc(RPC_URL); // localnet: -const rpc = createRpc(); +// const rpc = createRpc(); const payer = Keypair.fromSecretKey( new Uint8Array( diff --git a/typescript-client/instructions/transfer-interface.ts b/typescript-client/instructions/transfer-interface.ts index 50d0a18..c32d1ae 100644 --- a/typescript-client/instructions/transfer-interface.ts +++ b/typescript-client/instructions/transfer-interface.ts @@ -17,10 +17,10 @@ import { homedir } from "os"; import { readFileSync } from "fs"; // devnet: -// const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; -// const rpc = createRpc(RPC_URL); +const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +const rpc = createRpc(RPC_URL); // localnet: -const rpc = createRpc(); +// const rpc = createRpc(); const payer = Keypair.fromSecretKey( new Uint8Array( @@ -46,6 +46,7 @@ const payer = Keypair.fromSecretKey( recipient.publicKey, ); + // Transfer tokens between light-token associate token accounts const ix = createTransferInterfaceInstruction( senderAta, recipientAta, diff --git a/typescript-client/instructions/unwrap.ts b/typescript-client/instructions/unwrap.ts index 19d2c97..9a9598f 100644 --- a/typescript-client/instructions/unwrap.ts +++ b/typescript-client/instructions/unwrap.ts @@ -5,16 +5,19 @@ import { Transaction, sendAndConfirmTransaction, } from "@solana/web3.js"; -import { createRpc, bn } from "@lightprotocol/stateless.js"; +import { createRpc } from "@lightprotocol/stateless.js"; import { - createMint, - mintTo, - loadAta, + createMintInterface, + createAtaInterface, + mintToInterface, getAssociatedTokenAddressInterface, getSplInterfaceInfos, } from "@lightprotocol/compressed-token"; import { createUnwrapInstruction } from "@lightprotocol/compressed-token/unified"; -import { createAssociatedTokenAccount } from "@solana/spl-token"; +import { + createAssociatedTokenAccount, + TOKEN_2022_PROGRAM_ID, +} from "@solana/spl-token"; import { homedir } from "os"; import { readFileSync } from "fs"; @@ -31,22 +34,22 @@ const payer = Keypair.fromSecretKey( ); (async function () { - // Setup: Get compressed tokens (cold storage) - const { mint } = await createMint(rpc, payer, payer.publicKey, 9); - await mintTo(rpc, payer, mint, payer.publicKey, payer, bn(1000)); + // Setup: Create and mint tokens to light-token associated token account + const { mint } = await createMintInterface(rpc, payer, payer, null, 9); + await createAtaInterface(rpc, payer, mint, payer.publicKey); + const destination = getAssociatedTokenAddressInterface(mint, payer.publicKey); + await mintToInterface(rpc, payer, mint, destination, payer, 1000); - // Load compressed tokens to hot balance, then create unwrap instruction - const lightTokenAta = getAssociatedTokenAddressInterface( - mint, - payer.publicKey, - ); - await loadAta(rpc, lightTokenAta, payer, mint, payer); + // Unwrap light-token to SPL associated token account + const lightTokenAta = getAssociatedTokenAddressInterface(mint, payer.publicKey); const splAta = await createAssociatedTokenAccount( rpc, payer, mint, payer.publicKey, + undefined, + TOKEN_2022_PROGRAM_ID, ); const splInterfaceInfos = await getSplInterfaceInfos(rpc, mint); @@ -61,7 +64,7 @@ const payer = Keypair.fromSecretKey( splAta, payer.publicKey, mint, - bn(500), + 500, splInterfaceInfo, 9, // decimals - must match the mint decimals payer.publicKey, diff --git a/typescript-client/instructions/wrap.ts b/typescript-client/instructions/wrap.ts index 8c86592..4ba4763 100644 --- a/typescript-client/instructions/wrap.ts +++ b/typescript-client/instructions/wrap.ts @@ -5,17 +5,21 @@ import { Transaction, sendAndConfirmTransaction, } from "@solana/web3.js"; -import { createRpc, bn } from "@lightprotocol/stateless.js"; +import { createRpc } from "@lightprotocol/stateless.js"; import { - createMint, - mintTo, - decompress, + createMintInterface, + createAtaInterface, + mintToInterface, + decompressInterface, createWrapInstruction, getAssociatedTokenAddressInterface, createAtaInterfaceIdempotent, getSplInterfaceInfos, } from "@lightprotocol/compressed-token"; -import { createAssociatedTokenAccount } from "@solana/spl-token"; +import { + createAssociatedTokenAccount, + TOKEN_2022_PROGRAM_ID, +} from "@solana/spl-token"; import { homedir } from "os"; import { readFileSync } from "fs"; @@ -33,15 +37,19 @@ const payer = Keypair.fromSecretKey( (async function () { // Setup: Get SPL tokens (needed to wrap) - const { mint } = await createMint(rpc, payer, payer.publicKey, 9); + const { mint } = await createMintInterface(rpc, payer, payer, null, 9); + await createAtaInterface(rpc, payer, mint, payer.publicKey); + const destination = getAssociatedTokenAddressInterface(mint, payer.publicKey); + await mintToInterface(rpc, payer, mint, destination, payer, 1000); const splAta = await createAssociatedTokenAccount( rpc, payer, mint, payer.publicKey, + undefined, + TOKEN_2022_PROGRAM_ID, ); - await mintTo(rpc, payer, mint, payer.publicKey, payer, bn(1000)); - await decompress(rpc, payer, mint, bn(1000), payer, splAta); + await decompressInterface(rpc, payer, payer, mint, 1000); // Create wrap instruction const lightTokenAta = getAssociatedTokenAddressInterface( @@ -62,7 +70,7 @@ const payer = Keypair.fromSecretKey( lightTokenAta, payer.publicKey, mint, - bn(500), + 500, splInterfaceInfo, 9, // decimals - must match the mint decimals payer.publicKey, diff --git a/typescript-client/package.json b/typescript-client/package.json index 045237b..8397750 100644 --- a/typescript-client/package.json +++ b/typescript-client/package.json @@ -23,8 +23,8 @@ "create-spl-mint:instruction": "tsx instructions/create-spl-mint.ts", "create-t22-mint:action": "tsx actions/create-t22-mint.ts", "create-t22-mint:instruction": "tsx instructions/create-t22-mint.ts", - "create-token-pool:action": "tsx actions/create-token-pool.ts", - "create-token-pool:instruction": "tsx instructions/create-token-pool.ts", + "create-interface-pda:action": "tsx actions/create-interface-pda.ts", + "create-interface-pda:instruction": "tsx instructions/create-interface-pda.ts", "mint-to:action": "tsx actions/mint-to.ts", "mint-to:instruction": "tsx instructions/mint-to.ts", "transfer-interface:action": "tsx actions/transfer-interface.ts", From 218ee597e3ef0db6c03042ab2203eac22210a2de Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Fri, 30 Jan 2026 17:18:49 +0000 Subject: [PATCH 20/23] clean up --- .../test-tokens/create-mint.ts | 4 +- typescript-client/README.md | 45 ++++++++------ .../actions/create-spl-interface.ts | 28 +++++++++ .../create-spl-mint-with-interface-pda.ts | 38 ------------ typescript-client/actions/create-spl-mint.ts | 3 +- typescript-client/actions/create-t22-mint.ts | 3 +- typescript-client/instructions/create-ata.ts | 6 +- typescript-client/instructions/create-mint.ts | 6 +- .../instructions/create-spl-interface.ts | 41 +++++++++++++ .../create-spl-mint-with-interface-pda.ts | 58 ------------------- .../instructions/create-spl-mint.ts | 7 ++- .../instructions/create-t22-mint.ts | 7 ++- typescript-client/instructions/mint-to.ts | 6 +- .../instructions/transfer-interface.ts | 6 +- 14 files changed, 122 insertions(+), 136 deletions(-) create mode 100644 typescript-client/actions/create-spl-interface.ts delete mode 100644 typescript-client/actions/create-spl-mint-with-interface-pda.ts create mode 100644 typescript-client/instructions/create-spl-interface.ts delete mode 100644 typescript-client/instructions/create-spl-mint-with-interface-pda.ts diff --git a/toolkits/streaming-tokens/test-tokens/create-mint.ts b/toolkits/streaming-tokens/test-tokens/create-mint.ts index ccf4ebf..374f725 100644 --- a/toolkits/streaming-tokens/test-tokens/create-mint.ts +++ b/toolkits/streaming-tokens/test-tokens/create-mint.ts @@ -1,5 +1,7 @@ import { config } from "dotenv"; -config({ path: "../.env" }); +import { dirname, resolve } from "path"; +import { fileURLToPath } from "url"; +config({ path: resolve(dirname(fileURLToPath(import.meta.url)), "../.env") }); import { Keypair } from "@solana/web3.js"; import { createRpc, confirmTx } from "@lightprotocol/stateless.js"; import { createMintInterface, createTokenMetadata } from "@lightprotocol/compressed-token"; diff --git a/typescript-client/README.md b/typescript-client/README.md index 0b7802e..0595ea3 100644 --- a/typescript-client/README.md +++ b/typescript-client/README.md @@ -2,24 +2,31 @@ TypeScript client examples for light-token-sdk. -- **create-mint** - Create a light-token mint with metadata - - [Action](actions/create-mint.ts) | [Instruction](instructions/create-mint.ts) -- **create-ata** - Create an associated light-token account - - [Action](actions/create-ata.ts) | [Instruction](instructions/create-ata.ts) -- **load-ata** - Load token accounts from light-token, compressed tokens, SPL/T22 to one unified balance - - [Action](actions/load-ata.ts) | [Instruction](instructions/load-ata.ts) -- **mint-to** - Mint tokens to a light-account - - [Action](actions/mint-to.ts) | [Instruction](instructions/mint-to.ts) -- **transfer-interface** - Transfer between light-token, T22, and SPL accounts - - [Action](actions/transfer-interface.ts) | [Instruction](instructions/transfer-interface.ts) -- **wrap** - Wrap SPL/T22 to light-token - - [Action](actions/wrap.ts) | [Instruction](instructions/wrap.ts) -- **unwrap** - Unwrap light-token to SPL/T22 - - [Action](actions/unwrap.ts) | [Instruction](instructions/unwrap.ts) -- **delegate-approve** - Approve delegate - - [Action](actions/delegate-approve.ts) -- **delegate-revoke** - Revoke delegate - - [Action](actions/delegate-revoke.ts) +- **[create-mint](actions/create-mint.ts)** - Create a light-token mint with metadata +- **[create-spl-mint](actions/create-spl-mint.ts)** - Create an SPL mint with SPL interface PDA +- **[create-t22-mint](actions/create-t22-mint.ts)** - Create a Token-2022 mint with SPL interface PDA +- **[create-spl-interface](actions/create-spl-interface.ts)** - Create SPL interface PDA for an existing mint +- **[create-ata](actions/create-ata.ts)** - Create an associated light-token account +- **[load-ata](actions/load-ata.ts)** - Load token accounts from light-token, compressed tokens, SPL/T22 to one unified balance +- **[mint-to](actions/mint-to.ts)** - Mint tokens to a light-account +- **[transfer-interface](actions/transfer-interface.ts)** - Transfer between light-token, T22, and SPL accounts +- **[delegate-approve](actions/delegate-approve.ts)** - Approve delegate +- **[delegate-revoke](actions/delegate-revoke.ts)** - Revoke delegate +- **[wrap](actions/wrap.ts)** - Wrap SPL/T22 to light-token +- **[unwrap](actions/unwrap.ts)** - Unwrap light-token to SPL/T22 + +### Instructions + +- **[create-mint](instructions/create-mint.ts)** - Build create mint instruction +- **[create-spl-mint](instructions/create-spl-mint.ts)** - Build SPL mint + SPL interface PDA instructions +- **[create-t22-mint](instructions/create-t22-mint.ts)** - Build Token-2022 mint + SPL interface PDA instructions +- **[create-spl-interface](instructions/create-spl-interface.ts)** - Build SPL interface PDA instruction +- **[create-ata](instructions/create-ata.ts)** - Build create ATA instruction +- **[load-ata](instructions/load-ata.ts)** - Build load ATA instruction +- **[mint-to](instructions/mint-to.ts)** - Build mint-to instruction +- **[transfer-interface](instructions/transfer-interface.ts)** - Build transfer instruction +- **[wrap](instructions/wrap.ts)** - Wrap SPL/T22 to light-token +- **[unwrap](instructions/unwrap.ts)** - Unwrap light-token to SPL/T22 ## Setup @@ -55,4 +62,4 @@ npm run load-ata:instruction ## Documentation -Learn more [about Light-Token here](https://www.zkcompression.com/light-token/welcome). +Learn more [about Light Token here](https://www.zkcompression.com/light-token/welcome). diff --git a/typescript-client/actions/create-spl-interface.ts b/typescript-client/actions/create-spl-interface.ts new file mode 100644 index 0000000..b515aa7 --- /dev/null +++ b/typescript-client/actions/create-spl-interface.ts @@ -0,0 +1,28 @@ +import "dotenv/config"; +import { Keypair, PublicKey } from "@solana/web3.js"; +import { createRpc } from "@lightprotocol/stateless.js"; +import { createSplInterface } from "@lightprotocol/compressed-token"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +// devnet: +// const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +// const rpc = createRpc(RPC_URL); +// localnet: +const rpc = createRpc(); + +const payer = Keypair.fromSecretKey( + new Uint8Array( + JSON.parse(readFileSync(`${homedir()}/.config/solana/id.json`, "utf8")), + ), +); + +(async function () { + const existingMint = new PublicKey("YOUR_EXISTING_MINT_ADDRESS"); + + // Register SPL interface PDA to enable interop with Light Tokens + const tx = await createSplInterface(rpc, payer, existingMint); + + console.log("Mint:", existingMint.toBase58()); + console.log("Tx:", tx); +})(); diff --git a/typescript-client/actions/create-spl-mint-with-interface-pda.ts b/typescript-client/actions/create-spl-mint-with-interface-pda.ts deleted file mode 100644 index 58fd8ed..0000000 --- a/typescript-client/actions/create-spl-mint-with-interface-pda.ts +++ /dev/null @@ -1,38 +0,0 @@ -import "dotenv/config"; -import { Keypair } from "@solana/web3.js"; -import { createRpc } from "@lightprotocol/stateless.js"; -import { - createMint, - CompressedTokenProgram, -} from "@lightprotocol/compressed-token"; -import { homedir } from "os"; -import { readFileSync } from "fs"; - -// devnet: -const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; -// localnet: -// const RPC_URL = undefined; -const payer = Keypair.fromSecretKey( - new Uint8Array( - JSON.parse(readFileSync(`${homedir()}/.config/solana/id.json`, "utf8")) - ) -); - -(async function () { - const rpc = createRpc(RPC_URL); - - // Creates SPL mint and SPL interface PDA in one transaction - // SPL interface PDA holds SPL tokens that are wrapped to light-token - const { mint, transactionSignature } = await createMint( - rpc, - payer, - payer.publicKey, - 9, - ); - - const splInterfacePda = CompressedTokenProgram.deriveSplInterfacePda(mint); - - console.log("SPL Mint:", mint.toBase58()); - console.log("SPL Interface PDA:", splInterfacePda.toBase58()); - console.log("Tx:", transactionSignature); -})(); diff --git a/typescript-client/actions/create-spl-mint.ts b/typescript-client/actions/create-spl-mint.ts index afd5ec2..dcfcbfc 100644 --- a/typescript-client/actions/create-spl-mint.ts +++ b/typescript-client/actions/create-spl-mint.ts @@ -19,7 +19,8 @@ const payer = Keypair.fromSecretKey( ); (async function () { - // Creates SPL mint + SPL interface pda (token pool) in one transaction + // Creates SPL mint and SPL interface PDA in one transaction + // SPL interface PDA holds SPL tokens when wrapped to light-token const mintKeypair = Keypair.generate(); const { mint, transactionSignature } = await createMintInterface( rpc, diff --git a/typescript-client/actions/create-t22-mint.ts b/typescript-client/actions/create-t22-mint.ts index 5024438..737d48d 100644 --- a/typescript-client/actions/create-t22-mint.ts +++ b/typescript-client/actions/create-t22-mint.ts @@ -19,7 +19,8 @@ const payer = Keypair.fromSecretKey( ); (async function () { - // Creates Token-2022 mint + T22 interface pda (token pool) in one transaction + // Creates Token-2022 mint and SPL interface PDA in one transaction + // SPL interface PDA holds Token-2022 tokens when wrapped to light-token const mintKeypair = Keypair.generate(); const { mint, transactionSignature } = await createMintInterface( rpc, diff --git a/typescript-client/instructions/create-ata.ts b/typescript-client/instructions/create-ata.ts index 13fdab5..ff2009c 100644 --- a/typescript-client/instructions/create-ata.ts +++ b/typescript-client/instructions/create-ata.ts @@ -14,10 +14,10 @@ import { homedir } from "os"; import { readFileSync } from "fs"; // devnet: -const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; -const rpc = createRpc(RPC_URL); +// const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +// const rpc = createRpc(RPC_URL); // localnet: -// const rpc = createRpc(); +const rpc = createRpc(); const payer = Keypair.fromSecretKey( new Uint8Array( diff --git a/typescript-client/instructions/create-mint.ts b/typescript-client/instructions/create-mint.ts index 662c6d0..48dec81 100644 --- a/typescript-client/instructions/create-mint.ts +++ b/typescript-client/instructions/create-mint.ts @@ -29,10 +29,10 @@ function findMintAddress(mintSigner: PublicKey): [PublicKey, number] { } // devnet: -const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; -const rpc = createRpc(RPC_URL); +// const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +// const rpc = createRpc(RPC_URL); // localnet: -// const rpc = createRpc(); +const rpc = createRpc(); const payer = Keypair.fromSecretKey( new Uint8Array( diff --git a/typescript-client/instructions/create-spl-interface.ts b/typescript-client/instructions/create-spl-interface.ts new file mode 100644 index 0000000..8fee304 --- /dev/null +++ b/typescript-client/instructions/create-spl-interface.ts @@ -0,0 +1,41 @@ +import "dotenv/config"; +import { + Keypair, + PublicKey, + Transaction, + sendAndConfirmTransaction, +} from "@solana/web3.js"; +import { createRpc } from "@lightprotocol/stateless.js"; +import { CompressedTokenProgram } from "@lightprotocol/compressed-token"; +import { TOKEN_PROGRAM_ID } from "@solana/spl-token"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +// devnet: +// const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +// const rpc = createRpc(RPC_URL); +// localnet: +const rpc = createRpc(); + +const payer = Keypair.fromSecretKey( + new Uint8Array( + JSON.parse(readFileSync(`${homedir()}/.config/solana/id.json`, "utf8")), + ), +); + +(async function () { + const existingMint = new PublicKey("YOUR_EXISTING_MINT_ADDRESS"); + + // Register SPL interface PDA to enable interop with Light Tokens + const ix = await CompressedTokenProgram.createTokenPool({ + feePayer: payer.publicKey, + mint: existingMint, + tokenProgramId: TOKEN_PROGRAM_ID, + }); + + const tx = new Transaction().add(ix); + const signature = await sendAndConfirmTransaction(rpc, tx, [payer]); + + console.log("Mint:", existingMint.toBase58()); + console.log("Tx:", signature); +})(); diff --git a/typescript-client/instructions/create-spl-mint-with-interface-pda.ts b/typescript-client/instructions/create-spl-mint-with-interface-pda.ts deleted file mode 100644 index 41397af..0000000 --- a/typescript-client/instructions/create-spl-mint-with-interface-pda.ts +++ /dev/null @@ -1,58 +0,0 @@ -import "dotenv/config"; -import { - Keypair, - ComputeBudgetProgram, - Transaction, - sendAndConfirmTransaction, -} from "@solana/web3.js"; -import { createRpc } from "@lightprotocol/stateless.js"; -import { - CompressedTokenProgram, -} from "@lightprotocol/compressed-token"; -import { MINT_SIZE } from "@solana/spl-token"; -import { homedir } from "os"; -import { readFileSync } from "fs"; - -// devnet: -const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; -const rpc = createRpc(RPC_URL); -// localnet: -// const rpc = createRpc(); - -const payer = Keypair.fromSecretKey( - new Uint8Array( - JSON.parse(readFileSync(`${homedir()}/.config/solana/id.json`, "utf8")) - ) -); - -(async function () { - const mintKeypair = Keypair.generate(); - - const instructions = await CompressedTokenProgram.createMint({ - feePayer: payer.publicKey, - mint: mintKeypair.publicKey, - authority: payer.publicKey, - freezeAuthority: null, - decimals: 9, - rentExemptBalance: await rpc.getMinimumBalanceForRentExemption(MINT_SIZE), - }); - - // Creates SPL mint and SPL interface PDA in one transaction - // SPL interface PDA holds SPL tokens that are wrapped to light-token - const splInterfacePda = CompressedTokenProgram.deriveSplInterfacePda( - mintKeypair.publicKey - ); - - const tx = new Transaction().add( - ComputeBudgetProgram.setComputeUnitLimit({ units: 200_000 }), - ...instructions - ); - const signature = await sendAndConfirmTransaction(rpc, tx, [ - payer, - mintKeypair, - ]); - - console.log("SPL Mint:", mintKeypair.publicKey.toBase58()); - console.log("SPL Interface PDA:", splInterfacePda.toBase58()); - console.log("Tx:", signature); -})(); diff --git a/typescript-client/instructions/create-spl-mint.ts b/typescript-client/instructions/create-spl-mint.ts index 37a03bd..e906f5c 100644 --- a/typescript-client/instructions/create-spl-mint.ts +++ b/typescript-client/instructions/create-spl-mint.ts @@ -53,8 +53,9 @@ const payer = Keypair.fromSecretKey( TOKEN_PROGRAM_ID, ); - // Instruction 3: Create token pool (enables compression) - const createTokenPoolIx = await CompressedTokenProgram.createTokenPool({ + // Instruction 3: Create SPL interface PDA + // Holds SPL tokens when wrapped to light-token + const createSplInterfaceIx = await CompressedTokenProgram.createTokenPool({ feePayer: payer.publicKey, mint: mintKeypair.publicKey, tokenProgramId: TOKEN_PROGRAM_ID, @@ -63,7 +64,7 @@ const payer = Keypair.fromSecretKey( const tx = new Transaction().add( createMintAccountIx, initializeMintIx, - createTokenPoolIx, + createSplInterfaceIx, ); const signature = await sendAndConfirmTransaction(rpc, tx, [ diff --git a/typescript-client/instructions/create-t22-mint.ts b/typescript-client/instructions/create-t22-mint.ts index 26c89b5..0bcdd24 100644 --- a/typescript-client/instructions/create-t22-mint.ts +++ b/typescript-client/instructions/create-t22-mint.ts @@ -53,8 +53,9 @@ const payer = Keypair.fromSecretKey( TOKEN_2022_PROGRAM_ID, ); - // Instruction 3: Create token pool (enables compression) - const createTokenPoolIx = await CompressedTokenProgram.createTokenPool({ + // Instruction 3: Create SPL interface PDA + // Holds Token-2022 tokens when wrapped to light-token + const createSplInterfaceIx = await CompressedTokenProgram.createTokenPool({ feePayer: payer.publicKey, mint: mintKeypair.publicKey, tokenProgramId: TOKEN_2022_PROGRAM_ID, @@ -63,7 +64,7 @@ const payer = Keypair.fromSecretKey( const tx = new Transaction().add( createMintAccountIx, initializeMintIx, - createTokenPoolIx, + createSplInterfaceIx, ); const signature = await sendAndConfirmTransaction(rpc, tx, [ diff --git a/typescript-client/instructions/mint-to.ts b/typescript-client/instructions/mint-to.ts index 2492ad5..a867274 100644 --- a/typescript-client/instructions/mint-to.ts +++ b/typescript-client/instructions/mint-to.ts @@ -17,10 +17,10 @@ import { homedir } from "os"; import { readFileSync } from "fs"; // devnet: -const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; -const rpc = createRpc(RPC_URL); +// const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +// const rpc = createRpc(RPC_URL); // localnet: -// const rpc = createRpc(); +const rpc = createRpc(); const payer = Keypair.fromSecretKey( new Uint8Array( diff --git a/typescript-client/instructions/transfer-interface.ts b/typescript-client/instructions/transfer-interface.ts index c32d1ae..d1a07d9 100644 --- a/typescript-client/instructions/transfer-interface.ts +++ b/typescript-client/instructions/transfer-interface.ts @@ -17,10 +17,10 @@ import { homedir } from "os"; import { readFileSync } from "fs"; // devnet: -const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; -const rpc = createRpc(RPC_URL); +// const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +// const rpc = createRpc(RPC_URL); // localnet: -// const rpc = createRpc(); +const rpc = createRpc(); const payer = Keypair.fromSecretKey( new Uint8Array( From 89e85b6e7d65abbe9f8bebea7b513ad7f8fa1af8 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Fri, 30 Jan 2026 18:43:57 +0000 Subject: [PATCH 21/23] fix laserstream --- toolkits/streaming-tokens/Cargo.lock | 3340 +++++++++++++++-- toolkits/streaming-tokens/Cargo.toml | 17 + toolkits/streaming-tokens/src/main.rs | 99 +- .../test-tokens/create-ata.ts | 48 + .../test-tokens/create-mint.ts | 6 +- .../test-tokens/create_mint.rs | 55 + 6 files changed, 3151 insertions(+), 414 deletions(-) create mode 100644 toolkits/streaming-tokens/test-tokens/create-ata.ts create mode 100644 toolkits/streaming-tokens/test-tokens/create_mint.rs diff --git a/toolkits/streaming-tokens/Cargo.lock b/toolkits/streaming-tokens/Cargo.lock index b8aa6c0..897e80d 100644 --- a/toolkits/streaming-tokens/Cargo.lock +++ b/toolkits/streaming-tokens/Cargo.lock @@ -54,6 +54,20 @@ dependencies = [ "zeroize", ] +[[package]] +name = "agave-feature-set" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a2c365c0245cbb8959de725fc2b44c754b673fdf34c9a7f9d4a25c35a7bf1" +dependencies = [ + "ahash 0.8.12", + "solana-epoch-schedule 2.2.1", + "solana-hash 2.3.0", + "solana-pubkey 2.4.0", + "solana-sha256-hasher 2.3.0", + "solana-svm-feature-set 2.3.13", +] + [[package]] name = "agave-feature-set" version = "3.1.4" @@ -65,7 +79,7 @@ dependencies = [ "solana-hash 3.1.0", "solana-pubkey 3.0.0", "solana-sha256-hasher 3.1.0", - "solana-svm-feature-set", + "solana-svm-feature-set 3.1.4", ] [[package]] @@ -74,7 +88,7 @@ version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "997e580e670daab5b0e26331b292e0dd06771d3dd732d58393cea1f52f8187a1" dependencies = [ - "agave-feature-set", + "agave-feature-set 3.1.4", "solana-pubkey 3.0.0", "solana-sdk-ids 3.1.0", ] @@ -124,380 +138,432 @@ dependencies = [ ] [[package]] -name = "allocator-api2" -version = "0.2.21" +name = "alloc-no-stdlib" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" [[package]] -name = "android_system_properties" -version = "0.1.5" +name = "alloc-stdlib" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" dependencies = [ - "libc", + "alloc-no-stdlib", ] [[package]] -name = "anyhow" -version = "1.0.100" +name = "allocator-api2" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] -name = "arrayref" -version = "0.3.9" +name = "anchor-attribute-access-control" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" +checksum = "3f70fd141a4d18adf11253026b32504f885447048c7494faf5fa83b01af9c0cf" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] -name = "arrayvec" -version = "0.7.6" +name = "anchor-attribute-account" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "715a261c57c7679581e06f07a74fa2af874ac30f86bd8ea07cca4a7e5388a064" +dependencies = [ + "anchor-syn", + "bs58", + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] -name = "ascii" -version = "0.9.3" +name = "anchor-attribute-constant" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" +checksum = "730d6df8ae120321c5c25e0779e61789e4b70dc8297102248902022f286102e4" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] [[package]] -name = "async-compression" -version = "0.4.35" +name = "anchor-attribute-error" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07a926debf178f2d355197f9caddb08e54a9329d44748034bba349c5848cb519" +checksum = "27e6e449cc3a37b2880b74dcafb8e5a17b954c0e58e376432d7adc646fb333ef" dependencies = [ - "compression-codecs", - "compression-core", - "futures-core", - "pin-project-lite", - "tokio", + "anchor-syn", + "quote", + "syn 1.0.109", ] [[package]] -name = "async-stream" -version = "0.3.6" +name = "anchor-attribute-event" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +checksum = "d7710e4c54adf485affcd9be9adec5ef8846d9c71d7f31e16ba86ff9fc1dd49f" dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "async-stream-impl" -version = "0.3.6" +name = "anchor-attribute-program" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +checksum = "05ecfd49b2aeadeb32f35262230db402abed76ce87e27562b34f61318b2ec83c" dependencies = [ + "anchor-lang-idl", + "anchor-syn", + "anyhow", + "bs58", + "heck 0.3.3", "proc-macro2", "quote", - "syn 2.0.111", + "serde_json", + "syn 1.0.109", ] [[package]] -name = "async-trait" -version = "0.1.89" +name = "anchor-derive-accounts" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +checksum = "be89d160793a88495af462a7010b3978e48e30a630c91de47ce2c1d3cb7a6149" dependencies = [ - "proc-macro2", + "anchor-syn", "quote", - "syn 2.0.111", + "syn 1.0.109", ] [[package]] -name = "atomic-waker" -version = "1.1.2" +name = "anchor-derive-serde" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +checksum = "abc6ee78acb7bfe0c2dd2abc677aaa4789c0281a0c0ef01dbf6fe85e0fd9e6e4" +dependencies = [ + "anchor-syn", + "borsh-derive-internal", + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] -name = "autocfg" -version = "1.5.0" +name = "anchor-derive-space" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "134a01c0703f6fd355a0e472c033f6f3e41fac1ef6e370b20c50f4c8d022cea7" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] -name = "autotools" -version = "0.2.7" +name = "anchor-lang" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" +checksum = "e6bab117055905e930f762c196e08f861f8dfe7241b92cee46677a3b15561a0a" dependencies = [ - "cc", + "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", + "base64 0.21.7", + "bincode", + "borsh 0.10.4", + "bytemuck", + "solana-program", + "thiserror 1.0.69", ] [[package]] -name = "axum" -version = "0.7.9" +name = "anchor-lang-idl" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +checksum = "32e8599d21995f68e296265aa5ab0c3cef582fd58afec014d01bd0bce18a4418" dependencies = [ - "async-trait", - "axum-core 0.4.5", - "bytes", - "futures-util", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "itoa", - "matchit 0.7.3", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", + "anchor-lang-idl-spec", + "anyhow", + "heck 0.3.3", "serde", - "sync_wrapper 1.0.2", - "tower 0.5.2", - "tower-layer", - "tower-service", + "serde_json", + "sha2 0.10.9", ] [[package]] -name = "axum" -version = "0.8.7" +name = "anchor-lang-idl-spec" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" +checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" dependencies = [ - "axum-core 0.5.5", - "bytes", - "futures-util", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "itoa", - "matchit 0.8.4", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "serde_core", - "sync_wrapper 1.0.2", - "tower 0.5.2", - "tower-layer", - "tower-service", + "anyhow", + "serde", ] [[package]] -name = "axum-core" -version = "0.4.5" +name = "anchor-syn" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +checksum = "5dc7a6d90cc643df0ed2744862cdf180587d1e5d28936538c18fc8908489ed67" dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper 1.0.2", - "tower-layer", - "tower-service", + "anyhow", + "bs58", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.9", + "syn 1.0.109", + "thiserror 1.0.69", ] [[package]] -name = "axum-core" -version = "0.5.5" +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "bytes", - "futures-core", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "mime", - "pin-project-lite", - "sync_wrapper 1.0.2", - "tower-layer", - "tower-service", + "libc", ] [[package]] -name = "base64" -version = "0.12.3" +name = "anyhow" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] -name = "base64" -version = "0.21.7" +name = "ark-bn254" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +dependencies = [ + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] [[package]] -name = "base64" -version = "0.22.1" +name = "ark-bn254" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] [[package]] -name = "bincode" -version = "1.3.3" +name = "ark-ec" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "serde", + "ark-ff 0.4.2", + "ark-poly 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "zeroize", ] [[package]] -name = "bitflags" -version = "1.3.2" +name = "ark-ec" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash 0.8.12", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.2", + "itertools 0.13.0", + "num-bigint", + "num-integer", + "num-traits", + "zeroize", +] [[package]] -name = "bitflags" -version = "2.10.0" +name = "ark-ff" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] [[package]] -name = "blake3" -version = "1.8.3" +name = "ark-ff" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" dependencies = [ - "arrayref", + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", - "cpufeatures", "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "zeroize", ] [[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" +name = "ark-ff-asm" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" dependencies = [ - "borsh-derive 0.10.4", - "hashbrown 0.12.3", + "quote", + "syn 1.0.109", ] [[package]] -name = "borsh" -version = "1.6.0" +name = "ark-ff-asm" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ - "borsh-derive 1.6.0", - "cfg_aliases", + "quote", + "syn 2.0.111", ] [[package]] -name = "borsh-derive" -version = "0.10.4" +name = "ark-ff-macros" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", - "proc-macro-crate 0.1.5", + "num-bigint", + "num-traits", "proc-macro2", + "quote", "syn 1.0.109", ] [[package]] -name = "borsh-derive" -version = "1.6.0" +name = "ark-ff-macros" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" dependencies = [ - "once_cell", - "proc-macro-crate 3.4.0", + "num-bigint", + "num-traits", "proc-macro2", "quote", "syn 2.0.111", ] [[package]] -name = "borsh-derive-internal" -version = "0.10.4" +name = "ark-poly" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", ] [[package]] -name = "borsh-schema-derive-internal" -version = "0.10.4" +name = "ark-poly" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "ahash 0.8.12", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.2", ] [[package]] -name = "bs58" -version = "0.5.1" +name = "ark-serialize" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ - "tinyvec", + "ark-serialize-derive 0.4.2", + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", ] [[package]] -name = "bumpalo" -version = "3.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" - -[[package]] -name = "bv" -version = "0.11.1" +name = "ark-serialize" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" dependencies = [ - "feature-probe", - "serde", + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint", ] [[package]] -name = "bytemuck" -version = "1.24.0" +name = "ark-serialize-derive" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" dependencies = [ - "bytemuck_derive", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "bytemuck_derive" -version = "1.10.2" +name = "ark-serialize-derive" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", @@ -505,155 +571,602 @@ dependencies = [ ] [[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.11.0" +name = "ark-std" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] [[package]] -name = "cc" -version = "1.2.49" +name = "ark-std" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ - "find-msvc-tools", - "jobserver", - "libc", - "shlex", + "num-traits", + "rand 0.8.5", + "rayon", ] [[package]] -name = "cfg-if" -version = "1.0.4" +name = "arrayref" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] -name = "cfg_aliases" -version = "0.2.1" +name = "arrayvec" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] -name = "cfg_eval" -version = "0.1.2" +name = "ascii" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" [[package]] -name = "chrono" -version = "0.4.42" +name = "async-compression" +version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +checksum = "07a926debf178f2d355197f9caddb08e54a9329d44748034bba349c5848cb519" dependencies = [ - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-link", + "compression-codecs", + "compression-core", + "futures-core", + "pin-project-lite", + "tokio", ] [[package]] -name = "cipher" -version = "0.4.4" +name = "async-stream" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ - "crypto-common", - "inout", + "async-stream-impl", + "futures-core", + "pin-project-lite", ] [[package]] -name = "combine" -version = "3.8.1" +name = "async-stream-impl" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ - "ascii", - "byteorder", - "either", - "memchr", - "unreachable", + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] -name = "compression-codecs" -version = "0.4.34" +name = "async-trait" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34a3cbbb8b6eca96f3a5c4bf6938d5b27ced3675d69f95bb51948722870bc323" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ - "compression-core", - "flate2", - "memchr", + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] -name = "compression-core" -version = "0.4.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" - -[[package]] -name = "console_error_panic_hook" -version = "0.1.7" +name = "atomic-waker" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" -dependencies = [ - "cfg-if", - "wasm-bindgen", -] +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] -name = "console_log" -version = "0.2.2" +name = "atty" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "log", - "web-sys", + "hermit-abi", + "libc", + "winapi", ] [[package]] -name = "constant_time_eq" -version = "0.4.2" +name = "autocfg" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] -name = "core-foundation" -version = "0.9.4" +name = "autotools" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +checksum = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" dependencies = [ - "core-foundation-sys", - "libc", + "cc", ] [[package]] -name = "core-foundation" -version = "0.10.1" +name = "axum" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" + "async-trait", + "axum-core 0.4.5", + "bytes", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "itoa", + "matchit 0.7.3", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper 1.0.2", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" +dependencies = [ + "axum-core 0.5.5", + "bytes", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "itoa", + "matchit 0.8.4", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "sync_wrapper 1.0.2", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" +dependencies = [ + "bytes", + "futures-core", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[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 = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +dependencies = [ + "serde_core", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake3" +version = "1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" +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.12.3", +] + +[[package]] +name = "borsh" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +dependencies = [ + "borsh-derive 1.6.0", + "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.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +dependencies = [ + "once_cell", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[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 = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[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.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[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.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[package]] +name = "cc" +version = "1.2.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cfg_eval" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "chrono" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[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 = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "compression-codecs" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34a3cbbb8b6eca96f3a5c4bf6938d5b27ced3675d69f95bb51948722870bc323" +dependencies = [ + "brotli", + "compression-core", + "flate2", + "memchr", +] + +[[package]] +name = "compression-core" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + +[[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 = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" @@ -675,6 +1188,31 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + [[package]] name = "crunchy" version = "0.2.4" @@ -692,6 +1230,16 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + [[package]] name = "ctr" version = "0.9.2" @@ -701,6 +1249,19 @@ dependencies = [ "cipher", ] +[[package]] +name = "curve25519-dalek" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + [[package]] name = "curve25519-dalek" version = "4.1.3" @@ -765,12 +1326,33 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", + "serde_core", +] + [[package]] name = "derivation-path" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "digest" version = "0.9.0" @@ -808,12 +1390,71 @@ version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek 3.2.0", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek-bip32" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" +dependencies = [ + "derivation-path", + "ed25519-dalek", + "hmac 0.12.1", + "sha2 0.10.9", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "either" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + [[package]] name = "encoding_rs" version = "0.8.35" @@ -823,6 +1464,39 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -969,6 +1643,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futures" version = "0.3.31" @@ -1075,8 +1755,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -1099,9 +1781,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "groth16-solana" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a6d1ffb18dbf5cfc60b11bd7da88474c672870247c1e5b498619bcb6ba3d8f5" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "num-bigint", + "solana-bn254", + "thiserror 1.0.69", ] [[package]] @@ -1160,6 +1859,15 @@ dependencies = [ "ahash 0.7.8", ] +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.12", +] + [[package]] name = "hashbrown" version = "0.15.2" @@ -1177,6 +1885,15 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "heck" version = "0.5.0" @@ -1200,7 +1917,7 @@ dependencies = [ "prost 0.12.6", "prost-types 0.12.6", "rand 0.8.5", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "sha2 0.10.9", @@ -1215,6 +1932,31 @@ dependencies = [ "uuid", ] +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + [[package]] name = "hmac" version = "0.12.1" @@ -1224,6 +1966,17 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", +] + [[package]] name = "http" version = "0.2.12" @@ -1291,6 +2044,12 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "humantime" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" + [[package]] name = "hyper" version = "0.14.32" @@ -1352,6 +2111,23 @@ dependencies = [ "tokio-rustls 0.24.1", ] +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http 1.4.0", + "hyper 1.8.1", + "hyper-util", + "rustls 0.23.35", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.4", + "tower-service", + "webpki-roots 1.0.5", +] + [[package]] name = "hyper-timeout" version = "0.5.2" @@ -1378,12 +2154,29 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.8.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" dependencies = [ + "base64 0.22.1", "bytes", "futures-channel", "futures-core", @@ -1391,12 +2184,16 @@ dependencies = [ "http 1.4.0", "http-body 1.0.1", "hyper 1.8.1", + "ipnet", "libc", + "percent-encoding", "pin-project-lite", "socket2 0.6.1", + "system-configuration", "tokio", "tower-service", "tracing", + "windows-registry", ] [[package]] @@ -1539,6 +2336,7 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] @@ -1549,6 +2347,21 @@ checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width", + "web-time", ] [[package]] @@ -1566,6 +2379,25 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +[[package]] +name = "iri-string" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.12.1" @@ -1575,6 +2407,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.14.0" @@ -1610,6 +2451,21 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jsonrpc-core" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" +dependencies = [ + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", +] + [[package]] name = "keccak" version = "0.1.5" @@ -1651,8 +2507,8 @@ dependencies = [ "solana-message 3.0.1", "solana-pubkey 3.0.0", "solana-signature 3.1.0", - "solana-transaction", - "solana-transaction-context", + "solana-transaction 3.0.2", + "solana-transaction-context 3.1.4", "solana-transaction-error 3.0.0", "solana-transaction-status", "tonic 0.14.2", @@ -1682,12 +2538,14 @@ dependencies = [ "arrayref", "base64 0.12.3", "digest 0.9.0", + "hmac-drbg", "libsecp256k1-core", "libsecp256k1-gen-ecmult", "libsecp256k1-gen-genmult", "rand 0.7.3", "serde", "sha2 0.9.9", + "typenum", ] [[package]] @@ -1705,36 +2563,143 @@ dependencies = [ name = "libsecp256k1-gen-ecmult" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +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 = "light-account-checks" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f20b8640212dd450e18d452a247e28d8ba6fdce3c713fd8b69f1e95874d1b7ab" +dependencies = [ + "solana-account-info 2.3.0", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-sysvar 2.3.0", + "thiserror 2.0.17", +] + +[[package]] +name = "light-array-map" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bdd13b18028ac9d80d0a987551c0dad7fe81be8140e87cc9d568b80f3728203" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "light-batched-merkle-tree" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e838c523b49371097f948cd5662bd9a89d9dca037fb61fd38001e99f485702" dependencies = [ - "libsecp256k1-core", + "aligned-sized", + "borsh 0.10.4", + "light-account-checks", + "light-bloom-filter", + "light-compressed-account", + "light-hasher", + "light-macros", + "light-merkle-tree-metadata", + "light-verifier", + "light-zero-copy", + "solana-account-info 2.3.0", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-sysvar 2.3.0", + "thiserror 2.0.17", + "zerocopy", ] [[package]] -name = "libsecp256k1-gen-genmult" -version = "0.2.1" +name = "light-bloom-filter" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +checksum = "380b8cf734ccf5fbc1f5fed8e5308b57ebde6774d9304c167bcb0de2854412d8" dependencies = [ - "libsecp256k1-core", + "bitvec", + "num-bigint", + "solana-nostd-keccak", + "solana-program-error 2.2.2", + "thiserror 2.0.17", ] [[package]] -name = "light-account-checks" -version = "0.7.0" +name = "light-bounded-vec" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f20b8640212dd450e18d452a247e28d8ba6fdce3c713fd8b69f1e95874d1b7ab" +checksum = "58cfa375d028164719e3ffef93d2e5c27855cc8a5bb5bf257b868d17c12a3e66" dependencies = [ - "thiserror 2.0.17", + "bytemuck", + "memoffset", + "solana-program-error 2.2.2", + "thiserror 1.0.69", ] [[package]] -name = "light-array-map" -version = "0.2.0" +name = "light-client" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bdd13b18028ac9d80d0a987551c0dad7fe81be8140e87cc9d568b80f3728203" +checksum = "33203f596d48d28d1cb67dee5762b151e0073207a5e828c63ec68f9efb9a5ee8" dependencies = [ - "tinyvec", + "async-trait", + "base64 0.13.1", + "borsh 0.10.4", + "bs58", + "futures", + "lazy_static", + "light-compressed-account", + "light-compressible", + "light-concurrent-merkle-tree", + "light-event", + "light-hasher", + "light-indexed-merkle-tree", + "light-merkle-tree-metadata", + "light-prover-client", + "light-sdk", + "light-token", + "light-token-interface", + "num-bigint", + "photon-api", + "rand 0.8.5", + "smallvec", + "solana-account 2.2.1", + "solana-account-decoder-client-types 2.3.13", + "solana-address-lookup-table-interface 2.2.2", + "solana-clock 2.2.2", + "solana-commitment-config 2.2.1", + "solana-compute-budget-interface", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-keypair", + "solana-message 2.4.0", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-signature 2.3.0", + "solana-transaction 2.2.3", + "solana-transaction-error 2.2.1", + "solana-transaction-status-client-types 2.3.13", + "spl-pod 0.5.1", + "spl-token-2022-interface 1.0.0", + "thiserror 2.0.17", + "tokio", + "tracing", ] [[package]] @@ -1743,16 +2708,28 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9c3537bbad9df133ca97fc191b164bba93dba1de4da01a92d979ef63f8ce106" dependencies = [ + "anchor-lang", "borsh 0.10.4", + "bytemuck", "light-hasher", "light-macros", + "light-poseidon", "light-program-profiler", "light-zero-copy", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", "thiserror 2.0.17", "tinyvec", "zerocopy", ] +[[package]] +name = "light-compressed-token-sdk" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1095b386bc5042f487072ba16893c8d630c6e7969376dd2379ceda7792ed6f26" + [[package]] name = "light-compressible" version = "0.4.0" @@ -1760,6 +2737,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00d1dc14271907009f4ca23ae99c49279f7d2acc5a83f0f8d7362834b37e2e16" dependencies = [ "aligned-sized", + "anchor-lang", "borsh 0.10.4", "bytemuck", "light-account-checks", @@ -1775,18 +2753,79 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "light-concurrent-merkle-tree" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db96f47253a0907aaa46dac15cecb27b5510130e48da0b36690dcd2e99a6d558" +dependencies = [ + "borsh 0.10.4", + "light-bounded-vec", + "light-hasher", + "memoffset", + "solana-program-error 2.2.2", + "thiserror 2.0.17", +] + +[[package]] +name = "light-event" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4bae725ee1d4d944d442ac0bfdf2031b1b2379c04c7e39c475277aaaea08fb1" +dependencies = [ + "borsh 0.10.4", + "light-compressed-account", + "light-hasher", + "light-zero-copy", + "thiserror 2.0.17", +] + [[package]] name = "light-hasher" version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c822662e6e109bac0e132a43fd52a4ef684811245a794e048cf9cda001e934c8" dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", "borsh 0.10.4", + "light-poseidon", "num-bigint", + "sha2 0.10.9", + "sha3", + "solana-program-error 2.2.2", "thiserror 2.0.17", "tinyvec", ] +[[package]] +name = "light-indexed-array" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f14f984030d86b6f07bd8f5ae04e2c40fcd0c3bdfcc7a291fff1ed59c9e6554" +dependencies = [ + "light-hasher", + "num-bigint", + "num-traits", + "thiserror 2.0.17", +] + +[[package]] +name = "light-indexed-merkle-tree" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0824755289075f28de2820fc7d4ec4e6b9e99d404e033c07338b91cce8c71fb8" +dependencies = [ + "light-bounded-vec", + "light-concurrent-merkle-tree", + "light-hasher", + "light-merkle-tree-reference", + "num-bigint", + "num-traits", + "solana-program-error 2.2.2", + "thiserror 2.0.17", +] + [[package]] name = "light-macros" version = "2.2.0" @@ -1800,6 +2839,47 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "light-merkle-tree-metadata" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c2e63e8345dcfb80efac69136fdcc6c36a12354675aca6e3daf13ec40422d1" +dependencies = [ + "borsh 0.10.4", + "bytemuck", + "light-compressed-account", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-sysvar 2.3.0", + "thiserror 2.0.17", + "zerocopy", +] + +[[package]] +name = "light-merkle-tree-reference" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8d480f62ca32b38a6231bbc5310d693f91d6b5bdcc18bb13c2d9aab7a1c90e8" +dependencies = [ + "light-hasher", + "light-indexed-array", + "num-bigint", + "num-traits", + "thiserror 2.0.17", +] + +[[package]] +name = "light-poseidon" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3d87542063daaccbfecd78b60f988079b6ec4e089249658b9455075c78d42" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "num-bigint", + "thiserror 1.0.69", +] + [[package]] name = "light-profiler-macro" version = "0.1.1" @@ -1812,12 +2892,165 @@ dependencies = [ ] [[package]] -name = "light-program-profiler" +name = "light-program-profiler" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1d345871581aebd8825868a3f08410290aa1cdddcb189ca7f7e588f61d79fcf" +dependencies = [ + "light-profiler-macro", +] + +[[package]] +name = "light-prover-client" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd2195f4573628a8aaca37504cde1b1903b8ed20e2706acbad875b7d41acbeab" +dependencies = [ + "ark-bn254 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "light-compressed-account", + "light-hasher", + "light-indexed-array", + "light-sparse-merkle-tree", + "num-bigint", + "num-traits", + "reqwest 0.11.27", + "serde", + "serde_json", + "solana-bn254", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "light-sdk" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f523c64a6fcdafe6df81d647560770529896f2707be8ffcf048d909b7e2b30" +dependencies = [ + "bincode", + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account", + "light-compressible", + "light-hasher", + "light-macros", + "light-sdk-macros", + "light-sdk-types", + "light-zero-copy", + "num-bigint", + "solana-account-info 2.3.0", + "solana-clock 2.2.2", + "solana-cpi 2.2.1", + "solana-instruction 2.3.3", + "solana-loader-v3-interface 5.0.0", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-system-interface 1.0.0", + "solana-sysvar 2.3.0", + "thiserror 2.0.17", +] + +[[package]] +name = "light-sdk-macros" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d12bb13b84df21a4871dc0837aafc0b48464d3e9b17e2773c0719b6cc724c5" +dependencies = [ + "darling", + "light-hasher", + "light-sdk-types", + "proc-macro2", + "quote", + "solana-pubkey 2.4.0", + "syn 2.0.111", +] + +[[package]] +name = "light-sdk-types" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8153b27d057ded7b2b6bbd78c643e3f20bd9a9718ca1a8d4183169ccd812c3" +dependencies = [ + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account", + "light-hasher", + "light-macros", + "solana-msg 2.2.1", + "thiserror 2.0.17", +] + +[[package]] +name = "light-sparse-merkle-tree" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4251e79b6c63f4946572dcfd7623680ad0f9e0efe1a761a944733333c5645063" +dependencies = [ + "light-hasher", + "light-indexed-array", + "num-bigint", + "num-traits", + "thiserror 2.0.17", +] + +[[package]] +name = "light-token" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fd2e8ca6d7d70c77658010e1ae6ed6d4fe23e29054964b053f51e5c4676e49" +dependencies = [ + "arrayvec", + "borsh 0.10.4", + "light-account-checks", + "light-batched-merkle-tree", + "light-compressed-account", + "light-compressible", + "light-macros", + "light-program-profiler", + "light-sdk", + "light-sdk-types", + "light-token-interface", + "light-token-types", + "light-zero-copy", + "solana-account-info 2.3.0", + "solana-cpi 2.2.1", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "spl-pod 0.5.1", + "thiserror 2.0.17", +] + +[[package]] +name = "light-token-client" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1d345871581aebd8825868a3f08410290aa1cdddcb189ca7f7e588f61d79fcf" +checksum = "e0709867faeb9e4519a22d90352a56060d7f39b9e1f097ece18fcd0dd4830670" dependencies = [ - "light-profiler-macro", + "borsh 0.10.4", + "light-client", + "light-compressed-account", + "light-compressed-token-sdk", + "light-compressible", + "light-sdk", + "light-token", + "light-token-interface", + "light-token-types", + "light-zero-copy", + "solana-instruction 2.3.3", + "solana-keypair", + "solana-msg 2.2.1", + "solana-pubkey 2.4.0", + "solana-signature 2.3.0", + "solana-signer 2.2.1", + "solana-system-interface 1.0.0", + "spl-pod 0.5.1", + "spl-token-2022", ] [[package]] @@ -1847,6 +3080,32 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "light-token-types" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "411481fe2e04b1241235c2572480c153c5669507e227f5e3327057b0d2ba5734" +dependencies = [ + "borsh 0.10.4", + "light-account-checks", + "light-compressed-account", + "light-macros", + "light-sdk-types", + "solana-msg 2.2.1", + "thiserror 2.0.17", +] + +[[package]] +name = "light-verifier" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecba4c14ac08b078a9d84033d628b12bb2577141f405140d506bacd392a830bc" +dependencies = [ + "groth16-solana", + "light-compressed-account", + "thiserror 2.0.17", +] + [[package]] name = "light-zero-copy" version = "0.6.0" @@ -1854,6 +3113,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5621fb515e14af46148699c0b65334aabe230a1d2cbd06736ccc7a408c8a4af" dependencies = [ "light-zero-copy-derive", + "solana-program-error 2.2.2", "zerocopy", ] @@ -1896,6 +3156,12 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "matchers" version = "0.2.0" @@ -1923,6 +3189,15 @@ version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.9.1" @@ -1950,6 +3225,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -2011,8 +3296,15 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", + "serde", ] +[[package]] +name = "num-conv" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" + [[package]] name = "num-derive" version = "0.4.2" @@ -2064,6 +3356,12 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + [[package]] name = "once_cell" version = "1.21.3" @@ -2143,6 +3441,12 @@ dependencies = [ "windows-link", ] +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "pbkdf2" version = "0.11.0" @@ -2178,6 +3482,21 @@ dependencies = [ "indexmap 2.12.1", ] +[[package]] +name = "photon-api" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e572dba0c255f5b8176f15b9e849330d915a8927804f7f9702d5bbbc70e4a1ad" +dependencies = [ + "reqwest 0.12.28", + "serde", + "serde_derive", + "serde_json", + "serde_with", + "url", + "uuid", +] + [[package]] name = "pin-project" version = "1.1.10" @@ -2245,6 +3564,12 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "portable-atomic" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" + [[package]] name = "potential_utf" version = "0.1.4" @@ -2254,6 +3579,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.21" @@ -2336,7 +3667,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" dependencies = [ "bytes", - "heck", + "heck 0.5.0", "itertools 0.12.1", "log", "multimap", @@ -2356,7 +3687,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac6c3320f9abac597dcbc668774ef006702672474aad53c6d596b62e487b40b1" dependencies = [ - "heck", + "heck 0.5.0", "itertools 0.14.0", "log", "multimap", @@ -2454,6 +3785,61 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls 0.23.35", + "socket2 0.6.1", + "thiserror 2.0.17", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash", + "rustls 0.23.35", + "rustls-pki-types", + "slab", + "thiserror 2.0.17", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.6.1", + "tracing", + "windows-sys 0.60.2", +] + [[package]] name = "quote" version = "1.0.42" @@ -2469,6 +3855,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rand" version = "0.7.3" @@ -2493,6 +3885,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -2513,6 +3915,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + [[package]] name = "rand_core" version = "0.5.1" @@ -2531,6 +3943,15 @@ dependencies = [ "getrandom 0.2.16", ] +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + [[package]] name = "rand_hc" version = "0.2.0" @@ -2540,6 +3961,26 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + [[package]] name = "redox_syscall" version = "0.5.18" @@ -2549,6 +3990,26 @@ dependencies = [ "bitflags 2.10.0", ] +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "regex" version = "1.12.2" @@ -2594,8 +4055,8 @@ dependencies = [ "http 0.2.12", "http-body 0.4.6", "hyper 0.14.32", - "hyper-rustls", - "hyper-tls", + "hyper-rustls 0.24.2", + "hyper-tls 0.5.0", "ipnet", "js-sys", "log", @@ -2620,10 +4081,72 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", + "webpki-roots 0.25.4", "winreg", ] +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.12", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.8.1", + "hyper-rustls 0.27.7", + "hyper-tls 0.6.0", + "hyper-util", + "js-sys", + "log", + "mime", + "mime_guess", + "native-tls", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.35", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.26.4", + "tower 0.5.2", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 1.0.5", +] + +[[package]] +name = "reqwest-middleware" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" +dependencies = [ + "anyhow", + "async-trait", + "http 1.4.0", + "reqwest 0.12.28", + "serde", + "thiserror 1.0.69", + "tower-service", +] + [[package]] name = "ring" version = "0.17.14" @@ -2644,6 +4167,12 @@ version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "rustc_version" version = "0.4.1" @@ -2729,6 +4258,7 @@ version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" dependencies = [ + "web-time", "zeroize", ] @@ -2774,6 +4304,30 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -2912,8 +4466,17 @@ version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.12.1", + "schemars 0.9.0", + "schemars 1.2.0", "serde_core", + "serde_json", "serde_with_macros", + "time", ] [[package]] @@ -2983,6 +4546,16 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + [[package]] name = "signal-hook-registry" version = "1.4.7" @@ -2992,12 +4565,24 @@ dependencies = [ "libc", ] +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + [[package]] name = "simd-adler32" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + [[package]] name = "slab" version = "0.4.11" @@ -3036,11 +4621,16 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" dependencies = [ + "bincode", + "serde", + "serde_bytes", + "serde_derive", "solana-account-info 2.3.0", "solana-clock 2.2.2", "solana-instruction 2.3.3", "solana-pubkey 2.4.0", "solana-sdk-ids 2.2.1", + "solana-sysvar 2.3.0", ] [[package]] @@ -3075,7 +4665,7 @@ dependencies = [ "serde", "serde_json", "solana-account 3.2.0", - "solana-account-decoder-client-types", + "solana-account-decoder-client-types 3.1.4", "solana-address-lookup-table-interface 3.0.0", "solana-clock 3.0.0", "solana-config-interface", @@ -3094,8 +4684,8 @@ dependencies = [ "solana-stake-interface 2.0.2", "solana-sysvar 3.1.1", "solana-vote-interface 4.0.4", - "spl-generic-token", - "spl-token-2022-interface", + "spl-generic-token 2.0.1", + "spl-token-2022-interface 2.1.0", "spl-token-group-interface 0.7.1", "spl-token-interface", "spl-token-metadata-interface 0.8.0", @@ -3103,6 +4693,22 @@ dependencies = [ "zstd", ] +[[package]] +name = "solana-account-decoder-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5519e8343325b707f17fbed54fcefb325131b692506d0af9e08a539d15e4f8cf" +dependencies = [ + "base64 0.22.1", + "bs58", + "serde", + "serde_derive", + "serde_json", + "solana-account 2.2.1", + "solana-pubkey 2.4.0", + "zstd", +] + [[package]] name = "solana-account-decoder-client-types" version = "3.1.4" @@ -3160,7 +4766,7 @@ dependencies = [ "borsh 1.6.0", "bytemuck", "bytemuck_derive", - "curve25519-dalek", + "curve25519-dalek 4.1.3", "five8 1.0.0", "five8_const 1.0.0", "serde", @@ -3259,6 +4865,21 @@ dependencies = [ "solana-sanitize 2.2.1", ] +[[package]] +name = "solana-bn254" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4420f125118732833f36facf96a27e7b78314b2d642ba07fa9ffdacd8d79e243" +dependencies = [ + "ark-bn254 0.4.0", + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "bytemuck", + "solana-define-syscall 2.3.0", + "thiserror 2.0.17", +] + [[package]] name = "solana-borsh" version = "2.2.1" @@ -3278,6 +4899,27 @@ dependencies = [ "borsh 1.6.0", ] +[[package]] +name = "solana-client-traits" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" +dependencies = [ + "solana-account 2.2.1", + "solana-commitment-config 2.2.1", + "solana-epoch-info", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-keypair", + "solana-message 2.4.0", + "solana-pubkey 2.4.0", + "solana-signature 2.3.0", + "solana-signer 2.2.1", + "solana-system-interface 1.0.0", + "solana-transaction 2.2.3", + "solana-transaction-error 2.2.1", +] + [[package]] name = "solana-clock" version = "2.2.2" @@ -3304,12 +4946,46 @@ dependencies = [ "solana-sysvar-id 3.1.0", ] +[[package]] +name = "solana-cluster-type" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 2.3.0", +] + +[[package]] +name = "solana-commitment-config" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" +dependencies = [ + "serde", + "serde_derive", +] + [[package]] name = "solana-commitment-config" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e41a3917076a8b5375809078ae3a6fb76a53e364b596ef8c4265e7f410876f3" +[[package]] +name = "solana-compute-budget-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8432d2c4c22d0499aa06d62e4f7e333f81777b3d7c96050ae9e5cb71a8c3aee4" +dependencies = [ + "borsh 1.6.0", + "serde", + "serde_derive", + "solana-instruction 2.3.3", + "solana-sdk-ids 2.2.1", +] + [[package]] name = "solana-config-interface" version = "2.0.0" @@ -3363,7 +5039,7 @@ checksum = "eae4261b9a8613d10e77ac831a8fa60b6fa52b9b103df46d641deff9f9812a23" dependencies = [ "bytemuck", "bytemuck_derive", - "curve25519-dalek", + "curve25519-dalek 4.1.3", "solana-define-syscall 2.3.0", "subtle", "thiserror 2.0.17", @@ -3377,7 +5053,7 @@ checksum = "a2cb3f53e40375fba75e908295c7723d16dad3fb54384140366fade2c7ef37bb" dependencies = [ "bytemuck", "bytemuck_derive", - "curve25519-dalek", + "curve25519-dalek 4.1.3", "solana-define-syscall 3.0.0", "subtle", "thiserror 2.0.17", @@ -3432,6 +5108,31 @@ dependencies = [ "uriparse", ] +[[package]] +name = "solana-ed25519-program" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "ed25519-dalek", + "solana-feature-set", + "solana-instruction 2.3.3", + "solana-precompile-error", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-epoch-info" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" +dependencies = [ + "serde", + "serde_derive", +] + [[package]] name = "solana-epoch-rewards" version = "2.2.1" @@ -3460,6 +5161,17 @@ dependencies = [ "solana-sysvar-id 3.1.0", ] +[[package]] +name = "solana-epoch-rewards-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" +dependencies = [ + "siphasher", + "solana-hash 2.3.0", + "solana-pubkey 2.4.0", +] + [[package]] name = "solana-epoch-schedule" version = "2.2.1" @@ -3526,6 +5238,20 @@ dependencies = [ "solana-system-interface 1.0.0", ] +[[package]] +name = "solana-feature-set" +version = "2.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93b93971e289d6425f88e6e3cb6668c4b05df78b3c518c249be55ced8efd6b6d" +dependencies = [ + "ahash 0.8.12", + "lazy_static", + "solana-epoch-schedule 2.2.1", + "solana-hash 2.3.0", + "solana-pubkey 2.4.0", + "solana-sha256-hasher 2.3.0", +] + [[package]] name = "solana-fee-calculator" version = "2.2.1" @@ -3548,6 +5274,58 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "solana-fee-structure" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33adf673581c38e810bf618f745bf31b683a0a4a4377682e6aaac5d9a058dd4e" +dependencies = [ + "serde", + "serde_derive", + "solana-message 2.4.0", + "solana-native-token", +] + +[[package]] +name = "solana-genesis-config" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3725085d47b96d37fef07a29d78d2787fc89a0b9004c66eed7753d1e554989f" +dependencies = [ + "bincode", + "chrono", + "memmap2", + "serde", + "serde_derive", + "solana-account 2.2.1", + "solana-clock 2.2.2", + "solana-cluster-type", + "solana-epoch-schedule 2.2.1", + "solana-fee-calculator 2.2.1", + "solana-hash 2.3.0", + "solana-inflation", + "solana-keypair", + "solana-logger", + "solana-poh-config", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sha256-hasher 2.3.0", + "solana-shred-version", + "solana-signer 2.2.1", + "solana-time-utils", +] + +[[package]] +name = "solana-hard-forks" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" +dependencies = [ + "serde", + "serde_derive", +] + [[package]] name = "solana-hash" version = "2.3.0" @@ -3591,6 +5369,16 @@ dependencies = [ "solana-sanitize 3.0.1", ] +[[package]] +name = "solana-inflation" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" +dependencies = [ + "serde", + "serde_derive", +] + [[package]] name = "solana-instruction" version = "2.3.3" @@ -3684,6 +5472,25 @@ dependencies = [ "solana-sanitize 2.2.1", ] +[[package]] +name = "solana-keypair" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd3f04aa1a05c535e93e121a95f66e7dcccf57e007282e8255535d24bf1e98bb" +dependencies = [ + "ed25519-dalek", + "ed25519-dalek-bip32", + "five8 0.2.1", + "rand 0.7.3", + "solana-derivation-path 2.2.1", + "solana-pubkey 2.4.0", + "solana-seed-derivable 2.2.1", + "solana-seed-phrase 2.2.1", + "solana-signature 2.3.0", + "solana-signer 2.2.1", + "wasm-bindgen", +] + [[package]] name = "solana-last-restart-slot" version = "2.2.1" @@ -3783,6 +5590,19 @@ dependencies = [ "solana-system-interface 1.0.0", ] +[[package]] +name = "solana-logger" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8e777ec1afd733939b532a42492d888ec7c88d8b4127a5d867eb45c6eb5cd5" +dependencies = [ + "env_logger", + "lazy_static", + "libc", + "log", + "signal-hook", +] + [[package]] name = "solana-message" version = "2.4.0" @@ -3876,6 +5696,105 @@ dependencies = [ "solana-sha256-hasher 3.1.0", ] +[[package]] +name = "solana-nonce-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" +dependencies = [ + "solana-account 2.2.1", + "solana-hash 2.3.0", + "solana-nonce 2.2.1", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-nostd-keccak" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8ced70920435b1baa58f76e6f84bbc1110ddd1d6161ec76b6d731ae8431e9c4" +dependencies = [ + "sha3", +] + +[[package]] +name = "solana-offchain-message" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" +dependencies = [ + "num_enum", + "solana-hash 2.3.0", + "solana-packet", + "solana-pubkey 2.4.0", + "solana-sanitize 2.2.1", + "solana-sha256-hasher 2.3.0", + "solana-signature 2.3.0", + "solana-signer 2.2.1", +] + +[[package]] +name = "solana-packet" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "004f2d2daf407b3ec1a1ca5ec34b3ccdfd6866dd2d3c7d0715004a96e4b6d127" +dependencies = [ + "bincode", + "bitflags 2.10.0", + "cfg_eval", + "serde", + "serde_derive", + "serde_with", +] + +[[package]] +name = "solana-poh-config" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-precompile-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d87b2c1f5de77dfe2b175ee8dd318d196aaca4d0f66f02842f80c852811f9f8" +dependencies = [ + "num-traits", + "solana-decode-error", +] + +[[package]] +name = "solana-precompiles" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36e92768a57c652edb0f5d1b30a7d0bc64192139c517967c18600debe9ae3832" +dependencies = [ + "lazy_static", + "solana-ed25519-program", + "solana-feature-set", + "solana-message 2.4.0", + "solana-precompile-error", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "solana-presigner" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" +dependencies = [ + "solana-pubkey 2.4.0", + "solana-signature 2.3.0", + "solana-signer 2.2.1", +] + [[package]] name = "solana-program" version = "2.3.0" @@ -4063,12 +5982,13 @@ dependencies = [ "borsh 1.6.0", "bytemuck", "bytemuck_derive", - "curve25519-dalek", + "curve25519-dalek 4.1.3", "five8 0.2.1", "five8_const 0.1.4", "getrandom 0.2.16", "js-sys", "num-traits", + "rand 0.8.5", "serde", "serde_derive", "solana-atomic-u64 2.2.1", @@ -4097,6 +6017,15 @@ dependencies = [ "solana-address 2.0.0", ] +[[package]] +name = "solana-quic-definitions" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf0d4d5b049eb1d0c35f7b18f305a27c8986fc5c0c9b383e97adaa35334379e" +dependencies = [ + "solana-keypair", +] + [[package]] name = "solana-rent" version = "2.2.1" @@ -4123,6 +6052,55 @@ dependencies = [ "solana-sysvar-id 3.1.0", ] +[[package]] +name = "solana-rent-collector" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "127e6dfa51e8c8ae3aa646d8b2672bc4ac901972a338a9e1cd249e030564fb9d" +dependencies = [ + "serde", + "serde_derive", + "solana-account 2.2.1", + "solana-clock 2.2.2", + "solana-epoch-schedule 2.2.1", + "solana-genesis-config", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-rent-debits" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" +dependencies = [ + "solana-pubkey 2.4.0", + "solana-reward-info 2.2.1", +] + +[[package]] +name = "solana-reserved-account-keys" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4b22ea19ca2a3f28af7cd047c914abf833486bf7a7c4a10fc652fff09b385b1" +dependencies = [ + "lazy_static", + "solana-feature-set", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-reward-info" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" +dependencies = [ + "serde", + "serde_derive", +] + [[package]] name = "solana-reward-info" version = "3.0.0" @@ -4133,6 +6111,94 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "solana-rpc-client" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8d3161ac0918178e674c1f7f1bfac40de3e7ed0383bd65747d63113c156eaeb" +dependencies = [ + "async-trait", + "base64 0.22.1", + "bincode", + "bs58", + "futures", + "indicatif", + "log", + "reqwest 0.12.28", + "reqwest-middleware", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account 2.2.1", + "solana-account-decoder-client-types 2.3.13", + "solana-clock 2.2.2", + "solana-commitment-config 2.2.1", + "solana-epoch-info", + "solana-epoch-schedule 2.2.1", + "solana-feature-gate-interface", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-message 2.4.0", + "solana-pubkey 2.4.0", + "solana-rpc-client-api", + "solana-signature 2.3.0", + "solana-transaction 2.2.3", + "solana-transaction-error 2.2.1", + "solana-transaction-status-client-types 2.3.13", + "solana-version", + "solana-vote-interface 2.2.6", + "tokio", +] + +[[package]] +name = "solana-rpc-client-api" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dbc138685c79d88a766a8fd825057a74ea7a21e1dd7f8de275ada899540fff7" +dependencies = [ + "anyhow", + "jsonrpc-core", + "reqwest 0.12.28", + "reqwest-middleware", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder-client-types 2.3.13", + "solana-clock 2.2.2", + "solana-rpc-client-types", + "solana-signer 2.2.1", + "solana-transaction-error 2.2.1", + "solana-transaction-status-client-types 2.3.13", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-rpc-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea428a81729255d895ea47fba9b30fd4dacbfe571a080448121bd0592751676" +dependencies = [ + "base64 0.22.1", + "bs58", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account 2.2.1", + "solana-account-decoder-client-types 2.3.13", + "solana-clock 2.2.2", + "solana-commitment-config 2.2.1", + "solana-fee-calculator 2.2.1", + "solana-inflation", + "solana-pubkey 2.4.0", + "solana-transaction-error 2.2.1", + "solana-transaction-status-client-types 2.3.13", + "solana-version", + "spl-generic-token 1.0.1", + "thiserror 2.0.17", +] + [[package]] name = "solana-sanitize" version = "2.2.1" @@ -4159,6 +6225,77 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "solana-sdk" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc0e4a7635b902791c44b6581bfb82f3ada32c5bc0929a64f39fe4bb384c86a" +dependencies = [ + "bincode", + "bs58", + "getrandom 0.1.16", + "js-sys", + "serde", + "serde_json", + "solana-account 2.2.1", + "solana-bn254", + "solana-client-traits", + "solana-cluster-type", + "solana-commitment-config 2.2.1", + "solana-compute-budget-interface", + "solana-decode-error", + "solana-derivation-path 2.2.1", + "solana-ed25519-program", + "solana-epoch-info", + "solana-epoch-rewards-hasher", + "solana-feature-set", + "solana-fee-structure", + "solana-genesis-config", + "solana-hard-forks", + "solana-inflation", + "solana-instruction 2.3.3", + "solana-keypair", + "solana-message 2.4.0", + "solana-native-token", + "solana-nonce-account", + "solana-offchain-message", + "solana-packet", + "solana-poh-config", + "solana-precompile-error", + "solana-precompiles", + "solana-presigner", + "solana-program", + "solana-program-memory 2.3.1", + "solana-pubkey 2.4.0", + "solana-quic-definitions", + "solana-rent-collector", + "solana-rent-debits", + "solana-reserved-account-keys", + "solana-reward-info 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-secp256k1-program", + "solana-secp256k1-recover", + "solana-secp256r1-program", + "solana-seed-derivable 2.2.1", + "solana-seed-phrase 2.2.1", + "solana-serde", + "solana-serde-varint 2.2.2", + "solana-short-vec 2.2.1", + "solana-shred-version", + "solana-signature 2.3.0", + "solana-signer 2.2.1", + "solana-system-transaction", + "solana-time-utils", + "solana-transaction 2.2.3", + "solana-transaction-context 2.3.13", + "solana-transaction-error 2.2.1", + "solana-validator-exit", + "thiserror 2.0.17", + "wasm-bindgen", +] + [[package]] name = "solana-sdk-ids" version = "2.2.1" @@ -4201,17 +6338,51 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "solana-secp256k1-program" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f19833e4bc21558fe9ec61f239553abe7d05224347b57d65c2218aeeb82d6149" +dependencies = [ + "bincode", + "digest 0.10.7", + "libsecp256k1", + "serde", + "serde_derive", + "sha3", + "solana-feature-set", + "solana-instruction 2.3.3", + "solana-precompile-error", + "solana-sdk-ids 2.2.1", + "solana-signature 2.3.0", +] + [[package]] name = "solana-secp256k1-recover" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" dependencies = [ + "borsh 1.6.0", "libsecp256k1", "solana-define-syscall 2.3.0", "thiserror 2.0.17", ] +[[package]] +name = "solana-secp256r1-program" +version = "2.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce0ae46da3071a900f02d367d99b2f3058fe2e90c5062ac50c4f20cfedad8f0f" +dependencies = [ + "bytemuck", + "openssl", + "solana-feature-set", + "solana-instruction 2.3.3", + "solana-precompile-error", + "solana-sdk-ids 2.2.1", +] + [[package]] name = "solana-security-txt" version = "1.1.2" @@ -4245,7 +6416,7 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36187af2324f079f65a675ec22b31c24919cb4ac22c79472e85d819db9bbbc15" dependencies = [ - "hmac", + "hmac 0.12.1", "pbkdf2", "sha2 0.10.9", ] @@ -4256,11 +6427,20 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc905b200a95f2ea9146e43f2a7181e3aeb55de6bc12afb36462d00a3c7310de" dependencies = [ - "hmac", + "hmac 0.12.1", "pbkdf2", "sha2 0.10.9", ] +[[package]] +name = "solana-serde" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" +dependencies = [ + "serde", +] + [[package]] name = "solana-serde-varint" version = "2.2.2" @@ -4341,13 +6521,29 @@ dependencies = [ "serde_core", ] +[[package]] +name = "solana-shred-version" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" +dependencies = [ + "solana-hard-forks", + "solana-hash 2.3.0", + "solana-sha256-hasher 2.3.0", +] + [[package]] name = "solana-signature" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" dependencies = [ + "ed25519-dalek", "five8 0.2.1", + "rand 0.8.5", + "serde", + "serde-big-array", + "serde_derive", "solana-sanitize 2.2.1", ] @@ -4498,6 +6694,12 @@ dependencies = [ "solana-sysvar-id 3.1.0", ] +[[package]] +name = "solana-svm-feature-set" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f24b836eb4d74ec255217bdbe0f24f64a07adeac31aca61f334f91cd4a3b1d5" + [[package]] name = "solana-svm-feature-set" version = "3.1.4" @@ -4535,6 +6737,21 @@ dependencies = [ "solana-pubkey 3.0.0", ] +[[package]] +name = "solana-system-transaction" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" +dependencies = [ + "solana-hash 2.3.0", + "solana-keypair", + "solana-message 2.4.0", + "solana-pubkey 2.4.0", + "solana-signer 2.2.1", + "solana-system-interface 1.0.0", + "solana-transaction 2.2.3", +] + [[package]] name = "solana-sysvar" version = "2.3.0" @@ -4624,6 +6841,39 @@ dependencies = [ "solana-sdk-ids 3.1.0", ] +[[package]] +name = "solana-time-utils" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" + +[[package]] +name = "solana-transaction" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80657d6088f721148f5d889c828ca60c7daeedac9a8679f9ec215e0c42bcbf41" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-bincode", + "solana-feature-set", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-keypair", + "solana-message 2.4.0", + "solana-precompiles", + "solana-pubkey 2.4.0", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-short-vec 2.2.1", + "solana-signature 2.3.0", + "solana-signer 2.2.1", + "solana-system-interface 1.0.0", + "solana-transaction-error 2.2.1", + "wasm-bindgen", +] + [[package]] name = "solana-transaction" version = "3.0.2" @@ -4644,6 +6894,23 @@ dependencies = [ "solana-transaction-error 3.0.0", ] +[[package]] +name = "solana-transaction-context" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a312304361987a85b2ef2293920558e6612876a639dd1309daf6d0d59ef2fe" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account 2.2.1", + "solana-instruction 2.3.3", + "solana-instructions-sysvar 2.2.2", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", +] + [[package]] name = "solana-transaction-context" version = "3.1.4" @@ -4667,6 +6934,8 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" dependencies = [ + "serde", + "serde_derive", "solana-instruction 2.3.3", "solana-sanitize 2.2.1", ] @@ -4708,24 +6977,47 @@ dependencies = [ "solana-message 3.0.1", "solana-program-option 3.0.0", "solana-pubkey 3.0.0", - "solana-reward-info", + "solana-reward-info 3.0.0", "solana-sdk-ids 3.1.0", "solana-signature 3.1.0", "solana-stake-interface 2.0.2", "solana-system-interface 2.0.0", - "solana-transaction", + "solana-transaction 3.0.2", "solana-transaction-error 3.0.0", - "solana-transaction-status-client-types", + "solana-transaction-status-client-types 3.1.4", "solana-vote-interface 4.0.4", "spl-associated-token-account-interface", "spl-memo-interface", - "spl-token-2022-interface", + "spl-token-2022-interface 2.1.0", "spl-token-group-interface 0.7.1", "spl-token-interface", "spl-token-metadata-interface 0.8.0", "thiserror 2.0.17", ] +[[package]] +name = "solana-transaction-status-client-types" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f1d7c2387c35850848212244d2b225847666cb52d3bd59a5c409d2c300303d" +dependencies = [ + "base64 0.22.1", + "bincode", + "bs58", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder-client-types 2.3.13", + "solana-commitment-config 2.2.1", + "solana-message 2.4.0", + "solana-reward-info 2.2.1", + "solana-signature 2.3.0", + "solana-transaction 2.2.3", + "solana-transaction-context 2.3.13", + "solana-transaction-error 2.2.1", + "thiserror 2.0.17", +] + [[package]] name = "solana-transaction-status-client-types" version = "3.1.4" @@ -4737,19 +7029,40 @@ dependencies = [ "bs58", "serde", "serde_json", - "solana-account-decoder-client-types", - "solana-commitment-config", + "solana-account-decoder-client-types 3.1.4", + "solana-commitment-config 3.1.0", "solana-instruction 3.1.0", "solana-message 3.0.1", "solana-pubkey 3.0.0", - "solana-reward-info", + "solana-reward-info 3.0.0", "solana-signature 3.1.0", - "solana-transaction", - "solana-transaction-context", + "solana-transaction 3.0.2", + "solana-transaction-context 3.1.4", "solana-transaction-error 3.0.0", "thiserror 2.0.17", ] +[[package]] +name = "solana-validator-exit" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" + +[[package]] +name = "solana-version" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3324d46c7f7b7f5d34bf7dc71a2883bdc072c7b28ca81d0b2167ecec4cf8da9f" +dependencies = [ + "agave-feature-set 2.3.13", + "rand 0.8.5", + "semver", + "serde", + "serde_derive", + "solana-sanitize 2.2.1", + "solana-serde-varint 2.2.2", +] + [[package]] name = "solana-vote-interface" version = "2.2.6" @@ -4811,7 +7124,7 @@ dependencies = [ "bincode", "bytemuck", "bytemuck_derive", - "curve25519-dalek", + "curve25519-dalek 4.1.3", "itertools 0.12.1", "js-sys", "merlin", @@ -4847,7 +7160,7 @@ dependencies = [ "bincode", "bytemuck", "bytemuck_derive", - "curve25519-dalek", + "curve25519-dalek 4.1.3", "getrandom 0.2.16", "itertools 0.12.1", "js-sys", @@ -4945,6 +7258,16 @@ dependencies = [ "spl-token-confidential-transfer-proof-extraction 0.2.1", ] +[[package]] +name = "spl-generic-token" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741a62a566d97c58d33f9ed32337ceedd4e35109a686e31b1866c5dfa56abddc" +dependencies = [ + "bytemuck", + "solana-pubkey 2.4.0", +] + [[package]] name = "spl-generic-token" version = "2.0.1" @@ -5108,6 +7431,36 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "spl-token-2022-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62d7ae2ee6b856f8ddcbdc3b3a9f4d2141582bbe150f93e5298ee97e0251fa04" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info 2.3.0", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-program-option 2.2.1", + "solana-program-pack 2.2.1", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-zk-sdk 2.3.13", + "spl-pod 0.5.1", + "spl-token-confidential-transfer-proof-extraction 0.4.1", + "spl-token-confidential-transfer-proof-generation 0.4.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.17", +] + [[package]] name = "spl-token-2022-interface" version = "2.1.0" @@ -5162,6 +7515,26 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512c85bdbbb4cbcc2038849a9e164c958b16541f252b53ea1a3933191c0a4a1a" +dependencies = [ + "bytemuck", + "solana-account-info 2.3.0", + "solana-curve25519 2.3.13", + "solana-instruction 2.3.3", + "solana-instructions-sysvar 2.2.2", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-zk-sdk 2.3.13", + "spl-pod 0.5.1", + "thiserror 2.0.17", +] + [[package]] name = "spl-token-confidential-transfer-proof-extraction" version = "0.5.1" @@ -5188,7 +7561,18 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" dependencies = [ - "curve25519-dalek", + "curve25519-dalek 4.1.3", + "solana-zk-sdk 2.3.13", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" +dependencies = [ + "curve25519-dalek 4.1.3", "solana-zk-sdk 2.3.13", "thiserror 2.0.17", ] @@ -5199,7 +7583,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0cd59fce3dc00f563c6fa364d67c3f200d278eae681f4dc250240afcfe044b1" dependencies = [ - "curve25519-dalek", + "curve25519-dalek 4.1.3", "solana-zk-sdk 4.0.0", "thiserror 2.0.17", ] @@ -5223,6 +7607,25 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "spl-token-group-interface" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "spl-discriminator 0.4.1", + "spl-pod 0.5.1", + "thiserror 2.0.17", +] + [[package]] name = "spl-token-group-interface" version = "0.7.1" @@ -5282,6 +7685,27 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "spl-token-metadata-interface" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" +dependencies = [ + "borsh 1.6.0", + "num-derive", + "num-traits", + "solana-borsh 2.2.1", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "spl-discriminator 0.4.1", + "spl-pod 0.5.1", + "spl-type-length-value 0.8.0", + "thiserror 2.0.17", +] + [[package]] name = "spl-token-metadata-interface" version = "0.8.0" @@ -5344,6 +7768,24 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "spl-type-length-value" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-account-info 2.3.0", + "solana-decode-error", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "spl-discriminator 0.4.1", + "spl-pod 0.5.1", + "thiserror 2.0.17", +] + [[package]] name = "spl-type-length-value" version = "0.9.0" @@ -5373,14 +7815,20 @@ name = "streaming-tokens" version = "0.1.0" dependencies = [ "anyhow", + "blake3", "borsh 0.10.4", "bs58", "dotenvy", "futures", "helius-laserstream", + "light-client", "light-compressed-account", + "light-token-client", "light-token-interface", + "solana-sdk", "tokio", + "tracing", + "tracing-subscriber", ] [[package]] @@ -5428,6 +7876,9 @@ name = "sync_wrapper" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" @@ -5461,6 +7912,12 @@ dependencies = [ "libc", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "tempfile" version = "3.23.0" @@ -5474,6 +7931,15 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -5523,6 +7989,37 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "time" +version = "0.3.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tinystr" version = "0.8.2" @@ -5841,6 +8338,29 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "async-compression", + "bitflags 2.10.0", + "bytes", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "iri-string", + "pin-project-lite", + "tokio", + "tokio-util", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" @@ -5938,6 +8458,18 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "universal-hash" version = "0.5.1" @@ -5999,6 +8531,7 @@ checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" dependencies = [ "getrandom 0.3.4", "js-sys", + "serde_core", "wasm-bindgen", ] @@ -6124,12 +8657,62 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "webpki-roots" version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +[[package]] +name = "webpki-roots" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + [[package]] name = "windows-core" version = "0.62.2" @@ -6171,6 +8754,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + [[package]] name = "windows-result" version = "0.4.1" @@ -6207,6 +8801,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.60.2" @@ -6442,6 +9045,15 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "yoke" version = "0.8.1" diff --git a/toolkits/streaming-tokens/Cargo.toml b/toolkits/streaming-tokens/Cargo.toml index 70e2071..e35a3a9 100644 --- a/toolkits/streaming-tokens/Cargo.toml +++ b/toolkits/streaming-tokens/Cargo.toml @@ -2,6 +2,7 @@ name = "streaming-tokens" version = "0.1.0" edition = "2021" +default-run = "streaming-tokens" [dependencies] helius-laserstream = "0.1" @@ -11,6 +12,22 @@ anyhow = "1" dotenvy = "0.15" bs58 = "0.5" borsh = "0.10" +tracing = "0.1" +tracing-subscriber = "0.3" light-token-interface = "0.3.0" light-compressed-account = { version = "0.9.0", features = ["std"] } +light-token-client = "0.1.0" +light-client = { version = "0.19.0", features = ["v2"] } +solana-sdk = "2" + +# Pin blake3 to avoid constant_time_eq edition2024 issue +blake3 = "=1.5.5" + +[[bin]] +name = "streaming-tokens" +path = "src/main.rs" + +[[bin]] +name = "create-mint" +path = "test-tokens/create_mint.rs" diff --git a/toolkits/streaming-tokens/src/main.rs b/toolkits/streaming-tokens/src/main.rs index 37509b1..b37aebc 100644 --- a/toolkits/streaming-tokens/src/main.rs +++ b/toolkits/streaming-tokens/src/main.rs @@ -1,51 +1,51 @@ use borsh::BorshDeserialize; use futures::StreamExt; use helius_laserstream::grpc::subscribe_request_filter_accounts_filter::Filter; -use helius_laserstream::grpc::subscribe_request_filter_accounts_filter_memcmp::Data; use helius_laserstream::grpc::{ SubscribeRequestFilterAccounts, SubscribeRequestFilterAccountsFilter, - SubscribeRequestFilterAccountsFilterMemcmp, }; use helius_laserstream::{subscribe, LaserstreamConfig}; -use light_token_interface::state::{ExtensionStruct, Mint}; +use light_token_interface::state::Token; const LIGHT_TOKEN_PROGRAM_ID: &str = "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m"; -/// Byte offset of account_type in the Mint account data. -/// BaseMint (82) + MintMetadata (67) + reserved (16) = 165 -const ACCOUNT_TYPE_OFFSET: u64 = 165; +/// Base SPL Token Account size (without extensions). +/// Light ATAs without extensions are exactly 165 bytes. +const TOKEN_ACCOUNT_SIZE: u64 = 165; #[tokio::main] async fn main() -> anyhow::Result<()> { + tracing_subscriber::fmt() + .with_max_level(tracing::Level::WARN) + .init(); + dotenvy::dotenv().ok(); - let api_key = std::env::var("API_KEY")?; + let api_key = std::env::var("LASERSTREAM_API_KEY")?; let endpoint = "https://laserstream-devnet-ewr.helius-rpc.com".to_string(); let config = LaserstreamConfig::new(endpoint, api_key); - let request = helius_laserstream::grpc::SubscribeRequest { - accounts: [( - "light_mints".to_string(), - SubscribeRequestFilterAccounts { - owner: vec![LIGHT_TOKEN_PROGRAM_ID.to_string()], - filters: vec![SubscribeRequestFilterAccountsFilter { - filter: Some(Filter::Memcmp(SubscribeRequestFilterAccountsFilterMemcmp { - offset: ACCOUNT_TYPE_OFFSET, - data: Some(Data::Bytes(vec![1])), // account_type = Mint - })), - }], - ..Default::default() - }, - )] - .into(), - ..Default::default() - }; + let mut request = helius_laserstream::grpc::SubscribeRequest::default(); + + // Subscribe to Token (ATA) accounts: 165-byte accounts owned by Light Token Program. + // ATAs without extensions are exactly 165 bytes (the base SPL Token Account layout). + request.accounts.insert( + "light_atas".to_string(), + SubscribeRequestFilterAccounts { + owner: vec![LIGHT_TOKEN_PROGRAM_ID.to_string()], + filters: vec![SubscribeRequestFilterAccountsFilter { + filter: Some(Filter::Datasize(TOKEN_ACCOUNT_SIZE)), + }], + nonempty_txn_signature: Some(true), + ..Default::default() + }, + ); let (stream, _handle) = subscribe(config, request); tokio::pin!(stream); - println!("Listening for light-mint accounts (devnet)...\n"); + println!("Listening for light-token ATA accounts (devnet)...\n"); while let Some(update) = stream.next().await { match update { @@ -56,32 +56,39 @@ async fn main() -> anyhow::Result<()> { { if let Some(account_info) = account_update.account { let pubkey = bs58::encode(&account_info.pubkey).into_string(); + let tx_sig = account_info + .txn_signature + .as_ref() + .map(|s| bs58::encode(s).into_string()) + .unwrap_or_default(); + + match Token::deserialize(&mut account_info.data.as_slice()) { + Ok(token) => { + let mint = bs58::encode(token.mint.to_bytes()).into_string(); + let owner = bs58::encode(token.owner.to_bytes()).into_string(); + + println!("ATA: {}", pubkey); + println!(" tx: {}", tx_sig); + println!(" mint: {}", mint); + println!(" owner: {}", owner); + println!(" amount: {}", token.amount); + println!(" state: {:?}", token.state); - match Mint::deserialize(&mut account_info.data.as_slice()) { - Ok(mint) => { - println!("Mint: {}", pubkey); - println!(" decimals: {}", mint.base.decimals); - println!(" supply: {}", mint.base.supply); - - if let Some(extensions) = &mint.extensions { - for ext in extensions { - if let ExtensionStruct::TokenMetadata(meta) = ext { - let name = - String::from_utf8_lossy(&meta.name).to_string(); - let symbol = - String::from_utf8_lossy(&meta.symbol).to_string(); - let uri = - String::from_utf8_lossy(&meta.uri).to_string(); - println!(" name: {}", name); - println!(" symbol: {}", symbol); - println!(" uri: {}", uri); - } - } + if let Some(delegate) = &token.delegate { + let del = bs58::encode(delegate.to_bytes()).into_string(); + println!(" delegate: {}", del); + println!(" delegated_amount: {}", token.delegated_amount); } + + if let Some(close_auth) = &token.close_authority { + let ca = bs58::encode(close_auth.to_bytes()).into_string(); + println!(" close_authority: {}", ca); + } + println!(); } Err(e) => { - eprintln!("Failed to deserialize mint {}: {}", pubkey, e); + eprintln!("Failed to deserialize token account {}: {}", pubkey, e); } } } diff --git a/toolkits/streaming-tokens/test-tokens/create-ata.ts b/toolkits/streaming-tokens/test-tokens/create-ata.ts new file mode 100644 index 0000000..6b9798a --- /dev/null +++ b/toolkits/streaming-tokens/test-tokens/create-ata.ts @@ -0,0 +1,48 @@ +import dotenv from "dotenv"; +dotenv.config({ path: new URL("../.env", import.meta.url) }); +import { Keypair } from "@solana/web3.js"; +import { createRpc, confirmTx } from "@lightprotocol/stateless.js"; +import { + createMintInterface, + createAtaInterface, + createTokenMetadata, +} from "@lightprotocol/compressed-token"; +import { homedir } from "os"; +import { readFileSync } from "fs"; + +const RPC_URL = `https://devnet.helius-rpc.com?api-key=${process.env.API_KEY!}`; +const payer = Keypair.fromSecretKey( + new Uint8Array( + JSON.parse(readFileSync(`${homedir()}/.config/solana/id.json`, "utf8")) + ) +); + +(async function () { + const rpc = createRpc(RPC_URL); + + // Airdrop if needed + const balance = await rpc.getBalance(payer.publicKey); + if (balance.value < 1_000_000_000) { + const sig = await rpc.requestAirdrop(payer.publicKey, 2_000_000_000); + await confirmTx(rpc, sig); + } + + // Create a mint first + const { mint, transactionSignature: mintTx } = await createMintInterface( + rpc, + payer, + payer, + null, + 9, + undefined, + undefined, + undefined, + createTokenMetadata("ATATest", "ATAT", "https://example.com/metadata.json") + ); + console.log("Mint:", mint.toBase58()); + console.log("Mint tx:", mintTx); + + // Create an ATA for the payer + const ata = await createAtaInterface(rpc, payer, mint, payer.publicKey); + console.log("ATA:", ata.toBase58()); +})(); diff --git a/toolkits/streaming-tokens/test-tokens/create-mint.ts b/toolkits/streaming-tokens/test-tokens/create-mint.ts index 374f725..e0a0522 100644 --- a/toolkits/streaming-tokens/test-tokens/create-mint.ts +++ b/toolkits/streaming-tokens/test-tokens/create-mint.ts @@ -1,7 +1,5 @@ -import { config } from "dotenv"; -import { dirname, resolve } from "path"; -import { fileURLToPath } from "url"; -config({ path: resolve(dirname(fileURLToPath(import.meta.url)), "../.env") }); +import dotenv from "dotenv"; +dotenv.config({ path: new URL("../.env", import.meta.url) }); import { Keypair } from "@solana/web3.js"; import { createRpc, confirmTx } from "@lightprotocol/stateless.js"; import { createMintInterface, createTokenMetadata } from "@lightprotocol/compressed-token"; diff --git a/toolkits/streaming-tokens/test-tokens/create_mint.rs b/toolkits/streaming-tokens/test-tokens/create_mint.rs new file mode 100644 index 0000000..a5801ff --- /dev/null +++ b/toolkits/streaming-tokens/test-tokens/create_mint.rs @@ -0,0 +1,55 @@ +use light_client::rpc::{LightClient, LightClientConfig, Rpc}; +use light_compressed_account::TreeType; +use light_token_client::actions::{CreateMint, TokenMetadata}; +use solana_sdk::signature::read_keypair_file; +use solana_sdk::signer::Signer; + +#[tokio::main] +async fn main() -> Result<(), Box> { + dotenvy::dotenv().ok(); + + let api_key = std::env::var("API_KEY")?; + let rpc_url = format!("https://devnet.helius-rpc.com?api-key={api_key}"); + let photon_url = "https://devnet.helius-rpc.com".to_string(); + + let config = LightClientConfig::new( + rpc_url, + Some(photon_url), + Some(api_key), + ); + + let mut rpc = LightClient::new_with_retry(config, None).await?; + + // Workaround: light-client 0.19.0 tags all devnet trees as StateV1, + // but with the v2 feature get_random_state_tree_info filters for StateV2. + // Re-tag fetched trees so the v2 filter finds them. + for tree in &mut rpc.state_merkle_trees { + tree.tree_type = TreeType::StateV2; + } + + let home = std::env::var("HOME").expect("HOME not set"); + let payer = read_keypair_file(format!("{home}/.config/solana/id.json")) + .expect("Failed to read payer keypair"); + + rpc.payer = payer.insecure_clone(); + + let (signature, mint) = CreateMint { + decimals: 9, + freeze_authority: None, + token_metadata: Some(TokenMetadata { + name: "StreamTest".to_string(), + symbol: "STR".to_string(), + uri: "https://example.com/metadata.json".to_string(), + update_authority: Some(payer.pubkey()), + additional_metadata: None, + }), + seed: None, + } + .execute(&mut rpc, &payer, &payer) + .await?; + + let data = rpc.get_account(mint).await?; + println!("Mint: {mint} exists: {} Tx: {signature}", data.is_some()); + + Ok(()) +} From 7b61402215dbee45282aa0ad17fef3113094f9c3 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Sun, 1 Feb 2026 18:40:18 +0000 Subject: [PATCH 22/23] fix streaming tokens --- toolkits/streaming-tokens/Cargo.toml | 4 - toolkits/streaming-tokens/README.mdx | 153 +++-------- toolkits/streaming-tokens/src/main.rs | 250 +++++++++++++++--- .../test-tokens/create-ata.ts | 6 +- .../test-tokens/create-mint.ts | 6 +- .../test-tokens/create_mint.rs | 55 ---- 6 files changed, 257 insertions(+), 217 deletions(-) delete mode 100644 toolkits/streaming-tokens/test-tokens/create_mint.rs diff --git a/toolkits/streaming-tokens/Cargo.toml b/toolkits/streaming-tokens/Cargo.toml index e35a3a9..25e3edb 100644 --- a/toolkits/streaming-tokens/Cargo.toml +++ b/toolkits/streaming-tokens/Cargo.toml @@ -27,7 +27,3 @@ blake3 = "=1.5.5" [[bin]] name = "streaming-tokens" path = "src/main.rs" - -[[bin]] -name = "create-mint" -path = "test-tokens/create_mint.rs" diff --git a/toolkits/streaming-tokens/README.mdx b/toolkits/streaming-tokens/README.mdx index f9672ca..962c7cd 100644 --- a/toolkits/streaming-tokens/README.mdx +++ b/toolkits/streaming-tokens/README.mdx @@ -1,113 +1,24 @@ -# Streaming light-mint accounts +# Streaming light-token accounts -Light mints are Solana accounts (CMint PDAs) owned by the Light Token Program. Subscribe to account updates to detect new mints and metadata changes. +Light mints and ATAs are Solana accounts owned by the Light Token Program. Subscribe to account updates and transactions to detect new mints, token transfers, and balance changes in real time. -- New mints -- New mints with TokenMetadata -- Mint updates -- TokenMetadata updates +See [`src/main.rs`](src/main.rs) for the full working example. -```rust -use borsh::BorshDeserialize; -use futures::StreamExt; -use helius_laserstream::grpc::subscribe_request_filter_accounts_filter::Filter; -use helius_laserstream::grpc::subscribe_request_filter_accounts_filter_memcmp::Data; -use helius_laserstream::grpc::{ - SubscribeRequestFilterAccounts, SubscribeRequestFilterAccountsFilter, - SubscribeRequestFilterAccountsFilterMemcmp, -}; -use helius_laserstream::{subscribe, LaserstreamConfig}; -use light_token_interface::state::{ExtensionStruct, Mint}; - -const LIGHT_TOKEN_PROGRAM_ID: &str = "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m"; - -/// Byte offset of account_type in the Mint account data. -/// BaseMint (82) + MintMetadata (67) + reserved (16) = 165 -const ACCOUNT_TYPE_OFFSET: u64 = 165; - -#[tokio::main] -async fn main() -> anyhow::Result<()> { - dotenvy::dotenv().ok(); - - let api_key = std::env::var("API_KEY")?; - let endpoint = "https://laserstream-mainnet-ewr.helius-rpc.com".to_string(); - - let config = LaserstreamConfig::new(endpoint, api_key); - - // Subscribe to Solana accounts owned by the Light Token Program - // with account_type = 1 (Mint) at byte offset 165 - let request = helius_laserstream::grpc::SubscribeRequest { - accounts: [( - "light_mints".to_string(), - SubscribeRequestFilterAccounts { - owner: vec![LIGHT_TOKEN_PROGRAM_ID.to_string()], - filters: vec![SubscribeRequestFilterAccountsFilter { - filter: Some(Filter::Memcmp(SubscribeRequestFilterAccountsFilterMemcmp { - offset: ACCOUNT_TYPE_OFFSET, - data: Some(Data::Bytes(vec![1])), - })), - }], - ..Default::default() - }, - )] - .into(), - ..Default::default() - }; - - let (stream, _handle) = subscribe(config, request); - tokio::pin!(stream); - - while let Some(update) = stream.next().await { - match update { - Ok(msg) => { - if let Some(helius_laserstream::grpc::subscribe_update::UpdateOneof::Account( - account_update, - )) = msg.update_oneof - { - if let Some(account_info) = account_update.account { - let pubkey = bs58::encode(&account_info.pubkey).into_string(); - - match Mint::deserialize(&mut account_info.data.as_slice()) { - Ok(mint) => { - println!("Mint: {}", pubkey); - println!(" decimals: {}", mint.base.decimals); - println!(" supply: {}", mint.base.supply); - - if let Some(extensions) = &mint.extensions { - for ext in extensions { - if let ExtensionStruct::TokenMetadata(meta) = ext { - let name = - String::from_utf8_lossy(&meta.name).to_string(); - let symbol = - String::from_utf8_lossy(&meta.symbol).to_string(); - let uri = - String::from_utf8_lossy(&meta.uri).to_string(); - println!(" name: {}", name); - println!(" symbol: {}", symbol); - println!(" uri: {}", uri); - } - } - } - println!(); - } - Err(e) => { - eprintln!("Failed to deserialize mint {}: {}", pubkey, e); - } - } - } - } - } - Err(e) => { - eprintln!("Stream error: {:?}", e); - } - } - } - - Ok(()) -} -``` +## Subscriptions + +- **Mint accounts** — new mints, supply changes, TokenMetadata updates (memcmp filter on `account_type` at byte offset 165) +- **ATA accounts** — balance changes, delegate approvals/revocations, state transitions (datasize filter, 165 bytes) +- **Transactions** — mint creation detection via MintAction instruction (discriminator `103`) + +## Constants -# Layouts +| Constant | Value | Description | +| -------- | ----- | ----------- | +| `TOKEN_ACCOUNT_SIZE` | `165` | Base SPL Token Account size. Light ATAs without extensions are exactly 165 bytes. | +| `ACCOUNT_TYPE_OFFSET` | `165` | Byte offset of `account_type` in a Mint account. BaseMint (82) + MintMetadata (67) + reserved (16). | +| `MINT_ACTION_DISCRIMINATOR` | `103` | MintAction instruction discriminator in the Light Token Program. | + +## Layouts ### Mint @@ -145,6 +56,26 @@ pub struct MintMetadata { } ``` +### Token (ATA) + +Light ATAs follow the standard SPL Token Account layout (165 bytes): + +```rust +#[repr(C)] +pub struct Token { + pub mint: Pubkey, + pub owner: Pubkey, + pub amount: u64, + pub delegate: Option, + pub state: AccountState, + pub is_native: Option, + pub delegated_amount: u64, + pub close_authority: Option, + pub account_type: u8, + pub extensions: Option>, +} +``` + ### TokenMetadata ```rust @@ -164,12 +95,10 @@ pub struct AdditionalMetadata { } ``` -# Indexing Markets - -cToken accounts follow the same layout as SPL-token accounts, so you can reuse your existing parsers. +## Indexing markets -They include an extra compressible extension, which can be safely ignored. +light-token accounts follow the same layout as SPL Token Accounts, so you can reuse your existing parsers. -When a market becomes inactive, its token accounts and related PDAs will be **compressed** — their state is committed and effectively frozen until a client decompresses it. While compressed, pure on-chain lookups will return uninitialized. +When a market becomes inactive, its light-token accounts and related PDAs will be **compressed** — their state is committed and effectively frozen until a client decompresses it. While compressed, pure on-chain lookups will return uninitialized. -Your indexer should be able to keep tracking, quoting, and routing markets even if the on-chain account `is_initialized: false`, `is_compressed: true`. To trade a cold market, the first client to trade must prepend an idempotent decompress "warm up" instruction. +Your indexer should be able to keep tracking, quoting, and routing markets even if the on-chain account `is_initialized: false`, `is_compressed: true`. To trade a cold market, the first client to trade must prepend an idempotent decompress "warm up" instruction. \ No newline at end of file diff --git a/toolkits/streaming-tokens/src/main.rs b/toolkits/streaming-tokens/src/main.rs index b37aebc..5e96ecf 100644 --- a/toolkits/streaming-tokens/src/main.rs +++ b/toolkits/streaming-tokens/src/main.rs @@ -1,11 +1,16 @@ use borsh::BorshDeserialize; use futures::StreamExt; use helius_laserstream::grpc::subscribe_request_filter_accounts_filter::Filter; +use helius_laserstream::grpc::subscribe_request_filter_accounts_filter_memcmp::Data; use helius_laserstream::grpc::{ - SubscribeRequestFilterAccounts, SubscribeRequestFilterAccountsFilter, + subscribe_update::UpdateOneof, SubscribeRequestFilterAccounts, + SubscribeRequestFilterAccountsFilter, SubscribeRequestFilterAccountsFilterMemcmp, + SubscribeRequestFilterTransactions, SubscribeUpdateTransactionInfo, }; use helius_laserstream::{subscribe, LaserstreamConfig}; -use light_token_interface::state::Token; +use light_token_interface::instructions::extensions::ExtensionInstructionData; +use light_token_interface::instructions::mint_action::MintActionCompressedInstructionData; +use light_token_interface::state::{ExtensionStruct, Mint, Token}; const LIGHT_TOKEN_PROGRAM_ID: &str = "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m"; @@ -13,6 +18,13 @@ const LIGHT_TOKEN_PROGRAM_ID: &str = "cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3 /// Light ATAs without extensions are exactly 165 bytes. const TOKEN_ACCOUNT_SIZE: u64 = 165; +/// Byte offset of `account_type` in a Mint account. +/// BaseMint (82) + MintMetadata (67) + reserved (16) = 165. +const ACCOUNT_TYPE_OFFSET: u64 = 165; + +/// MintAction instruction discriminator in the Light Token Program. +const MINT_ACTION_DISCRIMINATOR: u8 = 103; + #[tokio::main] async fn main() -> anyhow::Result<()> { tracing_subscriber::fmt() @@ -42,56 +54,69 @@ async fn main() -> anyhow::Result<()> { }, ); + // Subscribe to Mint accounts: account_type == 1 at byte offset 165. + // Mint accounts are variable-sized (extensions), so use memcmp instead of datasize. + request.accounts.insert( + "light_mints".to_string(), + SubscribeRequestFilterAccounts { + owner: vec![LIGHT_TOKEN_PROGRAM_ID.to_string()], + filters: vec![SubscribeRequestFilterAccountsFilter { + filter: Some(Filter::Memcmp(SubscribeRequestFilterAccountsFilterMemcmp { + offset: ACCOUNT_TYPE_OFFSET, + data: Some(Data::Bytes(vec![1])), + })), + }], + nonempty_txn_signature: Some(true), + ..Default::default() + }, + ); + + // Subscribe to transactions involving the Light Token Program. + // Catches light mint creation (MintAction, discriminator 103). + request.transactions.insert( + "light_mint_txns".to_string(), + SubscribeRequestFilterTransactions { + vote: Some(false), + failed: Some(false), + account_include: vec![LIGHT_TOKEN_PROGRAM_ID.to_string()], + ..Default::default() + }, + ); + let (stream, _handle) = subscribe(config, request); tokio::pin!(stream); - println!("Listening for light-token ATA accounts (devnet)...\n"); + println!("Listening for light-token accounts (devnet)...\n"); while let Some(update) = stream.next().await { match update { Ok(msg) => { - if let Some(helius_laserstream::grpc::subscribe_update::UpdateOneof::Account( - account_update, - )) = msg.update_oneof - { - if let Some(account_info) = account_update.account { - let pubkey = bs58::encode(&account_info.pubkey).into_string(); - let tx_sig = account_info - .txn_signature - .as_ref() - .map(|s| bs58::encode(s).into_string()) - .unwrap_or_default(); - - match Token::deserialize(&mut account_info.data.as_slice()) { - Ok(token) => { - let mint = bs58::encode(token.mint.to_bytes()).into_string(); - let owner = bs58::encode(token.owner.to_bytes()).into_string(); - - println!("ATA: {}", pubkey); - println!(" tx: {}", tx_sig); - println!(" mint: {}", mint); - println!(" owner: {}", owner); - println!(" amount: {}", token.amount); - println!(" state: {:?}", token.state); - - if let Some(delegate) = &token.delegate { - let del = bs58::encode(delegate.to_bytes()).into_string(); - println!(" delegate: {}", del); - println!(" delegated_amount: {}", token.delegated_amount); - } - - if let Some(close_auth) = &token.close_authority { - let ca = bs58::encode(close_auth.to_bytes()).into_string(); - println!(" close_authority: {}", ca); - } - - println!(); - } - Err(e) => { - eprintln!("Failed to deserialize token account {}: {}", pubkey, e); + let filters = msg.filters.clone(); + let is_mint = filters.iter().any(|f| f == "light_mints"); + + match msg.update_oneof { + Some(UpdateOneof::Transaction(tx_update)) => { + if let Some(tx_info) = tx_update.transaction { + handle_transaction(&tx_info); + } + } + Some(UpdateOneof::Account(account_update)) => { + if let Some(account_info) = account_update.account { + let pubkey = bs58::encode(&account_info.pubkey).into_string(); + let tx_sig = account_info + .txn_signature + .as_ref() + .map(|s| bs58::encode(s).into_string()) + .unwrap_or_default(); + + if is_mint { + print_mint(&pubkey, &tx_sig, &account_info.data); + } else { + print_token(&pubkey, &tx_sig, &account_info.data); } } } + _ => {} } } Err(e) => { @@ -102,3 +127,144 @@ async fn main() -> anyhow::Result<()> { Ok(()) } + +/// Scans transaction instructions for MintAction (discriminator 103) and prints +/// light mint creation details. +fn handle_transaction(tx_info: &SubscribeUpdateTransactionInfo) { + let sig = bs58::encode(&tx_info.signature).into_string(); + + let Some(tx) = &tx_info.transaction else { + return; + }; + let Some(msg) = &tx.message else { + return; + }; + + let program_id_bytes = bs58::decode(LIGHT_TOKEN_PROGRAM_ID) + .into_vec() + .unwrap(); + + for ix in &msg.instructions { + let prog_key = &msg.account_keys[ix.program_id_index as usize]; + if prog_key != &program_id_bytes { + continue; + } + if ix.data.first() != Some(&MINT_ACTION_DISCRIMINATOR) { + continue; + } + + match MintActionCompressedInstructionData::deserialize(&mut &ix.data[1..]) { + Ok(mint_ix) if mint_ix.create_mint.is_some() => { + println!("light-token mint created"); + println!(" tx: {}", sig); + + if let Some(mint_data) = &mint_ix.mint { + println!(" decimals: {}", mint_data.decimals); + println!(" supply: {}", mint_data.supply); + + if let Some(auth) = &mint_data.mint_authority { + println!( + " mint_authority: {}", + bs58::encode(auth.to_bytes()).into_string() + ); + } + if let Some(auth) = &mint_data.freeze_authority { + println!( + " freeze_authority: {}", + bs58::encode(auth.to_bytes()).into_string() + ); + } + + if let Some(exts) = &mint_data.extensions { + for ext in exts { + if let ExtensionInstructionData::TokenMetadata(meta) = ext { + println!(" name: {}", String::from_utf8_lossy(&meta.name)); + println!(" symbol: {}", String::from_utf8_lossy(&meta.symbol)); + println!(" uri: {}", String::from_utf8_lossy(&meta.uri)); + } + } + } + } + println!(); + } + Ok(_) => {} + Err(e) => { + eprintln!("Failed to parse MintAction ix: {}", e); + } + } + } +} + +/// Deserializes and prints a Mint account. +fn print_mint(pubkey: &str, tx_sig: &str, data: &[u8]) { + match Mint::deserialize(&mut &*data) { + Ok(mint) => { + println!("Mint: {}", pubkey); + println!(" tx: {}", tx_sig); + println!(" decimals: {}", mint.base.decimals); + println!(" supply: {}", mint.base.supply); + + if let Some(authority) = &mint.base.mint_authority { + println!( + " mint_authority: {}", + bs58::encode(authority.to_bytes()).into_string() + ); + } + + if let Some(authority) = &mint.base.freeze_authority { + println!( + " freeze_authority: {}", + bs58::encode(authority.to_bytes()).into_string() + ); + } + + if let Some(extensions) = &mint.extensions { + for ext in extensions { + if let ExtensionStruct::TokenMetadata(meta) = ext { + println!(" name: {}", String::from_utf8_lossy(&meta.name)); + println!(" symbol: {}", String::from_utf8_lossy(&meta.symbol)); + println!(" uri: {}", String::from_utf8_lossy(&meta.uri)); + } + } + } + + println!(); + } + Err(e) => { + eprintln!("Failed to deserialize mint {}: {}", pubkey, e); + } + } +} + +/// Deserializes and prints a Token (ATA) account. +fn print_token(pubkey: &str, tx_sig: &str, data: &[u8]) { + match Token::deserialize(&mut &*data) { + Ok(token) => { + let mint = bs58::encode(token.mint.to_bytes()).into_string(); + let owner = bs58::encode(token.owner.to_bytes()).into_string(); + + println!("ATA: {}", pubkey); + println!(" tx: {}", tx_sig); + println!(" mint: {}", mint); + println!(" owner: {}", owner); + println!(" amount: {}", token.amount); + println!(" state: {:?}", token.state); + + if let Some(delegate) = &token.delegate { + let del = bs58::encode(delegate.to_bytes()).into_string(); + println!(" delegate: {}", del); + println!(" delegated_amount: {}", token.delegated_amount); + } + + if let Some(close_auth) = &token.close_authority { + let ca = bs58::encode(close_auth.to_bytes()).into_string(); + println!(" close_authority: {}", ca); + } + + println!(); + } + Err(e) => { + eprintln!("Failed to deserialize ATA {}: {}", pubkey, e); + } + } +} diff --git a/toolkits/streaming-tokens/test-tokens/create-ata.ts b/toolkits/streaming-tokens/test-tokens/create-ata.ts index 6b9798a..4a22d87 100644 --- a/toolkits/streaming-tokens/test-tokens/create-ata.ts +++ b/toolkits/streaming-tokens/test-tokens/create-ata.ts @@ -1,5 +1,7 @@ import dotenv from "dotenv"; -dotenv.config({ path: new URL("../.env", import.meta.url) }); +import { dirname, resolve } from "path"; +import { fileURLToPath } from "url"; +dotenv.config({ path: resolve(dirname(fileURLToPath(import.meta.url)), "../.env") }); import { Keypair } from "@solana/web3.js"; import { createRpc, confirmTx } from "@lightprotocol/stateless.js"; import { @@ -22,7 +24,7 @@ const payer = Keypair.fromSecretKey( // Airdrop if needed const balance = await rpc.getBalance(payer.publicKey); - if (balance.value < 1_000_000_000) { + if (balance < 1_000_000_000) { const sig = await rpc.requestAirdrop(payer.publicKey, 2_000_000_000); await confirmTx(rpc, sig); } diff --git a/toolkits/streaming-tokens/test-tokens/create-mint.ts b/toolkits/streaming-tokens/test-tokens/create-mint.ts index e0a0522..3fcacf7 100644 --- a/toolkits/streaming-tokens/test-tokens/create-mint.ts +++ b/toolkits/streaming-tokens/test-tokens/create-mint.ts @@ -1,5 +1,7 @@ import dotenv from "dotenv"; -dotenv.config({ path: new URL("../.env", import.meta.url) }); +import { dirname, resolve } from "path"; +import { fileURLToPath } from "url"; +dotenv.config({ path: resolve(dirname(fileURLToPath(import.meta.url)), "../.env") }); import { Keypair } from "@solana/web3.js"; import { createRpc, confirmTx } from "@lightprotocol/stateless.js"; import { createMintInterface, createTokenMetadata } from "@lightprotocol/compressed-token"; @@ -18,7 +20,7 @@ const payer = Keypair.fromSecretKey( // Airdrop if needed const balance = await rpc.getBalance(payer.publicKey); - if (balance.value < 1_000_000_000) { + if (balance < 1_000_000_000) { const sig = await rpc.requestAirdrop(payer.publicKey, 2_000_000_000); await confirmTx(rpc, sig); } diff --git a/toolkits/streaming-tokens/test-tokens/create_mint.rs b/toolkits/streaming-tokens/test-tokens/create_mint.rs deleted file mode 100644 index a5801ff..0000000 --- a/toolkits/streaming-tokens/test-tokens/create_mint.rs +++ /dev/null @@ -1,55 +0,0 @@ -use light_client::rpc::{LightClient, LightClientConfig, Rpc}; -use light_compressed_account::TreeType; -use light_token_client::actions::{CreateMint, TokenMetadata}; -use solana_sdk::signature::read_keypair_file; -use solana_sdk::signer::Signer; - -#[tokio::main] -async fn main() -> Result<(), Box> { - dotenvy::dotenv().ok(); - - let api_key = std::env::var("API_KEY")?; - let rpc_url = format!("https://devnet.helius-rpc.com?api-key={api_key}"); - let photon_url = "https://devnet.helius-rpc.com".to_string(); - - let config = LightClientConfig::new( - rpc_url, - Some(photon_url), - Some(api_key), - ); - - let mut rpc = LightClient::new_with_retry(config, None).await?; - - // Workaround: light-client 0.19.0 tags all devnet trees as StateV1, - // but with the v2 feature get_random_state_tree_info filters for StateV2. - // Re-tag fetched trees so the v2 filter finds them. - for tree in &mut rpc.state_merkle_trees { - tree.tree_type = TreeType::StateV2; - } - - let home = std::env::var("HOME").expect("HOME not set"); - let payer = read_keypair_file(format!("{home}/.config/solana/id.json")) - .expect("Failed to read payer keypair"); - - rpc.payer = payer.insecure_clone(); - - let (signature, mint) = CreateMint { - decimals: 9, - freeze_authority: None, - token_metadata: Some(TokenMetadata { - name: "StreamTest".to_string(), - symbol: "STR".to_string(), - uri: "https://example.com/metadata.json".to_string(), - update_authority: Some(payer.pubkey()), - additional_metadata: None, - }), - seed: None, - } - .execute(&mut rpc, &payer, &payer) - .await?; - - let data = rpc.get_account(mint).await?; - println!("Mint: {mint} exists: {} Tx: {signature}", data.is_some()); - - Ok(()) -} From cbf15068bfc435e76058fc814bcd44804ef44897 Mon Sep 17 00:00:00 2001 From: tilo-14 Date: Sun, 1 Feb 2026 18:44:51 +0000 Subject: [PATCH 23/23] remove program-examples from streaming-tokens branch Belongs in a separate PR. --- program-examples/anchor/.gitignore | 22 - program-examples/anchor/README.md | 47 - .../anchor/programs-sdk/Anchor.toml | 30 - .../anchor/programs-sdk/Cargo.lock | 8973 ----------------- .../anchor/programs-sdk/Cargo.toml | 43 - .../anchor/programs-sdk/README.md | 33 - .../anchor/programs-sdk/approve/Cargo.toml | 32 - .../anchor/programs-sdk/approve/src/lib.rs | 36 - .../anchor/programs-sdk/approve/tests/test.rs | 44 - .../anchor/programs-sdk/burn/Cargo.toml | 33 - .../anchor/programs-sdk/burn/src/lib.rs | 39 - .../anchor/programs-sdk/burn/tests/test.rs | 41 - .../anchor/programs-sdk/close/Cargo.toml | 32 - .../anchor/programs-sdk/close/src/lib.rs | 39 - .../anchor/programs-sdk/close/tests/test.rs | 39 - .../anchor/programs-sdk/create-ata/Cargo.toml | 31 - .../anchor/programs-sdk/create-ata/src/lib.rs | 58 - .../programs-sdk/create-ata/tests/test.rs | 107 - .../programs-sdk/create-mint/Cargo.toml | 31 - .../programs-sdk/create-mint/src/lib.rs | 126 - .../programs-sdk/create-mint/tests/test.rs | 96 - .../create-token-account/Cargo.toml | 31 - .../create-token-account/src/lib.rs | 47 - .../create-token-account/tests/test.rs | 106 - .../anchor/programs-sdk/freeze/Cargo.toml | 32 - .../anchor/programs-sdk/freeze/src/lib.rs | 33 - .../anchor/programs-sdk/freeze/tests/test.rs | 37 - .../programs-sdk/mint-to-checked/Cargo.toml | 32 - .../programs-sdk/mint-to-checked/src/lib.rs | 44 - .../mint-to-checked/tests/test.rs | 40 - .../anchor/programs-sdk/mint-to/Cargo.toml | 32 - .../anchor/programs-sdk/mint-to/src/lib.rs | 39 - .../anchor/programs-sdk/mint-to/tests/test.rs | 38 - .../anchor/programs-sdk/revoke/Cargo.toml | 32 - .../anchor/programs-sdk/revoke/src/lib.rs | 32 - .../anchor/programs-sdk/revoke/tests/test.rs | 56 - .../anchor/programs-sdk/test-utils/Cargo.toml | 11 - .../anchor/programs-sdk/test-utils/src/lib.rs | 174 - .../anchor/programs-sdk/thaw/Cargo.toml | 32 - .../anchor/programs-sdk/thaw/src/lib.rs | 33 - .../anchor/programs-sdk/thaw/tests/test.rs | 51 - .../programs-sdk/transfer-checked/Cargo.toml | 31 - .../programs-sdk/transfer-checked/src/lib.rs | 47 - .../transfer-checked/tests/test.rs | 53 - .../transfer-interface/Cargo.toml | 32 - .../transfer-interface/src/lib.rs | 44 - .../transfer-interface/tests/test.rs | 55 - program-examples/anchor/rust-toolchain.toml | 3 - 48 files changed, 11129 deletions(-) delete mode 100644 program-examples/anchor/.gitignore delete mode 100644 program-examples/anchor/README.md delete mode 100644 program-examples/anchor/programs-sdk/Anchor.toml delete mode 100644 program-examples/anchor/programs-sdk/Cargo.lock delete mode 100644 program-examples/anchor/programs-sdk/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/README.md delete mode 100644 program-examples/anchor/programs-sdk/approve/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/approve/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/approve/tests/test.rs delete mode 100644 program-examples/anchor/programs-sdk/burn/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/burn/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/burn/tests/test.rs delete mode 100644 program-examples/anchor/programs-sdk/close/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/close/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/close/tests/test.rs delete mode 100644 program-examples/anchor/programs-sdk/create-ata/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/create-ata/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/create-ata/tests/test.rs delete mode 100644 program-examples/anchor/programs-sdk/create-mint/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/create-mint/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/create-mint/tests/test.rs delete mode 100644 program-examples/anchor/programs-sdk/create-token-account/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/create-token-account/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/create-token-account/tests/test.rs delete mode 100644 program-examples/anchor/programs-sdk/freeze/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/freeze/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/freeze/tests/test.rs delete mode 100644 program-examples/anchor/programs-sdk/mint-to-checked/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/mint-to-checked/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/mint-to-checked/tests/test.rs delete mode 100644 program-examples/anchor/programs-sdk/mint-to/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/mint-to/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/mint-to/tests/test.rs delete mode 100644 program-examples/anchor/programs-sdk/revoke/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/revoke/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/revoke/tests/test.rs delete mode 100644 program-examples/anchor/programs-sdk/test-utils/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/test-utils/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/thaw/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/thaw/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/thaw/tests/test.rs delete mode 100644 program-examples/anchor/programs-sdk/transfer-checked/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/transfer-checked/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/transfer-checked/tests/test.rs delete mode 100644 program-examples/anchor/programs-sdk/transfer-interface/Cargo.toml delete mode 100644 program-examples/anchor/programs-sdk/transfer-interface/src/lib.rs delete mode 100644 program-examples/anchor/programs-sdk/transfer-interface/tests/test.rs delete mode 100644 program-examples/anchor/rust-toolchain.toml diff --git a/program-examples/anchor/.gitignore b/program-examples/anchor/.gitignore deleted file mode 100644 index 42392b8..0000000 --- a/program-examples/anchor/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -# Dependencies -node_modules/ - -# Build artifacts -target/ -.anchor/ - -# Test artifacts -test-ledger/ - -# Package files -package.json -package-lock.json - -# IDE/Editor -.claude/ -.vscode/ -.idea/ - -# Environment -.env -.env.* diff --git a/program-examples/anchor/README.md b/program-examples/anchor/README.md deleted file mode 100644 index 0e72754..0000000 --- a/program-examples/anchor/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# Light Token Anchor Solana Programs - -## SDK programs - -- [**create-mint**](sdk-basics/create-mint/src/lib.rs) - Create a light-token mint via CPI | [Test](sdk-basics/create-mint/tests/test.rs) -- [**create-ata**](sdk-basics/create-ata/src/lib.rs) - Create an associated light-token account via CPI | [Test](sdk-basics/create-ata/tests/test.rs) -- [**create-token-account**](sdk-basics/create-token-account/src/lib.rs) - Create a light-token account via CPI | [Test](sdk-basics/create-token-account/tests/test.rs) -- [**mint-to**](sdk-basics/mint-to/src/lib.rs) - Mint tokens via CPI | [Test](sdk-basics/mint-to/tests/test.rs) -- [**mint-to-checked**](sdk-basics/mint-to-checked/src/lib.rs) - Mint tokens with decimal validation via CPI | [Test](sdk-basics/mint-to-checked/tests/test.rs) -- [**transfer-interface**](sdk-basics/transfer-interface/src/lib.rs) - Transfer between light-token, T22, and SPL accounts via CPI | [Test](sdk-basics/transfer-interface/tests/test.rs) -- [**transfer-checked**](sdk-basics/transfer-checked/src/lib.rs) - Transfer with decimal validation against mint via CPI | [Test](sdk-basics/transfer-checked/tests/test.rs) -- [**approve**](sdk-basics/approve/src/lib.rs) - Approve delegate via CPI | [Test](sdk-basics/approve/tests/test.rs) -- [**revoke**](sdk-basics/revoke/src/lib.rs) - Revoke delegate via CPI | [Test](sdk-basics/revoke/tests/test.rs) -- [**burn**](sdk-basics/burn/src/lib.rs) - Burn tokens via CPI | [Test](sdk-basics/burn/tests/test.rs) -- [**freeze**](sdk-basics/freeze/src/lib.rs) - Freeze token account via CPI | [Test](sdk-basics/freeze/tests/test.rs) -- [**thaw**](sdk-basics/thaw/src/lib.rs) - Thaw token account via CPI | [Test](sdk-basics/thaw/tests/test.rs) -- [**close**](sdk-basics/close/src/lib.rs) - Close token account via CPI | [Test](sdk-basics/close/tests/test.rs) - -## Build - -```bash -cd sdk-basics && anchor build -``` - -## Test - -### Requirements - -- light cli version 0.27.0+ (install via `npm i -g @lightprotocol/zk-compression-cli`) -- solana cli version 2.1.16+ -- anchor 0.31.1+ - -### Running tests - -```bash -cd sdk-basics && cargo test-sbf -``` - -## Disclaimer - -This reference implementation is not audited. - -The Light Protocol programs are audited and deployed on Solana devnet and mainnet. - -## Documentation - -Learn more [about Light-Token here](https://www.zkcompression.com/light-token/welcome). \ No newline at end of file diff --git a/program-examples/anchor/programs-sdk/Anchor.toml b/program-examples/anchor/programs-sdk/Anchor.toml deleted file mode 100644 index 0c5de3c..0000000 --- a/program-examples/anchor/programs-sdk/Anchor.toml +++ /dev/null @@ -1,30 +0,0 @@ -[toolchain] - -[features] -resolution = true -skip-lint = false - -[programs.devnet] -light_token_anchor_approve = "37XmzKqSG2VD1ZBvzyfbt1HN1mT1bqVAmfzX2ziB3KT1" -light_token_anchor_burn = "2TXVn8AqjfyeJvmFBD3kHJmh6fWkC4HNB5T76BmLKV5c" -light_token_anchor_close = "GXLCuNhnkRVp596eCdbNsZ9ua1ePbKbb344VKS7V3zQQ" -light_token_anchor_create_ata = "35MukgdfpNUbPMhTmEk63ECV8vjgpNVFRH9nP8ovMN58" -light_token_anchor_create_mint = "A1rJEoepgKYWZYZ8KVFpxgeeRGwBrU7xk8S39srjVkUX" -light_token_anchor_create_token_account = "zXK1CnWj4WFfFHCArxxr4sh3Qqx2p3oui8ahqpjArgS" -light_token_anchor_freeze = "JBMzMJX4sqCQfNVbosP2oqP1KZ5ZDWiwYTrupk687qXZ" -light_token_anchor_mint_to = "8bXEVmHLtAVqDLJp1dYWAZ61WQmqQKoTQ8LpPbRoUDCp" -light_token_anchor_mint_to_checked = "DGu3ofzac2Zndn95z2q9gCp8zHgW22YpMeEWj2up3QDb" -light_token_anchor_revoke = "G3ph4MK5qaSdxYnfxToETg31AHEMMqVhPuMRgBhk38tQ" -light_token_anchor_thaw = "7j94EF5hSkDLf7R26bjrd8Qc6s3oLAQpcKiF3re8JYw9" -light_token_anchor_transfer_checked = "HXmfewpozFdxhM8BayL9v5541gwoGMXTrUoip5KySs2f" -light_token_anchor_transfer_interface = "3rb6sG4jiYNLZC8jo8kLsFHpxr2Ci8e8Hh8UmeCMZmUV" - -[registry] -url = "https://api.apr.dev" - -[provider] -cluster = "devnet" -wallet = "~/.config/solana/id.json" - -[scripts] -test = "cargo test-sbf" diff --git a/program-examples/anchor/programs-sdk/Cargo.lock b/program-examples/anchor/programs-sdk/Cargo.lock deleted file mode 100644 index 3021b29..0000000 --- a/program-examples/anchor/programs-sdk/Cargo.lock +++ /dev/null @@ -1,8973 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[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 = "agave-feature-set" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a2c365c0245cbb8959de725fc2b44c754b673fdf34c9a7f9d4a25c35a7bf1" -dependencies = [ - "ahash", - "solana-epoch-schedule", - "solana-hash", - "solana-pubkey", - "solana-sha256-hasher", - "solana-svm-feature-set", -] - -[[package]] -name = "agave-precompiles" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d60d73657792af7f2464e9181d13c3979e94bb09841d9ffa014eef4ef0492b77" -dependencies = [ - "agave-feature-set", - "bincode", - "digest 0.10.7", - "ed25519-dalek", - "libsecp256k1", - "openssl", - "sha3", - "solana-ed25519-program", - "solana-message", - "solana-precompile-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-secp256k1-program", - "solana-secp256r1-program", -] - -[[package]] -name = "agave-reserved-account-keys" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8289c8a8a2ef5aa10ce49a070f360f4e035ee3410b8d8f3580fb39d8cf042581" -dependencies = [ - "agave-feature-set", - "solana-pubkey", - "solana-sdk-ids", -] - -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "getrandom 0.3.4", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "aligned-sized" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a526ec4434d531d488af59fe866f36b310fe8906691c75dffa664450a3800a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "anchor-attribute-access-control" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f70fd141a4d18adf11253026b32504f885447048c7494faf5fa83b01af9c0cf" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-account" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715a261c57c7679581e06f07a74fa2af874ac30f86bd8ea07cca4a7e5388a064" -dependencies = [ - "anchor-syn", - "bs58", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-constant" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730d6df8ae120321c5c25e0779e61789e4b70dc8297102248902022f286102e4" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-error" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27e6e449cc3a37b2880b74dcafb8e5a17b954c0e58e376432d7adc646fb333ef" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-event" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7710e4c54adf485affcd9be9adec5ef8846d9c71d7f31e16ba86ff9fc1dd49f" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-program" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ecfd49b2aeadeb32f35262230db402abed76ce87e27562b34f61318b2ec83c" -dependencies = [ - "anchor-lang-idl", - "anchor-syn", - "anyhow", - "bs58", - "heck 0.3.3", - "proc-macro2", - "quote", - "serde_json", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-accounts" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be89d160793a88495af462a7010b3978e48e30a630c91de47ce2c1d3cb7a6149" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-serde" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abc6ee78acb7bfe0c2dd2abc677aaa4789c0281a0c0ef01dbf6fe85e0fd9e6e4" -dependencies = [ - "anchor-syn", - "borsh-derive-internal", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-space" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134a01c0703f6fd355a0e472c033f6f3e41fac1ef6e370b20c50f4c8d022cea7" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-lang" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6bab117055905e930f762c196e08f861f8dfe7241b92cee46677a3b15561a0a" -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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e8599d21995f68e296265aa5ab0c3cef582fd58afec014d01bd0bce18a4418" -dependencies = [ - "anchor-lang-idl-spec", - "anyhow", - "heck 0.3.3", - "regex", - "serde", - "serde_json", - "sha2 0.10.9", -] - -[[package]] -name = "anchor-lang-idl-spec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" -dependencies = [ - "anyhow", - "serde", -] - -[[package]] -name = "anchor-syn" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dc7a6d90cc643df0ed2744862cdf180587d1e5d28936538c18fc8908489ed67" -dependencies = [ - "anyhow", - "bs58", - "cargo_toml", - "heck 0.3.3", - "proc-macro2", - "quote", - "serde", - "serde_json", - "sha2 0.10.9", - "syn 1.0.109", - "thiserror 1.0.69", -] - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] -name = "anyhow" -version = "1.0.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" - -[[package]] -name = "ark-bn254" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" -dependencies = [ - "ark-ec 0.4.2", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bn254" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" -dependencies = [ - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-ec" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" -dependencies = [ - "ark-ff 0.4.2", - "ark-poly 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", - "itertools 0.10.5", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-poly 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe 0.6.0", - "fnv", - "hashbrown 0.15.2", - "itertools 0.13.0", - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "digest 0.10.7", - "itertools 0.10.5", - "num-bigint 0.4.6", - "num-traits", - "paste", - "rustc_version", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" -dependencies = [ - "ark-ff-asm 0.5.0", - "ark-ff-macros 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "educe 0.6.0", - "itertools 0.13.0", - "num-bigint 0.4.6", - "num-traits", - "paste", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" -dependencies = [ - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-poly" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" -dependencies = [ - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", -] - -[[package]] -name = "ark-poly" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe 0.6.0", - "fnv", - "hashbrown 0.15.2", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-serialize-derive 0.4.2", - "ark-std 0.4.0", - "digest 0.10.7", - "num-bigint 0.4.6", -] - -[[package]] -name = "ark-serialize" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" -dependencies = [ - "ark-serialize-derive 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "num-bigint 0.4.6", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "ark-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" -dependencies = [ - "num-traits", - "rand 0.8.5", - "rayon", -] - -[[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 = "ascii" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" - -[[package]] -name = "async-compression" -version = "0.4.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" -dependencies = [ - "compression-codecs", - "compression-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[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 = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" -dependencies = [ - "serde_core", -] - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "blake3" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" -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.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" -dependencies = [ - "borsh-derive 1.6.0", - "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.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" -dependencies = [ - "once_cell", - "proc-macro-crate 3.4.0", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[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 = "brotli" -version = "8.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[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.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" - -[[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 = "bytecount" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" - -[[package]] -name = "bytemuck" -version = "1.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" - -[[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.23", -] - -[[package]] -name = "cc" -version = "1.2.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583" -dependencies = [ - "find-msvc-tools", - "jobserver", - "libc", - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "cfg_eval" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "chrono" -version = "0.4.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-link", -] - -[[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 = "combine" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" -dependencies = [ - "ascii", - "byteorder", - "either", - "memchr", - "unreachable", -] - -[[package]] -name = "compression-codecs" -version = "0.4.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" -dependencies = [ - "brotli", - "compression-core", - "flate2", - "memchr", -] - -[[package]] -name = "compression-core" -version = "0.4.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" - -[[package]] -name = "console" -version = "0.15.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" -dependencies = [ - "encode_unicode", - "libc", - "once_cell", - "unicode-width", - "windows-sys 0.59.0", -] - -[[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 = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", -] - -[[package]] -name = "crypto-mac" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -dependencies = [ - "generic-array", - "subtle", -] - -[[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 = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - -[[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.114", -] - -[[package]] -name = "darling" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.114", -] - -[[package]] -name = "darling_macro" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "deranged" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -dependencies = [ - "powerfmt", - "serde", -] - -[[package]] -name = "derivation-path" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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 = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "eager" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" - -[[package]] -name = "ed25519" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" -dependencies = [ - "signature", -] - -[[package]] -name = "ed25519-dalek" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" -dependencies = [ - "curve25519-dalek 3.2.0", - "ed25519", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "zeroize", -] - -[[package]] -name = "ed25519-dalek-bip32" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" -dependencies = [ - "derivation-path", - "ed25519-dalek", - "hmac 0.12.1", - "sha2 0.10.9", -] - -[[package]] -name = "educe" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" -dependencies = [ - "enum-ordinalize 3.1.15", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "educe" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" -dependencies = [ - "enum-ordinalize 4.3.2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - -[[package]] -name = "encode_unicode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" - -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "enum-iterator" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" -dependencies = [ - "enum-iterator-derive", -] - -[[package]] -name = "enum-iterator-derive" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "enum-ordinalize" -version = "3.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "enum-ordinalize" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" -dependencies = [ - "enum-ordinalize-derive", -] - -[[package]] -name = "enum-ordinalize-derive" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "env_logger" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[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 = "find-msvc-tools" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" - -[[package]] -name = "five8" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" -dependencies = [ - "five8_core", -] - -[[package]] -name = "five8_const" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" -dependencies = [ - "five8_core", -] - -[[package]] -name = "five8_core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" - -[[package]] -name = "flate2" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[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 = "gethostname" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "r-efi", - "wasip2", - "wasm-bindgen", -] - -[[package]] -name = "groth16-solana" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6d1ffb18dbf5cfc60b11bd7da88474c672870247c1e5b498619bcb6ba3d8f5" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "num-bigint 0.4.6", - "solana-bn254", - "thiserror 1.0.69", -] - -[[package]] -name = "h2" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.13.0", - "slab", - "tokio", - "tokio-util 0.7.18", - "tracing", -] - -[[package]] -name = "h2" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http 1.4.0", - "indexmap 2.13.0", - "slab", - "tokio", - "tokio-util 0.7.18", - "tracing", -] - -[[package]] -name = "hash32" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[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" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hmac" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" -dependencies = [ - "crypto-mac", - "digest 0.9.0", -] - -[[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 = "hmac-drbg" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" -dependencies = [ - "digest 0.9.0", - "generic-array", - "hmac 0.8.1", -] - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http 1.4.0", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http 1.4.0", - "http-body 1.0.1", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "humantime" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" - -[[package]] -name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.5.10", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "h2 0.4.13", - "http 1.4.0", - "http-body 1.0.1", - "httparse", - "itoa", - "pin-project-lite", - "pin-utils", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" -dependencies = [ - "futures-util", - "http 0.2.12", - "hyper 0.14.32", - "rustls 0.21.12", - "tokio", - "tokio-rustls 0.24.1", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" -dependencies = [ - "http 1.4.0", - "hyper 1.8.1", - "hyper-util", - "rustls 0.23.36", - "rustls-pki-types", - "tokio", - "tokio-rustls 0.26.4", - "tower-service", - "webpki-roots 1.0.5", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper 0.14.32", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper 1.8.1", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http 1.4.0", - "http-body 1.0.1", - "hyper 1.8.1", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2 0.5.10", - "system-configuration", - "tokio", - "tower-service", - "tracing", - "windows-registry", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" - -[[package]] -name = "icu_properties" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" - -[[package]] -name = "icu_provider" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" -dependencies = [ - "equivalent", - "hashbrown 0.16.1", - "serde", - "serde_core", -] - -[[package]] -name = "indicatif" -version = "0.17.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" -dependencies = [ - "console", - "number_prefix", - "portable-atomic", - "unicode-width", - "web-time", -] - -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "generic-array", -] - -[[package]] -name = "ipnet" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" - -[[package]] -name = "iri-string" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" - -[[package]] -name = "jobserver" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" -dependencies = [ - "getrandom 0.3.4", - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "jsonrpc-core" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" -dependencies = [ - "futures", - "futures-executor", - "futures-util", - "log", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "kaigan" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ba15de5aeb137f0f65aa3bf82187647f1285abfe5b20c80c2c37f7007ad519a" -dependencies = [ - "borsh 0.10.4", - "serde", -] - -[[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.180" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" - -[[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", - "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "typenum", -] - -[[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 = "light-account-checks" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f20b8640212dd450e18d452a247e28d8ba6fdce3c713fd8b69f1e95874d1b7ab" -dependencies = [ - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sysvar", - "thiserror 2.0.18", -] - -[[package]] -name = "light-array-map" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bdd13b18028ac9d80d0a987551c0dad7fe81be8140e87cc9d568b80f3728203" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "light-batched-merkle-tree" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01e838c523b49371097f948cd5662bd9a89d9dca037fb61fd38001e99f485702" -dependencies = [ - "aligned-sized", - "borsh 0.10.4", - "light-account-checks", - "light-bloom-filter", - "light-compressed-account", - "light-hasher", - "light-macros", - "light-merkle-tree-metadata", - "light-verifier", - "light-zero-copy", - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sysvar", - "thiserror 2.0.18", - "zerocopy", -] - -[[package]] -name = "light-bloom-filter" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b8cf734ccf5fbc1f5fed8e5308b57ebde6774d9304c167bcb0de2854412d8" -dependencies = [ - "bitvec", - "num-bigint 0.4.6", - "solana-nostd-keccak", - "solana-program-error", - "thiserror 2.0.18", -] - -[[package]] -name = "light-bounded-vec" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58cfa375d028164719e3ffef93d2e5c27855cc8a5bb5bf257b868d17c12a3e66" -dependencies = [ - "bytemuck", - "memoffset", - "solana-program-error", - "thiserror 1.0.69", -] - -[[package]] -name = "light-client" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33203f596d48d28d1cb67dee5762b151e0073207a5e828c63ec68f9efb9a5ee8" -dependencies = [ - "anchor-lang", - "async-trait", - "base64 0.13.1", - "borsh 0.10.4", - "bs58", - "futures", - "lazy_static", - "light-compressed-account", - "light-compressible", - "light-concurrent-merkle-tree", - "light-event", - "light-hasher", - "light-indexed-merkle-tree", - "light-merkle-tree-metadata", - "light-prover-client", - "light-sdk", - "light-token", - "light-token-interface", - "litesvm", - "num-bigint 0.4.6", - "photon-api", - "rand 0.8.5", - "smallvec", - "solana-account", - "solana-account-decoder-client-types", - "solana-address-lookup-table-interface", - "solana-banks-client", - "solana-clock", - "solana-commitment-config", - "solana-compute-budget-interface", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-program-error", - "solana-pubkey", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-signature", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status-client-types", - "spl-pod", - "spl-token-2022-interface", - "thiserror 2.0.18", - "tokio", - "tracing", -] - -[[package]] -name = "light-compressed-account" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c3537bbad9df133ca97fc191b164bba93dba1de4da01a92d979ef63f8ce106" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-hasher", - "light-macros", - "light-poseidon 0.3.0", - "light-program-profiler", - "light-zero-copy", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "thiserror 2.0.18", - "tinyvec", - "zerocopy", -] - -[[package]] -name = "light-compressible" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00d1dc14271907009f4ca23ae99c49279f7d2acc5a83f0f8d7362834b37e2e16" -dependencies = [ - "aligned-sized", - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-account-checks", - "light-compressed-account", - "light-hasher", - "light-macros", - "light-program-profiler", - "light-zero-copy", - "pinocchio-pubkey", - "solana-pubkey", - "solana-rent", - "thiserror 2.0.18", - "zerocopy", -] - -[[package]] -name = "light-concurrent-merkle-tree" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db96f47253a0907aaa46dac15cecb27b5510130e48da0b36690dcd2e99a6d558" -dependencies = [ - "borsh 0.10.4", - "light-bounded-vec", - "light-hasher", - "memoffset", - "solana-program-error", - "thiserror 2.0.18", -] - -[[package]] -name = "light-event" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4bae725ee1d4d944d442ac0bfdf2031b1b2379c04c7e39c475277aaaea08fb1" -dependencies = [ - "borsh 0.10.4", - "light-compressed-account", - "light-hasher", - "light-zero-copy", - "thiserror 2.0.18", -] - -[[package]] -name = "light-hasher" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c822662e6e109bac0e132a43fd52a4ef684811245a794e048cf9cda001e934c8" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "borsh 0.10.4", - "light-poseidon 0.3.0", - "num-bigint 0.4.6", - "sha2 0.10.9", - "sha3", - "solana-program-error", - "thiserror 2.0.18", - "tinyvec", -] - -[[package]] -name = "light-indexed-array" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f14f984030d86b6f07bd8f5ae04e2c40fcd0c3bdfcc7a291fff1ed59c9e6554" -dependencies = [ - "light-hasher", - "num-bigint 0.4.6", - "num-traits", - "thiserror 2.0.18", -] - -[[package]] -name = "light-indexed-merkle-tree" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0824755289075f28de2820fc7d4ec4e6b9e99d404e033c07338b91cce8c71fb8" -dependencies = [ - "light-bounded-vec", - "light-concurrent-merkle-tree", - "light-hasher", - "light-merkle-tree-reference", - "num-bigint 0.4.6", - "num-traits", - "solana-program-error", - "thiserror 2.0.18", -] - -[[package]] -name = "light-instruction-decoder" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f4bd98e842f21b754ec28020a56de37cb0b1089952ef24340d21c2d5afd5c5" -dependencies = [ - "borsh 0.10.4", - "bs58", - "light-compressed-account", - "light-instruction-decoder-derive", - "light-sdk-types", - "light-token-interface", - "serde", - "solana-instruction", - "solana-pubkey", - "solana-signature", - "tabled", -] - -[[package]] -name = "light-instruction-decoder-derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2035d04a0a1590da05634efcac149a2ac852565e28c9a55bd07a6620c0e90bff" -dependencies = [ - "bs58", - "darling", - "heck 0.5.0", - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.114", -] - -[[package]] -name = "light-macros" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "179ac51cadc1d0ca047b4d6265a7cc245ca3affc16a20a2749585aa6464d39c2" -dependencies = [ - "bs58", - "proc-macro2", - "quote", - "solana-pubkey", - "syn 2.0.114", -] - -[[package]] -name = "light-merkle-tree-metadata" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c2e63e8345dcfb80efac69136fdcc6c36a12354675aca6e3daf13ec40422d1" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-compressed-account", - "solana-msg", - "solana-program-error", - "solana-sysvar", - "thiserror 2.0.18", - "zerocopy", -] - -[[package]] -name = "light-merkle-tree-reference" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8d480f62ca32b38a6231bbc5310d693f91d6b5bdcc18bb13c2d9aab7a1c90e8" -dependencies = [ - "light-hasher", - "light-indexed-array", - "num-bigint 0.4.6", - "num-traits", - "thiserror 2.0.18", -] - -[[package]] -name = "light-poseidon" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" -dependencies = [ - "ark-bn254 0.4.0", - "ark-ff 0.4.2", - "num-bigint 0.4.6", - "thiserror 1.0.69", -] - -[[package]] -name = "light-poseidon" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3d87542063daaccbfecd78b60f988079b6ec4e089249658b9455075c78d42" -dependencies = [ - "ark-bn254 0.5.0", - "ark-ff 0.5.0", - "num-bigint 0.4.6", - "thiserror 1.0.69", -] - -[[package]] -name = "light-profiler-macro" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a8be18fe4de58a6f754caa74a3fbc6d8a758a26f1f3c24d5b0f5b55df5f5408" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "light-program-profiler" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1d345871581aebd8825868a3f08410290aa1cdddcb189ca7f7e588f61d79fcf" -dependencies = [ - "light-profiler-macro", -] - -[[package]] -name = "light-program-test" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85916a9da34a44971e1a30badaf04cb75213fbfa9f61a139ea6ebd0f021bdde" -dependencies = [ - "anchor-lang", - "async-trait", - "base64 0.13.1", - "borsh 0.10.4", - "bs58", - "bytemuck", - "chrono", - "light-client", - "light-compressed-account", - "light-compressible", - "light-event", - "light-hasher", - "light-indexed-array", - "light-indexed-merkle-tree", - "light-instruction-decoder", - "light-merkle-tree-metadata", - "light-merkle-tree-reference", - "light-prover-client", - "light-sdk", - "light-sdk-types", - "light-token", - "light-token-interface", - "light-zero-copy", - "litesvm", - "log", - "num-bigint 0.4.6", - "num-traits", - "photon-api", - "rand 0.8.5", - "reqwest 0.12.28", - "serde", - "serde_json", - "solana-account", - "solana-banks-client", - "solana-compute-budget", - "solana-instruction", - "solana-pubkey", - "solana-rpc-client-api", - "solana-sdk", - "solana-transaction", - "solana-transaction-status", - "solana-transaction-status-client-types", - "spl-token-2022 7.0.0", - "tabled", - "tokio", -] - -[[package]] -name = "light-prover-client" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd2195f4573628a8aaca37504cde1b1903b8ed20e2706acbad875b7d41acbeab" -dependencies = [ - "ark-bn254 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "light-compressed-account", - "light-hasher", - "light-indexed-array", - "light-sparse-merkle-tree", - "num-bigint 0.4.6", - "num-traits", - "reqwest 0.11.27", - "serde", - "serde_json", - "solana-bn254", - "thiserror 2.0.18", - "tokio", - "tracing", -] - -[[package]] -name = "light-sdk" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f523c64a6fcdafe6df81d647560770529896f2707be8ffcf048d909b7e2b30" -dependencies = [ - "anchor-lang", - "bincode", - "borsh 0.10.4", - "light-account-checks", - "light-compressed-account", - "light-compressible", - "light-hasher", - "light-macros", - "light-sdk-macros", - "light-sdk-types", - "light-zero-copy", - "num-bigint 0.4.6", - "solana-account-info", - "solana-clock", - "solana-cpi", - "solana-instruction", - "solana-loader-v3-interface", - "solana-msg", - "solana-program", - "solana-program-error", - "solana-pubkey", - "solana-system-interface", - "solana-sysvar", - "thiserror 2.0.18", -] - -[[package]] -name = "light-sdk-macros" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3d12bb13b84df21a4871dc0837aafc0b48464d3e9b17e2773c0719b6cc724c5" -dependencies = [ - "darling", - "light-hasher", - "light-sdk-types", - "proc-macro2", - "quote", - "solana-pubkey", - "syn 2.0.114", -] - -[[package]] -name = "light-sdk-types" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d8153b27d057ded7b2b6bbd78c643e3f20bd9a9718ca1a8d4183169ccd812c3" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-account-checks", - "light-compressed-account", - "light-hasher", - "light-macros", - "solana-msg", - "thiserror 2.0.18", -] - -[[package]] -name = "light-sparse-merkle-tree" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4251e79b6c63f4946572dcfd7623680ad0f9e0efe1a761a944733333c5645063" -dependencies = [ - "light-hasher", - "light-indexed-array", - "num-bigint 0.4.6", - "num-traits", - "thiserror 2.0.18", -] - -[[package]] -name = "light-token" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fd2e8ca6d7d70c77658010e1ae6ed6d4fe23e29054964b053f51e5c4676e49" -dependencies = [ - "anchor-lang", - "arrayvec", - "borsh 0.10.4", - "light-account-checks", - "light-batched-merkle-tree", - "light-compressed-account", - "light-compressible", - "light-macros", - "light-program-profiler", - "light-sdk", - "light-sdk-macros", - "light-sdk-types", - "light-token-interface", - "light-token-types", - "light-zero-copy", - "solana-account-info", - "solana-cpi", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "light-token-anchor-approve" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "test-utils", - "tokio", -] - -[[package]] -name = "light-token-anchor-burn" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "test-utils", - "tokio", -] - -[[package]] -name = "light-token-anchor-close" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "test-utils", - "tokio", -] - -[[package]] -name = "light-token-anchor-create-ata" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-create-mint" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-create-token-account" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "tokio", -] - -[[package]] -name = "light-token-anchor-freeze" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "test-utils", - "tokio", -] - -[[package]] -name = "light-token-anchor-mint-to" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "test-utils", - "tokio", -] - -[[package]] -name = "light-token-anchor-mint-to-checked" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "test-utils", - "tokio", -] - -[[package]] -name = "light-token-anchor-revoke" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "test-utils", - "tokio", -] - -[[package]] -name = "light-token-anchor-thaw" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-client", - "light-program-test", - "light-sdk", - "light-token", - "light-token-interface", - "solana-sdk", - "test-utils", - "tokio", -] - -[[package]] -name = "light-token-anchor-transfer-checked" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-program-test", - "light-sdk", - "light-token", - "solana-sdk", - "test-utils", - "tokio", -] - -[[package]] -name = "light-token-anchor-transfer-interface" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-program-test", - "light-sdk", - "light-token", - "light-token-types", - "solana-sdk", - "test-utils", - "tokio", -] - -[[package]] -name = "light-token-interface" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46decebc2a13ec984e2ba7f1e691c0d46b9061875c6bdd12636b7c100a60e6c" -dependencies = [ - "aligned-sized", - "anchor-lang", - "borsh 0.10.4", - "bytemuck", - "light-array-map", - "light-compressed-account", - "light-compressible", - "light-hasher", - "light-macros", - "light-program-profiler", - "light-zero-copy", - "pinocchio", - "pinocchio-pubkey", - "solana-account-info", - "solana-pubkey", - "spl-pod", - "spl-token-2022 7.0.0", - "thiserror 2.0.18", - "tinyvec", - "zerocopy", -] - -[[package]] -name = "light-token-types" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "411481fe2e04b1241235c2572480c153c5669507e227f5e3327057b0d2ba5734" -dependencies = [ - "anchor-lang", - "borsh 0.10.4", - "light-account-checks", - "light-compressed-account", - "light-macros", - "light-sdk-types", - "solana-msg", - "thiserror 2.0.18", -] - -[[package]] -name = "light-verifier" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecba4c14ac08b078a9d84033d628b12bb2577141f405140d506bacd392a830bc" -dependencies = [ - "groth16-solana", - "light-compressed-account", - "thiserror 2.0.18", -] - -[[package]] -name = "light-zero-copy" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5621fb515e14af46148699c0b65334aabe230a1d2cbd06736ccc7a408c8a4af" -dependencies = [ - "light-zero-copy-derive", - "solana-program-error", - "zerocopy", -] - -[[package]] -name = "light-zero-copy-derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c46425e5c7ab5203ff5c86ae2615b169cca55f9283f5f60f5dd74143be6934" -dependencies = [ - "lazy_static", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "linux-raw-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" - -[[package]] -name = "litemap" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" - -[[package]] -name = "litesvm" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b57cf6c4dac872c3e0e1f2f6f9cfd4e09143d6af04acf2fd34394a3041b0468" -dependencies = [ - "agave-feature-set", - "agave-precompiles", - "agave-reserved-account-keys", - "ansi_term", - "bincode", - "indexmap 2.13.0", - "itertools 0.14.0", - "log", - "solana-account", - "solana-address-lookup-table-interface", - "solana-bpf-loader-program", - "solana-builtins", - "solana-clock", - "solana-compute-budget", - "solana-compute-budget-instruction", - "solana-epoch-rewards", - "solana-epoch-schedule", - "solana-fee", - "solana-fee-structure", - "solana-hash", - "solana-instruction", - "solana-instructions-sysvar", - "solana-keypair", - "solana-last-restart-slot", - "solana-loader-v3-interface", - "solana-loader-v4-interface", - "solana-log-collector", - "solana-message", - "solana-native-token 3.0.0", - "solana-nonce", - "solana-nonce-account", - "solana-precompile-error", - "solana-program-error", - "solana-program-runtime", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sha256-hasher", - "solana-signature", - "solana-signer", - "solana-slot-hashes", - "solana-slot-history", - "solana-stake-interface", - "solana-svm-callback", - "solana-svm-transaction", - "solana-system-interface", - "solana-system-program", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "solana-vote-program", - "thiserror 2.0.18", -] - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "lru-slab" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" - -[[package]] -name = "memchr" -version = "2.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" - -[[package]] -name = "memmap2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] - -[[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 = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "mio" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" -dependencies = [ - "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.61.2", -] - -[[package]] -name = "native-tls" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "num" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" -dependencies = [ - "num-bigint 0.2.6", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[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", - "serde", -] - -[[package]] -name = "num-complex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[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.114", -] - -[[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-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" -dependencies = [ - "autocfg", - "num-bigint 0.2.6", - "num-integer", - "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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" -dependencies = [ - "proc-macro-crate 3.4.0", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - -[[package]] -name = "openssl" -version = "0.10.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" -dependencies = [ - "bitflags 2.10.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - -[[package]] -name = "openssl-src" -version = "300.5.4+3.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" -dependencies = [ - "cc", -] - -[[package]] -name = "openssl-sys" -version = "0.9.111" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" -dependencies = [ - "cc", - "libc", - "openssl-src", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand 0.8.5", - "thiserror 1.0.69", -] - -[[package]] -name = "papergrid" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6978128c8b51d8f4080631ceb2302ab51e32cc6e8615f735ee2f83fd269ae3f1" -dependencies = [ - "bytecount", - "fnv", - "unicode-width", -] - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "percentage" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" -dependencies = [ - "num", -] - -[[package]] -name = "photon-api" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e572dba0c255f5b8176f15b9e849330d915a8927804f7f9702d5bbbc70e4a1ad" -dependencies = [ - "reqwest 0.12.28", - "serde", - "serde_derive", - "serde_json", - "serde_with", - "url", - "uuid", -] - -[[package]] -name = "pin-project" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pinocchio" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b971851087bc3699b001954ad02389d50c41405ece3548cbcafc88b3e20017a" - -[[package]] -name = "pinocchio-pubkey" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0225638cadcbebae8932cb7f49cb5da7c15c21beb19f048f05a5ca7d93f065" -dependencies = [ - "five8_const", - "pinocchio", - "sha2-const-stable", -] - -[[package]] -name = "pkg-config" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" - -[[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 = "portable-atomic" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" - -[[package]] -name = "potential_utf" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -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.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" -dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -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 = "qualifier_attr" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "quinn" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" -dependencies = [ - "bytes", - "cfg_aliases", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash", - "rustls 0.23.36", - "socket2 0.5.10", - "thiserror 2.0.18", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" -dependencies = [ - "bytes", - "getrandom 0.3.4", - "lru-slab", - "rand 0.9.2", - "ring", - "rustc-hash", - "rustls 0.23.36", - "rustls-pki-types", - "slab", - "thiserror 2.0.18", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2 0.5.10", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "quote" -version = "1.0.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[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" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.5", -] - -[[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_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - -[[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.17", -] - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", -] - -[[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 = "rayon" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.10.0", -] - -[[package]] -name = "ref-cast" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "regex" -version = "1.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" - -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", - "hyper-rustls 0.24.2", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls 0.21.12", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration", - "tokio", - "tokio-native-tls", - "tokio-rustls 0.24.1", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 0.25.4", - "winreg", -] - -[[package]] -name = "reqwest" -version = "0.12.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" -dependencies = [ - "base64 0.22.1", - "bytes", - "encoding_rs", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.4.13", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.8.1", - "hyper-rustls 0.27.7", - "hyper-tls 0.6.0", - "hyper-util", - "js-sys", - "log", - "mime", - "mime_guess", - "native-tls", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls 0.23.36", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 1.0.2", - "tokio", - "tokio-native-tls", - "tokio-rustls 0.26.4", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 1.0.5", -] - -[[package]] -name = "reqwest-middleware" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" -dependencies = [ - "anyhow", - "async-trait", - "http 1.4.0", - "reqwest 0.12.28", - "serde", - "thiserror 1.0.69", - "tower-service", -] - -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.17", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" - -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" -dependencies = [ - "bitflags 2.10.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustls" -version = "0.21.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" -dependencies = [ - "log", - "ring", - "rustls-webpki 0.101.7", - "sct", -] - -[[package]] -name = "rustls" -version = "0.23.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" -dependencies = [ - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki 0.103.9", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - -[[package]] -name = "rustls-pki-types" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" -dependencies = [ - "web-time", - "zeroize", -] - -[[package]] -name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "rustls-webpki" -version = "0.103.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "ryu" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" - -[[package]] -name = "schannel" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "schemars" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.10.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde-big-array" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_bytes" -version = "0.11.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.13.0", - "schemars 0.9.0", - "schemars 1.2.0", - "serde_core", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[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.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha2-const-stable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" - -[[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 = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" -dependencies = [ - "errno", - "libc", -] - -[[package]] -name = "signature" -version = "1.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" - -[[package]] -name = "simd-adler32" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "slab" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "socket2" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" -dependencies = [ - "libc", - "windows-sys 0.60.2", -] - -[[package]] -name = "solana-account" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" -dependencies = [ - "bincode", - "serde", - "serde_bytes", - "serde_derive", - "solana-account-info", - "solana-clock", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-sysvar", -] - -[[package]] -name = "solana-account-decoder" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba71c97fa4d85ce4a1e0e79044ad0406c419382be598c800202903a7688ce71a" -dependencies = [ - "Inflector", - "base64 0.22.1", - "bincode", - "bs58", - "bv", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-account-decoder-client-types", - "solana-address-lookup-table-interface", - "solana-clock", - "solana-config-program-client", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-instruction", - "solana-loader-v3-interface", - "solana-nonce", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-slot-hashes", - "solana-slot-history", - "solana-stake-interface", - "solana-sysvar", - "solana-vote-interface", - "spl-generic-token", - "spl-token 8.0.0", - "spl-token-2022 8.0.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "thiserror 2.0.18", - "zstd", -] - -[[package]] -name = "solana-account-decoder-client-types" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5519e8343325b707f17fbed54fcefb325131b692506d0af9e08a539d15e4f8cf" -dependencies = [ - "base64 0.22.1", - "bs58", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-pubkey", - "zstd", -] - -[[package]] -name = "solana-account-info" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" -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-banks-client" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68548570c38a021c724b5aa0112f45a54bdf7ff1b041a042848e034a95a96994" -dependencies = [ - "borsh 1.6.0", - "futures", - "solana-account", - "solana-banks-interface", - "solana-clock", - "solana-commitment-config", - "solana-hash", - "solana-message", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-signature", - "solana-sysvar", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "tarpc", - "thiserror 2.0.18", - "tokio", - "tokio-serde", -] - -[[package]] -name = "solana-banks-interface" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6d90edc435bf488ef7abed4dcb1f94fa1970102cbabb25688f58417fd948286" -dependencies = [ - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-commitment-config", - "solana-hash", - "solana-message", - "solana-pubkey", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "tarpc", -] - -[[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 0.4.6", - "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-bn254" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4420f125118732833f36facf96a27e7b78314b2d642ba07fa9ffdacd8d79e243" -dependencies = [ - "ark-bn254 0.4.0", - "ark-ec 0.4.2", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "bytemuck", - "solana-define-syscall", - "thiserror 2.0.18", -] - -[[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.6.0", -] - -[[package]] -name = "solana-bpf-loader-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aec57dcd80d0f6879956cad28854a6eebaed6b346ce56908ea01a9f36ab259" -dependencies = [ - "bincode", - "libsecp256k1", - "num-traits", - "qualifier_attr", - "scopeguard", - "solana-account", - "solana-account-info", - "solana-big-mod-exp", - "solana-bincode", - "solana-blake3-hasher", - "solana-bn254", - "solana-clock", - "solana-cpi", - "solana-curve25519", - "solana-hash", - "solana-instruction", - "solana-keccak-hasher", - "solana-loader-v3-interface", - "solana-loader-v4-interface", - "solana-log-collector", - "solana-measure", - "solana-packet", - "solana-poseidon", - "solana-program-entrypoint", - "solana-program-runtime", - "solana-pubkey", - "solana-sbpf", - "solana-sdk-ids", - "solana-secp256k1-recover", - "solana-sha256-hasher", - "solana-stable-layout", - "solana-svm-feature-set", - "solana-system-interface", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", - "solana-transaction-context", - "solana-type-overrides", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-builtins" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d61a31b63b52b0d268cbcd56c76f50314867d7f8e07a0f2c62ee7c9886e07b2" -dependencies = [ - "agave-feature-set", - "solana-bpf-loader-program", - "solana-compute-budget-program", - "solana-hash", - "solana-loader-v4-program", - "solana-program-runtime", - "solana-pubkey", - "solana-sdk-ids", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", - "solana-zk-elgamal-proof-program", - "solana-zk-token-proof-program", -] - -[[package]] -name = "solana-builtins-default-costs" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ca69a299a6c969b18ea381a02b40c9e4dda04b2af0d15a007c1184c82163bbb" -dependencies = [ - "agave-feature-set", - "ahash", - "log", - "solana-bpf-loader-program", - "solana-compute-budget-program", - "solana-loader-v4-program", - "solana-pubkey", - "solana-sdk-ids", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", -] - -[[package]] -name = "solana-client-traits" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" -dependencies = [ - "solana-account", - "solana-commitment-config", - "solana-epoch-info", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-pubkey", - "solana-signature", - "solana-signer", - "solana-system-interface", - "solana-transaction", - "solana-transaction-error", -] - -[[package]] -name = "solana-clock" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", -] - -[[package]] -name = "solana-cluster-type" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" -dependencies = [ - "serde", - "serde_derive", - "solana-hash", -] - -[[package]] -name = "solana-commitment-config" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-compute-budget" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f4fc63bc2276a1618ca0bfc609da7448534ecb43a1cb387cdf9eaa2dc7bc272" -dependencies = [ - "solana-fee-structure", - "solana-program-runtime", -] - -[[package]] -name = "solana-compute-budget-instruction" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503d94430f6d3c5ac1e1fa6a342c1c714d5b03c800999e7b6cf235298f0b5341" -dependencies = [ - "agave-feature-set", - "log", - "solana-borsh", - "solana-builtins-default-costs", - "solana-compute-budget", - "solana-compute-budget-interface", - "solana-instruction", - "solana-packet", - "solana-pubkey", - "solana-sdk-ids", - "solana-svm-transaction", - "solana-transaction-error", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-compute-budget-interface" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8432d2c4c22d0499aa06d62e4f7e333f81777b3d7c96050ae9e5cb71a8c3aee4" -dependencies = [ - "borsh 1.6.0", - "serde", - "serde_derive", - "solana-instruction", - "solana-sdk-ids", -] - -[[package]] -name = "solana-compute-budget-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "072b02beed1862c6b7b7a8a699379594c4470a9371c711856a0a3c266dcf57e5" -dependencies = [ - "solana-program-runtime", -] - -[[package]] -name = "solana-config-program-client" -version = "0.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53aceac36f105fd4922e29b4f0c1f785b69d7b3e7e387e384b8985c8e0c3595e" -dependencies = [ - "bincode", - "borsh 0.10.4", - "kaigan", - "serde", - "solana-program", -] - -[[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.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae4261b9a8613d10e77ac831a8fa60b6fa52b9b103df46d641deff9f9812a23" -dependencies = [ - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "solana-define-syscall", - "subtle", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-decode-error" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" -dependencies = [ - "num-traits", -] - -[[package]] -name = "solana-define-syscall" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" - -[[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-ed25519-program" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" -dependencies = [ - "bytemuck", - "bytemuck_derive", - "ed25519-dalek", - "solana-feature-set", - "solana-instruction", - "solana-precompile-error", - "solana-sdk-ids", -] - -[[package]] -name = "solana-epoch-info" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" -dependencies = [ - "serde", - "serde_derive", -] - -[[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-rewards-hasher" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" -dependencies = [ - "siphasher", - "solana-hash", - "solana-pubkey", -] - -[[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.18", -] - -[[package]] -name = "solana-feature-gate-interface" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" -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-feature-set" -version = "2.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93b93971e289d6425f88e6e3cb6668c4b05df78b3c518c249be55ced8efd6b6d" -dependencies = [ - "ahash", - "lazy_static", - "solana-epoch-schedule", - "solana-hash", - "solana-pubkey", - "solana-sha256-hasher", -] - -[[package]] -name = "solana-fee" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16beda37597046b1edd1cea6fa7caaed033c091f99ec783fe59c82828bc2adb8" -dependencies = [ - "agave-feature-set", - "solana-fee-structure", - "solana-svm-transaction", -] - -[[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-fee-structure" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33adf673581c38e810bf618f745bf31b683a0a4a4377682e6aaac5d9a058dd4e" -dependencies = [ - "serde", - "serde_derive", - "solana-message", - "solana-native-token 2.3.0", -] - -[[package]] -name = "solana-genesis-config" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3725085d47b96d37fef07a29d78d2787fc89a0b9004c66eed7753d1e554989f" -dependencies = [ - "bincode", - "chrono", - "memmap2", - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-cluster-type", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-hash", - "solana-inflation", - "solana-keypair", - "solana-logger", - "solana-poh-config", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sha256-hasher", - "solana-shred-version", - "solana-signer", - "solana-time-utils", -] - -[[package]] -name = "solana-hard-forks" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-hash" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" -dependencies = [ - "borsh 1.6.0", - "bytemuck", - "bytemuck_derive", - "five8", - "js-sys", - "serde", - "serde_derive", - "solana-atomic-u64", - "solana-sanitize", - "wasm-bindgen", -] - -[[package]] -name = "solana-inflation" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-instruction" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab5682934bd1f65f8d2c16f21cb532526fcc1a09f796e2cacdb091eee5774ad" -dependencies = [ - "bincode", - "borsh 1.6.0", - "getrandom 0.2.17", - "js-sys", - "num-traits", - "serde", - "serde_derive", - "serde_json", - "solana-define-syscall", - "solana-pubkey", - "wasm-bindgen", -] - -[[package]] -name = "solana-instructions-sysvar" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" -dependencies = [ - "bitflags 2.10.0", - "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-keypair" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd3f04aa1a05c535e93e121a95f66e7dcccf57e007282e8255535d24bf1e98bb" -dependencies = [ - "ed25519-dalek", - "ed25519-dalek-bip32", - "five8", - "rand 0.7.3", - "solana-derivation-path", - "solana-pubkey", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-signature", - "solana-signer", - "wasm-bindgen", -] - -[[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 = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" -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-loader-v4-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6ab01855d851fa2fb6034b0d48de33d77d5c5f5fb4b0353d8e4a934cc03d48a" -dependencies = [ - "log", - "qualifier_attr", - "solana-account", - "solana-bincode", - "solana-bpf-loader-program", - "solana-instruction", - "solana-loader-v3-interface", - "solana-loader-v4-interface", - "solana-log-collector", - "solana-measure", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-sbpf", - "solana-sdk-ids", - "solana-transaction-context", - "solana-type-overrides", -] - -[[package]] -name = "solana-log-collector" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d945b1cf5bf7cbd6f5b78795beda7376370c827640df43bb2a1c17b492dc106" -dependencies = [ - "log", -] - -[[package]] -name = "solana-logger" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8e777ec1afd733939b532a42492d888ec7c88d8b4127a5d867eb45c6eb5cd5" -dependencies = [ - "env_logger", - "lazy_static", - "libc", - "log", - "signal-hook", -] - -[[package]] -name = "solana-measure" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11dcd67cd2ae6065e494b64e861e0498d046d95a61cbbf1ae3d58be1ea0f42ed" - -[[package]] -name = "solana-message" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" -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-metrics" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0375159d8460f423d39e5103dcff6e07796a5ec1850ee1fcfacfd2482a8f34b5" -dependencies = [ - "crossbeam-channel", - "gethostname", - "log", - "reqwest 0.12.28", - "solana-cluster-type", - "solana-sha256-hasher", - "solana-time-utils", - "thiserror 2.0.18", -] - -[[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.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" - -[[package]] -name = "solana-native-token" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" - -[[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-nonce-account" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" -dependencies = [ - "solana-account", - "solana-hash", - "solana-nonce", - "solana-sdk-ids", -] - -[[package]] -name = "solana-nostd-keccak" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8ced70920435b1baa58f76e6f84bbc1110ddd1d6161ec76b6d731ae8431e9c4" -dependencies = [ - "sha3", -] - -[[package]] -name = "solana-offchain-message" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" -dependencies = [ - "num_enum", - "solana-hash", - "solana-packet", - "solana-pubkey", - "solana-sanitize", - "solana-sha256-hasher", - "solana-signature", - "solana-signer", -] - -[[package]] -name = "solana-packet" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004f2d2daf407b3ec1a1ca5ec34b3ccdfd6866dd2d3c7d0715004a96e4b6d127" -dependencies = [ - "bincode", - "bitflags 2.10.0", - "cfg_eval", - "serde", - "serde_derive", - "serde_with", -] - -[[package]] -name = "solana-poh-config" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-poseidon" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbac4eb90016eeb1d37fa36e592d3a64421510c49666f81020736611c319faff" -dependencies = [ - "ark-bn254 0.4.0", - "light-poseidon 0.2.0", - "solana-define-syscall", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-precompile-error" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d87b2c1f5de77dfe2b175ee8dd318d196aaca4d0f66f02842f80c852811f9f8" -dependencies = [ - "num-traits", - "solana-decode-error", -] - -[[package]] -name = "solana-precompiles" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e92768a57c652edb0f5d1b30a7d0bc64192139c517967c18600debe9ae3832" -dependencies = [ - "lazy_static", - "solana-ed25519-program", - "solana-feature-set", - "solana-message", - "solana-precompile-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-secp256k1-program", - "solana-secp256r1-program", -] - -[[package]] -name = "solana-presigner" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" -dependencies = [ - "solana-pubkey", - "solana-signature", - "solana-signer", -] - -[[package]] -name = "solana-program" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" -dependencies = [ - "bincode", - "blake3", - "borsh 0.10.4", - "borsh 1.6.0", - "bs58", - "bytemuck", - "console_error_panic_hook", - "console_log", - "getrandom 0.2.17", - "lazy_static", - "log", - "memoffset", - "num-bigint 0.4.6", - "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 2.3.0", - "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.18", - "wasm-bindgen", -] - -[[package]] -name = "solana-program-entrypoint" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" -dependencies = [ - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", -] - -[[package]] -name = "solana-program-error" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" -dependencies = [ - "borsh 1.6.0", - "num-traits", - "serde", - "serde_derive", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-pubkey", -] - -[[package]] -name = "solana-program-memory" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" -dependencies = [ - "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-program-runtime" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5653001e07b657c9de6f0417cf9add1cf4325903732c480d415655e10cc86704" -dependencies = [ - "base64 0.22.1", - "bincode", - "enum-iterator", - "itertools 0.12.1", - "log", - "percentage", - "rand 0.8.5", - "serde", - "solana-account", - "solana-clock", - "solana-epoch-rewards", - "solana-epoch-schedule", - "solana-fee-structure", - "solana-hash", - "solana-instruction", - "solana-last-restart-slot", - "solana-log-collector", - "solana-measure", - "solana-metrics", - "solana-program-entrypoint", - "solana-pubkey", - "solana-rent", - "solana-sbpf", - "solana-sdk-ids", - "solana-slot-hashes", - "solana-stable-layout", - "solana-svm-callback", - "solana-svm-feature-set", - "solana-system-interface", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", - "solana-transaction-context", - "solana-type-overrides", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-pubkey" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" -dependencies = [ - "borsh 0.10.4", - "borsh 1.6.0", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "five8", - "five8_const", - "getrandom 0.2.17", - "js-sys", - "num-traits", - "rand 0.8.5", - "serde", - "serde_derive", - "solana-atomic-u64", - "solana-decode-error", - "solana-define-syscall", - "solana-sanitize", - "solana-sha256-hasher", - "wasm-bindgen", -] - -[[package]] -name = "solana-quic-definitions" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf0d4d5b049eb1d0c35f7b18f305a27c8986fc5c0c9b383e97adaa35334379e" -dependencies = [ - "solana-keypair", -] - -[[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-rent-collector" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "127e6dfa51e8c8ae3aa646d8b2672bc4ac901972a338a9e1cd249e030564fb9d" -dependencies = [ - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-epoch-schedule", - "solana-genesis-config", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", -] - -[[package]] -name = "solana-rent-debits" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" -dependencies = [ - "solana-pubkey", - "solana-reward-info", -] - -[[package]] -name = "solana-reserved-account-keys" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4b22ea19ca2a3f28af7cd047c914abf833486bf7a7c4a10fc652fff09b385b1" -dependencies = [ - "lazy_static", - "solana-feature-set", - "solana-pubkey", - "solana-sdk-ids", -] - -[[package]] -name = "solana-reward-info" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "solana-rpc-client" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d3161ac0918178e674c1f7f1bfac40de3e7ed0383bd65747d63113c156eaeb" -dependencies = [ - "async-trait", - "base64 0.22.1", - "bincode", - "bs58", - "futures", - "indicatif", - "log", - "reqwest 0.12.28", - "reqwest-middleware", - "semver", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-account-decoder-client-types", - "solana-clock", - "solana-commitment-config", - "solana-epoch-info", - "solana-epoch-schedule", - "solana-feature-gate-interface", - "solana-hash", - "solana-instruction", - "solana-message", - "solana-pubkey", - "solana-rpc-client-api", - "solana-signature", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status-client-types", - "solana-version", - "solana-vote-interface", - "tokio", -] - -[[package]] -name = "solana-rpc-client-api" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dbc138685c79d88a766a8fd825057a74ea7a21e1dd7f8de275ada899540fff7" -dependencies = [ - "anyhow", - "jsonrpc-core", - "reqwest 0.12.28", - "reqwest-middleware", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder-client-types", - "solana-clock", - "solana-rpc-client-types", - "solana-signer", - "solana-transaction-error", - "solana-transaction-status-client-types", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-rpc-client-types" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea428a81729255d895ea47fba9b30fd4dacbfe571a080448121bd0592751676" -dependencies = [ - "base64 0.22.1", - "bs58", - "semver", - "serde", - "serde_derive", - "serde_json", - "solana-account", - "solana-account-decoder-client-types", - "solana-clock", - "solana-commitment-config", - "solana-fee-calculator", - "solana-inflation", - "solana-pubkey", - "solana-transaction-error", - "solana-transaction-status-client-types", - "solana-version", - "spl-generic-token", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-sanitize" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" - -[[package]] -name = "solana-sbpf" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "474a2d95dc819898ded08d24f29642d02189d3e1497bbb442a92a3997b7eb55f" -dependencies = [ - "byteorder", - "combine", - "hash32", - "libc", - "log", - "rand 0.8.5", - "rustc-demangle", - "thiserror 2.0.18", - "winapi", -] - -[[package]] -name = "solana-sdk" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc0e4a7635b902791c44b6581bfb82f3ada32c5bc0929a64f39fe4bb384c86a" -dependencies = [ - "bincode", - "bs58", - "getrandom 0.1.16", - "js-sys", - "serde", - "serde_json", - "solana-account", - "solana-bn254", - "solana-client-traits", - "solana-cluster-type", - "solana-commitment-config", - "solana-compute-budget-interface", - "solana-decode-error", - "solana-derivation-path", - "solana-ed25519-program", - "solana-epoch-info", - "solana-epoch-rewards-hasher", - "solana-feature-set", - "solana-fee-structure", - "solana-genesis-config", - "solana-hard-forks", - "solana-inflation", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-native-token 2.3.0", - "solana-nonce-account", - "solana-offchain-message", - "solana-packet", - "solana-poh-config", - "solana-precompile-error", - "solana-precompiles", - "solana-presigner", - "solana-program", - "solana-program-memory", - "solana-pubkey", - "solana-quic-definitions", - "solana-rent-collector", - "solana-rent-debits", - "solana-reserved-account-keys", - "solana-reward-info", - "solana-sanitize", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-secp256k1-program", - "solana-secp256k1-recover", - "solana-secp256r1-program", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-serde", - "solana-serde-varint", - "solana-short-vec", - "solana-shred-version", - "solana-signature", - "solana-signer", - "solana-system-transaction", - "solana-time-utils", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "solana-validator-exit", - "thiserror 2.0.18", - "wasm-bindgen", -] - -[[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.114", -] - -[[package]] -name = "solana-secp256k1-program" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f19833e4bc21558fe9ec61f239553abe7d05224347b57d65c2218aeeb82d6149" -dependencies = [ - "bincode", - "digest 0.10.7", - "libsecp256k1", - "serde", - "serde_derive", - "sha3", - "solana-feature-set", - "solana-instruction", - "solana-precompile-error", - "solana-sdk-ids", - "solana-signature", -] - -[[package]] -name = "solana-secp256k1-recover" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" -dependencies = [ - "borsh 1.6.0", - "libsecp256k1", - "solana-define-syscall", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-secp256r1-program" -version = "2.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce0ae46da3071a900f02d367d99b2f3058fe2e90c5062ac50c4f20cfedad8f0f" -dependencies = [ - "bytemuck", - "openssl", - "solana-feature-set", - "solana-instruction", - "solana-precompile-error", - "solana-sdk-ids", -] - -[[package]] -name = "solana-security-txt" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "156bb61a96c605fa124e052d630dba2f6fb57e08c7d15b757e1e958b3ed7b3fe" -dependencies = [ - "hashbrown 0.15.2", -] - -[[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 0.12.1", - "pbkdf2", - "sha2 0.10.9", -] - -[[package]] -name = "solana-serde" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" -dependencies = [ - "serde", -] - -[[package]] -name = "solana-serde-varint" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" -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.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" -dependencies = [ - "sha2 0.10.9", - "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-shred-version" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" -dependencies = [ - "solana-hard-forks", - "solana-hash", - "solana-sha256-hasher", -] - -[[package]] -name = "solana-signature" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" -dependencies = [ - "ed25519-dalek", - "five8", - "rand 0.8.5", - "serde", - "serde-big-array", - "serde_derive", - "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.6.0", - "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-stake-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500e9b9d11573f12de91e94f9c4459882cd5ffc692776af49b610d6fcc0b167f" -dependencies = [ - "agave-feature-set", - "bincode", - "log", - "solana-account", - "solana-bincode", - "solana-clock", - "solana-config-program-client", - "solana-genesis-config", - "solana-instruction", - "solana-log-collector", - "solana-native-token 2.3.0", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-stake-interface", - "solana-sysvar", - "solana-transaction-context", - "solana-type-overrides", - "solana-vote-interface", -] - -[[package]] -name = "solana-svm-callback" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cef9f7d5cfb5d375081a6c8ad712a6f0e055a15890081f845acf55d8254a7a2" -dependencies = [ - "solana-account", - "solana-precompile-error", - "solana-pubkey", -] - -[[package]] -name = "solana-svm-feature-set" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f24b836eb4d74ec255217bdbe0f24f64a07adeac31aca61f334f91cd4a3b1d5" - -[[package]] -name = "solana-svm-transaction" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab717b9539375ebb088872c6c87d1d8832d19f30f154ecc530154d23f60a6f0c" -dependencies = [ - "solana-hash", - "solana-message", - "solana-pubkey", - "solana-sdk-ids", - "solana-signature", - "solana-transaction", -] - -[[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-system-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ca36cef39aea7761be58d4108a56a2e27042fb1e913355fdb142a05fc7eab7" -dependencies = [ - "bincode", - "log", - "serde", - "serde_derive", - "solana-account", - "solana-bincode", - "solana-fee-calculator", - "solana-instruction", - "solana-log-collector", - "solana-nonce", - "solana-nonce-account", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-sdk-ids", - "solana-system-interface", - "solana-sysvar", - "solana-transaction-context", - "solana-type-overrides", -] - -[[package]] -name = "solana-system-transaction" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" -dependencies = [ - "solana-hash", - "solana-keypair", - "solana-message", - "solana-pubkey", - "solana-signer", - "solana-system-interface", - "solana-transaction", -] - -[[package]] -name = "solana-sysvar" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db" -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-time-utils" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" - -[[package]] -name = "solana-timings" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c49b842dfc53c1bf9007eaa6730296dea93b4fce73f457ce1080af43375c0d6" -dependencies = [ - "eager", - "enum-iterator", - "solana-pubkey", -] - -[[package]] -name = "solana-transaction" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80657d6088f721148f5d889c828ca60c7daeedac9a8679f9ec215e0c42bcbf41" -dependencies = [ - "bincode", - "serde", - "serde_derive", - "solana-bincode", - "solana-feature-set", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-message", - "solana-precompiles", - "solana-pubkey", - "solana-sanitize", - "solana-sdk-ids", - "solana-short-vec", - "solana-signature", - "solana-signer", - "solana-system-interface", - "solana-transaction-error", - "wasm-bindgen", -] - -[[package]] -name = "solana-transaction-context" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a312304361987a85b2ef2293920558e6612876a639dd1309daf6d0d59ef2fe" -dependencies = [ - "bincode", - "serde", - "serde_derive", - "solana-account", - "solana-instruction", - "solana-instructions-sysvar", - "solana-pubkey", - "solana-rent", - "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 = [ - "serde", - "serde_derive", - "solana-instruction", - "solana-sanitize", -] - -[[package]] -name = "solana-transaction-status" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135f92f4192cc68900c665becf97fc0a6500ae5a67ff347bf2cbc20ecfefa821" -dependencies = [ - "Inflector", - "agave-reserved-account-keys", - "base64 0.22.1", - "bincode", - "borsh 1.6.0", - "bs58", - "log", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder", - "solana-address-lookup-table-interface", - "solana-clock", - "solana-hash", - "solana-instruction", - "solana-loader-v2-interface", - "solana-loader-v3-interface", - "solana-message", - "solana-program-option", - "solana-pubkey", - "solana-reward-info", - "solana-sdk-ids", - "solana-signature", - "solana-stake-interface", - "solana-system-interface", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status-client-types", - "solana-vote-interface", - "spl-associated-token-account", - "spl-memo", - "spl-token 8.0.0", - "spl-token-2022 8.0.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-transaction-status-client-types" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f1d7c2387c35850848212244d2b225847666cb52d3bd59a5c409d2c300303d" -dependencies = [ - "base64 0.22.1", - "bincode", - "bs58", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder-client-types", - "solana-commitment-config", - "solana-message", - "solana-reward-info", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-type-overrides" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d80c44761eb398a157d809a04840865c347e1831ae3859b6100c0ee457bc1a" -dependencies = [ - "rand 0.8.5", -] - -[[package]] -name = "solana-validator-exit" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" - -[[package]] -name = "solana-version" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3324d46c7f7b7f5d34bf7dc71a2883bdc072c7b28ca81d0b2167ecec4cf8da9f" -dependencies = [ - "agave-feature-set", - "rand 0.8.5", - "semver", - "serde", - "serde_derive", - "solana-sanitize", - "solana-serde-varint", -] - -[[package]] -name = "solana-vote-interface" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3" -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-vote-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "908d0e72c8b83e48762eb3e8c9114497cf4b1d66e506e360c46aba9308e71299" -dependencies = [ - "agave-feature-set", - "bincode", - "log", - "num-derive", - "num-traits", - "serde", - "serde_derive", - "solana-account", - "solana-bincode", - "solana-clock", - "solana-epoch-schedule", - "solana-hash", - "solana-instruction", - "solana-keypair", - "solana-metrics", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-signer", - "solana-slot-hashes", - "solana-transaction", - "solana-transaction-context", - "solana-vote-interface", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-zk-elgamal-proof-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70cea14481d8efede6b115a2581f27bc7c6fdfba0752c20398456c3ac1245fc4" -dependencies = [ - "agave-feature-set", - "bytemuck", - "num-derive", - "num-traits", - "solana-instruction", - "solana-log-collector", - "solana-program-runtime", - "solana-sdk-ids", - "solana-zk-sdk", -] - -[[package]] -name = "solana-zk-sdk" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b9fc6ec37d16d0dccff708ed1dd6ea9ba61796700c3bb7c3b401973f10f63b" -dependencies = [ - "aes-gcm-siv", - "base64 0.22.1", - "bincode", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "itertools 0.12.1", - "js-sys", - "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.18", - "wasm-bindgen", - "zeroize", -] - -[[package]] -name = "solana-zk-token-proof-program" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579752ad6ea2a671995f13c763bf28288c3c895cb857a518cc4ebab93c9a8dde" -dependencies = [ - "agave-feature-set", - "bytemuck", - "num-derive", - "num-traits", - "solana-instruction", - "solana-log-collector", - "solana-program-runtime", - "solana-sdk-ids", - "solana-zk-token-sdk", -] - -[[package]] -name = "solana-zk-token-sdk" -version = "2.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5055e5df94abd5badf4f947681c893375bdb6f8f543c05d2a7ab9647a6a9d205" -dependencies = [ - "aes-gcm-siv", - "base64 0.22.1", - "bincode", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "itertools 0.12.1", - "merlin", - "num-derive", - "num-traits", - "rand 0.8.5", - "serde", - "serde_derive", - "serde_json", - "sha3", - "solana-curve25519", - "solana-derivation-path", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-signature", - "solana-signer", - "subtle", - "thiserror 2.0.18", - "zeroize", -] - -[[package]] -name = "spl-associated-token-account" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae179d4a26b3c7a20c839898e6aed84cb4477adf108a366c95532f058aea041b" -dependencies = [ - "borsh 1.6.0", - "num-derive", - "num-traits", - "solana-program", - "spl-associated-token-account-client", - "spl-token 8.0.0", - "spl-token-2022 8.0.1", - "thiserror 2.0.18", -] - -[[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.114", -] - -[[package]] -name = "spl-discriminator-syn" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.114", - "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 0.2.1", -] - -[[package]] -name = "spl-elgamal-registry" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65edfeed09cd4231e595616aa96022214f9c9d2be02dea62c2b30d5695a6833a" -dependencies = [ - "bytemuck", - "solana-account-info", - "solana-cpi", - "solana-instruction", - "solana-msg", - "solana-program-entrypoint", - "solana-program-error", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-system-interface", - "solana-sysvar", - "solana-zk-sdk", - "spl-pod", - "spl-token-confidential-transfer-proof-extraction 0.3.0", -] - -[[package]] -name = "spl-generic-token" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "741a62a566d97c58d33f9ed32337ceedd4e35109a686e31b1866c5dfa56abddc" -dependencies = [ - "bytemuck", - "solana-pubkey", -] - -[[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.6.0", - "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.18", -] - -[[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 0.4.1", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-program-error" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" -dependencies = [ - "num-derive", - "num-traits", - "solana-decode-error", - "solana-msg", - "solana-program-error", - "spl-program-error-derive 0.5.0", - "thiserror 2.0.18", -] - -[[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.9", - "syn 2.0.114", -] - -[[package]] -name = "spl-program-error-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.114", -] - -[[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 0.6.0", - "spl-type-length-value 0.7.0", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" -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 0.7.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[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" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-cpi", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sysvar", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-2022" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9048b26b0df0290f929ff91317c83db28b3ef99af2b3493dd35baa146774924c" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-program", - "solana-security-txt", - "solana-zk-sdk", - "spl-elgamal-registry 0.1.1", - "spl-memo", - "spl-pod", - "spl-token 7.0.0", - "spl-token-confidential-transfer-ciphertext-arithmetic 0.2.1", - "spl-token-confidential-transfer-proof-extraction 0.2.1", - "spl-token-confidential-transfer-proof-generation 0.3.0", - "spl-token-group-interface 0.5.0", - "spl-token-metadata-interface 0.6.0", - "spl-transfer-hook-interface 0.9.0", - "spl-type-length-value 0.7.0", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-2022" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f0dfbb079eebaee55e793e92ca5f433744f4b71ee04880bfd6beefba5973e5" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-clock", - "solana-cpi", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-native-token 2.3.0", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-security-txt", - "solana-system-interface", - "solana-sysvar", - "solana-zk-sdk", - "spl-elgamal-registry 0.2.0", - "spl-memo", - "spl-pod", - "spl-token 8.0.0", - "spl-token-confidential-transfer-ciphertext-arithmetic 0.3.1", - "spl-token-confidential-transfer-proof-extraction 0.3.0", - "spl-token-confidential-transfer-proof-generation 0.4.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "spl-transfer-hook-interface 0.10.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-2022-interface" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62d7ae2ee6b856f8ddcbdc3b3a9f4d2141582bbe150f93e5298ee97e0251fa04" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", - "spl-token-confidential-transfer-proof-extraction 0.4.1", - "spl-token-confidential-transfer-proof-generation 0.4.1", - "spl-token-group-interface 0.6.0", - "spl-token-metadata-interface 0.7.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[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-ciphertext-arithmetic" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cddd52bfc0f1c677b41493dafa3f2dbbb4b47cf0990f08905429e19dc8289b35" -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.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-extraction" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe2629860ff04c17bafa9ba4bed8850a404ecac81074113e1f840dbd0ebb7bd6" -dependencies = [ - "bytemuck", - "solana-account-info", - "solana-curve25519", - "solana-instruction", - "solana-instructions-sysvar", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-extraction" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512c85bdbbb4cbcc2038849a9e164c958b16541f252b53ea1a3933191c0a4a1a" -dependencies = [ - "bytemuck", - "solana-account-info", - "solana-curve25519", - "solana-instruction", - "solana-instructions-sysvar", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-zk-sdk", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-generation" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" -dependencies = [ - "curve25519-dalek 4.1.3", - "solana-zk-sdk", - "thiserror 2.0.18", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-generation" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" -dependencies = [ - "curve25519-dalek 4.1.3", - "solana-zk-sdk", - "thiserror 2.0.18", -] - -[[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-group-interface" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" -dependencies = [ - "bytemuck", - "num-derive", - "num-traits", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-discriminator", - "spl-pod", - "thiserror 2.0.18", -] - -[[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.6.0", - "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 0.7.0", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-token-metadata-interface" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" -dependencies = [ - "borsh 1.6.0", - "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 0.8.0", - "thiserror 2.0.18", -] - -[[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 0.6.0", - "spl-tlv-account-resolution 0.9.0", - "spl-type-length-value 0.7.0", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-transfer-hook-interface" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" -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 0.7.0", - "spl-tlv-account-resolution 0.10.0", - "spl-type-length-value 0.8.0", - "thiserror 2.0.18", -] - -[[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 = "spl-type-length-value" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" -dependencies = [ - "bytemuck", - "num-derive", - "num-traits", - "solana-account-info", - "solana-decode-error", - "solana-msg", - "solana-program-error", - "spl-discriminator", - "spl-pod", - "thiserror 2.0.18", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[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.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tabled" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e39a2ee1fbcd360805a771e1b300f78cc88fec7b8d3e2f71cd37bbf23e725c7d" -dependencies = [ - "papergrid", - "tabled_derive", - "testing_table", -] - -[[package]] -name = "tabled_derive" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea5d1b13ca6cff1f9231ffd62f15eefd72543dab5e468735f1a456728a02846" -dependencies = [ - "heck 0.5.0", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tarpc" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" -dependencies = [ - "anyhow", - "fnv", - "futures", - "humantime", - "opentelemetry", - "pin-project", - "rand 0.8.5", - "serde", - "static_assertions", - "tarpc-plugins", - "thiserror 1.0.69", - "tokio", - "tokio-serde", - "tokio-util 0.6.10", - "tracing", - "tracing-opentelemetry", -] - -[[package]] -name = "tarpc-plugins" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tempfile" -version = "3.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" -dependencies = [ - "fastrand", - "getrandom 0.3.4", - "once_cell", - "rustix", - "windows-sys 0.59.0", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "test-utils" -version = "0.1.0" -dependencies = [ - "light-client", - "light-program-test", - "light-token", - "solana-sdk", - "tokio", -] - -[[package]] -name = "testing_table" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f8daae29995a24f65619e19d8d31dea5b389f3d853d8bf297bbf607cd0014cc" -dependencies = [ - "unicode-width", -] - -[[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.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl 2.0.18", -] - -[[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.114", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "thread_local" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "time" -version = "0.3.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinystr" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" -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 = "tokio" -version = "1.49.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" -dependencies = [ - "bytes", - "libc", - "mio", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2 0.6.2", - "tokio-macros", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-macros" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" -dependencies = [ - "rustls 0.21.12", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" -dependencies = [ - "rustls 0.23.36", - "tokio", -] - -[[package]] -name = "tokio-serde" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" -dependencies = [ - "bincode", - "bytes", - "educe 0.4.23", - "futures-core", - "futures-sink", - "pin-project", - "serde", - "serde_json", -] - -[[package]] -name = "tokio-util" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "slab", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[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.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_edit 0.22.27", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap 2.13.0", - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_write", - "winnow", -] - -[[package]] -name = "toml_edit" -version = "0.23.10+spec-1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" -dependencies = [ - "indexmap 2.13.0", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml_parser" -version = "1.0.6+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" -dependencies = [ - "winnow", -] - -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper 1.0.2", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-http" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" -dependencies = [ - "async-compression", - "bitflags 2.10.0", - "bytes", - "futures-core", - "futures-util", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "iri-string", - "pin-project-lite", - "tokio", - "tokio-util 0.7.18", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-opentelemetry" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" -dependencies = [ - "once_cell", - "opentelemetry", - "tracing", - "tracing-core", - "tracing-subscriber", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" -dependencies = [ - "sharded-slab", - "thread_local", - "tracing-core", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typenum" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" - -[[package]] -name = "unicase" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" - -[[package]] -name = "unicode-ident" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - -[[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 = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -dependencies = [ - "void", -] - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[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 = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "uuid" -version = "1.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" -dependencies = [ - "getrandom 0.3.4", - "js-sys", - "serde_core", - "wasm-bindgen", -] - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[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.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.2+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" -dependencies = [ - "cfg-if", - "futures-util", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 2.0.114", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "web-sys" -version = "0.3.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "0.25.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" - -[[package]] -name = "webpki-roots" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.48.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-registry" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" -dependencies = [ - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[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_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[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_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - -[[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_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[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_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[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_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - -[[package]] -name = "winnow" -version = "0.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" - -[[package]] -name = "writeable" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "yoke" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.8.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71ddd76bcebeed25db614f82bf31a9f4222d3fbba300e6fb6c00afa26cbd4d9d" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8187381b52e32220d50b255276aa16a084ec0a9017a0ca2152a1f55c539758d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zerotrie" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zmij" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439" - -[[package]] -name = "zstd" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "7.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" -dependencies = [ - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.16+zstd.1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/program-examples/anchor/programs-sdk/Cargo.toml b/program-examples/anchor/programs-sdk/Cargo.toml deleted file mode 100644 index 6f9a038..0000000 --- a/program-examples/anchor/programs-sdk/Cargo.toml +++ /dev/null @@ -1,43 +0,0 @@ -[workspace] -members = [ - "approve", - "burn", - "close", - "create-ata", - "create-mint", - "create-token-account", - "freeze", - "mint-to", - "mint-to-checked", - "revoke", - "test-utils", - "thaw", - "transfer-interface", - "transfer-checked", -] -resolver = "2" - -[profile.release] -lto = "fat" -codegen-units = 1 -panic = "abort" -overflow-checks = true - -[profile.release.build-override] -opt-level = 3 -incremental = false -codegen-units = 1 - -[workspace.dependencies] -blake3 = { version = "=1.8.2", default-features = false } -anchor-lang = "0.31.1" -borsh = "0.10.4" -tokio = "1.43.0" -solana-sdk = "2.2" -solana-program = "2.2" -light-sdk = { version = "0.19.0", features = ["anchor", "idl-build", "v2", "anchor-discriminator", "cpi-context"] } -light-token = { version = "0.4.0", features = ["anchor"] } -light-token-types = { version = "0.4.0", features = ["anchor"] } -light-token-interface = "0.3.0" -light-program-test = "0.19.0" -light-client = { version = "0.19.0", features = ["v2", "anchor"] } diff --git a/program-examples/anchor/programs-sdk/README.md b/program-examples/anchor/programs-sdk/README.md deleted file mode 100644 index db9d278..0000000 --- a/program-examples/anchor/programs-sdk/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Light Token Anchor Programs using SDK - -- **[approve](approve/src/lib.rs)** - Approve delegate -- **[burn](burn/src/lib.rs)** - Burn tokens -- **[close](close/src/lib.rs)** - Close token account -- **[create-ata](create-ata/src/lib.rs)** - Create associated light-token account -- **[create-mint](create-mint/src/lib.rs)** - Create light-token mint -- **[create-token-account](create-token-account/src/lib.rs)** - Create light-token account -- **[freeze](freeze/src/lib.rs)** - Freeze token account -- **[mint-to](mint-to/src/lib.rs)** - Mint tokens -- **[revoke](revoke/src/lib.rs)** - Revoke delegate -- **[thaw](thaw/src/lib.rs)** - Thaw token account -- **[transfer-checked](transfer-checked/src/lib.rs)** - Transfer with mint validation -- **[transfer-interface](transfer-interface/src/lib.rs)** - Transfer between light-token, T22, and SPL accounts - -## Build and Test - -```bash -# for localnet -npm i -g @lightprotocol/zk-compression-cli@alpha -``` - -```bash -anchor build -``` - -```bash -cargo test-sbf -``` - -## Documentation - -Learn more [about Light-Token here](https://www.zkcompression.com/light-token/welcome). diff --git a/program-examples/anchor/programs-sdk/approve/Cargo.toml b/program-examples/anchor/programs-sdk/approve/Cargo.toml deleted file mode 100644 index 58449e9..0000000 --- a/program-examples/anchor/programs-sdk/approve/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "light-token-anchor-approve" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_approve" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } -test-utils = { path = "../test-utils" } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs-sdk/approve/src/lib.rs b/program-examples/anchor/programs-sdk/approve/src/lib.rs deleted file mode 100644 index 50caad1..0000000 --- a/program-examples/anchor/programs-sdk/approve/src/lib.rs +++ /dev/null @@ -1,36 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::ApproveCpi; - -declare_id!("37XmzKqSG2VD1ZBvzyfbt1HN1mT1bqVAmfzX2ziB3KT1"); - -#[program] -pub mod light_token_anchor_approve { - use super::*; - - pub fn approve(ctx: Context, amount: u64) -> Result<()> { - ApproveCpi { - token_account: ctx.accounts.token_account.to_account_info(), - delegate: ctx.accounts.delegate.to_account_info(), - owner: ctx.accounts.owner.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - amount, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct ApproveAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub token_account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub delegate: AccountInfo<'info>, - pub owner: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/programs-sdk/approve/tests/test.rs b/program-examples/anchor/programs-sdk/approve/tests/test.rs deleted file mode 100644 index 22e2590..0000000 --- a/program-examples/anchor/programs-sdk/approve/tests/test.rs +++ /dev/null @@ -1,44 +0,0 @@ -use anchor_lang::InstructionData; -use light_program_test::Rpc; -use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; -use light_token_anchor_approve::{instruction::Approve, ID}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, - system_program, -}; -use test_utils::{mint_tokens, setup_test_env}; - -#[tokio::test] -async fn test_approve() { - let mut env = setup_test_env("light_token_anchor_approve", ID).await; - - // Mint tokens first - let mint_amount = 1_000_000u64; - mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, mint_amount).await; - - // Call the anchor program to approve delegate - let delegate = Keypair::new(); - let approve_amount = 500_000u64; - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(env.ata, false), - AccountMeta::new_readonly(delegate.pubkey(), false), - AccountMeta::new_readonly(env.payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Approve { amount: approve_amount }.data(), - }; - - let sig = env - .rpc - .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/programs-sdk/burn/Cargo.toml b/program-examples/anchor/programs-sdk/burn/Cargo.toml deleted file mode 100644 index 42e3134..0000000 --- a/program-examples/anchor/programs-sdk/burn/Cargo.toml +++ /dev/null @@ -1,33 +0,0 @@ -[package] -name = "light-token-anchor-burn" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_burn" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } -test-utils = { path = "../test-utils" } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs-sdk/burn/src/lib.rs b/program-examples/anchor/programs-sdk/burn/src/lib.rs deleted file mode 100644 index 0c1a1c3..0000000 --- a/program-examples/anchor/programs-sdk/burn/src/lib.rs +++ /dev/null @@ -1,39 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::BurnCpi; - -declare_id!("2TXVn8AqjfyeJvmFBD3kHJmh6fWkC4HNB5T76BmLKV5c"); - -#[program] -pub mod light_token_anchor_burn { - use super::*; - - pub fn burn(ctx: Context, amount: u64) -> Result<()> { - BurnCpi { - source: ctx.accounts.source.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - amount, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct BurnAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub source: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub mint: AccountInfo<'info>, - pub authority: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/programs-sdk/burn/tests/test.rs b/program-examples/anchor/programs-sdk/burn/tests/test.rs deleted file mode 100644 index d33c9fe..0000000 --- a/program-examples/anchor/programs-sdk/burn/tests/test.rs +++ /dev/null @@ -1,41 +0,0 @@ -use anchor_lang::InstructionData; -use light_program_test::Rpc; -use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; -use light_token_anchor_burn::{instruction::Burn, ID}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signer::Signer, - system_program, -}; -use test_utils::{mint_tokens, setup_test_env}; - -#[tokio::test] -async fn test_burn() { - let mut env = setup_test_env("light_token_anchor_burn", ID).await; - - // Mint tokens first - let mint_amount = 1_000_000u64; - mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, mint_amount).await; - - // Call the anchor program to burn tokens - let burn_amount = 250_000u64; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(env.ata, false), - AccountMeta::new(env.mint_pda, false), - AccountMeta::new_readonly(env.payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Burn { amount: burn_amount }.data(), - }; - - let sig = env - .rpc - .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/programs-sdk/close/Cargo.toml b/program-examples/anchor/programs-sdk/close/Cargo.toml deleted file mode 100644 index e59afd2..0000000 --- a/program-examples/anchor/programs-sdk/close/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "light-token-anchor-close" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_close" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } -test-utils = { path = "../test-utils" } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs-sdk/close/src/lib.rs b/program-examples/anchor/programs-sdk/close/src/lib.rs deleted file mode 100644 index 0003191..0000000 --- a/program-examples/anchor/programs-sdk/close/src/lib.rs +++ /dev/null @@ -1,39 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::CloseAccountCpi; - -declare_id!("GXLCuNhnkRVp596eCdbNsZ9ua1ePbKbb344VKS7V3zQQ"); - -#[program] -pub mod light_token_anchor_close { - use super::*; - - pub fn close_account(ctx: Context) -> Result<()> { - CloseAccountCpi { - token_program: ctx.accounts.light_token_program.to_account_info(), - account: ctx.accounts.account.to_account_info(), - destination: ctx.accounts.destination.to_account_info(), - owner: ctx.accounts.owner.to_account_info(), - rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct CloseAccountAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub owner: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, -} diff --git a/program-examples/anchor/programs-sdk/close/tests/test.rs b/program-examples/anchor/programs-sdk/close/tests/test.rs deleted file mode 100644 index 0a542a0..0000000 --- a/program-examples/anchor/programs-sdk/close/tests/test.rs +++ /dev/null @@ -1,39 +0,0 @@ -use anchor_lang::InstructionData; -use light_program_test::Rpc; -use light_token::instruction::{rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID}; -use light_token_anchor_close::{instruction::CloseAccount, ID}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signer::Signer, -}; -use test_utils::setup_test_env; - -#[tokio::test] -async fn test_close() { - let mut env = setup_test_env("light_token_anchor_close", ID).await; - - // ATA must be empty to close (no mint_tokens call). - - // Call the anchor program to close account - let rent_sponsor = rent_sponsor_pda(); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(env.ata, false), - AccountMeta::new(env.payer.pubkey(), false), - AccountMeta::new_readonly(env.payer.pubkey(), true), - AccountMeta::new(rent_sponsor, false), - ], - data: CloseAccount {}.data(), - }; - - let sig = env - .rpc - .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/programs-sdk/create-ata/Cargo.toml b/program-examples/anchor/programs-sdk/create-ata/Cargo.toml deleted file mode 100644 index 9df7fd1..0000000 --- a/program-examples/anchor/programs-sdk/create-ata/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-create-ata" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_create_ata" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs-sdk/create-ata/src/lib.rs b/program-examples/anchor/programs-sdk/create-ata/src/lib.rs deleted file mode 100644 index 9f60bdd..0000000 --- a/program-examples/anchor/programs-sdk/create-ata/src/lib.rs +++ /dev/null @@ -1,58 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::CreateAssociatedAccountCpi; - -declare_id!("35MukgdfpNUbPMhTmEk63ECV8vjgpNVFRH9nP8ovMN58"); - -#[program] -pub mod light_token_anchor_create_ata { - use super::*; - - pub fn create_ata(ctx: Context, bump: u8, idempotent: bool) -> Result<()> { - let cpi = CreateAssociatedAccountCpi { - payer: ctx.accounts.payer.to_account_info(), - owner: ctx.accounts.owner.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - ata: ctx.accounts.associated_token_account.to_account_info(), - bump, - }; - - if idempotent { - cpi.idempotent().rent_free( - ctx.accounts.compressible_config.to_account_info(), - ctx.accounts.rent_sponsor.to_account_info(), - ctx.accounts.system_program.to_account_info(), - ) - } else { - cpi.rent_free( - ctx.accounts.compressible_config.to_account_info(), - ctx.accounts.rent_sponsor.to_account_info(), - ctx.accounts.system_program.to_account_info(), - ) - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct CreateAtaAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub owner: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - #[account(mut)] - pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub associated_token_account: AccountInfo<'info>, - pub system_program: Program<'info, System>, - /// CHECK: Validated by light-token CPI - pub compressible_config: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, -} diff --git a/program-examples/anchor/programs-sdk/create-ata/tests/test.rs b/program-examples/anchor/programs-sdk/create-ata/tests/test.rs deleted file mode 100644 index 2728fab..0000000 --- a/program-examples/anchor/programs-sdk/create-ata/tests/test.rs +++ /dev/null @@ -1,107 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_create_ata::{instruction::CreateAta, ID}; -use light_token::instruction::{ - CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, derive_token_ata, - find_mint_address, rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_create_ata() { - let config = - ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_ata", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, // ~24 hours rent - write_top_up: 766, // ~3 hours rent per write - }; - - let create_mint_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // You can use light, spl, t22 mints to create a light token ATA. - // Derive ATA address and bump - let (ata, ata_bump) = derive_token_ata(&payer.pubkey(), &mint_pda); - - // Call the anchor program to create ATA - let compressible_config = config_pda(); - let rent_sponsor = rent_sponsor_pda(); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new_readonly(payer.pubkey(), false), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new(ata, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(compressible_config, false), - AccountMeta::new(rent_sponsor, false), - ], - data: CreateAta { - bump: ata_bump, - idempotent: false, - } - .data(), - }; - - let sig = rpc.create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/programs-sdk/create-mint/Cargo.toml b/program-examples/anchor/programs-sdk/create-mint/Cargo.toml deleted file mode 100644 index 42d8ad7..0000000 --- a/program-examples/anchor/programs-sdk/create-mint/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-create-mint" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_create_mint" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs-sdk/create-mint/src/lib.rs b/program-examples/anchor/programs-sdk/create-mint/src/lib.rs deleted file mode 100644 index 642f66e..0000000 --- a/program-examples/anchor/programs-sdk/create-mint/src/lib.rs +++ /dev/null @@ -1,126 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::{CreateMintCpi, CreateMintParams, SystemAccountInfos}; -use light_token::{CompressedProof, ExtensionInstructionData, TokenMetadataInstructionData}; - -declare_id!("A1rJEoepgKYWZYZ8KVFpxgeeRGwBrU7xk8S39srjVkUX"); - -/// Token metadata parameters for creating a mint with metadata. -#[derive(AnchorSerialize, AnchorDeserialize, Clone)] -pub struct TokenMetadataParams { - pub name: Vec, - pub symbol: Vec, - pub uri: Vec, - pub update_authority: Option, -} - -#[program] -pub mod light_token_anchor_create_mint { - use super::*; - - pub fn create_mint( - ctx: Context, - decimals: u8, - address_merkle_tree_root_index: u16, - compression_address: [u8; 32], - proof: CompressedProof, - freeze_authority: Option, - bump: u8, - rent_payment: Option, - write_top_up: Option, - metadata: Option, - ) -> Result<()> { - let mint = light_token::instruction::find_mint_address(ctx.accounts.mint_seed.key).0; - - let extensions = metadata.map(|m| { - vec![ExtensionInstructionData::TokenMetadata( - TokenMetadataInstructionData { - update_authority: m - .update_authority - .map(|p| p.to_bytes().into()), - name: m.name, - symbol: m.symbol, - uri: m.uri, - additional_metadata: None, - }, - )] - }); - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index, - mint_authority: *ctx.accounts.authority.key, - proof, - compression_address, - mint, - bump, - freeze_authority, - extensions, - rent_payment: rent_payment.unwrap_or(16), // Default: ~24 hours - write_top_up: write_top_up.unwrap_or(766), // Default: ~3 hours per write - }; - - let system_accounts = SystemAccountInfos { - light_system_program: ctx.accounts.light_system_program.to_account_info(), - cpi_authority_pda: ctx.accounts.cpi_authority_pda.to_account_info(), - registered_program_pda: ctx.accounts.registered_program_pda.to_account_info(), - account_compression_authority: ctx.accounts.account_compression_authority.to_account_info(), - account_compression_program: ctx.accounts.account_compression_program.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - }; - - CreateMintCpi { - mint_seed: ctx.accounts.mint_seed.to_account_info(), - authority: ctx.accounts.authority.to_account_info(), - payer: ctx.accounts.payer.to_account_info(), - address_tree: ctx.accounts.address_tree.to_account_info(), - output_queue: ctx.accounts.output_queue.to_account_info(), - compressible_config: ctx.accounts.compressible_config.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - rent_sponsor: ctx.accounts.rent_sponsor.to_account_info(), - system_accounts, - cpi_context: None, - cpi_context_account: None, - params, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct CreateMintAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - pub mint_seed: Signer<'info>, - /// CHECK: Validated by light-token CPI - pub authority: AccountInfo<'info>, - #[account(mut)] - pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub address_tree: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub output_queue: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub light_system_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub cpi_authority_pda: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub registered_program_pda: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub account_compression_authority: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub account_compression_program: AccountInfo<'info>, - pub system_program: Program<'info, System>, - /// CHECK: Validated by light-token CPI - use light_token::token::config_pda() - pub compressible_config: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - derived from find_mint_address(mint_seed) - #[account(mut)] - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - use light_token::token::rent_sponsor_pda() - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, -} diff --git a/program-examples/anchor/programs-sdk/create-mint/tests/test.rs b/program-examples/anchor/programs-sdk/create-mint/tests/test.rs deleted file mode 100644 index 2a6f6a7..0000000 --- a/program-examples/anchor/programs-sdk/create-mint/tests/test.rs +++ /dev/null @@ -1,96 +0,0 @@ -use anchor_lang::InstructionData; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_create_mint::{instruction::CreateMint, ID}; -use light_token::instruction::{ - config_pda, derive_mint_compressed_address, find_mint_address, rent_sponsor_pda, - SystemAccounts, LIGHT_TOKEN_PROGRAM_ID, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_create_mint() { - let config = - ProgramTestConfig::new_v2(true, Some(vec![("light_token_anchor_create_mint", ID)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![light_client::indexer::AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let system_accounts = SystemAccounts::default(); - - // Call the anchor program to create mint - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(mint_seed.pubkey(), true), - AccountMeta::new_readonly(mint_authority, false), - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new(address_tree.tree, false), - AccountMeta::new(output_queue, false), - AccountMeta::new_readonly(system_accounts.light_system_program, false), - AccountMeta::new_readonly(system_accounts.cpi_authority_pda, false), - AccountMeta::new_readonly(system_accounts.registered_program_pda, false), - AccountMeta::new_readonly(system_accounts.account_compression_authority, false), - AccountMeta::new_readonly(system_accounts.account_compression_program, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(config_pda(), false), - AccountMeta::new(mint_pda, false), - AccountMeta::new(rent_sponsor_pda(), false), - ], - data: CreateMint { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - compression_address: compression_address.into(), - proof: rpc_result.proof.0.unwrap(), - freeze_authority: None, - bump, - rent_payment: Some(16), // ~24 hours rent - write_top_up: Some(766), // ~3 hours rent per write - metadata: None, - } - .data(), - }; - - let sig = rpc - .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - let compressed_account = rpc - .get_compressed_account(compression_address, None) - .await - .unwrap() - .value; - - assert!(compressed_account.is_some(), "Light-mint should exist"); - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/programs-sdk/create-token-account/Cargo.toml b/program-examples/anchor/programs-sdk/create-token-account/Cargo.toml deleted file mode 100644 index 974dfe4..0000000 --- a/program-examples/anchor/programs-sdk/create-token-account/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-create-token-account" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_create_token_account" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs-sdk/create-token-account/src/lib.rs b/program-examples/anchor/programs-sdk/create-token-account/src/lib.rs deleted file mode 100644 index 6d2e004..0000000 --- a/program-examples/anchor/programs-sdk/create-token-account/src/lib.rs +++ /dev/null @@ -1,47 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::CreateTokenAccountCpi; - -declare_id!("zXK1CnWj4WFfFHCArxxr4sh3Qqx2p3oui8ahqpjArgS"); - -#[program] -pub mod light_token_anchor_create_token_account { - use super::*; - - pub fn create_token_account(ctx: Context, owner: Pubkey) -> Result<()> { - CreateTokenAccountCpi { - payer: ctx.accounts.payer.to_account_info(), - account: ctx.accounts.account.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - owner, - } - .rent_free( - ctx.accounts.compressible_config.to_account_info(), - ctx.accounts.rent_sponsor.to_account_info(), - ctx.accounts.system_program.to_account_info(), - &ctx.accounts.light_token_program.key(), - ) - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct CreateTokenAccountAccounts<'info> { - #[account(mut)] - pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub compressible_config: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub rent_sponsor: AccountInfo<'info>, - pub system_program: Program<'info, System>, - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, -} diff --git a/program-examples/anchor/programs-sdk/create-token-account/tests/test.rs b/program-examples/anchor/programs-sdk/create-token-account/tests/test.rs deleted file mode 100644 index 3fdef55..0000000 --- a/program-examples/anchor/programs-sdk/create-token-account/tests/test.rs +++ /dev/null @@ -1,106 +0,0 @@ -use anchor_lang::InstructionData; -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token_anchor_create_token_account::{instruction::CreateTokenAccount, ID}; -use light_token::instruction::{ - CreateMint, CreateMintParams, config_pda, derive_mint_compressed_address, - find_mint_address, rent_sponsor_pda, LIGHT_TOKEN_PROGRAM_ID, -}; -use anchor_lang::system_program; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - pubkey::Pubkey, - signature::Keypair, - signer::Signer, -}; - -#[tokio::test] -async fn test_create_token_account() { - let config = ProgramTestConfig::new_v2( - true, - Some(vec![("light_token_anchor_create_token_account", ID)]), - ); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - // Create a mint first - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority: None, - extensions: None, - rent_payment: 16, // ~24 hours rent - write_top_up: 766, // ~3 hours rent per write - }; - - let create_mint_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_mint_ix], &payer.pubkey(), &[&payer, &mint_seed]) - .await - .unwrap(); - - // You can use light, spl, t22 mints to create a light token account. - // Create a token account - let token_account = Keypair::new(); - let owner = payer.pubkey(); - let compressible_config = config_pda(); - let rent_sponsor = rent_sponsor_pda(); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new(payer.pubkey(), true), - AccountMeta::new(token_account.pubkey(), true), - AccountMeta::new_readonly(mint_pda, false), - AccountMeta::new_readonly(compressible_config, false), - AccountMeta::new(rent_sponsor, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - ], - data: CreateTokenAccount { owner }.data(), - }; - - let sig = rpc - .create_and_send_transaction(&[ix], &payer.pubkey(), &[&payer, &token_account]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/programs-sdk/freeze/Cargo.toml b/program-examples/anchor/programs-sdk/freeze/Cargo.toml deleted file mode 100644 index 03bb5d0..0000000 --- a/program-examples/anchor/programs-sdk/freeze/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "light-token-anchor-freeze" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_freeze" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } -test-utils = { path = "../test-utils" } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs-sdk/freeze/src/lib.rs b/program-examples/anchor/programs-sdk/freeze/src/lib.rs deleted file mode 100644 index 59a4942..0000000 --- a/program-examples/anchor/programs-sdk/freeze/src/lib.rs +++ /dev/null @@ -1,33 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::FreezeCpi; - -declare_id!("JBMzMJX4sqCQfNVbosP2oqP1KZ5ZDWiwYTrupk687qXZ"); - -#[program] -pub mod light_token_anchor_freeze { - use super::*; - - pub fn freeze(ctx: Context) -> Result<()> { - FreezeCpi { - token_account: ctx.accounts.token_account.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - freeze_authority: ctx.accounts.freeze_authority.to_account_info(), - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct FreezeAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub token_account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - pub freeze_authority: Signer<'info>, -} diff --git a/program-examples/anchor/programs-sdk/freeze/tests/test.rs b/program-examples/anchor/programs-sdk/freeze/tests/test.rs deleted file mode 100644 index 105597c..0000000 --- a/program-examples/anchor/programs-sdk/freeze/tests/test.rs +++ /dev/null @@ -1,37 +0,0 @@ -use anchor_lang::InstructionData; -use light_program_test::Rpc; -use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; -use light_token_anchor_freeze::{instruction::Freeze, ID}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signer::Signer, -}; -use test_utils::{mint_tokens, setup_test_env_with_freeze}; - -#[tokio::test] -async fn test_freeze() { - let mut env = setup_test_env_with_freeze("light_token_anchor_freeze", ID).await; - - // Mint tokens first - mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, 1_000_000).await; - - // Call the anchor program to freeze account - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(env.ata, false), - AccountMeta::new_readonly(env.mint_pda, false), - AccountMeta::new_readonly(env.freeze_authority, true), - ], - data: Freeze {}.data(), - }; - - let sig = env - .rpc - .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/programs-sdk/mint-to-checked/Cargo.toml b/program-examples/anchor/programs-sdk/mint-to-checked/Cargo.toml deleted file mode 100644 index e494d47..0000000 --- a/program-examples/anchor/programs-sdk/mint-to-checked/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "light-token-anchor-mint-to-checked" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_mint_to_checked" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } -test-utils = { path = "../test-utils" } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs-sdk/mint-to-checked/src/lib.rs b/program-examples/anchor/programs-sdk/mint-to-checked/src/lib.rs deleted file mode 100644 index d5baaaa..0000000 --- a/program-examples/anchor/programs-sdk/mint-to-checked/src/lib.rs +++ /dev/null @@ -1,44 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::MintToCheckedCpi; - -declare_id!("DGu3ofzac2Zndn95z2q9gCp8zHgW22YpMeEWj2up3QDb"); - -#[program] -pub mod light_token_anchor_mint_to_checked { - use super::*; - - pub fn mint_to_checked( - ctx: Context, - amount: u64, - decimals: u8, - ) -> Result<()> { - MintToCheckedCpi { - mint: ctx.accounts.mint.to_account_info(), - destination: ctx.accounts.destination.to_account_info(), - amount, - decimals, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct MintToCheckedAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub authority: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/programs-sdk/mint-to-checked/tests/test.rs b/program-examples/anchor/programs-sdk/mint-to-checked/tests/test.rs deleted file mode 100644 index 8288a27..0000000 --- a/program-examples/anchor/programs-sdk/mint-to-checked/tests/test.rs +++ /dev/null @@ -1,40 +0,0 @@ -use anchor_lang::InstructionData; -use light_program_test::Rpc; -use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; -use light_token_anchor_mint_to_checked::{instruction::MintToChecked, ID}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signer::Signer, - system_program, -}; -use test_utils::setup_test_env; - -#[tokio::test(flavor = "multi_thread")] -async fn test_mint_to_checked() { - let mut env = setup_test_env("light_token_anchor_mint_to_checked", ID).await; - - // MintToChecked validates decimals match the mint's decimals. - // No mint_tokens call - the test IS minting tokens via CPI. - let amount = 1_000_000u64; - let decimals = 9u8; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(env.mint_pda, false), - AccountMeta::new(env.ata, false), - AccountMeta::new_readonly(env.payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: MintToChecked { amount, decimals }.data(), - }; - - env.rpc - .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) - .await - .unwrap(); - - // Verify the account exists and has data - let ata_data = env.rpc.get_account(env.ata).await.unwrap().unwrap(); - assert!(!ata_data.data.is_empty(), "ATA account should have data"); -} diff --git a/program-examples/anchor/programs-sdk/mint-to/Cargo.toml b/program-examples/anchor/programs-sdk/mint-to/Cargo.toml deleted file mode 100644 index 80f5772..0000000 --- a/program-examples/anchor/programs-sdk/mint-to/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "light-token-anchor-mint-to" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_mint_to" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } -test-utils = { path = "../test-utils" } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs-sdk/mint-to/src/lib.rs b/program-examples/anchor/programs-sdk/mint-to/src/lib.rs deleted file mode 100644 index 25a9015..0000000 --- a/program-examples/anchor/programs-sdk/mint-to/src/lib.rs +++ /dev/null @@ -1,39 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::MintToCpi; - -declare_id!("8bXEVmHLtAVqDLJp1dYWAZ61WQmqQKoTQ8LpPbRoUDCp"); - -#[program] -pub mod light_token_anchor_mint_to { - use super::*; - - pub fn mint_to(ctx: Context, amount: u64) -> Result<()> { - MintToCpi { - mint: ctx.accounts.mint.to_account_info(), - destination: ctx.accounts.destination.to_account_info(), - amount, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct MintToAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub authority: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/programs-sdk/mint-to/tests/test.rs b/program-examples/anchor/programs-sdk/mint-to/tests/test.rs deleted file mode 100644 index 916ee15..0000000 --- a/program-examples/anchor/programs-sdk/mint-to/tests/test.rs +++ /dev/null @@ -1,38 +0,0 @@ -use anchor_lang::InstructionData; -use light_program_test::Rpc; -use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; -use light_token_anchor_mint_to::{instruction::MintTo, ID}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signer::Signer, - system_program, -}; -use test_utils::setup_test_env; - -#[tokio::test(flavor = "multi_thread")] -async fn test_mint_to() { - let mut env = setup_test_env("light_token_anchor_mint_to", ID).await; - - // No mint_tokens call - the test IS minting tokens via CPI. - let amount = 1_000_000u64; - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(env.mint_pda, false), - AccountMeta::new(env.ata, false), - AccountMeta::new_readonly(env.payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: MintTo { amount }.data(), - }; - - env.rpc - .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) - .await - .unwrap(); - - // Verify the account exists and has data - let ata_data = env.rpc.get_account(env.ata).await.unwrap().unwrap(); - assert!(!ata_data.data.is_empty(), "ATA account should have data"); -} diff --git a/program-examples/anchor/programs-sdk/revoke/Cargo.toml b/program-examples/anchor/programs-sdk/revoke/Cargo.toml deleted file mode 100644 index 5f2780c..0000000 --- a/program-examples/anchor/programs-sdk/revoke/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "light-token-anchor-revoke" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_revoke" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } -test-utils = { path = "../test-utils" } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs-sdk/revoke/src/lib.rs b/program-examples/anchor/programs-sdk/revoke/src/lib.rs deleted file mode 100644 index 9ab13a7..0000000 --- a/program-examples/anchor/programs-sdk/revoke/src/lib.rs +++ /dev/null @@ -1,32 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::RevokeCpi; - -declare_id!("G3ph4MK5qaSdxYnfxToETg31AHEMMqVhPuMRgBhk38tQ"); - -#[program] -pub mod light_token_anchor_revoke { - use super::*; - - pub fn revoke(ctx: Context) -> Result<()> { - RevokeCpi { - token_account: ctx.accounts.token_account.to_account_info(), - owner: ctx.accounts.owner.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct RevokeAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub token_account: AccountInfo<'info>, - pub owner: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/programs-sdk/revoke/tests/test.rs b/program-examples/anchor/programs-sdk/revoke/tests/test.rs deleted file mode 100644 index 93efa2b..0000000 --- a/program-examples/anchor/programs-sdk/revoke/tests/test.rs +++ /dev/null @@ -1,56 +0,0 @@ -use anchor_lang::InstructionData; -use light_program_test::Rpc; -use light_token::instruction::{Approve, LIGHT_TOKEN_PROGRAM_ID}; -use light_token_anchor_revoke::{instruction::Revoke, ID}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, - system_program, -}; -use test_utils::{mint_tokens, setup_test_env}; - -#[tokio::test] -async fn test_revoke() { - let mut env = setup_test_env("light_token_anchor_revoke", ID).await; - - // Mint tokens first - let mint_amount = 1_000_000u64; - mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, mint_amount).await; - - // Approve delegate first using SDK - let delegate = Keypair::new(); - let approve_ix = Approve { - token_account: env.ata, - delegate: delegate.pubkey(), - owner: env.payer.pubkey(), - amount: 500_000, - } - .instruction() - .unwrap(); - - env.rpc - .create_and_send_transaction(&[approve_ix], &env.payer.pubkey(), &[&env.payer]) - .await - .unwrap(); - - // Call the anchor program to revoke delegation - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(env.ata, false), - AccountMeta::new_readonly(env.payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Revoke {}.data(), - }; - - let sig = env - .rpc - .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/programs-sdk/test-utils/Cargo.toml b/program-examples/anchor/programs-sdk/test-utils/Cargo.toml deleted file mode 100644 index 05458c4..0000000 --- a/program-examples/anchor/programs-sdk/test-utils/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "test-utils" -version = "0.1.0" -edition = "2021" - -[dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token = { workspace = true } -solana-sdk = { workspace = true } -tokio = { workspace = true } diff --git a/program-examples/anchor/programs-sdk/test-utils/src/lib.rs b/program-examples/anchor/programs-sdk/test-utils/src/lib.rs deleted file mode 100644 index 63d1056..0000000 --- a/program-examples/anchor/programs-sdk/test-utils/src/lib.rs +++ /dev/null @@ -1,174 +0,0 @@ -//! Shared test utilities for programs-sdk examples. - -use light_client::indexer::AddressWithTree; -use light_program_test::{Indexer, LightProgramTest, ProgramTestConfig, Rpc}; -use light_token::instruction::{ - CreateAssociatedTokenAccount, CreateMint, CreateMintParams, MintTo, - derive_mint_compressed_address, derive_token_ata, find_mint_address, -}; -use solana_sdk::{pubkey::Pubkey, signature::Keypair, signer::Signer}; - -/// Test environment with RPC, payer, and mint details. -pub struct TestEnv { - pub rpc: LightProgramTest, - pub payer: Keypair, - pub mint_pda: Pubkey, - pub ata: Pubkey, -} - -/// Test environment with freeze authority enabled on mint. -pub struct TestEnvWithFreeze { - pub rpc: LightProgramTest, - pub payer: Keypair, - pub mint_pda: Pubkey, - pub ata: Pubkey, - pub freeze_authority: Pubkey, -} - -/// Sets up a test environment with an initialized Light token mint and ATA. -pub async fn setup_test_env(program_name: &'static str, program_id: Pubkey) -> TestEnv { - let config = ProgramTestConfig::new_v2(true, Some(vec![(program_name, program_id)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - - let (mint_pda, _mint_seed) = create_mint(&mut rpc, &payer, None).await; - let ata = create_ata(&mut rpc, &payer, &mint_pda).await; - - TestEnv { - rpc, - payer, - mint_pda, - ata, - } -} - -/// Sets up a test environment with freeze authority enabled on the mint. -pub async fn setup_test_env_with_freeze( - program_name: &'static str, - program_id: Pubkey, -) -> TestEnvWithFreeze { - let config = ProgramTestConfig::new_v2(true, Some(vec![(program_name, program_id)])); - let mut rpc = LightProgramTest::new(config).await.unwrap(); - let payer = rpc.get_payer().insecure_clone(); - let freeze_authority = payer.pubkey(); - - let (mint_pda, _mint_seed) = create_mint(&mut rpc, &payer, Some(freeze_authority)).await; - let ata = create_ata(&mut rpc, &payer, &mint_pda).await; - - TestEnvWithFreeze { - rpc, - payer, - mint_pda, - ata, - freeze_authority, - } -} - -/// Creates a Light-mint with optional freeze authority. Returns its PDA and seed keypair. -pub async fn create_mint( - rpc: &mut LightProgramTest, - payer: &Keypair, - freeze_authority: Option, -) -> (Pubkey, Keypair) { - let mint_seed = Keypair::new(); - let mint_authority = payer.pubkey(); - let decimals = 9u8; - - let address_tree = rpc.get_address_tree_v2(); - let output_queue = rpc.get_random_state_tree_info().unwrap().queue; - - let compression_address = - derive_mint_compressed_address(&mint_seed.pubkey(), &address_tree.tree); - let (mint_pda, bump) = find_mint_address(&mint_seed.pubkey()); - - let rpc_result = rpc - .get_validity_proof( - vec![], - vec![AddressWithTree { - address: compression_address, - tree: address_tree.tree, - }], - None, - ) - .await - .unwrap() - .value; - - let params = CreateMintParams { - decimals, - address_merkle_tree_root_index: rpc_result.addresses[0].root_index, - mint_authority, - proof: rpc_result.proof.0.unwrap(), - compression_address, - mint: mint_pda, - bump, - freeze_authority, - extensions: None, - rent_payment: 16, - write_top_up: 766, - }; - - let create_ix = CreateMint::new( - params, - mint_seed.pubkey(), - payer.pubkey(), - address_tree.tree, - output_queue, - ) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ix], &payer.pubkey(), &[payer, &mint_seed]) - .await - .unwrap(); - - (mint_pda, mint_seed) -} - -/// Creates a Light-ATA for the payer. -pub async fn create_ata(rpc: &mut LightProgramTest, payer: &Keypair, mint_pda: &Pubkey) -> Pubkey { - create_ata_for_owner(rpc, payer, &payer.pubkey(), mint_pda).await -} - -/// Creates a Light-ATA for a specific owner. -pub async fn create_ata_for_owner( - rpc: &mut LightProgramTest, - payer: &Keypair, - owner: &Pubkey, - mint_pda: &Pubkey, -) -> Pubkey { - let (ata, _) = derive_token_ata(owner, mint_pda); - let create_ata_ix = CreateAssociatedTokenAccount::new(payer.pubkey(), *owner, *mint_pda) - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[create_ata_ix], &payer.pubkey(), &[payer]) - .await - .unwrap(); - - ata -} - -/// Mints tokens to the specified ATA. -pub async fn mint_tokens( - rpc: &mut LightProgramTest, - payer: &Keypair, - mint_pda: Pubkey, - ata: Pubkey, - amount: u64, -) { - let mint_to_ix = MintTo { - mint: mint_pda, - destination: ata, - amount, - authority: payer.pubkey(), - max_top_up: None, - fee_payer: None, - } - .instruction() - .unwrap(); - - rpc.create_and_send_transaction(&[mint_to_ix], &payer.pubkey(), &[payer]) - .await - .unwrap(); -} diff --git a/program-examples/anchor/programs-sdk/thaw/Cargo.toml b/program-examples/anchor/programs-sdk/thaw/Cargo.toml deleted file mode 100644 index f5b17ca..0000000 --- a/program-examples/anchor/programs-sdk/thaw/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "light-token-anchor-thaw" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_thaw" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-client = { workspace = true } -light-token-interface = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } -test-utils = { path = "../test-utils" } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs-sdk/thaw/src/lib.rs b/program-examples/anchor/programs-sdk/thaw/src/lib.rs deleted file mode 100644 index 93e9f6e..0000000 --- a/program-examples/anchor/programs-sdk/thaw/src/lib.rs +++ /dev/null @@ -1,33 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::ThawCpi; - -declare_id!("7j94EF5hSkDLf7R26bjrd8Qc6s3oLAQpcKiF3re8JYw9"); - -#[program] -pub mod light_token_anchor_thaw { - use super::*; - - pub fn thaw(ctx: Context) -> Result<()> { - ThawCpi { - token_account: ctx.accounts.token_account.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - freeze_authority: ctx.accounts.freeze_authority.to_account_info(), - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct ThawAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub token_account: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - pub freeze_authority: Signer<'info>, -} diff --git a/program-examples/anchor/programs-sdk/thaw/tests/test.rs b/program-examples/anchor/programs-sdk/thaw/tests/test.rs deleted file mode 100644 index 39530d1..0000000 --- a/program-examples/anchor/programs-sdk/thaw/tests/test.rs +++ /dev/null @@ -1,51 +0,0 @@ -use anchor_lang::InstructionData; -use light_program_test::Rpc; -use light_token::instruction::{Freeze, LIGHT_TOKEN_PROGRAM_ID}; -use light_token_anchor_thaw::{instruction::Thaw, ID}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signer::Signer, -}; -use test_utils::{mint_tokens, setup_test_env_with_freeze}; - -#[tokio::test] -async fn test_thaw() { - let mut env = setup_test_env_with_freeze("light_token_anchor_thaw", ID).await; - - // Mint tokens first - mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, 1_000_000).await; - - // Freeze account first using SDK - let freeze_ix = Freeze { - token_account: env.ata, - mint: env.mint_pda, - freeze_authority: env.freeze_authority, - } - .instruction() - .unwrap(); - - env.rpc - .create_and_send_transaction(&[freeze_ix], &env.payer.pubkey(), &[&env.payer]) - .await - .unwrap(); - - // Call the anchor program to thaw account - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(env.ata, false), - AccountMeta::new_readonly(env.mint_pda, false), - AccountMeta::new_readonly(env.freeze_authority, true), - ], - data: Thaw {}.data(), - }; - - let sig = env - .rpc - .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/programs-sdk/transfer-checked/Cargo.toml b/program-examples/anchor/programs-sdk/transfer-checked/Cargo.toml deleted file mode 100644 index 888029e..0000000 --- a/program-examples/anchor/programs-sdk/transfer-checked/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "light-token-anchor-transfer-checked" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_transfer_checked" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-token = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } -test-utils = { path = "../test-utils" } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs-sdk/transfer-checked/src/lib.rs b/program-examples/anchor/programs-sdk/transfer-checked/src/lib.rs deleted file mode 100644 index 0d82277..0000000 --- a/program-examples/anchor/programs-sdk/transfer-checked/src/lib.rs +++ /dev/null @@ -1,47 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::TransferCheckedCpi; - -declare_id!("HXmfewpozFdxhM8BayL9v5541gwoGMXTrUoip5KySs2f"); - -#[program] -pub mod light_token_anchor_transfer_checked { - use super::*; - - pub fn transfer_checked( - ctx: Context, - amount: u64, - decimals: u8, - ) -> Result<()> { - TransferCheckedCpi { - source: ctx.accounts.source.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - destination: ctx.accounts.destination.to_account_info(), - amount, - decimals, - authority: ctx.accounts.authority.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - max_top_up: None, - fee_payer: None, - } - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct TransferCheckedAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub source: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - pub mint: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub authority: Signer<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/programs-sdk/transfer-checked/tests/test.rs b/program-examples/anchor/programs-sdk/transfer-checked/tests/test.rs deleted file mode 100644 index 0215531..0000000 --- a/program-examples/anchor/programs-sdk/transfer-checked/tests/test.rs +++ /dev/null @@ -1,53 +0,0 @@ -use anchor_lang::InstructionData; -use light_program_test::Rpc; -use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; -use light_token_anchor_transfer_checked::{instruction::TransferChecked, ID}; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - signature::Keypair, - signer::Signer, - system_program, -}; -use test_utils::{create_ata_for_owner, mint_tokens, setup_test_env}; - -#[tokio::test] -async fn test_transfer_checked() { - let mut env = setup_test_env("light_token_anchor_transfer_checked", ID).await; - mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, 1_000_000).await; - - // Create destination ATA for recipient - let recipient = Keypair::new(); - let dest_ata = - create_ata_for_owner(&mut env.rpc, &env.payer, &recipient.pubkey(), &env.mint_pda).await; - - // TransferChecked validates decimals match the mint's decimals. - // Only use for Light->Light transfers. - // Use TransferInterface for all other transfers (Light, SPL or Token-2022). - let transfer_amount = 100_000u64; - let decimals = 9u8; - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(env.ata, false), - AccountMeta::new_readonly(env.mint_pda, false), - AccountMeta::new(dest_ata, false), - AccountMeta::new_readonly(env.payer.pubkey(), true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: TransferChecked { - amount: transfer_amount, - decimals, - } - .data(), - }; - - let sig = env - .rpc - .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/programs-sdk/transfer-interface/Cargo.toml b/program-examples/anchor/programs-sdk/transfer-interface/Cargo.toml deleted file mode 100644 index d3d598a..0000000 --- a/program-examples/anchor/programs-sdk/transfer-interface/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "light-token-anchor-transfer-interface" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "light_token_anchor_transfer_interface" - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] -default = ["idl-build"] -idl-build = ["anchor-lang/idl-build", "light-sdk/idl-build"] - -[dependencies] -anchor-lang = { workspace = true } -light-sdk = { workspace = true } -light-token = { workspace = true } - -[dev-dependencies] -light-program-test = { workspace = true } -light-token = { workspace = true } -light-token-types = { workspace = true } -borsh = { workspace = true } -tokio = { workspace = true } -solana-sdk = { workspace = true } -test-utils = { path = "../test-utils" } - -[lints.rust.unexpected_cfgs] -level = "allow" -check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/program-examples/anchor/programs-sdk/transfer-interface/src/lib.rs b/program-examples/anchor/programs-sdk/transfer-interface/src/lib.rs deleted file mode 100644 index c3ffb88..0000000 --- a/program-examples/anchor/programs-sdk/transfer-interface/src/lib.rs +++ /dev/null @@ -1,44 +0,0 @@ -#![allow(unexpected_cfgs, deprecated)] - -use anchor_lang::prelude::*; -use light_token::instruction::TransferInterfaceCpi; - -declare_id!("3rb6sG4jiYNLZC8jo8kLsFHpxr2Ci8e8Hh8UmeCMZmUV"); - -#[program] -pub mod light_token_anchor_transfer_interface { - use super::*; - - pub fn transfer(ctx: Context, amount: u64, decimals: u8) -> Result<()> { - TransferInterfaceCpi::new( - amount, - decimals, - ctx.accounts.source.to_account_info(), - ctx.accounts.destination.to_account_info(), - ctx.accounts.authority.to_account_info(), - ctx.accounts.payer.to_account_info(), - ctx.accounts.cpi_authority.to_account_info(), - ctx.accounts.system_program.to_account_info(), - ) - .invoke()?; - Ok(()) - } -} - -#[derive(Accounts)] -pub struct TransferAccounts<'info> { - /// CHECK: Light token program for CPI - pub light_token_program: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub source: AccountInfo<'info>, - /// CHECK: Validated by light-token CPI - #[account(mut)] - pub destination: AccountInfo<'info>, - pub authority: Signer<'info>, - #[account(mut)] - pub payer: Signer<'info>, - /// CHECK: Validated by light-token CPI - pub cpi_authority: AccountInfo<'info>, - pub system_program: Program<'info, System>, -} diff --git a/program-examples/anchor/programs-sdk/transfer-interface/tests/test.rs b/program-examples/anchor/programs-sdk/transfer-interface/tests/test.rs deleted file mode 100644 index 410720c..0000000 --- a/program-examples/anchor/programs-sdk/transfer-interface/tests/test.rs +++ /dev/null @@ -1,55 +0,0 @@ -use anchor_lang::system_program; -use anchor_lang::InstructionData; -use light_program_test::Rpc; -use light_token::instruction::LIGHT_TOKEN_PROGRAM_ID; -use light_token_anchor_transfer_interface::{instruction::Transfer, ID}; -use light_token_types::CPI_AUTHORITY_PDA; -use solana_sdk::{ - instruction::{AccountMeta, Instruction}, - pubkey::Pubkey, - signature::Keypair, - signer::Signer, -}; -use test_utils::{create_ata_for_owner, mint_tokens, setup_test_env}; - -#[tokio::test] -async fn test_transfer() { - let mut env = setup_test_env("light_token_anchor_transfer_interface", ID).await; - mint_tokens(&mut env.rpc, &env.payer, env.mint_pda, env.ata, 1_000_000).await; - - // Create destination ATA for recipient - let recipient = Keypair::new(); - let dest_ata = - create_ata_for_owner(&mut env.rpc, &env.payer, &recipient.pubkey(), &env.mint_pda).await; - - // Transfers tokens between accounts (SPL, Token-2022, or Light) in a single call. - let transfer_amount = 100_000u64; - let decimals = 9u8; - let cpi_authority_pda = Pubkey::new_from_array(CPI_AUTHORITY_PDA); - - let ix = Instruction { - program_id: ID, - accounts: vec![ - AccountMeta::new_readonly(LIGHT_TOKEN_PROGRAM_ID, false), - AccountMeta::new(env.ata, false), - AccountMeta::new(dest_ata, false), - AccountMeta::new_readonly(env.payer.pubkey(), true), - AccountMeta::new(env.payer.pubkey(), true), - AccountMeta::new_readonly(cpi_authority_pda, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Transfer { - amount: transfer_amount, - decimals, - } - .data(), - }; - - let sig = env - .rpc - .create_and_send_transaction(&[ix], &env.payer.pubkey(), &[&env.payer]) - .await - .unwrap(); - - println!("Tx: {}", sig); -} diff --git a/program-examples/anchor/rust-toolchain.toml b/program-examples/anchor/rust-toolchain.toml deleted file mode 100644 index 43e5784..0000000 --- a/program-examples/anchor/rust-toolchain.toml +++ /dev/null @@ -1,3 +0,0 @@ -[toolchain] -channel = "1.90.0" -components = ["rustfmt", "clippy"]