From 8da148842ae34b8635fb68b2e7d2791810e7fe5f Mon Sep 17 00:00:00 2001 From: Jo D Date: Mon, 3 Aug 2026 11:55:53 -0400 Subject: [PATCH 1/6] feat(cryptography): add crypto syscall examples ported from crypto-primitives Five standalone Pinocchio examples in a new cryptography/ category: alt-bn128-g2 (SIMD-0302 G2 add/mul), bls12-381 (G1/G2 group ops), bls-multisig (aggregate BLS verify over BN254, stateless + stateful), bls-key-registry (running aggregate G2 key), and encrypted-ballot (twisted ElGamal tally on ristretto255). Each example carries mocha+kit+litesvm TypeScript tests and Rust integration tests on litesvm 0.15, pinned inline because the workspace litesvm 0.11 predates the alt_bn128 G2 and bls12-381 syscalls. The Cargo.lock additions are aligned to litesvm's own lockfile to keep the solana crate family on one wincode line. --- Cargo.lock | 1644 ++++++++-- Cargo.toml | 7 + README.md | 34 + cryptography/alt-bn128-g2/pinocchio/README.md | 18 + .../alt-bn128-g2/pinocchio/package.json | 24 + .../alt-bn128-g2/pinocchio/pnpm-lock.yaml | 2825 +++++++++++++++++ .../alt-bn128-g2/pinocchio/program/Cargo.toml | 25 + .../alt-bn128-g2/pinocchio/program/src/lib.rs | 110 + .../pinocchio/program/tests/test.rs | 75 + .../pinocchio/tests/alt-bn128-g2.test.ts | 83 + .../alt-bn128-g2/pinocchio/tsconfig.json | 15 + .../bls-key-registry/pinocchio/README.md | 18 + .../bls-key-registry/pinocchio/package.json | 24 + .../bls-key-registry/pinocchio/pnpm-lock.yaml | 2825 +++++++++++++++++ .../pinocchio/program/Cargo.toml | 26 + .../pinocchio/program/src/lib.rs | 149 + .../pinocchio/program/tests/test.rs | 133 + .../pinocchio/tests/bls-key-registry.test.ts | 149 + .../bls-key-registry/pinocchio/tsconfig.json | 15 + cryptography/bls-multisig/pinocchio/README.md | 19 + .../bls-multisig/pinocchio/package.json | 24 + .../bls-multisig/pinocchio/pnpm-lock.yaml | 2825 +++++++++++++++++ .../bls-multisig/pinocchio/program/Cargo.toml | 26 + .../pinocchio/program/src/bn254.rs | 83 + .../bls-multisig/pinocchio/program/src/lib.rs | 157 + .../pinocchio/program/tests/test.rs | 160 + .../pinocchio/tests/bls-multisig.test.ts | 168 + .../bls-multisig/pinocchio/tsconfig.json | 15 + cryptography/bls12-381/pinocchio/README.md | 22 + cryptography/bls12-381/pinocchio/package.json | 24 + .../bls12-381/pinocchio/pnpm-lock.yaml | 2825 +++++++++++++++++ .../bls12-381/pinocchio/program/Cargo.toml | 25 + .../bls12-381/pinocchio/program/src/lib.rs | 121 + .../bls12-381/pinocchio/program/tests/test.rs | 98 + .../pinocchio/tests/bls12-381.test.ts | 111 + .../bls12-381/pinocchio/tsconfig.json | 15 + .../encrypted-ballot/pinocchio/README.md | 17 + .../encrypted-ballot/pinocchio/package.json | 24 + .../encrypted-ballot/pinocchio/pnpm-lock.yaml | 2825 +++++++++++++++++ .../pinocchio/program/Cargo.toml | 26 + .../pinocchio/program/src/lib.rs | 112 + .../pinocchio/program/tests/test.rs | 100 + .../pinocchio/tests/encrypted-ballot.test.ts | 127 + .../encrypted-ballot/pinocchio/tsconfig.json | 15 + 44 files changed, 17839 insertions(+), 324 deletions(-) create mode 100644 cryptography/alt-bn128-g2/pinocchio/README.md create mode 100644 cryptography/alt-bn128-g2/pinocchio/package.json create mode 100644 cryptography/alt-bn128-g2/pinocchio/pnpm-lock.yaml create mode 100644 cryptography/alt-bn128-g2/pinocchio/program/Cargo.toml create mode 100644 cryptography/alt-bn128-g2/pinocchio/program/src/lib.rs create mode 100644 cryptography/alt-bn128-g2/pinocchio/program/tests/test.rs create mode 100644 cryptography/alt-bn128-g2/pinocchio/tests/alt-bn128-g2.test.ts create mode 100644 cryptography/alt-bn128-g2/pinocchio/tsconfig.json create mode 100644 cryptography/bls-key-registry/pinocchio/README.md create mode 100644 cryptography/bls-key-registry/pinocchio/package.json create mode 100644 cryptography/bls-key-registry/pinocchio/pnpm-lock.yaml create mode 100644 cryptography/bls-key-registry/pinocchio/program/Cargo.toml create mode 100644 cryptography/bls-key-registry/pinocchio/program/src/lib.rs create mode 100644 cryptography/bls-key-registry/pinocchio/program/tests/test.rs create mode 100644 cryptography/bls-key-registry/pinocchio/tests/bls-key-registry.test.ts create mode 100644 cryptography/bls-key-registry/pinocchio/tsconfig.json create mode 100644 cryptography/bls-multisig/pinocchio/README.md create mode 100644 cryptography/bls-multisig/pinocchio/package.json create mode 100644 cryptography/bls-multisig/pinocchio/pnpm-lock.yaml create mode 100644 cryptography/bls-multisig/pinocchio/program/Cargo.toml create mode 100644 cryptography/bls-multisig/pinocchio/program/src/bn254.rs create mode 100644 cryptography/bls-multisig/pinocchio/program/src/lib.rs create mode 100644 cryptography/bls-multisig/pinocchio/program/tests/test.rs create mode 100644 cryptography/bls-multisig/pinocchio/tests/bls-multisig.test.ts create mode 100644 cryptography/bls-multisig/pinocchio/tsconfig.json create mode 100644 cryptography/bls12-381/pinocchio/README.md create mode 100644 cryptography/bls12-381/pinocchio/package.json create mode 100644 cryptography/bls12-381/pinocchio/pnpm-lock.yaml create mode 100644 cryptography/bls12-381/pinocchio/program/Cargo.toml create mode 100644 cryptography/bls12-381/pinocchio/program/src/lib.rs create mode 100644 cryptography/bls12-381/pinocchio/program/tests/test.rs create mode 100644 cryptography/bls12-381/pinocchio/tests/bls12-381.test.ts create mode 100644 cryptography/bls12-381/pinocchio/tsconfig.json create mode 100644 cryptography/encrypted-ballot/pinocchio/README.md create mode 100644 cryptography/encrypted-ballot/pinocchio/package.json create mode 100644 cryptography/encrypted-ballot/pinocchio/pnpm-lock.yaml create mode 100644 cryptography/encrypted-ballot/pinocchio/program/Cargo.toml create mode 100644 cryptography/encrypted-ballot/pinocchio/program/src/lib.rs create mode 100644 cryptography/encrypted-ballot/pinocchio/program/tests/test.rs create mode 100644 cryptography/encrypted-ballot/pinocchio/tests/encrypted-ballot.test.ts create mode 100644 cryptography/encrypted-ballot/pinocchio/tsconfig.json diff --git a/Cargo.lock b/Cargo.lock index 03af4eae8..139c163ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -15,9 +15,9 @@ version = "0.1.0" dependencies = [ "borsh", "borsh-derive", - "litesvm", + "litesvm 0.11.0", "solana-keypair", - "solana-message 4.1.0", + "solana-message 4.4.0", "solana-native-token", "solana-program", "solana-pubkey 3.0.0", @@ -30,12 +30,12 @@ dependencies = [ name = "account-data-pinocchio-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "pinocchio", "pinocchio-log", "pinocchio-system", "solana-keypair", - "solana-message 4.1.0", + "solana-message 4.4.0", "solana-native-token", "solana-pubkey 3.0.0", "solana-signer", @@ -90,7 +90,22 @@ dependencies = [ "solana-hash 3.1.0", "solana-pubkey 3.0.0", "solana-sha256-hasher", - "solana-svm-feature-set", + "solana-svm-feature-set 3.1.11", +] + +[[package]] +name = "agave-feature-set" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4790979fc2a3c1c494c9cb84e8b514da4b8c6a992a460a077b31b07657606f8" +dependencies = [ + "ahash", + "solana-epoch-schedule", + "solana-hash 4.5.0", + "solana-keypair", + "solana-pubkey 4.2.0", + "solana-sha256-hasher", + "solana-svm-feature-set 4.1.2", ] [[package]] @@ -99,11 +114,22 @@ version = "3.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d062865aedfbdc7511726d47e472687db0db4fb08e3c3ab2ac68570106c2f1b6" dependencies = [ - "agave-feature-set", + "agave-feature-set 3.1.11", "solana-pubkey 3.0.0", "solana-sdk-ids", ] +[[package]] +name = "agave-reserved-account-keys" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea33710f30b13f62e6d73dbbb114117029d29539cb9439c30ef39a0736f935cc" +dependencies = [ + "agave-feature-set 4.1.2", + "solana-pubkey 4.2.0", + "solana-sdk-ids", +] + [[package]] name = "agave-syscalls" version = "3.1.11" @@ -111,7 +137,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c89f228e93d1bc769578efd0c5a445715ae04ad96f9b6f8d16d018ad7f9221a" dependencies = [ "bincode", - "libsecp256k1", + "libsecp256k1 0.6.0", "num-traits", "solana-account 3.4.0", "solana-account-info", @@ -120,30 +146,30 @@ dependencies = [ "solana-bn254", "solana-clock", "solana-cpi", - "solana-curve25519", + "solana-curve25519 3.1.11", "solana-hash 3.1.0", "solana-instruction", "solana-keccak-hasher", - "solana-loader-v3-interface", - "solana-poseidon", + "solana-loader-v3-interface 6.1.0", + "solana-poseidon 3.1.11", "solana-program-entrypoint", - "solana-program-runtime", + "solana-program-runtime 3.1.11", "solana-pubkey 3.0.0", - "solana-sbpf", + "solana-sbpf 0.13.1", "solana-sdk-ids", "solana-secp256k1-recover", "solana-sha256-hasher", "solana-stable-layout", - "solana-stake-interface", - "solana-svm-callback", - "solana-svm-feature-set", - "solana-svm-log-collector", - "solana-svm-measure", - "solana-svm-timings", - "solana-svm-type-overrides", + "solana-stake-interface 2.0.2", + "solana-svm-callback 3.1.11", + "solana-svm-feature-set 3.1.11", + "solana-svm-log-collector 3.1.11", + "solana-svm-measure 3.1.11", + "solana-svm-timings 3.1.11", + "solana-svm-type-overrides 3.1.11", "solana-sysvar 3.1.1", "solana-sysvar-id", - "solana-transaction-context", + "solana-transaction-context 3.1.11", "thiserror 2.0.18", ] @@ -175,6 +201,20 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +[[package]] +name = "alt-bn128-g2-pinocchio-program" +version = "0.1.0" +dependencies = [ + "litesvm 0.15.0", + "pinocchio", + "solana-address 2.6.1", + "solana-instruction", + "solana-keypair", + "solana-native-token", + "solana-signer", + "solana-transaction 4.1.5", +] + [[package]] name = "anchor-attribute-access-control" version = "1.0.2" @@ -307,11 +347,11 @@ dependencies = [ "solana-clock", "solana-cpi", "solana-define-syscall 3.0.0", - "solana-feature-gate-interface", + "solana-feature-gate-interface 3.1.0", "solana-instruction", - "solana-instructions-sysvar", + "solana-instructions-sysvar 3.0.0", "solana-invoke", - "solana-loader-v3-interface", + "solana-loader-v3-interface 6.1.0", "solana-msg", "solana-program-entrypoint", "solana-program-error", @@ -320,7 +360,7 @@ dependencies = [ "solana-program-pack", "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-stake-interface", + "solana-stake-interface 2.0.2", "solana-system-interface 2.0.0", "solana-sysvar 3.1.1", "solana-sysvar-id", @@ -655,7 +695,7 @@ checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" name = "asm" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "solana-address 2.6.1", "solana-instruction", "solana-keypair", @@ -716,6 +756,18 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +[[package]] +name = "bitvec" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddcec3d12c579d40898fe0a9a358a803c23e9c52ca3c425707f81c9436211837" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + [[package]] name = "blake3" version = "1.8.3" @@ -749,6 +801,78 @@ dependencies = [ "generic-array", ] +[[package]] +name = "bls-key-registry-pinocchio-program" +version = "0.1.0" +dependencies = [ + "litesvm 0.15.0", + "pinocchio", + "solana-account 4.3.1", + "solana-address 2.6.1", + "solana-instruction", + "solana-keypair", + "solana-native-token", + "solana-signer", + "solana-transaction 4.1.5", +] + +[[package]] +name = "bls-multisig-pinocchio-program" +version = "0.1.0" +dependencies = [ + "litesvm 0.15.0", + "pinocchio", + "solana-account 4.3.1", + "solana-address 2.6.1", + "solana-instruction", + "solana-keypair", + "solana-native-token", + "solana-signer", + "solana-transaction 4.1.5", +] + +[[package]] +name = "bls12-381-pinocchio-program" +version = "0.1.0" +dependencies = [ + "litesvm 0.15.0", + "pinocchio", + "solana-address 2.6.1", + "solana-instruction", + "solana-keypair", + "solana-native-token", + "solana-signer", + "solana-transaction 4.1.5", +] + +[[package]] +name = "blst" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20659f9bbee16cbbd2f7393e40ab6309f5a98f76a2eb57a995ec508b72387fe" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "blstrs" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8a8ed6fefbeef4a8c7b460e4110e12c5e22a5b7cf32621aae6ad650c4dcf29" +dependencies = [ + "blst", + "byte-slice-cast", + "ff", + "group", + "pairing", + "rand_core 0.6.4", + "serde", + "subtle", +] + [[package]] name = "borsh" version = "1.7.0" @@ -798,6 +922,12 @@ dependencies = [ "serde", ] +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + [[package]] name = "bytemuck" version = "1.25.0" @@ -884,7 +1014,7 @@ dependencies = [ name = "checking-account-asm-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", @@ -905,7 +1035,7 @@ dependencies = [ name = "checking-accounts-native-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "solana-keypair", "solana-native-token", "solana-program", @@ -919,7 +1049,7 @@ dependencies = [ name = "checking-accounts-pinocchio-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "pinocchio", "pinocchio-log", "pinocchio-system", @@ -947,7 +1077,7 @@ version = "0.1.0" dependencies = [ "borsh", "borsh-derive", - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", @@ -961,13 +1091,13 @@ dependencies = [ name = "close-account-pinocchio-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "pinocchio", "pinocchio-log", "pinocchio-system", "solana-instruction", "solana-keypair", - "solana-message 4.1.0", + "solana-message 4.4.0", "solana-native-token", "solana-pubkey 3.0.0", "solana-signer", @@ -1023,13 +1153,13 @@ version = "0.1.0" dependencies = [ "borsh", "borsh-derive", - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", "solana-program", "solana-pubkey 3.0.0", - "solana-rent 4.2.1", + "solana-rent 4.3.0", "solana-system-interface 2.0.0", "solana-transaction 3.1.0", ] @@ -1038,7 +1168,7 @@ dependencies = [ name = "counter-solana-pinocchio" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "pinocchio", "pinocchio-log", "solana-address 2.6.1", @@ -1046,7 +1176,7 @@ dependencies = [ "solana-keypair", "solana-native-token", "solana-pubkey 3.0.0", - "solana-rent 4.2.1", + "solana-rent 4.3.0", "solana-system-interface 2.0.0", "solana-transaction 3.1.0", ] @@ -1071,7 +1201,7 @@ dependencies = [ name = "create-account-asm-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", @@ -1084,7 +1214,7 @@ dependencies = [ name = "create-account-pinocchio-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "pinocchio", "pinocchio-log", "pinocchio-system", @@ -1100,7 +1230,7 @@ dependencies = [ name = "create-account-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", @@ -1221,38 +1351,14 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "darling" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" -dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", -] - [[package]] name = "darling" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ - "darling_core 0.23.0", - "darling_macro 0.23.0", -] - -[[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.117", + "darling_core", + "darling_macro", ] [[package]] @@ -1268,24 +1374,13 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "darling_macro" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" -dependencies = [ - "darling_core 0.21.3", - "quote", - "syn 2.0.117", -] - [[package]] name = "darling_macro" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ - "darling_core 0.23.0", + "darling_core", "quote", "syn 2.0.117", ] @@ -1432,6 +1527,21 @@ dependencies = [ "zeroize", ] +[[package]] +name = "encrypted-ballot-pinocchio-program" +version = "0.1.0" +dependencies = [ + "litesvm 0.15.0", + "pinocchio", + "solana-account 4.3.1", + "solana-address 2.6.1", + "solana-instruction", + "solana-keypair", + "solana-native-token", + "solana-signer", + "solana-transaction 4.1.5", +] + [[package]] name = "enum-iterator" version = "1.5.0" @@ -1441,6 +1551,15 @@ dependencies = [ "enum-iterator-derive", ] +[[package]] +name = "enum-iterator" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4549325971814bda7a44061bf3fe7e487d447cba01e4220a4b454d630d7a016" +dependencies = [ + "enum-iterator-derive", +] + [[package]] name = "enum-iterator-derive" version = "1.5.0" @@ -1508,7 +1627,7 @@ version = "0.1.0" dependencies = [ "borsh", "borsh-derive", - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", @@ -1522,7 +1641,7 @@ dependencies = [ name = "favorites-pinocchio" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "pinocchio", "pinocchio-log", "pinocchio-system", @@ -1547,6 +1666,7 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ + "bitvec", "rand_core 0.6.4", "subtle", ] @@ -1593,6 +1713,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "generic-array" version = "0.14.7" @@ -1640,6 +1766,12 @@ dependencies = [ "wasip2", ] +[[package]] +name = "glob" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" + [[package]] name = "group" version = "0.13.0" @@ -1647,7 +1779,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", + "rand 0.8.5", "rand_core 0.6.4", + "rand_xorshift", "subtle", ] @@ -1711,7 +1845,7 @@ dependencies = [ name = "hello-solana-asm-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", @@ -1724,7 +1858,7 @@ dependencies = [ name = "hello-solana-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", @@ -1741,6 +1875,12 @@ dependencies = [ "pinocchio-log", ] +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + [[package]] name = "hmac" version = "0.12.1" @@ -1884,14 +2024,31 @@ dependencies = [ "arrayref", "base64 0.12.3", "digest 0.9.0", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", + "libsecp256k1-core 0.2.2", + "libsecp256k1-gen-ecmult 0.2.1", + "libsecp256k1-gen-genmult 0.2.1", "rand 0.7.3", "serde", "sha2 0.9.9", ] +[[package]] +name = "libsecp256k1" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79019718125edc905a079a70cfa5f3820bc76139fc91d6f9abc27ea2a887139" +dependencies = [ + "arrayref", + "base64 0.22.1", + "digest 0.9.0", + "libsecp256k1-core 0.3.0", + "libsecp256k1-gen-ecmult 0.3.0", + "libsecp256k1-gen-genmult 0.3.0", + "rand 0.8.5", + "serde", + "sha2 0.9.9", +] + [[package]] name = "libsecp256k1-core" version = "0.2.2" @@ -1903,13 +2060,33 @@ dependencies = [ "subtle", ] +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +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", + "libsecp256k1-core 0.2.2", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core 0.3.0", ] [[package]] @@ -1918,7 +2095,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" dependencies = [ - "libsecp256k1-core", + "libsecp256k1-core 0.2.2", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core 0.3.0", ] [[package]] @@ -1951,8 +2137,8 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "347d8c652d592c618ac996f2ab21f8c0b0f2da3fbbca227a6887ee61bb75f2de" dependencies = [ - "agave-feature-set", - "agave-reserved-account-keys", + "agave-feature-set 3.1.11", + "agave-reserved-account-keys 3.1.11", "agave-syscalls", "ansi_term", "bincode", @@ -1963,30 +2149,30 @@ dependencies = [ "solana-account 3.4.0", "solana-address 2.6.1", "solana-address-lookup-table-interface", - "solana-bpf-loader-program", - "solana-builtins", + "solana-bpf-loader-program 3.1.11", + "solana-builtins 3.1.11", "solana-clock", - "solana-compute-budget", - "solana-compute-budget-instruction", + "solana-compute-budget 3.1.11", + "solana-compute-budget-instruction 3.1.11", "solana-epoch-rewards", "solana-epoch-schedule", - "solana-feature-gate-interface", - "solana-fee", + "solana-feature-gate-interface 3.1.0", + "solana-fee 3.1.11", "solana-fee-structure", "solana-hash 3.1.0", "solana-instruction", - "solana-instructions-sysvar", + "solana-instructions-sysvar 3.0.0", "solana-keypair", "solana-last-restart-slot", - "solana-loader-v3-interface", + "solana-loader-v3-interface 6.1.0", "solana-loader-v4-interface", "solana-message 3.1.0", "solana-native-token", "solana-nonce", - "solana-nonce-account", + "solana-nonce-account 3.0.0", "solana-precompile-error", "solana-program-error", - "solana-program-runtime", + "solana-program-runtime 3.1.11", "solana-rent 3.1.0", "solana-sdk-ids", "solana-sha256-hasher", @@ -1994,19 +2180,83 @@ dependencies = [ "solana-signer", "solana-slot-hashes", "solana-slot-history", - "solana-stake-interface", - "solana-svm-callback", - "solana-svm-log-collector", - "solana-svm-timings", - "solana-svm-transaction", + "solana-stake-interface 2.0.2", + "solana-svm-callback 3.1.11", + "solana-svm-log-collector 3.1.11", + "solana-svm-timings 3.1.11", + "solana-svm-transaction 3.1.11", "solana-system-interface 2.0.0", - "solana-system-program", + "solana-system-program 3.1.11", "solana-sysvar 3.1.1", "solana-sysvar-id", "solana-transaction 3.1.0", - "solana-transaction-context", + "solana-transaction-context 3.1.11", + "solana-transaction-error", + "thiserror 2.0.18", +] + +[[package]] +name = "litesvm" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5c571b8f010af084d125c8968e52658eb2c5d146a0a8254681adcdac36caa3e" +dependencies = [ + "agave-feature-set 4.1.2", + "agave-reserved-account-keys 4.1.2", + "ansi_term", + "indexmap", + "itertools 0.14.0", + "log", + "serde", + "solana-account 4.3.1", + "solana-address 2.6.1", + "solana-address-lookup-table-interface", + "solana-builtins 4.1.2", + "solana-clock", + "solana-compute-budget 4.1.2", + "solana-compute-budget-instruction 4.1.2", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-feature-gate-interface 4.0.0", + "solana-fee 4.1.2", + "solana-fee-structure", + "solana-hash 4.5.0", + "solana-instruction", + "solana-instruction-error", + "solana-instructions-sysvar 4.0.0", + "solana-keypair", + "solana-last-restart-slot", + "solana-loader-v3-interface 8.0.1", + "solana-loader-v4-interface", + "solana-message 4.4.0", + "solana-native-token", + "solana-nonce", + "solana-nonce-account 4.1.1", + "solana-precompile-error", + "solana-program-error", + "solana-program-runtime 4.1.2", + "solana-rent 4.3.0", + "solana-sdk-ids", + "solana-sha256-hasher", + "solana-signature", + "solana-signer", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-history", + "solana-svm-callback 4.1.2", + "solana-svm-log-collector 4.1.2", + "solana-svm-timings 4.1.2", + "solana-svm-transaction 4.1.2", + "solana-syscalls", + "solana-system-interface 3.2.0", + "solana-system-program 4.1.2", + "solana-sysvar 4.1.0", + "solana-sysvar-id", + "solana-transaction 4.1.5", + "solana-transaction-context 4.1.2", "solana-transaction-error", "thiserror 2.0.18", + "wincode 0.5.5", ] [[package]] @@ -2148,6 +2398,16 @@ dependencies = [ "autocfg", ] +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + [[package]] name = "num_enum" version = "0.7.6" @@ -2182,6 +2442,15 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +[[package]] +name = "pairing" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" +dependencies = [ + "group", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -2213,9 +2482,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pastey" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b867cad97c0791bbd3aaa6472142568c6c9e8f71937e98379f584cfb0cf35bec" +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pbkdf2" @@ -2249,7 +2518,7 @@ dependencies = [ name = "pda-rent-payer-pinocchio-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "pinocchio", "pinocchio-log", "pinocchio-system", @@ -2268,7 +2537,7 @@ version = "0.1.0" dependencies = [ "borsh", "borsh-derive", - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", @@ -2420,7 +2689,7 @@ dependencies = [ name = "processing-instructions-pinocchio-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "pinocchio", "pinocchio-log", "solana-instruction", @@ -2436,7 +2705,7 @@ version = "0.1.0" dependencies = [ "borsh", "borsh-derive", - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", @@ -2451,13 +2720,13 @@ version = "0.1.0" dependencies = [ "borsh", "borsh-derive", - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", "solana-program", "solana-pubkey 3.0.0", - "solana-rent 4.2.1", + "solana-rent 4.3.0", "solana-system-interface 2.0.0", "solana-transaction 3.1.0", ] @@ -2466,14 +2735,14 @@ dependencies = [ name = "program-derived-addresses-pinocchio-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "pinocchio", "pinocchio-system", "solana-instruction", "solana-keypair", "solana-native-token", "solana-pubkey 3.0.0", - "solana-rent 4.2.1", + "solana-rent 4.3.0", "solana-system-interface 2.0.0", "solana-transaction 3.1.0", ] @@ -2520,6 +2789,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" @@ -2546,9 +2821,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.2" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.5", @@ -2620,11 +2895,20 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + [[package]] name = "realloc-pinocchio-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "pinocchio", "pinocchio-log", "pinocchio-system", @@ -2642,7 +2926,7 @@ version = "0.1.0" dependencies = [ "borsh", "borsh-derive", - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", @@ -2694,7 +2978,7 @@ checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" name = "repository-layout-pinocchio-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "pinocchio", "pinocchio-log", "solana-instruction", @@ -2710,7 +2994,7 @@ version = "0.1.0" dependencies = [ "borsh", "borsh-derive", - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", @@ -2863,7 +3147,7 @@ version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" dependencies = [ - "darling 0.23.0", + "darling", "proc-macro2", "quote", "syn 2.0.117", @@ -2950,16 +3234,16 @@ dependencies = [ "solana-account-info", "solana-clock", "solana-instruction-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", "solana-sdk-ids", "solana-sysvar 3.1.1", ] [[package]] name = "solana-account" -version = "4.2.0" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbea62563f5143b29fff5aa6af57426bc1beb77c6416b5c1c8e7d1266272c21" +checksum = "385cad928d576683db3afef1b88d00a31a7126cc9f6f3f0c9f6b2d181437f53c" dependencies = [ "bincode", "serde", @@ -2968,9 +3252,9 @@ dependencies = [ "solana-account-info", "solana-clock", "solana-instruction-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", "solana-sdk-ids", - "solana-sysvar 4.0.0", + "solana-sysvar 4.1.0", ] [[package]] @@ -3017,7 +3301,7 @@ dependencies = [ "curve25519-dalek", "five8", "five8_const", - "rand 0.9.2", + "rand 0.9.5", "serde", "serde_derive", "sha2-const-stable", @@ -3027,14 +3311,14 @@ dependencies = [ "solana-program-error", "solana-sanitize", "solana-sha256-hasher", - "wincode", + "wincode 0.5.5", ] [[package]] name = "solana-address-lookup-table-interface" -version = "3.0.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e8df0b083c10ce32490410f3795016b1b5d9b4d094658c0a5e496753645b7cd" +checksum = "115b4f773acc4f3f3cb986b0d335e9845c0368c82b0940410935bc11ae065578" dependencies = [ "bincode", "bytemuck", @@ -3043,7 +3327,7 @@ dependencies = [ "solana-clock", "solana-instruction", "solana-instruction-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", "solana-sdk-ids", "solana-slot-hashes", ] @@ -3087,22 +3371,57 @@ checksum = "7116e1d942a2432ca3f514625104757ab8a56233787e95144c93950029e31176" dependencies = [ "blake3", "solana-define-syscall 4.0.1", - "solana-hash 4.4.0", + "solana-hash 4.5.0", ] [[package]] -name = "solana-bn254" -version = "3.2.1" +name = "solana-bls-signatures" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ff13a8867fcc7b0f1114764e1bf6191b4551dcaf93729ddc676cd4ec6abc9f" +checksum = "3f7e9dbeff4dab3484175666a367171b60fe514b707d6de1ab3b741f0168e735" dependencies = [ - "ark-bn254 0.5.0", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "bytemuck", - "solana-define-syscall 5.1.0", - "thiserror 2.0.18", + "base64 0.22.1", + "blst", + "blstrs", + "cfg_eval", + "ff", + "group", + "pairing", + "rand 0.8.5", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.18", + "wincode 0.6.0", + "zeroize", +] + +[[package]] +name = "solana-bls12-381-syscall" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94e8256fda0542709fd1320a96d81c3c66e10ac5f680cca9b991d7d3b0e3fe86" +dependencies = [ + "blst", + "blstrs", + "bytemuck", + "bytemuck_derive", + "pairing", +] + +[[package]] +name = "solana-bn254" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62ff13a8867fcc7b0f1114764e1bf6191b4551dcaf93729ddc676cd4ec6abc9f" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "bytemuck", + "solana-define-syscall 5.1.0", + "thiserror 2.0.18", ] [[package]] @@ -3127,20 +3446,47 @@ dependencies = [ "solana-bincode", "solana-clock", "solana-instruction", - "solana-loader-v3-interface", + "solana-loader-v3-interface 6.1.0", "solana-loader-v4-interface", - "solana-packet", + "solana-packet 3.0.0", "solana-program-entrypoint", - "solana-program-runtime", + "solana-program-runtime 3.1.11", "solana-pubkey 3.0.0", - "solana-sbpf", + "solana-sbpf 0.13.1", "solana-sdk-ids", - "solana-svm-feature-set", - "solana-svm-log-collector", - "solana-svm-measure", - "solana-svm-type-overrides", + "solana-svm-feature-set 3.1.11", + "solana-svm-log-collector 3.1.11", + "solana-svm-measure 3.1.11", + "solana-svm-type-overrides 3.1.11", "solana-system-interface 2.0.0", - "solana-transaction-context", + "solana-transaction-context 3.1.11", +] + +[[package]] +name = "solana-bpf-loader-program" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "073e0a6555480e8f783f930299a5660c2296c8961d9b3a2adaf585561e2d59b9" +dependencies = [ + "bincode", + "qualifier_attr", + "solana-account 4.3.1", + "solana-bincode", + "solana-clock", + "solana-instruction", + "solana-loader-v3-interface 7.0.0", + "solana-packet 4.2.0", + "solana-program-runtime 4.1.2", + "solana-pubkey 4.2.0", + "solana-sbpf 0.21.0", + "solana-sdk-ids", + "solana-svm-feature-set 4.1.2", + "solana-svm-log-collector 4.1.2", + "solana-svm-measure 4.1.2", + "solana-svm-type-overrides 4.1.2", + "solana-syscalls", + "solana-system-interface 3.2.0", + "solana-transaction-context 4.1.2", ] [[package]] @@ -3149,18 +3495,37 @@ version = "3.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d196c19ba1caf61782eba5de053061f298f36d9f2aec57073e2cf27403a926d3" dependencies = [ - "agave-feature-set", - "solana-bpf-loader-program", - "solana-compute-budget-program", + "agave-feature-set 3.1.11", + "solana-bpf-loader-program 3.1.11", + "solana-compute-budget-program 3.1.11", "solana-hash 3.1.0", "solana-loader-v4-program", - "solana-program-runtime", + "solana-program-runtime 3.1.11", "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-system-program", - "solana-vote-program", - "solana-zk-elgamal-proof-program", - "solana-zk-token-proof-program", + "solana-system-program 3.1.11", + "solana-vote-program 3.1.11", + "solana-zk-elgamal-proof-program 3.1.11", + "solana-zk-token-proof-program 3.1.11", +] + +[[package]] +name = "solana-builtins" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0e54d03edadcb2f38bdb8b6524380a858f5ad51654db1f71eccc3fb5dc4d492" +dependencies = [ + "agave-feature-set 4.1.2", + "solana-bpf-loader-program 4.1.2", + "solana-compute-budget-program 4.1.2", + "solana-hash 4.5.0", + "solana-program-runtime 4.1.2", + "solana-pubkey 4.2.0", + "solana-sdk-ids", + "solana-system-program 4.1.2", + "solana-vote-program 4.1.2", + "solana-zk-elgamal-proof-program 4.1.2", + "solana-zk-token-proof-program 4.1.2", ] [[package]] @@ -3169,29 +3534,43 @@ version = "3.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0da4d19885c5ee02d942a9e13354a39ef3ff591ee31d55353070c204ae7b8fed" dependencies = [ - "agave-feature-set", + "agave-feature-set 3.1.11", "ahash", "log", - "solana-bpf-loader-program", - "solana-compute-budget-program", + "solana-bpf-loader-program 3.1.11", + "solana-compute-budget-program 3.1.11", "solana-loader-v4-program", "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-system-program", - "solana-vote-program", + "solana-system-program 3.1.11", + "solana-vote-program 3.1.11", +] + +[[package]] +name = "solana-builtins-default-costs" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a63b9b3ae7b09c32f7f15d83e875dbf8715d0853c2354e3306316158f19d9c90" +dependencies = [ + "agave-feature-set 4.1.2", + "ahash", + "solana-pubkey 4.2.0", + "solana-sdk-ids", ] [[package]] name = "solana-clock" -version = "3.0.1" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95cf11109c3b6115cc510f1e31f06fdd52f504271bc24ef5f1249fbbcae5f9f3" +checksum = "f0acdace90d96e2c9e70d681465b4fe888b6bcf27c354ae9774e9f8a3b72923d" dependencies = [ "serde", "serde_derive", + "solana-get-sysvar", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", + "wincode 0.5.5", ] [[package]] @@ -3201,7 +3580,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98426b2f7788c089f4ab840347bff55901e65ceb5d76b850194f0802a733cd4e" dependencies = [ "solana-fee-structure", - "solana-program-runtime", + "solana-program-runtime 3.1.11", +] + +[[package]] +name = "solana-compute-budget" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1770e5aeba2f5ec75b2d89031780c760dcf8352a061430f5e74eab1ad9f3b132" +dependencies = [ + "solana-fee-structure", + "solana-program-runtime 4.1.2", ] [[package]] @@ -3210,21 +3599,40 @@ version = "3.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3eb3ea80152fc745fa95d9cd2fc019c3591cdc7598cb4d85a6acdea7a40938f0" dependencies = [ - "agave-feature-set", + "agave-feature-set 3.1.11", "log", "solana-borsh", - "solana-builtins-default-costs", - "solana-compute-budget", + "solana-builtins-default-costs 3.1.11", + "solana-compute-budget 3.1.11", "solana-compute-budget-interface", "solana-instruction", - "solana-packet", + "solana-packet 3.0.0", "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-svm-transaction", + "solana-svm-transaction 3.1.11", "solana-transaction-error", "thiserror 2.0.18", ] +[[package]] +name = "solana-compute-budget-instruction" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3ad15d715b0c4e21f6b591f126b7fa8070aadf0d75fcd89bc4c98afc9e5f8f6" +dependencies = [ + "agave-feature-set 4.1.2", + "solana-borsh", + "solana-builtins-default-costs 4.1.2", + "solana-compute-budget 4.1.2", + "solana-compute-budget-interface", + "solana-instruction", + "solana-packet 4.2.0", + "solana-pubkey 4.2.0", + "solana-sdk-ids", + "solana-svm-transaction 4.1.2", + "solana-transaction-error", +] + [[package]] name = "solana-compute-budget-interface" version = "3.0.0" @@ -3242,7 +3650,16 @@ version = "3.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "688491544a91b94fcb17cffb5cc4dca4be93bc96460fa27325a404c24b584130" dependencies = [ - "solana-program-runtime", + "solana-program-runtime 3.1.11", +] + +[[package]] +name = "solana-compute-budget-program" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "653943375fb64b11bcfda0c22280aa87f04902d2c25d0117e91f9788a31ed3db" +dependencies = [ + "solana-program-runtime 4.1.2", ] [[package]] @@ -3255,7 +3672,7 @@ dependencies = [ "solana-define-syscall 4.0.1", "solana-instruction", "solana-program-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", "solana-stable-layout", ] @@ -3273,6 +3690,20 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "solana-curve25519" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b4d2a4bf0d0b0a86c22111917e86e8bd39a7b31420fb2c7d73eb83761fc7af" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "solana-define-syscall 5.1.0", + "subtle", + "thiserror 2.0.18", +] + [[package]] name = "solana-define-syscall" version = "3.0.0" @@ -3314,16 +3745,18 @@ dependencies = [ [[package]] name = "solana-epoch-rewards" -version = "3.0.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5e7b0ba210593ba8ddd39d6d234d81795d1671cebf3026baa10d5dc23ac42f0" +checksum = "daf7eb4986b0b1d6f562b21f75a836f1a6df6e00c275efcef50aab5c144dc59e" dependencies = [ "serde", "serde_derive", - "solana-hash 4.4.0", + "solana-get-sysvar", + "solana-hash 4.5.0", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", + "wincode 0.5.5", ] [[package]] @@ -3334,20 +3767,23 @@ checksum = "1ee8beac9bff4db9225e57d532d169b0be5e447f1e6601a2f50f27a01bf5518f" dependencies = [ "siphasher", "solana-address 2.6.1", - "solana-hash 4.4.0", + "solana-hash 4.5.0", ] [[package]] name = "solana-epoch-schedule" -version = "3.0.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5481e72cc4d52c169db73e4c0cd16de8bc943078aac587ec4817a75cc6388f" +checksum = "8116e6ffa6002237d5ab5edcbda17f9ba66b6742c45a89c9fb40a94dbacd4c1d" dependencies = [ "serde", "serde_derive", + "solana-get-sysvar", + "solana-program-error", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", + "wincode 0.5.5", ] [[package]] @@ -3357,7 +3793,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "027e6d0b9e7daac5b2ac7c3f9ca1b727861121d9ef05084cf435ff736051e7c2" dependencies = [ "solana-define-syscall 5.1.0", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", ] [[package]] @@ -3368,12 +3804,12 @@ checksum = "0eb265ff95e28eceda117e2e3d2d2a611ecbbfe911dfeeeecd1521814540ffab" dependencies = [ "serde", "serde_derive", - "solana-hash 4.4.0", + "solana-hash 4.5.0", "solana-instruction", "solana-nonce", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", "solana-sdk-ids", - "solana-system-interface 3.1.0", + "solana-system-interface 3.2.0", "thiserror 2.0.18", ] @@ -3390,10 +3826,29 @@ dependencies = [ "solana-account-info", "solana-instruction", "solana-program-error", - "solana-pubkey 4.1.0", - "solana-rent 4.2.1", + "solana-pubkey 4.2.0", + "solana-rent 4.3.0", "solana-sdk-ids", - "solana-system-interface 3.1.0", + "solana-system-interface 3.2.0", +] + +[[package]] +name = "solana-feature-gate-interface" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd7545e02f91da1d6996f32b18f7796aa01e0682f8f3a7434b82cd1a10448add" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account 4.3.1", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-pubkey 4.2.0", + "solana-rent 4.3.0", + "solana-sdk-ids", + "solana-system-interface 3.2.0", ] [[package]] @@ -3402,20 +3857,32 @@ version = "3.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "487e4ba57d889e2ecf94a0cac3a3f385fe26d17425aaef3514b79975af2b5d7f" dependencies = [ - "agave-feature-set", + "agave-feature-set 3.1.11", + "solana-fee-structure", + "solana-svm-transaction 3.1.11", +] + +[[package]] +name = "solana-fee" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5fbffe004ec900267fc0bcf0c3b532c01905e6c4e3f318562718d1cdf6db939" +dependencies = [ + "agave-feature-set 4.1.2", "solana-fee-structure", - "solana-svm-transaction", + "solana-svm-transaction 4.1.2", ] [[package]] name = "solana-fee-calculator" -version = "3.1.0" +version = "3.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2a5675b2cf8d407c672dc1776492b1f382337720ddf566645ae43237a3d8c3" +checksum = "ef67f01cc6a0c72e99a08d0d484683f995de4c80e9568728fa77d1537f9b7e09" dependencies = [ "log", "serde", "serde_derive", + "wincode 0.5.5", ] [[package]] @@ -3428,6 +3895,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "solana-get-sysvar" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef3bc859fc036ed490146793557386cbfae614ebba4adc704c37d94350824ed4" +dependencies = [ + "solana-address 2.6.1", + "solana-define-syscall 5.1.0", + "solana-program-error", +] + [[package]] name = "solana-hard-forks" version = "3.0.1" @@ -3440,14 +3918,14 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" dependencies = [ - "solana-hash 4.4.0", + "solana-hash 4.5.0", ] [[package]] name = "solana-hash" -version = "4.4.0" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe51db00ac3aa9f950d1e6201a126acfa26e6d81bc4a183ba64ec02effcad883" +checksum = "6f4c847893a2ea50b4ae3ca723b124e07cd0544fecea3598f785168f9b78333f" dependencies = [ "borsh", "bytemuck", @@ -3457,9 +3935,15 @@ dependencies = [ "serde_derive", "solana-atomic-u64", "solana-sanitize", - "wincode", + "wincode 0.5.5", ] +[[package]] +name = "solana-hash-512" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee9c987913768643be3f4fc5f8ec667e8ec19e59e6d131688ade8d1430dafe9" + [[package]] name = "solana-inflation" version = "3.0.0" @@ -3482,14 +3966,15 @@ dependencies = [ "serde_derive", "solana-define-syscall 5.1.0", "solana-instruction-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", + "wincode 0.5.5", ] [[package]] name = "solana-instruction-error" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0b188842592fdf6cb96f55263ae1bf11713ab5114401d1d5a881ed7cc41bef6" +checksum = "3b7d34343838343a3755b7dfb1e438d94c6db2263b519cfe3c2257af932b6e93" dependencies = [ "num-traits", "serde", @@ -3527,6 +4012,23 @@ dependencies = [ "solana-sysvar-id", ] +[[package]] +name = "solana-instructions-sysvar" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e38363a181313d607f7a118df2b401bb27b477a0104b09283cbf504f5f0f00cc" +dependencies = [ + "bitflags", + "solana-account-info", + "solana-instruction", + "solana-instruction-error", + "solana-program-error", + "solana-sanitize", + "solana-sdk-ids", + "solana-serialize-utils", + "solana-sysvar-id", +] + [[package]] name = "solana-invoke" version = "0.5.0" @@ -3548,7 +4050,7 @@ checksum = "ed1c0d16d6fdeba12291a1f068cdf0d479d9bff1141bf44afd7aa9d485f65ef8" dependencies = [ "sha3", "solana-define-syscall 4.0.1", - "solana-hash 4.4.0", + "solana-hash 4.5.0", ] [[package]] @@ -3561,7 +4063,7 @@ dependencies = [ "ed25519-dalek-bip32", "five8", "five8_core", - "rand 0.9.2", + "rand 0.9.5", "solana-address 2.6.1", "solana-derivation-path", "solana-seed-derivable", @@ -3572,15 +4074,17 @@ dependencies = [ [[package]] name = "solana-last-restart-slot" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcda154ec827f5fc1e4da0af3417951b7e9b8157540f81f936c4a8b1156134d0" +checksum = "c22474b83d3c7c318e1c3a725784fc2d1d03b728e36369e58ce48769a61ed85e" dependencies = [ "serde", "serde_derive", + "solana-get-sysvar", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", + "wincode 0.5.5", ] [[package]] @@ -3598,6 +4102,33 @@ dependencies = [ "solana-system-interface 2.0.0", ] +[[package]] +name = "solana-loader-v3-interface" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68029ab11d9c891d4ce23ada75745e40f983c5674af366f447b672569634231b" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey 4.2.0", + "solana-sdk-ids", +] + +[[package]] +name = "solana-loader-v3-interface" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "362b468fbde4c20521b9ff5ef743bc0d9b410455a5a92a8b29fd46954e89345f" +dependencies = [ + "solana-instruction", + "solana-pubkey 4.2.0", + "solana-sdk-ids", + "solana-system-interface 3.2.0", + "wincode 0.5.5", +] + [[package]] name = "solana-loader-v4-interface" version = "3.1.0" @@ -3622,19 +4153,19 @@ dependencies = [ "log", "solana-account 3.4.0", "solana-bincode", - "solana-bpf-loader-program", + "solana-bpf-loader-program 3.1.11", "solana-instruction", - "solana-loader-v3-interface", + "solana-loader-v3-interface 6.1.0", "solana-loader-v4-interface", - "solana-packet", - "solana-program-runtime", + "solana-packet 3.0.0", + "solana-program-runtime 3.1.11", "solana-pubkey 3.0.0", - "solana-sbpf", + "solana-sbpf 0.13.1", "solana-sdk-ids", - "solana-svm-log-collector", - "solana-svm-measure", - "solana-svm-type-overrides", - "solana-transaction-context", + "solana-svm-log-collector 3.1.11", + "solana-svm-measure 3.1.11", + "solana-svm-type-overrides 3.1.11", + "solana-transaction-context 3.1.11", ] [[package]] @@ -3649,7 +4180,7 @@ dependencies = [ "serde", "serde_derive", "solana-address 2.6.1", - "solana-hash 4.4.0", + "solana-hash 4.5.0", "solana-instruction", "solana-sanitize", "solana-sdk-ids", @@ -3659,22 +4190,21 @@ dependencies = [ [[package]] name = "solana-message" -version = "4.1.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3349552a323d44d8936b81f003ea7a2fea8566684ebf0dc25d34ad4df2b103" +checksum = "cfe614646c48c59fff4d47ebd893c13d74c85a32573a45dadde430b13f576d64" dependencies = [ "blake3", - "lazy_static", "serde", "serde_derive", "solana-address 2.6.1", - "solana-hash 4.4.0", + "solana-hash 4.5.0", "solana-instruction", "solana-sanitize", "solana-sdk-ids", "solana-short-vec", "solana-transaction-error", - "wincode", + "wincode 0.5.5", ] [[package]] @@ -3694,16 +4224,17 @@ checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" [[package]] name = "solana-nonce" -version = "3.1.0" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc469152a63284ef959b80c59cda015262a021da55d3b8fe42171d89c4b64f8" +checksum = "c4172d5b33a0a38fcdb2af8f84406570dd51567267da96c28ad0f31fc11621c0" dependencies = [ "serde", "serde_derive", "solana-fee-calculator", - "solana-hash 4.4.0", - "solana-pubkey 4.1.0", + "solana-hash 4.5.0", + "solana-pubkey 4.2.0", "solana-sha256-hasher", + "wincode 0.5.5", ] [[package]] @@ -3718,11 +4249,24 @@ dependencies = [ "solana-sdk-ids", ] +[[package]] +name = "solana-nonce-account" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b81bf7e2aa8c443724051507c1007d0b6d9c34b70925d3232dc78f5ca485209e" +dependencies = [ + "solana-account 4.3.1", + "solana-hash 4.5.0", + "solana-nonce", + "solana-sdk-ids", + "wincode 0.5.5", +] + [[package]] name = "solana-nullable" -version = "1.0.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a90429a75d69fdcb31952c3dea79f5f3c8157cfe88221e066103c9c237876073" +checksum = "889194d8c5faec648f2f6fadddb60566249921ebb074e2707e7095458d5864e2" dependencies = [ "bytemuck", ] @@ -3735,7 +4279,7 @@ checksum = "f6e2a1141a673f72a05cf406b99e4b2b8a457792b7c01afa07b3f00d4e2de393" dependencies = [ "num_enum", "solana-hash 3.1.0", - "solana-packet", + "solana-packet 3.0.0", "solana-pubkey 3.0.0", "solana-sanitize", "solana-sha256-hasher", @@ -3752,6 +4296,16 @@ dependencies = [ "bitflags", ] +[[package]] +name = "solana-packet" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a2a582d7863548f047f49aa3745c076cfa9e1364baa080ef0c1210f0e4ebda" +dependencies = [ + "bitflags", + "solana-pubkey 4.2.0", +] + [[package]] name = "solana-poseidon" version = "3.1.11" @@ -3766,6 +4320,20 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "solana-poseidon" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "737b8ab25bf4cc8e618f80f1fe40709b2ace708bc764a36b8a4c81eea8c07034" +dependencies = [ + "ark-bn254 0.4.0", + "ark-bn254 0.5.0", + "light-poseidon 0.2.0", + "light-poseidon 0.4.0", + "solana-define-syscall 4.0.1", + "thiserror 2.0.18", +] + [[package]] name = "solana-precompile-error" version = "3.0.0" @@ -3805,10 +4373,10 @@ dependencies = [ "solana-epoch-stake", "solana-example-mocks", "solana-fee-calculator", - "solana-hash 4.4.0", + "solana-hash 4.5.0", "solana-instruction", "solana-instruction-error", - "solana-instructions-sysvar", + "solana-instructions-sysvar 3.0.0", "solana-keccak-hasher", "solana-last-restart-slot", "solana-msg", @@ -3818,8 +4386,8 @@ dependencies = [ "solana-program-memory", "solana-program-option", "solana-program-pack", - "solana-pubkey 4.1.0", - "solana-rent 4.2.1", + "solana-pubkey 4.2.0", + "solana-rent 4.3.0", "solana-sdk-ids", "solana-secp256k1-recover", "solana-serde-varint", @@ -3829,7 +4397,7 @@ dependencies = [ "solana-slot-hashes", "solana-slot-history", "solana-stable-layout", - "solana-sysvar 4.0.0", + "solana-sysvar 4.1.0", "solana-sysvar-id", ] @@ -3842,7 +4410,7 @@ dependencies = [ "solana-account-info", "solana-define-syscall 4.0.1", "solana-program-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", ] [[package]] @@ -3902,26 +4470,72 @@ dependencies = [ "solana-hash 3.1.0", "solana-instruction", "solana-last-restart-slot", - "solana-loader-v3-interface", + "solana-loader-v3-interface 6.1.0", "solana-program-entrypoint", "solana-pubkey 3.0.0", "solana-rent 3.1.0", - "solana-sbpf", + "solana-sbpf 0.13.1", "solana-sdk-ids", "solana-slot-hashes", "solana-stable-layout", - "solana-stake-interface", - "solana-svm-callback", - "solana-svm-feature-set", - "solana-svm-log-collector", - "solana-svm-measure", - "solana-svm-timings", - "solana-svm-transaction", - "solana-svm-type-overrides", + "solana-stake-interface 2.0.2", + "solana-svm-callback 3.1.11", + "solana-svm-feature-set 3.1.11", + "solana-svm-log-collector 3.1.11", + "solana-svm-measure 3.1.11", + "solana-svm-timings 3.1.11", + "solana-svm-transaction 3.1.11", + "solana-svm-type-overrides 3.1.11", "solana-system-interface 2.0.0", "solana-sysvar 3.1.1", "solana-sysvar-id", - "solana-transaction-context", + "solana-transaction-context 3.1.11", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-program-runtime" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0364032ca71f9be2ffab27791cd6535dbe9d2990da0e2346e99013a9bcb57f4" +dependencies = [ + "base64 0.22.1", + "bincode", + "cfg-if", + "itertools 0.14.0", + "log", + "percentage", + "rand 0.9.5", + "serde", + "solana-account 4.3.1", + "solana-account-info", + "solana-clock", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-structure", + "solana-hash 4.5.0", + "solana-instruction", + "solana-last-restart-slot", + "solana-loader-v3-interface 7.0.0", + "solana-program-entrypoint", + "solana-pubkey 4.2.0", + "solana-rent 4.3.0", + "solana-sbpf 0.21.0", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-stable-layout", + "solana-stake-interface 3.1.0", + "solana-svm-callback 4.1.2", + "solana-svm-feature-set 4.1.2", + "solana-svm-log-collector 4.1.2", + "solana-svm-measure 4.1.2", + "solana-svm-timings 4.1.2", + "solana-svm-transaction 4.1.2", + "solana-svm-type-overrides 4.1.2", + "solana-system-interface 3.2.0", + "solana-sysvar 4.1.0", + "solana-sysvar-id", + "solana-transaction-context 4.1.2", "thiserror 2.0.18", ] @@ -3936,11 +4550,11 @@ dependencies = [ [[package]] name = "solana-pubkey" -version = "4.1.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b06bd918d60111ee1f97de817113e2040ca0cedb740099ee8d646233f6b906c" +checksum = "7db719574990de7e8b0f55a8593ac92a5ccb42c8ce67b3e4bf05b139d5d9ee71" dependencies = [ - "rand 0.9.2", + "rand 0.9.5", "solana-address 2.6.1", ] @@ -3959,15 +4573,17 @@ dependencies = [ [[package]] name = "solana-rent" -version = "4.2.1" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40f02fbe2669ebe5d851dbf29a02e91ed6244b051bb64fcc57e6644aba636063" +checksum = "39f0d780bf8e8a1fe8b5b5fce1acad6b209485b86dec246e7523d5e4a8b7c7fc" dependencies = [ "serde", "serde_derive", + "solana-get-sysvar", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", + "wincode 0.5.5", ] [[package]] @@ -3993,6 +4609,23 @@ dependencies = [ "winapi", ] +[[package]] +name = "solana-sbpf" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f84c593fa3d4131045b606dec5acf9d8eac73791bc786ca9911057aec8f43ec" +dependencies = [ + "byteorder", + "combine", + "hash32", + "libc", + "log", + "rand 0.8.5", + "rustc-demangle", + "thiserror 2.0.18", + "winapi", +] + [[package]] name = "solana-sdk" version = "4.0.1" @@ -4002,18 +4635,18 @@ dependencies = [ "bincode", "bs58", "serde", - "solana-account 4.2.0", + "solana-account 4.3.1", "solana-epoch-info", "solana-epoch-rewards-hasher", "solana-fee-structure", "solana-inflation", "solana-keypair", - "solana-message 4.1.0", + "solana-message 4.4.0", "solana-offchain-message", "solana-presigner", "solana-program", "solana-program-memory", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", "solana-sanitize", "solana-sdk-ids", "solana-sdk-macro", @@ -4026,7 +4659,7 @@ dependencies = [ "solana-signature", "solana-signer", "solana-time-utils", - "solana-transaction 4.1.0", + "solana-transaction 4.1.5", "solana-transaction-error", "thiserror 2.0.18", ] @@ -4103,12 +4736,12 @@ dependencies = [ [[package]] name = "solana-serialize-utils" -version = "3.1.1" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d7cc401931d178472358e6b78dc72d031dc08f752d7410f0e8bd259dd6f02fa" +checksum = "761357b0853c9623bf12c1d2314b3d6160a85b087b84c45224fb85766d22616b" dependencies = [ "solana-instruction-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", "solana-sanitize", ] @@ -4116,20 +4749,32 @@ dependencies = [ name = "solana-sha256-hasher" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" +checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" +dependencies = [ + "sha2 0.10.9", + "solana-define-syscall 4.0.1", + "solana-hash 4.5.0", +] + +[[package]] +name = "solana-sha512-hasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11e10e103ab5bd52af341e7bc2f4123a2f4e66bb7ba4e6ca40f1e00cd6314e02" dependencies = [ "sha2 0.10.9", - "solana-define-syscall 4.0.1", - "solana-hash 4.4.0", + "solana-define-syscall 5.1.0", + "solana-hash-512", ] [[package]] name = "solana-short-vec" -version = "3.2.0" +version = "3.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3bd991c2cc415291c86bb0b6b4d53e93d13bb40344e4c5a2884e0e4f5fa93f" +checksum = "7d8250a4495aad49ad20556a607da53bdcb20de78da10b65afbf918b7f1de647" dependencies = [ "serde_core", + "wincode 0.5.5", ] [[package]] @@ -4139,7 +4784,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6c79722e299d957958bf33695f7cd1ef6724ff55563c60fd9e3e24487cccde2" dependencies = [ "solana-hard-forks", - "solana-hash 4.4.0", + "solana-hash 4.5.0", "solana-sha256-hasher", ] @@ -4151,49 +4796,53 @@ checksum = "b0364c7577c3c82a693ce28a1febc8d1b5d1b0a175fdc2114ae6186b69effe1e" dependencies = [ "ed25519-dalek", "five8", - "rand 0.9.2", + "rand 0.9.5", "serde", "serde-big-array", "serde_derive", "solana-sanitize", - "wincode", + "wincode 0.5.5", ] [[package]] name = "solana-signer" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bfea97951fee8bae0d6038f39a5efcb6230ecdfe33425ac75196d1a1e3e3235" +checksum = "520bd6021163ee517f4bdc7ae03ded904f97e11320001ba0b3355f45eb14f558" dependencies = [ - "solana-pubkey 3.0.0", + "solana-pubkey 4.2.0", "solana-signature", "solana-transaction-error", ] [[package]] name = "solana-slot-hashes" -version = "3.0.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2585f70191623887329dfb5078da3a00e15e3980ea67f42c2e10b07028419f43" +checksum = "5c7ce2b4b8911bf2db3de7b6266e67bfc21a6a9f8c566fb096d9782ca2ad16ee" dependencies = [ "serde", "serde_derive", - "solana-hash 4.4.0", + "solana-get-sysvar", + "solana-hash 4.5.0", "solana-sdk-ids", "solana-sysvar-id", + "wincode 0.5.5", ] [[package]] name = "solana-slot-history" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f914f6b108f5bba14a280b458d023e3621c9973f27f015a4d755b50e88d89e97" +checksum = "40427c04d3e808493cb5e3d1a97cef84d7c15cb6f89b15c5684d0d4027105600" dependencies = [ "bv", "serde", "serde_derive", + "solana-get-sysvar", "solana-sdk-ids", "solana-sysvar-id", + "wincode 0.5.5", ] [[package]] @@ -4203,7 +4852,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9f6a291ba063a37780af29e7db14bdd3dc447584d8ba5b3fc4b88e2bbc982fa" dependencies = [ "solana-instruction", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", +] + +[[package]] +name = "solana-stake-history" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c736a6aa0e53b9d264d90b06589fc0996f49f882f3e71842ed754fc57ffc1a43" +dependencies = [ + "serde", + "serde_derive", + "solana-clock", + "solana-get-sysvar", + "solana-sdk-ids", + "solana-sysvar-id", + "wincode 0.5.5", ] [[package]] @@ -4225,6 +4889,25 @@ dependencies = [ "solana-sysvar-id", ] +[[package]] +name = "solana-stake-interface" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49eb5c77484214c3484921e2cdda79d185373118b5458c1b2df0f1a04c3bc30" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-clock", + "solana-cpi", + "solana-instruction", + "solana-program-error", + "solana-pubkey 4.2.0", + "solana-system-interface 3.2.0", + "solana-sysvar 4.1.0", + "solana-sysvar-id", +] + [[package]] name = "solana-svm-callback" version = "3.1.11" @@ -4237,12 +4920,30 @@ dependencies = [ "solana-pubkey 3.0.0", ] +[[package]] +name = "solana-svm-callback" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d50ab466a202b3ec768d0d1f808c570822b4d2492801772359b9509baf1e8c6" +dependencies = [ + "solana-account 4.3.1", + "solana-clock", + "solana-precompile-error", + "solana-pubkey 4.2.0", +] + [[package]] name = "solana-svm-feature-set" version = "3.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5addc8fc7beb262aed2df0c34322a04a1b07b82d35fac0a34cd01f5263f7e971" +[[package]] +name = "solana-svm-feature-set" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35320ec1b4460e2f748c9ebb6c42eb3069f8d85ec46a185ae9b5628430f3c606" + [[package]] name = "solana-svm-log-collector" version = "3.1.11" @@ -4252,12 +4953,27 @@ dependencies = [ "log", ] +[[package]] +name = "solana-svm-log-collector" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5ba1a825b27776f6a92fae44613d5e7f906f0c56e542bbbe1a6746eb168daff" +dependencies = [ + "log", +] + [[package]] name = "solana-svm-measure" version = "3.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8bc239ef12213c45a4077799a154f340b290938973ad11dc4aaedee8fe39319" +[[package]] +name = "solana-svm-measure" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41ec9c705bec0fc99b9220e62fbae9fb0a297b9a95ff411badce934103a92ec7" + [[package]] name = "solana-svm-timings" version = "3.1.11" @@ -4265,10 +4981,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df7bc8099ec662531e751607c096a2b336502b592ddd2cf584ec8312fd499fa8" dependencies = [ "eager", - "enum-iterator", + "enum-iterator 1.5.0", "solana-pubkey 3.0.0", ] +[[package]] +name = "solana-svm-timings" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b72896172acdbce474662e876fdd413092893599156500cc68840abea649441" +dependencies = [ + "eager", + "enum-iterator 2.3.0", + "solana-pubkey 4.2.0", +] + [[package]] name = "solana-svm-transaction" version = "3.1.11" @@ -4283,6 +5010,20 @@ dependencies = [ "solana-transaction 3.1.0", ] +[[package]] +name = "solana-svm-transaction" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "998e6d7d1197d29a77d3701ae273cfc3e95e79978546faa4d28af637ef5211e7" +dependencies = [ + "solana-hash 4.5.0", + "solana-message 4.4.0", + "solana-pubkey 4.2.0", + "solana-sdk-ids", + "solana-signature", + "solana-transaction 4.1.5", +] + [[package]] name = "solana-svm-type-overrides" version = "3.1.11" @@ -4292,6 +5033,57 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "solana-svm-type-overrides" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "128cad78148dbd90e61a0bdf54706a24c356e858d85f2674dd7755eac594a4df" +dependencies = [ + "rand 0.9.5", +] + +[[package]] +name = "solana-syscalls" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2788d359af16fac879c081bc0b725e8a200702156af92e75e2c18346fcde332" +dependencies = [ + "bincode", + "libsecp256k1 0.7.2", + "num-traits", + "solana-account 4.3.1", + "solana-account-info", + "solana-big-mod-exp", + "solana-blake3-hasher", + "solana-bls12-381-syscall", + "solana-bn254", + "solana-clock", + "solana-cpi", + "solana-curve25519 4.0.1", + "solana-hash 4.5.0", + "solana-hash-512", + "solana-instruction", + "solana-keccak-hasher", + "solana-poseidon 4.0.0", + "solana-program-entrypoint", + "solana-program-runtime 4.1.2", + "solana-pubkey 4.2.0", + "solana-sbpf 0.21.0", + "solana-sdk-ids", + "solana-secp256k1-recover", + "solana-sha256-hasher", + "solana-sha512-hasher", + "solana-stable-layout", + "solana-stake-interface 3.1.0", + "solana-svm-feature-set 4.1.2", + "solana-svm-log-collector 4.1.2", + "solana-svm-type-overrides 4.1.2", + "solana-sysvar 4.1.0", + "solana-sysvar-id", + "solana-transaction-context 4.1.2", + "thiserror 2.0.18", +] + [[package]] name = "solana-system-interface" version = "2.0.0" @@ -4309,9 +5101,9 @@ dependencies = [ [[package]] name = "solana-system-interface" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a95a6f2e23ed861d6444ad4a6d6896c418d7d101b960787e65a8e33157cee81b" +checksum = "55b54965bf0b76fa8e2b35376583efddd4d916618cfe595bf48c7d7b55a9e628" dependencies = [ "num-traits", "serde", @@ -4320,6 +5112,7 @@ dependencies = [ "solana-instruction", "solana-msg", "solana-program-error", + "wincode 0.5.5", ] [[package]] @@ -4336,16 +5129,40 @@ dependencies = [ "solana-fee-calculator", "solana-instruction", "solana-nonce", - "solana-nonce-account", - "solana-packet", - "solana-program-runtime", + "solana-nonce-account 3.0.0", + "solana-packet 3.0.0", + "solana-program-runtime 3.1.11", "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-svm-log-collector", - "solana-svm-type-overrides", + "solana-svm-log-collector 3.1.11", + "solana-svm-type-overrides 3.1.11", "solana-system-interface 2.0.0", "solana-sysvar 3.1.1", - "solana-transaction-context", + "solana-transaction-context 3.1.11", +] + +[[package]] +name = "solana-system-program" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64154747d8e97a2ac1869e7633b9d5b8cac01d1ca99cf05f5910eb4b5718fbbc" +dependencies = [ + "bincode", + "log", + "solana-account 4.3.1", + "solana-bincode", + "solana-fee-calculator", + "solana-instruction", + "solana-nonce", + "solana-nonce-account 4.1.1", + "solana-packet 4.2.0", + "solana-program-runtime 4.1.2", + "solana-pubkey 4.2.0", + "solana-sdk-ids", + "solana-svm-log-collector 4.1.2", + "solana-system-interface 3.2.0", + "solana-sysvar 4.1.0", + "solana-transaction-context 4.1.2", ] [[package]] @@ -4365,13 +5182,13 @@ dependencies = [ "solana-epoch-rewards", "solana-epoch-schedule", "solana-fee-calculator", - "solana-hash 4.4.0", + "solana-hash 4.5.0", "solana-instruction", "solana-last-restart-slot", "solana-program-entrypoint", "solana-program-error", "solana-program-memory", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", "solana-rent 3.1.0", "solana-sdk-ids", "solana-sdk-macro", @@ -4382,9 +5199,9 @@ dependencies = [ [[package]] name = "solana-sysvar" -version = "4.0.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1632b69b4f72489db5949a10e8308c229dfa003f99ecaa7477b376807c7b81f4" +checksum = "ada7045bbfdd802af08fbc9c7e2b56ddabb20599d22e4c3840fcef5e7afb8324" dependencies = [ "base64 0.22.1", "bincode", @@ -4399,19 +5216,22 @@ dependencies = [ "solana-epoch-rewards", "solana-epoch-schedule", "solana-fee-calculator", - "solana-hash 4.4.0", + "solana-get-sysvar", + "solana-hash 4.5.0", "solana-instruction", "solana-last-restart-slot", "solana-program-entrypoint", "solana-program-error", "solana-program-memory", - "solana-pubkey 4.1.0", - "solana-rent 4.2.1", + "solana-pubkey 4.2.0", + "solana-rent 4.3.0", "solana-sdk-ids", "solana-sdk-macro", "solana-slot-hashes", "solana-slot-history", + "solana-stake-history", "solana-sysvar-id", + "wincode 0.5.5", ] [[package]] @@ -4440,7 +5260,7 @@ dependencies = [ "serde", "serde_derive", "solana-address 2.6.1", - "solana-hash 4.4.0", + "solana-hash 4.5.0", "solana-instruction", "solana-instruction-error", "solana-message 3.1.0", @@ -4454,24 +5274,24 @@ dependencies = [ [[package]] name = "solana-transaction" -version = "4.1.0" +version = "4.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6aefe6edf26c6daa57f6caa1af119083abeaaf177a4ba38b4b492ca2ff2f7fd" +checksum = "6aa9b0f8543b99e1cb7db16a7c1a392139d82db57a90d262fb0a394807337bec" dependencies = [ "serde", "serde_derive", "solana-address 2.6.1", - "solana-hash 4.4.0", + "solana-hash 4.5.0", "solana-instruction", "solana-instruction-error", - "solana-message 4.1.0", + "solana-message 4.4.0", "solana-sanitize", "solana-sdk-ids", "solana-short-vec", "solana-signature", "solana-signer", "solana-transaction-error", - "wincode", + "wincode 0.5.5", ] [[package]] @@ -4484,18 +5304,35 @@ dependencies = [ "serde", "solana-account 3.4.0", "solana-instruction", - "solana-instructions-sysvar", + "solana-instructions-sysvar 3.0.0", "solana-pubkey 3.0.0", "solana-rent 3.1.0", - "solana-sbpf", + "solana-sbpf 0.13.1", + "solana-sdk-ids", +] + +[[package]] +name = "solana-transaction-context" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ffd061d881fb2c182078e6ca6094fe113e50edbec224c4f8999747eb643cd02" +dependencies = [ + "bincode", + "serde", + "solana-account 4.3.1", + "solana-instruction", + "solana-instructions-sysvar 3.0.0", + "solana-pubkey 4.2.0", + "solana-rent 4.3.0", + "solana-sbpf 0.21.0", "solana-sdk-ids", ] [[package]] name = "solana-transaction-error" -version = "3.2.0" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a2165ad25b694c654d5395fc7a049452a192376e4c96a7fad05580f6ba5ba1c" +checksum = "a949797bc1ac31836d0070e791083028a8c2e0d493fa4cf51c0bed7a04c65c22" dependencies = [ "serde", "serde_derive", @@ -4529,13 +5366,39 @@ dependencies = [ "solana-system-interface 2.0.0", ] +[[package]] +name = "solana-vote-interface" +version = "6.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13a7a204b455a53fe8c9a26a6885391a5896835e06694dbe0cf37c580f82f128" +dependencies = [ + "bincode", + "cfg_eval", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "serde_with", + "solana-clock", + "solana-hash 4.5.0", + "solana-instruction", + "solana-instruction-error", + "solana-pubkey 4.2.0", + "solana-rent 4.3.0", + "solana-sdk-ids", + "solana-serde-varint", + "solana-serialize-utils", + "solana-short-vec", + "solana-system-interface 3.2.0", +] + [[package]] name = "solana-vote-program" version = "3.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55e2eab8557ff61ae2f58ebdb63aabf3579e04eb3dd07e8b4c4102704a137bae" dependencies = [ - "agave-feature-set", + "agave-feature-set 3.1.11", "bincode", "log", "num-derive", @@ -4548,19 +5411,46 @@ dependencies = [ "solana-hash 3.1.0", "solana-instruction", "solana-keypair", - "solana-packet", - "solana-program-runtime", + "solana-packet 3.0.0", + "solana-program-runtime 3.1.11", "solana-pubkey 3.0.0", "solana-rent 3.1.0", "solana-sdk-ids", "solana-signer", "solana-slot-hashes", "solana-transaction 3.1.0", - "solana-transaction-context", - "solana-vote-interface", + "solana-transaction-context 3.1.11", + "solana-vote-interface 4.0.4", "thiserror 2.0.18", ] +[[package]] +name = "solana-vote-program" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d772aa219b97b0cd9ec512c9330179714e3bb6231df4a8b81981b6c88f85f1" +dependencies = [ + "agave-feature-set 4.1.2", + "bincode", + "log", + "solana-account 4.3.1", + "solana-bincode", + "solana-bls-signatures", + "solana-clock", + "solana-epoch-schedule", + "solana-hash 4.5.0", + "solana-instruction", + "solana-packet 4.2.0", + "solana-program-runtime 4.1.2", + "solana-pubkey 4.2.0", + "solana-rent 4.3.0", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-system-interface 3.2.0", + "solana-transaction-context 4.1.2", + "solana-vote-interface 6.0.3", +] + [[package]] name = "solana-zero-copy" version = "1.0.0" @@ -4577,15 +5467,29 @@ version = "3.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ebd77845de672972a32c357d7a68f2cc16c1037cc0ebf550ebba167827c10c" dependencies = [ - "agave-feature-set", + "agave-feature-set 3.1.11", "bytemuck", "num-derive", "num-traits", "solana-instruction", - "solana-program-runtime", + "solana-program-runtime 3.1.11", + "solana-sdk-ids", + "solana-svm-log-collector 3.1.11", + "solana-zk-sdk 4.0.0", +] + +[[package]] +name = "solana-zk-elgamal-proof-program" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d841aa9791a275535f676c9403413c66da7c1bb1c867d3575b58f4e5b881ef" +dependencies = [ + "bytemuck", + "solana-instruction", + "solana-program-runtime 4.1.2", "solana-sdk-ids", - "solana-svm-log-collector", - "solana-zk-sdk", + "solana-svm-log-collector 4.1.2", + "solana-zk-sdk 5.0.1", ] [[package]] @@ -4625,23 +5529,66 @@ dependencies = [ "zeroize", ] +[[package]] +name = "solana-zk-sdk" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09670ff59f60e6ddc2209c2e4353992a9b9f01d4e244f3e9d67bd5146e33d388" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "itertools 0.14.0", + "merlin", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "serde_json", + "sha3", + "solana-address 2.6.1", + "solana-derivation-path", + "solana-instruction", + "solana-sdk-ids", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "subtle", + "thiserror 2.0.18", + "zeroize", +] + [[package]] name = "solana-zk-token-proof-program" version = "3.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c13a05831857b4e3320d98cdd77a3f7b645566508d8f66a07c9168ac1e8bc68" dependencies = [ - "agave-feature-set", + "agave-feature-set 3.1.11", "bytemuck", "num-derive", "num-traits", "solana-instruction", - "solana-program-runtime", + "solana-program-runtime 3.1.11", "solana-sdk-ids", - "solana-svm-log-collector", + "solana-svm-log-collector 3.1.11", "solana-zk-token-sdk", ] +[[package]] +name = "solana-zk-token-proof-program" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4841d6e055847c84d011d187cbad022ea4f8832c85a61a1aa220c192bd4dfd0" +dependencies = [ + "solana-program-runtime 4.1.2", +] + [[package]] name = "solana-zk-token-sdk" version = "3.1.11" @@ -4662,7 +5609,7 @@ dependencies = [ "serde", "serde_json", "sha3", - "solana-curve25519", + "solana-curve25519 3.1.11", "solana-derivation-path", "solana-instruction", "solana-pubkey 3.0.0", @@ -4747,7 +5694,7 @@ dependencies = [ "solana-program-error", "solana-program-option", "solana-pubkey 3.0.0", - "solana-zk-sdk", + "solana-zk-sdk 4.0.0", "thiserror 2.0.18", ] @@ -4769,7 +5716,7 @@ dependencies = [ "solana-program-pack", "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-zk-sdk", + "solana-zk-sdk 4.0.0", "spl-pod", "spl-token-confidential-transfer-proof-extraction", "spl-token-confidential-transfer-proof-generation", @@ -4787,14 +5734,14 @@ checksum = "879a9ebad0d77383d3ea71e7de50503554961ff0f4ef6cbca39ad126e6f6da3a" dependencies = [ "bytemuck", "solana-account-info", - "solana-curve25519", + "solana-curve25519 3.1.11", "solana-instruction", - "solana-instructions-sysvar", + "solana-instructions-sysvar 3.0.0", "solana-msg", "solana-program-error", "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-zk-sdk", + "solana-zk-sdk 4.0.0", "spl-pod", "thiserror 2.0.18", ] @@ -4806,7 +5753,7 @@ 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.18", ] @@ -4919,6 +5866,12 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "thiserror" version = "1.0.69" @@ -4959,6 +5912,15 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + [[package]] name = "tinyvec" version = "1.11.0" @@ -5131,7 +6093,7 @@ dependencies = [ name = "transfer-sol-pinocchio-program" version = "0.1.0" dependencies = [ - "litesvm", + "litesvm 0.11.0", "pinocchio", "pinocchio-system", "solana-instruction", @@ -5148,7 +6110,7 @@ version = "0.1.0" dependencies = [ "borsh", "borsh-derive", - "litesvm", + "litesvm 0.11.0", "solana-instruction", "solana-keypair", "solana-native-token", @@ -5330,25 +6292,50 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "wincode" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c754f1fc41250f2f742a27ba0fcc9f73df1dec23f6878490770855d43c322d" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "bv", + "pastey", + "proc-macro2", + "quote", + "thiserror 2.0.18", + "wincode-derive 0.4.6", +] + +[[package]] +name = "wincode" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5d39d1a984eb7ae37afa348f058216d62a6d5f71640f4113a8114386c2a812a" dependencies = [ "pastey", "proc-macro2", "quote", - "solana-short-vec", "thiserror 2.0.18", - "wincode-derive", + "wincode-derive 0.5.0", ] [[package]] name = "wincode-derive" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e070787599c7c067b89598cd3eda440cca1b69eda9e0ff7c725fc8679ce9eb4" +checksum = "15ab90b719560d0fda79c74550ad1c948d17b118765942838055ebaf34d67071" dependencies = [ - "darling 0.21.3", + "darling", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "wincode-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cb427b174d0f50b407f003623db1d892986e780651ee9d4231f3c9fe9ffcbb7" +dependencies = [ + "darling", "proc-macro2", "quote", "syn 2.0.117", @@ -5384,6 +6371,15 @@ version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "zerocopy" version = "0.8.47" diff --git a/Cargo.toml b/Cargo.toml index 7ed542bcb..09104c61c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,6 +46,13 @@ members = [ "basics/transfer-sol/anchor/programs/*", "basics/transfer-sol/asm", + # cryptography + "cryptography/alt-bn128-g2/pinocchio/program", + "cryptography/bls-key-registry/pinocchio/program", + "cryptography/bls-multisig/pinocchio/program", + "cryptography/bls12-381/pinocchio/program", + "cryptography/encrypted-ballot/pinocchio/program", + # tokens "tokens/create-token/native/program", "tokens/create-token/pinocchio/program", diff --git a/README.md b/README.md index 84ee934af..a394fae30 100644 --- a/README.md +++ b/README.md @@ -314,6 +314,40 @@ Work with Metaplex compressed NFTs. [anchor](./compression/cutils/anchor) +## Cryptography + +Each example wraps a cryptographic syscall in a small Pinocchio program. The alt_bn128 G2 (SIMD-0302) and BLS12-381 syscalls run in LiteSVM today but only work on public clusters once their feature gates activate. + +### Alt-bn128 G2 operations + +Add and scalar-multiply BN254 G2 points with the `sol_alt_bn128_group_op` syscall. + +[pinocchio](./cryptography/alt-bn128-g2/pinocchio) + +### BLS12-381 curve operations + +Add, subtract, and scalar-multiply BLS12-381 G1 and G2 points with the `sol_curve_group_op` syscall. + +[pinocchio](./cryptography/bls12-381/pinocchio) + +### BLS multisig + +Verify aggregate BLS signatures over BN254 with a single pairing check — stateless, or against signers stored in a multisig account. + +[pinocchio](./cryptography/bls-multisig/pinocchio) + +### BLS key registry + +Maintain a running aggregate BLS12-381 G2 public key on-chain, adding and removing members with curve syscalls. + +[pinocchio](./cryptography/bls-key-registry/pinocchio) + +### Encrypted ballot + +Fold twisted ElGamal ballot ciphertexts into an encrypted running tally with ristretto255 additions. + +[pinocchio](./cryptography/encrypted-ballot/pinocchio) + ## Oracles ### pyth diff --git a/cryptography/alt-bn128-g2/pinocchio/README.md b/cryptography/alt-bn128-g2/pinocchio/README.md new file mode 100644 index 000000000..009d0377e --- /dev/null +++ b/cryptography/alt-bn128-g2/pinocchio/README.md @@ -0,0 +1,18 @@ +# Alt-bn128 G2 operations (Pinocchio) + +A stateless program that wraps the BN254 (alt_bn128) G2 group operations added by [SIMD-0302](https://github.com/solana-foundation/solana-improvement-documents/pull/302), via the `sol_alt_bn128_group_op` syscall. Results come back as transaction return data. + +| Discriminator | Instruction | Input | +| ------------- | ----------- | --------------------------------------------------- | +| 0 | G2 add | two big-endian G2 points (128 bytes each) | +| 1 | G2 mul | one big-endian G2 point ‖ 32-byte big-endian scalar | + +The syscall runs in LiteSVM today but only works on public clusters once the `enable_alt_bn128_g2_syscalls` feature gate activates. + +## Test + +```sh +pnpm install +pnpm build-and-test # TypeScript tests (mocha + LiteSVM) +cargo test --manifest-path=./program/Cargo.toml # Rust tests (litesvm), after build-and-test +``` diff --git a/cryptography/alt-bn128-g2/pinocchio/package.json b/cryptography/alt-bn128-g2/pinocchio/package.json new file mode 100644 index 000000000..9bce91a3f --- /dev/null +++ b/cryptography/alt-bn128-g2/pinocchio/package.json @@ -0,0 +1,24 @@ +{ + "name": "alt-bn128-g2-pinocchio", + "version": "0.1.0", + "type": "module", + "scripts": { + "test": "mocha --import=tsx -t 1000000 ./tests/alt-bn128-g2.test.ts", + "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", + "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", + "deploy": "solana program deploy ./program/target/so/alt_bn128_g2_pinocchio_program.so" + }, + "dependencies": { + "@solana/kit": "^7.0.0" + }, + "devDependencies": { + "@types/chai": "^5.2.3", + "@types/mocha": "^10.0.10", + "@types/node": "^26.1.0", + "chai": "^6.2.2", + "litesvm": "^1.3.0", + "mocha": "^11.7.5", + "tsx": "^4.19.2", + "typescript": "^5.9.3" + } +} diff --git a/cryptography/alt-bn128-g2/pinocchio/pnpm-lock.yaml b/cryptography/alt-bn128-g2/pinocchio/pnpm-lock.yaml new file mode 100644 index 000000000..6e11abae2 --- /dev/null +++ b/cryptography/alt-bn128-g2/pinocchio/pnpm-lock.yaml @@ -0,0 +1,2825 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@solana/kit': + specifier: ^7.0.0 + version: 7.0.0(typescript@5.9.3) + devDependencies: + '@types/chai': + specifier: ^5.2.3 + version: 5.2.3 + '@types/mocha': + specifier: ^10.0.10 + version: 10.0.10 + '@types/node': + specifier: ^26.1.0 + version: 26.1.2 + chai: + specifier: ^6.2.2 + version: 6.2.2 + litesvm: + specifier: ^1.3.0 + version: 1.3.0(typescript@5.9.3) + mocha: + specifier: ^11.7.5 + version: 11.8.0 + tsx: + specifier: ^4.19.2 + version: 4.23.5 + typescript: + specifier: ^5.9.3 + version: 5.9.3 + +packages: + + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@solana-program/system@0.12.2': + resolution: {integrity: sha512-MaBeOxlvTruQhA7UYkOb3hVTEHPPagOtd+PvTm6a8rGgvEAP0kD4BbC37NceOaR4ABNqdaCmD5OMVRKgrE6KAg==} + peerDependencies: + '@solana/kit': ^6.4.0 + + '@solana-program/token@0.14.0': + resolution: {integrity: sha512-zpLMr6JZndlsQCQvrm0gezfwdr1lmzOGqN6v2WIYXjtDmbF+xg6zh/MAp2UFHRpv3uDmylEdjtQo05pa2OeaYg==} + engines: {node: '>=24.0.0'} + peerDependencies: + '@solana/kit': ^6.5.0 + + '@solana/accounts@6.10.0': + resolution: {integrity: sha512-+FxfDOrnifoPlBkF+fr8eeQdgM6xtIgAg9xKMu3WnIz60oZd4Xnry6+ff6t+ePPoZZp397FSg9ZJet68VCWm5Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/accounts@7.0.0': + resolution: {integrity: sha512-RfbinkhuWxcObxZIdjeWEn/mzLqRp/h2hAk/ZQCUxPdDBW8h4XxEybK9GBItGOAcrUz5HuusXTD+cXXnlIxWcg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/addresses@6.10.0': + resolution: {integrity: sha512-vEoCGBTxG0HCERAn84KXkrJjl+pDaNzOpZ0qbgcPS98fYxP5yzbKB8SNOY2bzrbkRUmmw5Q3hqTRERemUN2Gcw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/addresses@7.0.0': + resolution: {integrity: sha512-E7sJtV5d3bXrmw3I30rcKY+xoqM++6KIVJCi+q8ZaSMyP04UMfEENPHIJ+TkyS1RUgjzPT91ka/oWrtTh6EfkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/assertions@6.10.0': + resolution: {integrity: sha512-lKSAdVo+P/6Lp4vs6shstXmFOpvxrABwn4o1462tb7sKkNapk6o9pPFVPGw4DUgPS3WqWRs1j2tmpuVjhQRntg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/assertions@7.0.0': + resolution: {integrity: sha512-CShOQLPezI0tbrih+L88fzt8FMHDyJoWkmulk4wfRp3HhpQL2yNlH/SWLH033qysnvkmE7TxBFUtcnbnf7jz1g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-core@6.10.0': + resolution: {integrity: sha512-nfAl9OMGo4HanIMxGsQoVB7BxMoqBCYEUxl8oEAZZ09pDxnaXQZkTRXEwPPccag37XfW1ciPd1vWPKwB2b0HHQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-core@7.0.0': + resolution: {integrity: sha512-6HtEisZEtFb6okARUgYqmKdDbn2aHRrSCDgB1/GEwr0s6fK5XNYpafaSjorbs2MEyZV3tCUFTj2j6fk/4nNcLg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-data-structures@6.10.0': + resolution: {integrity: sha512-CNasJW3bq5u+632Zt5aJ8rOjAjv2HyenpV8o9kAIqdmV4CBpjCCoBnKn8LkuR/sbeREZxJYfhKTXO/9ruAkw7A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-data-structures@7.0.0': + resolution: {integrity: sha512-P0Ys1mB4lYlz3MMTCaJSysE3OYrq8WvsveU1ta8U/yG1qChXFGCOxPVh06swjaRxwPrEakb9VUESS5vNtp1rRA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-numbers@6.10.0': + resolution: {integrity: sha512-CcM+wX4zOiA9zkh8A7t1787A0Ehgmu5+6Z2tKoHew6cNw/dkaUTPa8JnNHbvfsLC8dfHC1BhAEJl86sKmRsfkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-numbers@7.0.0': + resolution: {integrity: sha512-XL0jnmnXr3ceoX4tusT+XkBVR2iGKEJecTIXbIV7ILi9xObg3fNXafNbTmbIOvKc0ByTyjo8EWZ9jQKSRWgsgA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-strings@6.10.0': + resolution: {integrity: sha512-zlaqkg7K6F6IN4V/Ec8TWkTn054gxv7ZLagvGkuEyAdPQ6BzzsehOm2TqCuyXgJJTCGPLY1bEk6yH9NxANe0kA==} + engines: {node: '>=20.18.0'} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5.4.0' + peerDependenciesMeta: + fastestsmallesttextencoderdecoder: + optional: true + typescript: + optional: true + + '@solana/codecs-strings@7.0.0': + resolution: {integrity: sha512-zXE1PE9HkVk6phZ6aqHTXvLZ0qIl5bJNIvG9eMB7LuFO1XBVQywJUtjKS8fE3/xmRCWSMilFSrEXGA+SpOyLrQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5.4.0' + peerDependenciesMeta: + fastestsmallesttextencoderdecoder: + optional: true + typescript: + optional: true + + '@solana/codecs@6.10.0': + resolution: {integrity: sha512-lLVuxod4ChWp9i7OvpgIykYG8Q9OGPVXKnHM9VlzDDLylsx7Y1FoQL00sHa7PqFkJVmkBufaA6dcGbQ7FU+lAQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs@7.0.0': + resolution: {integrity: sha512-xT1IbwKkPZ544u/eqhb9SZ0fNYJidWgIUzKNQMbvLCwduayAkQp+czlGdvLQ6CVlqtCewtH3gW8biGU7YuBdEw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/errors@6.10.0': + resolution: {integrity: sha512-KBLAxCtAXr357JNhCyIDQXWbuSj5vN6w+28FSfcYY6OOSiphmXLAV3V58jgV0C6iNbIzFJFi6yatFyDTdeJsNg==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/errors@7.0.0': + resolution: {integrity: sha512-94r+LLSzZ0XVp+LOogwxWGXeo138uvwqtqRW9Tjl1DIXrFgh8euXnJSXZyydu1UXJs7ItOSm0QreJviSGw3TGQ==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fast-stable-stringify@6.10.0': + resolution: {integrity: sha512-iCNed27wk6PKSS3QUtHovRfMWF/jbVWogs2vB4tukKUCsqG4rDfDInIwZ6ur/nY6XTrgi2gMMdZq9GAUlWsbfw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fast-stable-stringify@7.0.0': + resolution: {integrity: sha512-i/b5ZJMqMJXa6etjypANa2/ErPZfNG9/EVIYl7HpWooyCRgZ8hZJmJ2Cgrp0r4EMXCLeWn4aEG2HOBTzOJ4F7Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fixed-points@6.10.0': + resolution: {integrity: sha512-ZkKL0alXH3L7/wMiVG8YUuG8qBKunlM810+YBD7nUPRhifiGsX1zwADViHLYNqLr/jUk0mTYFUcKznTpB/K+Gg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fixed-points@7.0.0': + resolution: {integrity: sha512-Y3gcyHTponi5kXpWVEJIhuZ7yT84N+8He4dbjXWqwMBJnzKM+4tqFCbzy6y+6+Jxt44RT1lDmbpxmZopFRXU8Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/functional@6.10.0': + resolution: {integrity: sha512-P8cevu4mAqHTXC37h1TVoOh8zhWB2tlOI/R9vWjYPpcLwcyWf8p2qq4LEGHl5kY+1C+4PNX39HsmCocXOPCDkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/functional@7.0.0': + resolution: {integrity: sha512-ix9fzYhc2hCLiYf+hGI00mzzayANKDExEBxbwrtMj/BdQkwgUIvIlOssqHeSqDChL3UZhq9lR24Nz4JwYX8Jbw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instruction-plans@6.10.0': + resolution: {integrity: sha512-YG7mo4zykzdc6ZTV0BuN6pveK9qeBySzlYYerq578A4eQu3xcypMAYRGAvhMZtWTanjjmD6CKtM0M7kVp0TNxg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instruction-plans@7.0.0': + resolution: {integrity: sha512-uzXHztc8hLoT5TNWFsBX2DIETyp/Lr2l36O330s3YCgpRmfI4IRbBrjjq7TxDYFm/QY8+DD4CRG8p7wZSqG8dQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instructions@6.10.0': + resolution: {integrity: sha512-0TToYF+8LXQ3ofPMx+yF6yaM9l4YJvcAPMy0qV5JsrBUFlWXBSANRuudKBQLHMvb+a3OiUTq5X7omuorKMBB3A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instructions@7.0.0': + resolution: {integrity: sha512-ZN0gKAtCOKDuIaStcvLZDf5H20fkk7jr4dZE0Rk7z0kslf6mrRam9Y23N6AzeHp/b5ZeVKyfaTf4M35mOktLNg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/keys@6.10.0': + resolution: {integrity: sha512-26IRfdm/hTUCmM7MeEeX0ULSbCM6OzkZTkfkrPircqmRM7xyNqP4hq7u0P7wjb9dl7NfgyG6K7cdvUxrj2e3mA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/keys@7.0.0': + resolution: {integrity: sha512-JsdYR/YN3AGHZN2aZoeE5cymHYkNoBLnqgXoRncW/VyD7fMcR350aHU1hCMYd0b5BtITLsGmvvtvrgVkzK83Eg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/kit@6.10.0': + resolution: {integrity: sha512-/WnnQp3uARh2JCFSfAakejTAqwmXVuMVTcRn5r2yDwY2yzZ4R6mt/Cl59VPimVLNSoTyN/KsEwhv9omr3ERazQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/kit@7.0.0': + resolution: {integrity: sha512-ZCeai4LRJQooUmJXvpgMEGFTrCdJnV1ODbDJ8oqFZ+Y4t/9x1baQsFFpruqsdRyeGv2Rr+X6jV7cldVD+hyzRA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/nominal-types@6.10.0': + resolution: {integrity: sha512-9ykyBBvnkInH7fCacjJi7zu2PJyd+OCt+VTjIISv070fHzKIMFqZqJJ/dJ0SRH2aHwfB3n86iVsmtBtuxi4KKA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/nominal-types@7.0.0': + resolution: {integrity: sha512-ff21hmKKMckDkGWah9tRXsEyFCtSnkugH+EMLGJOn7tiXdtFljOXW5Q12IXyeil87EE8aWb1MS6p8v5+hi71Vg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/offchain-messages@6.10.0': + resolution: {integrity: sha512-RiEgAueeMkFMC1suOXBIcmCZgtXRxy24yk0DldPB37bB4zwOF1SAaRjNRPjIkGK8RhCYrEpPosnzLyavw9ueRg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/offchain-messages@7.0.0': + resolution: {integrity: sha512-fGrzxmqVStweGHRlXVAPKACdDboFCwXq5m8C+aD9Nupax6Q9rnvjICzYRLypwqB9X90XIZazh0ys+0KGLMpIJQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/options@6.10.0': + resolution: {integrity: sha512-RO9UT3UYD8/Cu2uM6ZXbKvLeMnVD42+g9JRds7Pfs4AhiOyg4R4TJrQUAppTgavPTO3PBRlWtWOC05ZH/yAIbg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/options@7.0.0': + resolution: {integrity: sha512-6DhvMqRcL3mG0R5JejYIW5PDTDr7HcLX2R9iCs6OPN1HdsyXmE2rX2EldnuA0rYz1buOodeWYsu4N1lpDcEpaQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-core@6.10.0': + resolution: {integrity: sha512-JE70YTQOfFACVFGvoJon4Scc/eHUWjMu8Ovo35CcV2kHTAHYMCd4UkBd2gmlhK0vRMMomsQi1ZLPlAlTq0OoUQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-core@7.0.0': + resolution: {integrity: sha512-EwTUfOGoQQ3aXooRlQFVbk+sJW7NqJl1K+bmSLiJUjaBTSqtbr3GtMu7aoybJqzZQKjOGSG4Hn0BzK24SvWy3A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-interfaces@6.10.0': + resolution: {integrity: sha512-vr0/l9wcM4orwGr8cjkFWaJ9A4HvzuAv00jMFNMg0Spd0GZqnwnpW+D/fXa1lIJnTRaF3EeEjLh4VjKU037T0Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-interfaces@7.0.0': + resolution: {integrity: sha512-fz/HknZLGnVIjhjXrMzW3Qm1x80oeEMSOk4RzMwjcyAEyfzhHtGNW74NsU5W+uFpYz6UBbV5mB1jpuAdJdnj9A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/program-client-core@6.10.0': + resolution: {integrity: sha512-4PPbTLdC1ylHIuvhOFDP8RnSkXPCFjNFWGslzc+UFKnoR4ajzBcByX94jmaruDMk5ncxgj7tr9pzJTvfGHIaMA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/program-client-core@7.0.0': + resolution: {integrity: sha512-+N8HImlR3MTbbvhOShsLelQXGZKbi6KhPhyy+4ZkDLbnRs4QikTamIChXZmoCyxB51S8/9cNRAKyQhbeF5Y8Qg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/programs@6.10.0': + resolution: {integrity: sha512-qn/HeLP5KGUJXVub3fyGe69/rWaLX4jzwm6V/1pNxJDbdF+MBdgn18hP6F+VmhfdNmwK0lue3J/1HQ1UTMuQeQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/programs@7.0.0': + resolution: {integrity: sha512-a1HNgzr9YiiZ8vK4VaKHEXjnZmKX7W5ab2ghuseIalEw/+PJLFcTRTOw8n3efRu677b/bG2Icmb3MBBEXmvbPg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/promises@6.10.0': + resolution: {integrity: sha512-oJSIn+VBBMWDo8oqw7RV3tI6Jih+Ieup6FcQLYLDUriaeo7+8l1Zdezl8zh7SIfeU4lOfAbRg6mR0huaS/Lltg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/promises@7.0.0': + resolution: {integrity: sha512-rjoHnaR4zeEIHqIzfgotxRrLKqY4Goj0G5duZOnjHm8ZC+7eDkH5/mXj1bDJ4ROM70dVM+y1Xkrjg7IL6k6StA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-api@6.10.0': + resolution: {integrity: sha512-RjPIVsAb/85P1ptoO3WpC0x7QG6gG/e4q/3lo6gbSznUZOcoM+8sSBnCX7BwP1ZkCDS6NK/ClXLnhhhYZx+OGg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-api@7.0.0': + resolution: {integrity: sha512-MTtBO883st83CjWpo8B4g8EKzXaeoBX5N7+sv4vcvsn2q1NpY4SG3XejdX1FrKeTe9Xjbv0/FzFtykstbKe1UA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-parsed-types@6.10.0': + resolution: {integrity: sha512-5275mvSV1mxhwvrMVa+K7BU/nAetpHfcb+8Ql9rtA8RRf6DyiimFQFZUukE4Ez6XJihEpCHNy98yhkgai9wytQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-parsed-types@7.0.0': + resolution: {integrity: sha512-80VjPbB/TZ/Hy5qdRF7onPfMPHk5cwBVbtNUGbilrmFuqRzSvzSOY1ynNXXODPZBytNmPq7u7oJfSCsQ5MA9Ig==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec-types@6.10.0': + resolution: {integrity: sha512-NDZrKyZrJk4HaMFhTE/lAiMB824cWAodKqDHyKi0UteHU9pyRmil3BN1jt7e+j08mwMWwfklSgyrTaq52g6DIQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec-types@7.0.0': + resolution: {integrity: sha512-V4Hp2//fW8eYq1zcGgHPu7FXKHyIWERBQd4+NRaKn2m8rPiVAm3pVRwPzSvVE0+8Nyf5qzdcfcMf7NQdhl6j7Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec@6.10.0': + resolution: {integrity: sha512-yQdbWw5mZEWrwsunHR9NHkuhMXIB9sPOObwm18D53v5tAJnxTB0IcHvO647XqFDLTK/yQ4AdDtlYD1vsY07AMQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec@7.0.0': + resolution: {integrity: sha512-GRGlXpLgap9yVh3qmCl4huuKAoLMp/p82/9Q9ONj6lmFH+RqJE4Q+16V+HxHI5ZakmwZYoVZU4GEKjumse9SCg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-api@6.10.0': + resolution: {integrity: sha512-CRPQoTtT1cOwOQUsqS7jgo7wYdAj7jB5ab/UmMPWVpecf2FNMhWhgvxP2s82M7VkDGTGl13qaQ0WySmi7Egrlg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-api@7.0.0': + resolution: {integrity: sha512-o2PZDeNC/kg3VO3ry4R0JySJ1xMHLchZwmzVwamxGidlLe9uvzm6CHlCqv/JCq4/zHLo7qbLqnmOckZ6vlDqaw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-channel-websocket@6.10.0': + resolution: {integrity: sha512-KkqP1186HELPlJftA88SNAT2znR8knCVzsUipXVzY4zfW8sN3LOa0ePMzh9VZ/V+J+raTt55laR87ovAO0n+zw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-channel-websocket@7.0.0': + resolution: {integrity: sha512-79ecXBCT2pG+vXNBZim80vUz+B04L1mEduXobBIXM55VvxsHYT+4H4V+/ZHoFJUK6Lhbt+6zhpconx8Wa3H+JA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-spec@6.10.0': + resolution: {integrity: sha512-nWMwGaG4ulzeX2sskY5TywXF3cwEd8FDmUpLe2JBWxE8XDAOGOKcsYPYFcBgb8ee9KqfPT2PTNdcz9jOhJf34w==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-spec@7.0.0': + resolution: {integrity: sha512-Oips5ciWqPGO5Cx7hcEQ/czbcrUjPf+4cTam0UMrK3BnvHPcEAWkPYlIgabQiqa60/pjOOz7B936oMXA5XwL+g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions@6.10.0': + resolution: {integrity: sha512-6mfuHp/K7unFKCOTCCBC9ziEGnxe2tyJ74EbR51QUnBeCUdYD7Hhdpxic1WRSJ3UeNW/mG4OzFM6z8Wi64Eh9Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions@7.0.0': + resolution: {integrity: sha512-jLNjUCGBbCIfABqqHopNJIeAkhd4GzhbodgCH4x2X+S0ycBaERX393+k+fG8JPJpGujkmeQFBCeIKO3lK+PoYg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transformers@6.10.0': + resolution: {integrity: sha512-2nFUrVTiE720pJOY4XKx3HuYmishw0of/4oScu76YGm6O8wsmvFvPNAkrEinmieWXQkfpBfRvLZmpl8PaAy+ug==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transformers@7.0.0': + resolution: {integrity: sha512-NHkTKC2J4oaMMzyOtIEDOLCGtzg1Y8vlPoBmUeA82o+DNjBSiZLR2Ariy7n7chmwKchCZ8aGirBxjLCSRc6b/g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transport-http@6.10.0': + resolution: {integrity: sha512-JrdNuYi0nBbD3X8JUtgX1dQJwIwz/WJvmigDdELysXfGB2bTJpfjqGDLhCLOz2sRl66FASIEqgG/LVa2C9VXcA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transport-http@7.0.0': + resolution: {integrity: sha512-W0G15BN0xljXzRRo/ZwepJNiOjKhRImF5SxhjZauh2yVBoUjfd6NSCmYcdWu0tj9lypKKrB1ReS4oPmb4yCHbA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-types@6.10.0': + resolution: {integrity: sha512-zaSecTfCPvz/vcoAmKD6XoRstGHTr1EKJBD8T9UcpEFFB6CtF6DxerDB+wrzkamuT6msmnR2DWXMrYOGDAsgIg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-types@7.0.0': + resolution: {integrity: sha512-Lf2csFSWHwN/8EL03uWfS7n1J19vWLK4DBGkQ5jebRhoJ3dD+xPcJtS+epI2281t5aghJvoV7D+RIM0NextZJg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc@6.10.0': + resolution: {integrity: sha512-EwxsqoD+NXV+m+iobnWNtATD93gTgaNsOiQOzYB1/2e+8S6fl6obdNPB55yfXgtl4jt6GV6/ae4xuPhLv76vvg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc@7.0.0': + resolution: {integrity: sha512-hCf4XEhspsNb8TnQ+E961+rBuJcTyrmwNr4LDfVHEeO/VTqaN+yVwAI1wpxcnzwc+T4OoXcyujNiQWhVZPOhiA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/signers@6.10.0': + resolution: {integrity: sha512-+vtCc+mT1FpGxrA5oL2aaMxSHiMJ2hH5PcDIfjo2XJkHz2klZiCZyT5F9+zpltc9vdi1QTElQq59Sfplmtd33A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/signers@7.0.0': + resolution: {integrity: sha512-4E3xYQ0b9OZCTLghqfeHh66lfipy3jV1REdFJLk9WqPBaXVa/wSgGGIqZVa744ATSd9AeEfL/I5n/LrMNQOhoA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/subscribable@6.10.0': + resolution: {integrity: sha512-VsR6XMwkiDBkZJUcoGkEOhf397pOV75gKCL9Bx8bpi2T3Bbs0CxUpMn4yaUgAnRba3eXmjbXMNCXjttfa6sKbw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/subscribable@7.0.0': + resolution: {integrity: sha512-dJQA5AxDv/7YxuNe7GXIkaOUNhXczFaL3/SNOvXe7k77bC4dx4HPkySfcVDfEWBOePe3+8iyVbT8DZ3aOcp8Ng==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/sysvars@6.10.0': + resolution: {integrity: sha512-cG13p1+onxz+20iWjwWQr1Z1jQwPm0fnjoW75fqZq7p4rVCie3L2sXvaJsYPjWKrUvpOzOIEHnqZGkG05rCpjg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/sysvars@7.0.0': + resolution: {integrity: sha512-GKND6hCcBcrak3/VAtx6aEoAi9wQjJQzU2Fcu6JYmnTjGe5MHf21FqbjGl0aQ0C2HlJQQJmA07wgsuOiYDTDog==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-confirmation@6.10.0': + resolution: {integrity: sha512-ULvtg65qfenh4T/GYcIlKSUv5EqDcng9UN0dxbHU4kuZdR2e0B8HN2xDC4WhcFQVeFJSbTZmaYFkeTY/Y4gfGQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-confirmation@7.0.0': + resolution: {integrity: sha512-SaU2CY9ZDJGK47DtQ7xwKFmbgzDGqIN/Ug89ZSUzDPD9QdMRXhtxgH8KZgb0gSgpyel85sSt0QH9wkWzhp69ow==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-introspection@7.0.0': + resolution: {integrity: sha512-aO+5ewxGaziXYcXJZ6F3doq/KI1L3WU2z5eCjs4DBO0kRQBHp4bH6ZKygVX2JIxOZrd1rB9SxP/CCCX2wRm8Xw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-messages@6.10.0': + resolution: {integrity: sha512-s7v8G3BTxGlKYIj3eWCG0g1296v+1LBt16mVnlRH5FuyaJ5AdhlhtRho5HUDpdwE8EXun+y1c48V6uhcZ8wdbQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-messages@7.0.0': + resolution: {integrity: sha512-qCBYR3QQvykcI36vnqwI5090hGXS3mmCe72b/f/n9kBsBaA2oowdBXZupB1wwKe8+6x8o8VkhKQaK9oTKKbWTg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transactions@6.10.0': + resolution: {integrity: sha512-VADSqP9OTYmhrox4pcgDd4+RjVmednXSE0+8Y7SPK4PN1pK5Az2RJ0nSsy0xcTnaOr8mF/crwFktqPrRQwSbQA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transactions@7.0.0': + resolution: {integrity: sha512-y5nayd2Ozld/4Bxefz50e/E6qxyZteuZCZ7suh7z96KY6QUJlZDR+eCG1v/lA7Azt3GSOevJuYFX/ept/mqZkw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/mocha@10.0.10': + resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} + + '@types/node@26.1.2': + resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@2.1.4: + resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} + + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + + diff@7.0.0: + resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} + engines: {node: '>=0.3.1'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + js-yaml@4.3.1: + resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} + hasBin: true + + litesvm-darwin-arm64@1.3.0: + resolution: {integrity: sha512-fj6cV/ofjMXdl5CwjyyLTQnZObfVH5HYDScQ6O44iRqxASmgEyEh4sC8a7M0YZ1rcli9nu2cWl5ARGura89I7Q==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + litesvm-darwin-x64@1.3.0: + resolution: {integrity: sha512-ZYEddnc+tAn8sVYpzvww0oHFiekbCSv+0OZiA6eUDtcSx9uzeRDmPPQ9eI6vgyews2LefBDSENmUb70GHY6Cqg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + litesvm-linux-arm64-gnu@1.3.0: + resolution: {integrity: sha512-kmmKeef96pJI4AJGCvjzMCW6QHuzFrMF1i6dE6OcrtWHaz0Ag+TFaKOU35H1bjH/fDBwoJUV9UbaIbdWht81tA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + litesvm-linux-arm64-musl@1.3.0: + resolution: {integrity: sha512-FO9p6rx+/3h7R3CU7lkOebL+jy8UEDngSrENHu7pj9EOr78QVyE3Fm0O+WMnwXpMoCSgW0XLhu1cI9NHAbzCTA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + litesvm-linux-x64-gnu@1.3.0: + resolution: {integrity: sha512-yXC8ZAdIei9JQ2xw5/BocOTu/7EqZuFPyhgENQ1mYDhjNpoyUbIuGCWnqtria14mDda0aV9yVev8plGUrUpjUw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + litesvm-linux-x64-musl@1.3.0: + resolution: {integrity: sha512-oedromp1gTjShXmKmxZ1FYtnfM824vRcrPSPvGM0CrqJqKK61m1+tFwNRAVsDlpmWKvO/zsz90ctbgAUo/3TXg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + litesvm@1.3.0: + resolution: {integrity: sha512-tMu9sBIqSbF1gQluXEUtGmXPfZlMc10tOoBVeDokgK77nl/CcuC506sEoFKM5Rq58Dkb070lBMVBLc43TbMUzQ==} + engines: {node: '>= 20'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + mocha@11.8.0: + resolution: {integrity: sha512-VyCeUdGN3A9lmCTTgG4yuvY9ixxaDk+xt2R/7/+1AP6EqNG+G9OKkzBwhVtVYoNX8YsxNSgAl8mOv3IAeOpFbw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + tsx@4.23.5: + resolution: {integrity: sha512-rw55FUaqOoI7RvlQwLbhO4nSDApnQ4/CykPuiQ/EPvtrX3WA9Ig55jIt9VvbBJbzJuj12ueRu4PMZ2SxPVbihg==} + engines: {node: '>=18.0.0'} + hasBin: true + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@8.10.0: + resolution: {integrity: sha512-ibvdovq3nCFs8Msrd95BW+zUOq+aOVbT+wpHUoPWhztbHEoPc6oof51iFDB6Es8lTKvNvVW9jNSAB8dwrKTMGg==} + + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + workerpool@9.3.4: + resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + ws@8.21.1: + resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + + yargs@17.7.3: + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@solana-program/system@0.12.2(@solana/kit@6.10.0(typescript@5.9.3))': + dependencies: + '@solana/kit': 6.10.0(typescript@5.9.3) + + '@solana-program/token@0.14.0(@solana/kit@6.10.0(typescript@5.9.3))': + dependencies: + '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana/kit': 6.10.0(typescript@5.9.3) + + '@solana/accounts@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/accounts@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/addresses@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/addresses@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/assertions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/assertions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-core@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-core@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-data-structures@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-data-structures@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-numbers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-numbers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-strings@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-strings@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/fixed-points': 6.10.0(typescript@5.9.3) + '@solana/options': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/codecs@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/fixed-points': 7.0.0(typescript@5.9.3) + '@solana/options': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/errors@6.10.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 15.0.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/errors@7.0.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 15.0.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/fast-stable-stringify@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/fast-stable-stringify@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/fixed-points@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/fixed-points@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/functional@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/functional@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/instruction-plans@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/instruction-plans@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/instructions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/instructions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/keys@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/keys@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/kit@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/offchain-messages': 6.10.0(typescript@5.9.3) + '@solana/plugin-core': 6.10.0(typescript@5.9.3) + '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) + '@solana/program-client-core': 6.10.0(typescript@5.9.3) + '@solana/programs': 6.10.0(typescript@5.9.3) + '@solana/rpc': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + '@solana/sysvars': 6.10.0(typescript@5.9.3) + '@solana/transaction-confirmation': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/kit@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/offchain-messages': 7.0.0(typescript@5.9.3) + '@solana/plugin-core': 7.0.0(typescript@5.9.3) + '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) + '@solana/program-client-core': 7.0.0(typescript@5.9.3) + '@solana/programs': 7.0.0(typescript@5.9.3) + '@solana/rpc': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + '@solana/sysvars': 7.0.0(typescript@5.9.3) + '@solana/transaction-confirmation': 7.0.0(typescript@5.9.3) + '@solana/transaction-introspection': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/nominal-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/nominal-types@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/offchain-messages@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/offchain-messages@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/plugin-core@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/plugin-core@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/plugin-interfaces@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/plugin-interfaces@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/program-client-core@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/program-client-core@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/programs@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/programs@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/promises@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/promises@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-api@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-api@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-parsed-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-parsed-types@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec-types@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions-api@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-subscriptions-api@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-subscriptions-channel-websocket@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + ws: 8.21.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@solana/rpc-subscriptions-channel-websocket@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + ws: 8.21.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@solana/rpc-subscriptions-spec@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions-spec@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/rpc-subscriptions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/rpc-transformers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-transformers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-transport-http@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + undici-types: 8.10.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-transport-http@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + undici-types: 8.10.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-types@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fixed-points': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-types@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fixed-points': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-transport-http': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-transport-http': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/signers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/offchain-messages': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/signers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/offchain-messages': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/subscribable@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/subscribable@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/sysvars@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/sysvars@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-confirmation@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/transaction-confirmation@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/transaction-introspection@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-messages@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-messages@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transactions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transactions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/mocha@10.0.10': {} + + '@types/node@26.1.2': + dependencies: + undici-types: 8.3.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + argparse@2.0.1: {} + + assertion-error@2.0.1: {} + + balanced-match@1.0.2: {} + + brace-expansion@2.1.4: + dependencies: + balanced-match: 1.0.2 + + browser-stdout@1.3.1: {} + + camelcase@6.3.0: {} + + chai@6.2.2: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.6.2: {} + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@15.0.0: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + debug@4.4.3(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@4.0.0: {} + + diff@7.0.0: {} + + eastasianwidth@0.2.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat@5.0.2: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fsevents@2.3.3: + optional: true + + get-caller-file@2.0.5: {} + + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + has-flag@4.0.0: {} + + he@1.2.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@2.1.0: {} + + is-unicode-supported@0.1.0: {} + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + js-yaml@4.3.1: + dependencies: + argparse: 2.0.1 + + litesvm-darwin-arm64@1.3.0: + optional: true + + litesvm-darwin-x64@1.3.0: + optional: true + + litesvm-linux-arm64-gnu@1.3.0: + optional: true + + litesvm-linux-arm64-musl@1.3.0: + optional: true + + litesvm-linux-x64-gnu@1.3.0: + optional: true + + litesvm-linux-x64-musl@1.3.0: + optional: true + + litesvm@1.3.0(typescript@5.9.3): + dependencies: + '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana-program/token': 0.14.0(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana/kit': 6.10.0(typescript@5.9.3) + optionalDependencies: + litesvm-darwin-arm64: 1.3.0 + litesvm-darwin-x64: 1.3.0 + litesvm-linux-arm64-gnu: 1.3.0 + litesvm-linux-arm64-musl: 1.3.0 + litesvm-linux-x64-gnu: 1.3.0 + litesvm-linux-x64-musl: 1.3.0 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + lru-cache@10.4.3: {} + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.4 + + minipass@7.1.3: {} + + mocha@11.8.0: + dependencies: + browser-stdout: 1.3.1 + chokidar: 4.0.3 + debug: 4.4.3(supports-color@8.1.1) + diff: 7.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 10.5.0 + he: 1.2.0 + is-path-inside: 3.0.3 + js-yaml: 4.3.1 + log-symbols: 4.1.0 + minimatch: 9.0.9 + ms: 2.1.3 + picocolors: 1.1.1 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 9.3.4 + yargs: 17.7.3 + yargs-parser: 21.1.1 + yargs-unparser: 2.0.0 + + ms@2.1.3: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + package-json-from-dist@1.0.1: {} + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + + picocolors@1.1.1: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + readdirp@4.1.2: {} + + require-directory@2.1.1: {} + + safe-buffer@5.2.1: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@4.1.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + tsx@4.23.5: + dependencies: + esbuild: 0.28.1 + optionalDependencies: + fsevents: 2.3.3 + + typescript@5.9.3: {} + + undici-types@8.10.0: {} + + undici-types@8.3.0: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + workerpool@9.3.4: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + ws@8.21.1: {} + + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + + yargs@17.7.3: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} diff --git a/cryptography/alt-bn128-g2/pinocchio/program/Cargo.toml b/cryptography/alt-bn128-g2/pinocchio/program/Cargo.toml new file mode 100644 index 000000000..1568d978d --- /dev/null +++ b/cryptography/alt-bn128-g2/pinocchio/program/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "alt-bn128-g2-pinocchio-program" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] + +[features] +no-entrypoint = [] + +[dependencies] +pinocchio.workspace = true +solana-address.workspace = true + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(target_os, values("solana"))'] } + +[dev-dependencies] +litesvm = "0.15" +solana-instruction = "3.4" +solana-keypair = "3.1" +solana-native-token = "3.0" +solana-signer = "3.0" +solana-transaction = "4.1" diff --git a/cryptography/alt-bn128-g2/pinocchio/program/src/lib.rs b/cryptography/alt-bn128-g2/pinocchio/program/src/lib.rs new file mode 100644 index 000000000..fa3d13785 --- /dev/null +++ b/cryptography/alt-bn128-g2/pinocchio/program/src/lib.rs @@ -0,0 +1,110 @@ +#![no_std] + +use pinocchio::{error::ProgramError, nostd_panic_handler, AccountView, Address, ProgramResult}; + +pinocchio::address::declare_id!("DbkAQTKuGJAwAPWVJdHLwxD47QBhkBTKqHBeBDJ8kzNa"); + +#[cfg(not(feature = "no-entrypoint"))] +pinocchio::entrypoint!(process_instruction); + +nostd_panic_handler!(); + +pub const G2_POINT_SIZE: usize = 128; +pub const SCALAR_SIZE: usize = 32; +pub const G2_ADD_INPUT_SIZE: usize = G2_POINT_SIZE * 2; +pub const G2_MUL_INPUT_SIZE: usize = G2_POINT_SIZE + SCALAR_SIZE; + +const ALT_BN128_G2_ADD: u64 = 4; +const ALT_BN128_G2_MUL: u64 = 6; + +#[derive(Clone, Copy, Debug, PartialEq)] +pub enum AltBn128G2Error { + InvalidInputLength, + SyscallFailed, + SyscallUnavailable, +} + +impl From for ProgramError { + fn from(e: AltBn128G2Error) -> Self { + ProgramError::Custom(e as u32) + } +} + +pub fn process_instruction( + _program_id: &Address, + _accounts: &mut [AccountView], + instruction_data: &[u8], +) -> ProgramResult { + let (discriminator, input) = instruction_data.split_first().ok_or(ProgramError::InvalidInstructionData)?; + + match discriminator { + 0 => process_g2_add(input), + 1 => process_g2_mul(input), + _ => Err(ProgramError::InvalidInstructionData), + } +} + +/// Adds two big-endian G2 points (128 bytes each) via the +/// `sol_alt_bn128_group_op` syscall and returns the 128-byte sum as return data. +pub fn process_g2_add(input: &[u8]) -> ProgramResult { + if input.len() != G2_ADD_INPUT_SIZE { + return Err(AltBn128G2Error::InvalidInputLength.into()); + } + + let mut result = [0u8; G2_POINT_SIZE]; + alt_bn128_group_op(ALT_BN128_G2_ADD, input, &mut result)?; + + set_return_data(&result); + Ok(()) +} + +/// Multiplies a big-endian G2 point (128 bytes) by a big-endian 32-byte scalar +/// via the `sol_alt_bn128_group_op` syscall and returns the 128-byte product as +/// return data. +pub fn process_g2_mul(input: &[u8]) -> ProgramResult { + if input.len() != G2_MUL_INPUT_SIZE { + return Err(AltBn128G2Error::InvalidInputLength.into()); + } + + let mut result = [0u8; G2_POINT_SIZE]; + alt_bn128_group_op(ALT_BN128_G2_MUL, input, &mut result)?; + + set_return_data(&result); + Ok(()) +} + +#[inline(always)] +fn alt_bn128_group_op(group_op: u64, input: &[u8], output: &mut [u8]) -> Result<(), ProgramError> { + #[cfg(target_os = "solana")] + { + let code = unsafe { + pinocchio::syscalls::sol_alt_bn128_group_op( + group_op, + input.as_ptr(), + input.len() as u64, + output.as_mut_ptr(), + ) + }; + match code { + 0 => Ok(()), + _ => Err(AltBn128G2Error::SyscallFailed.into()), + } + } + #[cfg(not(target_os = "solana"))] + { + let _ = (group_op, input, output); + Err(AltBn128G2Error::SyscallUnavailable.into()) + } +} + +#[inline(always)] +fn set_return_data(data: &[u8]) { + #[cfg(target_os = "solana")] + unsafe { + pinocchio::syscalls::sol_set_return_data(data.as_ptr(), data.len() as u64); + } + #[cfg(not(target_os = "solana"))] + { + let _ = data; + } +} diff --git a/cryptography/alt-bn128-g2/pinocchio/program/tests/test.rs b/cryptography/alt-bn128-g2/pinocchio/program/tests/test.rs new file mode 100644 index 000000000..8cd52a39c --- /dev/null +++ b/cryptography/alt-bn128-g2/pinocchio/program/tests/test.rs @@ -0,0 +1,75 @@ +use litesvm::LiteSVM; +use solana_address::Address; +use solana_instruction::Instruction; +use solana_keypair::Keypair; +use solana_native_token::LAMPORTS_PER_SOL; +use solana_signer::Signer; +use solana_transaction::Transaction; + +const IX_G2_ADD: u8 = 0; +const IX_G2_MUL: u8 = 1; + +// Big-endian alt_bn128 G2 points derived from the BN254 G2 generator: +// GENERATOR + 2*GENERATOR == 3*GENERATOR. +const G2_GENERATOR: &str = "198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa"; +const G2_TWO_GENERATOR: &str = "203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e"; +const G2_THREE_GENERATOR: &str = "1014772f57bb9742735191cd5dcfe4ebbc04156b6878a0a7c9824f32ffb66e8506064e784db10e9051e52826e192715e8d7e478cb09a5e0012defa0694fbc7f5021e2335f3354bb7922ffcc2f38d3323dd9453ac49b55441452aeaca147711b2058e1d5681b5b9e0074b0f9c8d2c68a069b920d74521e79765036d57666c5597"; + +fn from_hex(s: &str) -> Vec { + (0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16).unwrap()).collect() +} + +fn setup() -> (LiteSVM, Address, Keypair) { + let program_id = Address::new_unique(); + let program_bytes = include_bytes!("../../tests/fixtures/alt_bn128_g2_pinocchio_program.so"); + + let mut svm = LiteSVM::new(); + svm.add_program(program_id, program_bytes).unwrap(); + + let payer = Keypair::new(); + svm.airdrop(&payer.pubkey(), LAMPORTS_PER_SOL).unwrap(); + (svm, program_id, payer) +} + +fn send(svm: &mut LiteSVM, program_id: Address, payer: &Keypair, data: Vec) -> Result, String> { + let ix = Instruction::new_with_bytes(program_id, &data, vec![]); + let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[payer], svm.latest_blockhash()); + match svm.send_transaction(tx) { + Ok(meta) => Ok(meta.return_data.data), + Err(failed) => Err(failed.err.to_string()), + } +} + +#[test] +fn g2_add_generator_plus_double_is_triple() { + let (mut svm, program_id, payer) = setup(); + + let mut data = vec![IX_G2_ADD]; + data.extend_from_slice(&from_hex(G2_GENERATOR)); + data.extend_from_slice(&from_hex(G2_TWO_GENERATOR)); + + let return_data = send(&mut svm, program_id, &payer, data).unwrap(); + assert_eq!(return_data, from_hex(G2_THREE_GENERATOR)); +} + +#[test] +fn g2_mul_generator_times_three_is_triple() { + let (mut svm, program_id, payer) = setup(); + + let mut data = vec![IX_G2_MUL]; + data.extend_from_slice(&from_hex(G2_GENERATOR)); + let mut scalar = [0u8; 32]; + scalar[31] = 3; + data.extend_from_slice(&scalar); + + let return_data = send(&mut svm, program_id, &payer, data).unwrap(); + assert_eq!(return_data, from_hex(G2_THREE_GENERATOR)); +} + +#[test] +fn wrong_input_length_is_rejected() { + let (mut svm, program_id, payer) = setup(); + + let err = send(&mut svm, program_id, &payer, vec![IX_G2_ADD, 0, 1, 2]).unwrap_err(); + assert!(err.contains("custom program error: 0x0"), "unexpected error: {err}"); +} diff --git a/cryptography/alt-bn128-g2/pinocchio/tests/alt-bn128-g2.test.ts b/cryptography/alt-bn128-g2/pinocchio/tests/alt-bn128-g2.test.ts new file mode 100644 index 000000000..cd692e2d8 --- /dev/null +++ b/cryptography/alt-bn128-g2/pinocchio/tests/alt-bn128-g2.test.ts @@ -0,0 +1,83 @@ +import { Buffer } from 'node:buffer'; +import { + type Address, + appendTransactionMessageInstruction, + createTransactionMessage, + generateKeyPairSigner, + type KeyPairSigner, + lamports, + pipe, + setTransactionMessageFeePayerSigner, + signTransactionMessageWithSigners, +} from '@solana/kit'; +import { assert } from 'chai'; +import { FailedTransactionMetadata, LiteSVM, TransactionMetadata } from 'litesvm'; + +// Big-endian alt_bn128 G2 points derived from the BN254 G2 generator: +// GENERATOR + 2*GENERATOR == 3*GENERATOR. +const G2_GENERATOR = + '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa'; +const G2_TWO_GENERATOR = + '203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e'; +const G2_THREE_GENERATOR = + '1014772f57bb9742735191cd5dcfe4ebbc04156b6878a0a7c9824f32ffb66e8506064e784db10e9051e52826e192715e8d7e478cb09a5e0012defa0694fbc7f5021e2335f3354bb7922ffcc2f38d3323dd9453ac49b55441452aeaca147711b2058e1d5681b5b9e0074b0f9c8d2c68a069b920d74521e79765036d57666c5597'; + +const IX_G2_ADD = 0; +const IX_G2_MUL = 1; + +const hex = (s: string) => Uint8Array.from(Buffer.from(s, 'hex')); + +describe('alt-bn128-g2', () => { + const svm = new LiteSVM(); + let programId: Address; + let payer: KeyPairSigner; + + before(async () => { + programId = (await generateKeyPairSigner()).address; + svm.addProgramFromFile(programId, 'tests/fixtures/alt_bn128_g2_pinocchio_program.so'); + + payer = await generateKeyPairSigner(); + svm.airdrop(payer.address, lamports(1_000_000_000n)); + }); + + async function send(discriminator: number, input: Uint8Array) { + const data = new Uint8Array(1 + input.length); + data[0] = discriminator; + data.set(input, 1); + + const transactionMessage = pipe( + createTransactionMessage({ version: 0 }), + m => setTransactionMessageFeePayerSigner(payer, m), + m => svm.setTransactionMessageLifetimeUsingLatestBlockhash(m), + m => appendTransactionMessageInstruction({ programAddress: programId, accounts: [], data }, m), + ); + const signedTx = await signTransactionMessageWithSigners(transactionMessage); + + const result = svm.sendTransaction(signedTx); + svm.expireBlockhash(); + return result; + } + + it('adds two G2 points: G + 2G == 3G', async () => { + const result = await send(IX_G2_ADD, new Uint8Array([...hex(G2_GENERATOR), ...hex(G2_TWO_GENERATOR)])); + + assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); + assert.deepEqual(result.returnData().data(), hex(G2_THREE_GENERATOR)); + }); + + it('multiplies a G2 point by a scalar: G * 3 == 3G', async () => { + const scalar = new Uint8Array(32); + scalar[31] = 3; + const result = await send(IX_G2_MUL, new Uint8Array([...hex(G2_GENERATOR), ...scalar])); + + assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); + assert.deepEqual(result.returnData().data(), hex(G2_THREE_GENERATOR)); + }); + + it('rejects input that is not two whole G2 points', async () => { + const result = await send(IX_G2_ADD, new Uint8Array(255)); + + assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); + assert.include(String(result.err()), 'InstructionErrorCustom { code: 0 }'); + }); +}); diff --git a/cryptography/alt-bn128-g2/pinocchio/tsconfig.json b/cryptography/alt-bn128-g2/pinocchio/tsconfig.json new file mode 100644 index 000000000..c02443141 --- /dev/null +++ b/cryptography/alt-bn128-g2/pinocchio/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "types": ["mocha", "chai", "node"], + "typeRoots": ["./node_modules/@types"], + "lib": ["esnext"], + "module": "esnext", + "target": "esnext", + "moduleResolution": "bundler", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowImportingTsExtensions": true, + "noEmit": true, + "skipLibCheck": true + } +} diff --git a/cryptography/bls-key-registry/pinocchio/README.md b/cryptography/bls-key-registry/pinocchio/README.md new file mode 100644 index 000000000..f9af62e35 --- /dev/null +++ b/cryptography/bls-key-registry/pinocchio/README.md @@ -0,0 +1,18 @@ +# BLS key registry (Pinocchio) + +Maintains a running aggregate BLS12-381 G2 public key in an account. Adding a member folds their key into the aggregate with the G2 addition syscall; removing one subtracts it with the G2 subtraction syscall — no need to re-aggregate the remaining members. The account stores `[count: u16-le][aggregate: 192]`. + +| Discriminator | Instruction | Input | +| ------------- | ----------- | ---------------------------------------- | +| 0 | Add | one big-endian G2 public key (192 bytes) | +| 1 | Remove | one big-endian G2 public key (192 bytes) | + +The BLS12-381 syscall runs in LiteSVM today but only works on public clusters once the `enable_bls12_381_syscall` feature gate activates. + +## Test + +```sh +pnpm install +pnpm build-and-test # TypeScript tests (mocha + LiteSVM) +cargo test --manifest-path=./program/Cargo.toml # Rust tests (litesvm), after build-and-test +``` diff --git a/cryptography/bls-key-registry/pinocchio/package.json b/cryptography/bls-key-registry/pinocchio/package.json new file mode 100644 index 000000000..2f2e5fd2b --- /dev/null +++ b/cryptography/bls-key-registry/pinocchio/package.json @@ -0,0 +1,24 @@ +{ + "name": "bls-key-registry-pinocchio", + "version": "0.1.0", + "type": "module", + "scripts": { + "test": "mocha --import=tsx -t 1000000 ./tests/bls-key-registry.test.ts", + "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", + "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", + "deploy": "solana program deploy ./program/target/so/bls_key_registry_pinocchio_program.so" + }, + "dependencies": { + "@solana/kit": "^7.0.0" + }, + "devDependencies": { + "@types/chai": "^5.2.3", + "@types/mocha": "^10.0.10", + "@types/node": "^26.1.0", + "chai": "^6.2.2", + "litesvm": "^1.3.0", + "mocha": "^11.7.5", + "tsx": "^4.19.2", + "typescript": "^5.9.3" + } +} diff --git a/cryptography/bls-key-registry/pinocchio/pnpm-lock.yaml b/cryptography/bls-key-registry/pinocchio/pnpm-lock.yaml new file mode 100644 index 000000000..6e11abae2 --- /dev/null +++ b/cryptography/bls-key-registry/pinocchio/pnpm-lock.yaml @@ -0,0 +1,2825 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@solana/kit': + specifier: ^7.0.0 + version: 7.0.0(typescript@5.9.3) + devDependencies: + '@types/chai': + specifier: ^5.2.3 + version: 5.2.3 + '@types/mocha': + specifier: ^10.0.10 + version: 10.0.10 + '@types/node': + specifier: ^26.1.0 + version: 26.1.2 + chai: + specifier: ^6.2.2 + version: 6.2.2 + litesvm: + specifier: ^1.3.0 + version: 1.3.0(typescript@5.9.3) + mocha: + specifier: ^11.7.5 + version: 11.8.0 + tsx: + specifier: ^4.19.2 + version: 4.23.5 + typescript: + specifier: ^5.9.3 + version: 5.9.3 + +packages: + + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@solana-program/system@0.12.2': + resolution: {integrity: sha512-MaBeOxlvTruQhA7UYkOb3hVTEHPPagOtd+PvTm6a8rGgvEAP0kD4BbC37NceOaR4ABNqdaCmD5OMVRKgrE6KAg==} + peerDependencies: + '@solana/kit': ^6.4.0 + + '@solana-program/token@0.14.0': + resolution: {integrity: sha512-zpLMr6JZndlsQCQvrm0gezfwdr1lmzOGqN6v2WIYXjtDmbF+xg6zh/MAp2UFHRpv3uDmylEdjtQo05pa2OeaYg==} + engines: {node: '>=24.0.0'} + peerDependencies: + '@solana/kit': ^6.5.0 + + '@solana/accounts@6.10.0': + resolution: {integrity: sha512-+FxfDOrnifoPlBkF+fr8eeQdgM6xtIgAg9xKMu3WnIz60oZd4Xnry6+ff6t+ePPoZZp397FSg9ZJet68VCWm5Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/accounts@7.0.0': + resolution: {integrity: sha512-RfbinkhuWxcObxZIdjeWEn/mzLqRp/h2hAk/ZQCUxPdDBW8h4XxEybK9GBItGOAcrUz5HuusXTD+cXXnlIxWcg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/addresses@6.10.0': + resolution: {integrity: sha512-vEoCGBTxG0HCERAn84KXkrJjl+pDaNzOpZ0qbgcPS98fYxP5yzbKB8SNOY2bzrbkRUmmw5Q3hqTRERemUN2Gcw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/addresses@7.0.0': + resolution: {integrity: sha512-E7sJtV5d3bXrmw3I30rcKY+xoqM++6KIVJCi+q8ZaSMyP04UMfEENPHIJ+TkyS1RUgjzPT91ka/oWrtTh6EfkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/assertions@6.10.0': + resolution: {integrity: sha512-lKSAdVo+P/6Lp4vs6shstXmFOpvxrABwn4o1462tb7sKkNapk6o9pPFVPGw4DUgPS3WqWRs1j2tmpuVjhQRntg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/assertions@7.0.0': + resolution: {integrity: sha512-CShOQLPezI0tbrih+L88fzt8FMHDyJoWkmulk4wfRp3HhpQL2yNlH/SWLH033qysnvkmE7TxBFUtcnbnf7jz1g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-core@6.10.0': + resolution: {integrity: sha512-nfAl9OMGo4HanIMxGsQoVB7BxMoqBCYEUxl8oEAZZ09pDxnaXQZkTRXEwPPccag37XfW1ciPd1vWPKwB2b0HHQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-core@7.0.0': + resolution: {integrity: sha512-6HtEisZEtFb6okARUgYqmKdDbn2aHRrSCDgB1/GEwr0s6fK5XNYpafaSjorbs2MEyZV3tCUFTj2j6fk/4nNcLg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-data-structures@6.10.0': + resolution: {integrity: sha512-CNasJW3bq5u+632Zt5aJ8rOjAjv2HyenpV8o9kAIqdmV4CBpjCCoBnKn8LkuR/sbeREZxJYfhKTXO/9ruAkw7A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-data-structures@7.0.0': + resolution: {integrity: sha512-P0Ys1mB4lYlz3MMTCaJSysE3OYrq8WvsveU1ta8U/yG1qChXFGCOxPVh06swjaRxwPrEakb9VUESS5vNtp1rRA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-numbers@6.10.0': + resolution: {integrity: sha512-CcM+wX4zOiA9zkh8A7t1787A0Ehgmu5+6Z2tKoHew6cNw/dkaUTPa8JnNHbvfsLC8dfHC1BhAEJl86sKmRsfkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-numbers@7.0.0': + resolution: {integrity: sha512-XL0jnmnXr3ceoX4tusT+XkBVR2iGKEJecTIXbIV7ILi9xObg3fNXafNbTmbIOvKc0ByTyjo8EWZ9jQKSRWgsgA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-strings@6.10.0': + resolution: {integrity: sha512-zlaqkg7K6F6IN4V/Ec8TWkTn054gxv7ZLagvGkuEyAdPQ6BzzsehOm2TqCuyXgJJTCGPLY1bEk6yH9NxANe0kA==} + engines: {node: '>=20.18.0'} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5.4.0' + peerDependenciesMeta: + fastestsmallesttextencoderdecoder: + optional: true + typescript: + optional: true + + '@solana/codecs-strings@7.0.0': + resolution: {integrity: sha512-zXE1PE9HkVk6phZ6aqHTXvLZ0qIl5bJNIvG9eMB7LuFO1XBVQywJUtjKS8fE3/xmRCWSMilFSrEXGA+SpOyLrQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5.4.0' + peerDependenciesMeta: + fastestsmallesttextencoderdecoder: + optional: true + typescript: + optional: true + + '@solana/codecs@6.10.0': + resolution: {integrity: sha512-lLVuxod4ChWp9i7OvpgIykYG8Q9OGPVXKnHM9VlzDDLylsx7Y1FoQL00sHa7PqFkJVmkBufaA6dcGbQ7FU+lAQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs@7.0.0': + resolution: {integrity: sha512-xT1IbwKkPZ544u/eqhb9SZ0fNYJidWgIUzKNQMbvLCwduayAkQp+czlGdvLQ6CVlqtCewtH3gW8biGU7YuBdEw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/errors@6.10.0': + resolution: {integrity: sha512-KBLAxCtAXr357JNhCyIDQXWbuSj5vN6w+28FSfcYY6OOSiphmXLAV3V58jgV0C6iNbIzFJFi6yatFyDTdeJsNg==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/errors@7.0.0': + resolution: {integrity: sha512-94r+LLSzZ0XVp+LOogwxWGXeo138uvwqtqRW9Tjl1DIXrFgh8euXnJSXZyydu1UXJs7ItOSm0QreJviSGw3TGQ==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fast-stable-stringify@6.10.0': + resolution: {integrity: sha512-iCNed27wk6PKSS3QUtHovRfMWF/jbVWogs2vB4tukKUCsqG4rDfDInIwZ6ur/nY6XTrgi2gMMdZq9GAUlWsbfw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fast-stable-stringify@7.0.0': + resolution: {integrity: sha512-i/b5ZJMqMJXa6etjypANa2/ErPZfNG9/EVIYl7HpWooyCRgZ8hZJmJ2Cgrp0r4EMXCLeWn4aEG2HOBTzOJ4F7Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fixed-points@6.10.0': + resolution: {integrity: sha512-ZkKL0alXH3L7/wMiVG8YUuG8qBKunlM810+YBD7nUPRhifiGsX1zwADViHLYNqLr/jUk0mTYFUcKznTpB/K+Gg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fixed-points@7.0.0': + resolution: {integrity: sha512-Y3gcyHTponi5kXpWVEJIhuZ7yT84N+8He4dbjXWqwMBJnzKM+4tqFCbzy6y+6+Jxt44RT1lDmbpxmZopFRXU8Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/functional@6.10.0': + resolution: {integrity: sha512-P8cevu4mAqHTXC37h1TVoOh8zhWB2tlOI/R9vWjYPpcLwcyWf8p2qq4LEGHl5kY+1C+4PNX39HsmCocXOPCDkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/functional@7.0.0': + resolution: {integrity: sha512-ix9fzYhc2hCLiYf+hGI00mzzayANKDExEBxbwrtMj/BdQkwgUIvIlOssqHeSqDChL3UZhq9lR24Nz4JwYX8Jbw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instruction-plans@6.10.0': + resolution: {integrity: sha512-YG7mo4zykzdc6ZTV0BuN6pveK9qeBySzlYYerq578A4eQu3xcypMAYRGAvhMZtWTanjjmD6CKtM0M7kVp0TNxg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instruction-plans@7.0.0': + resolution: {integrity: sha512-uzXHztc8hLoT5TNWFsBX2DIETyp/Lr2l36O330s3YCgpRmfI4IRbBrjjq7TxDYFm/QY8+DD4CRG8p7wZSqG8dQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instructions@6.10.0': + resolution: {integrity: sha512-0TToYF+8LXQ3ofPMx+yF6yaM9l4YJvcAPMy0qV5JsrBUFlWXBSANRuudKBQLHMvb+a3OiUTq5X7omuorKMBB3A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instructions@7.0.0': + resolution: {integrity: sha512-ZN0gKAtCOKDuIaStcvLZDf5H20fkk7jr4dZE0Rk7z0kslf6mrRam9Y23N6AzeHp/b5ZeVKyfaTf4M35mOktLNg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/keys@6.10.0': + resolution: {integrity: sha512-26IRfdm/hTUCmM7MeEeX0ULSbCM6OzkZTkfkrPircqmRM7xyNqP4hq7u0P7wjb9dl7NfgyG6K7cdvUxrj2e3mA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/keys@7.0.0': + resolution: {integrity: sha512-JsdYR/YN3AGHZN2aZoeE5cymHYkNoBLnqgXoRncW/VyD7fMcR350aHU1hCMYd0b5BtITLsGmvvtvrgVkzK83Eg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/kit@6.10.0': + resolution: {integrity: sha512-/WnnQp3uARh2JCFSfAakejTAqwmXVuMVTcRn5r2yDwY2yzZ4R6mt/Cl59VPimVLNSoTyN/KsEwhv9omr3ERazQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/kit@7.0.0': + resolution: {integrity: sha512-ZCeai4LRJQooUmJXvpgMEGFTrCdJnV1ODbDJ8oqFZ+Y4t/9x1baQsFFpruqsdRyeGv2Rr+X6jV7cldVD+hyzRA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/nominal-types@6.10.0': + resolution: {integrity: sha512-9ykyBBvnkInH7fCacjJi7zu2PJyd+OCt+VTjIISv070fHzKIMFqZqJJ/dJ0SRH2aHwfB3n86iVsmtBtuxi4KKA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/nominal-types@7.0.0': + resolution: {integrity: sha512-ff21hmKKMckDkGWah9tRXsEyFCtSnkugH+EMLGJOn7tiXdtFljOXW5Q12IXyeil87EE8aWb1MS6p8v5+hi71Vg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/offchain-messages@6.10.0': + resolution: {integrity: sha512-RiEgAueeMkFMC1suOXBIcmCZgtXRxy24yk0DldPB37bB4zwOF1SAaRjNRPjIkGK8RhCYrEpPosnzLyavw9ueRg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/offchain-messages@7.0.0': + resolution: {integrity: sha512-fGrzxmqVStweGHRlXVAPKACdDboFCwXq5m8C+aD9Nupax6Q9rnvjICzYRLypwqB9X90XIZazh0ys+0KGLMpIJQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/options@6.10.0': + resolution: {integrity: sha512-RO9UT3UYD8/Cu2uM6ZXbKvLeMnVD42+g9JRds7Pfs4AhiOyg4R4TJrQUAppTgavPTO3PBRlWtWOC05ZH/yAIbg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/options@7.0.0': + resolution: {integrity: sha512-6DhvMqRcL3mG0R5JejYIW5PDTDr7HcLX2R9iCs6OPN1HdsyXmE2rX2EldnuA0rYz1buOodeWYsu4N1lpDcEpaQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-core@6.10.0': + resolution: {integrity: sha512-JE70YTQOfFACVFGvoJon4Scc/eHUWjMu8Ovo35CcV2kHTAHYMCd4UkBd2gmlhK0vRMMomsQi1ZLPlAlTq0OoUQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-core@7.0.0': + resolution: {integrity: sha512-EwTUfOGoQQ3aXooRlQFVbk+sJW7NqJl1K+bmSLiJUjaBTSqtbr3GtMu7aoybJqzZQKjOGSG4Hn0BzK24SvWy3A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-interfaces@6.10.0': + resolution: {integrity: sha512-vr0/l9wcM4orwGr8cjkFWaJ9A4HvzuAv00jMFNMg0Spd0GZqnwnpW+D/fXa1lIJnTRaF3EeEjLh4VjKU037T0Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-interfaces@7.0.0': + resolution: {integrity: sha512-fz/HknZLGnVIjhjXrMzW3Qm1x80oeEMSOk4RzMwjcyAEyfzhHtGNW74NsU5W+uFpYz6UBbV5mB1jpuAdJdnj9A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/program-client-core@6.10.0': + resolution: {integrity: sha512-4PPbTLdC1ylHIuvhOFDP8RnSkXPCFjNFWGslzc+UFKnoR4ajzBcByX94jmaruDMk5ncxgj7tr9pzJTvfGHIaMA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/program-client-core@7.0.0': + resolution: {integrity: sha512-+N8HImlR3MTbbvhOShsLelQXGZKbi6KhPhyy+4ZkDLbnRs4QikTamIChXZmoCyxB51S8/9cNRAKyQhbeF5Y8Qg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/programs@6.10.0': + resolution: {integrity: sha512-qn/HeLP5KGUJXVub3fyGe69/rWaLX4jzwm6V/1pNxJDbdF+MBdgn18hP6F+VmhfdNmwK0lue3J/1HQ1UTMuQeQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/programs@7.0.0': + resolution: {integrity: sha512-a1HNgzr9YiiZ8vK4VaKHEXjnZmKX7W5ab2ghuseIalEw/+PJLFcTRTOw8n3efRu677b/bG2Icmb3MBBEXmvbPg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/promises@6.10.0': + resolution: {integrity: sha512-oJSIn+VBBMWDo8oqw7RV3tI6Jih+Ieup6FcQLYLDUriaeo7+8l1Zdezl8zh7SIfeU4lOfAbRg6mR0huaS/Lltg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/promises@7.0.0': + resolution: {integrity: sha512-rjoHnaR4zeEIHqIzfgotxRrLKqY4Goj0G5duZOnjHm8ZC+7eDkH5/mXj1bDJ4ROM70dVM+y1Xkrjg7IL6k6StA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-api@6.10.0': + resolution: {integrity: sha512-RjPIVsAb/85P1ptoO3WpC0x7QG6gG/e4q/3lo6gbSznUZOcoM+8sSBnCX7BwP1ZkCDS6NK/ClXLnhhhYZx+OGg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-api@7.0.0': + resolution: {integrity: sha512-MTtBO883st83CjWpo8B4g8EKzXaeoBX5N7+sv4vcvsn2q1NpY4SG3XejdX1FrKeTe9Xjbv0/FzFtykstbKe1UA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-parsed-types@6.10.0': + resolution: {integrity: sha512-5275mvSV1mxhwvrMVa+K7BU/nAetpHfcb+8Ql9rtA8RRf6DyiimFQFZUukE4Ez6XJihEpCHNy98yhkgai9wytQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-parsed-types@7.0.0': + resolution: {integrity: sha512-80VjPbB/TZ/Hy5qdRF7onPfMPHk5cwBVbtNUGbilrmFuqRzSvzSOY1ynNXXODPZBytNmPq7u7oJfSCsQ5MA9Ig==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec-types@6.10.0': + resolution: {integrity: sha512-NDZrKyZrJk4HaMFhTE/lAiMB824cWAodKqDHyKi0UteHU9pyRmil3BN1jt7e+j08mwMWwfklSgyrTaq52g6DIQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec-types@7.0.0': + resolution: {integrity: sha512-V4Hp2//fW8eYq1zcGgHPu7FXKHyIWERBQd4+NRaKn2m8rPiVAm3pVRwPzSvVE0+8Nyf5qzdcfcMf7NQdhl6j7Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec@6.10.0': + resolution: {integrity: sha512-yQdbWw5mZEWrwsunHR9NHkuhMXIB9sPOObwm18D53v5tAJnxTB0IcHvO647XqFDLTK/yQ4AdDtlYD1vsY07AMQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec@7.0.0': + resolution: {integrity: sha512-GRGlXpLgap9yVh3qmCl4huuKAoLMp/p82/9Q9ONj6lmFH+RqJE4Q+16V+HxHI5ZakmwZYoVZU4GEKjumse9SCg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-api@6.10.0': + resolution: {integrity: sha512-CRPQoTtT1cOwOQUsqS7jgo7wYdAj7jB5ab/UmMPWVpecf2FNMhWhgvxP2s82M7VkDGTGl13qaQ0WySmi7Egrlg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-api@7.0.0': + resolution: {integrity: sha512-o2PZDeNC/kg3VO3ry4R0JySJ1xMHLchZwmzVwamxGidlLe9uvzm6CHlCqv/JCq4/zHLo7qbLqnmOckZ6vlDqaw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-channel-websocket@6.10.0': + resolution: {integrity: sha512-KkqP1186HELPlJftA88SNAT2znR8knCVzsUipXVzY4zfW8sN3LOa0ePMzh9VZ/V+J+raTt55laR87ovAO0n+zw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-channel-websocket@7.0.0': + resolution: {integrity: sha512-79ecXBCT2pG+vXNBZim80vUz+B04L1mEduXobBIXM55VvxsHYT+4H4V+/ZHoFJUK6Lhbt+6zhpconx8Wa3H+JA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-spec@6.10.0': + resolution: {integrity: sha512-nWMwGaG4ulzeX2sskY5TywXF3cwEd8FDmUpLe2JBWxE8XDAOGOKcsYPYFcBgb8ee9KqfPT2PTNdcz9jOhJf34w==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-spec@7.0.0': + resolution: {integrity: sha512-Oips5ciWqPGO5Cx7hcEQ/czbcrUjPf+4cTam0UMrK3BnvHPcEAWkPYlIgabQiqa60/pjOOz7B936oMXA5XwL+g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions@6.10.0': + resolution: {integrity: sha512-6mfuHp/K7unFKCOTCCBC9ziEGnxe2tyJ74EbR51QUnBeCUdYD7Hhdpxic1WRSJ3UeNW/mG4OzFM6z8Wi64Eh9Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions@7.0.0': + resolution: {integrity: sha512-jLNjUCGBbCIfABqqHopNJIeAkhd4GzhbodgCH4x2X+S0ycBaERX393+k+fG8JPJpGujkmeQFBCeIKO3lK+PoYg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transformers@6.10.0': + resolution: {integrity: sha512-2nFUrVTiE720pJOY4XKx3HuYmishw0of/4oScu76YGm6O8wsmvFvPNAkrEinmieWXQkfpBfRvLZmpl8PaAy+ug==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transformers@7.0.0': + resolution: {integrity: sha512-NHkTKC2J4oaMMzyOtIEDOLCGtzg1Y8vlPoBmUeA82o+DNjBSiZLR2Ariy7n7chmwKchCZ8aGirBxjLCSRc6b/g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transport-http@6.10.0': + resolution: {integrity: sha512-JrdNuYi0nBbD3X8JUtgX1dQJwIwz/WJvmigDdELysXfGB2bTJpfjqGDLhCLOz2sRl66FASIEqgG/LVa2C9VXcA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transport-http@7.0.0': + resolution: {integrity: sha512-W0G15BN0xljXzRRo/ZwepJNiOjKhRImF5SxhjZauh2yVBoUjfd6NSCmYcdWu0tj9lypKKrB1ReS4oPmb4yCHbA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-types@6.10.0': + resolution: {integrity: sha512-zaSecTfCPvz/vcoAmKD6XoRstGHTr1EKJBD8T9UcpEFFB6CtF6DxerDB+wrzkamuT6msmnR2DWXMrYOGDAsgIg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-types@7.0.0': + resolution: {integrity: sha512-Lf2csFSWHwN/8EL03uWfS7n1J19vWLK4DBGkQ5jebRhoJ3dD+xPcJtS+epI2281t5aghJvoV7D+RIM0NextZJg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc@6.10.0': + resolution: {integrity: sha512-EwxsqoD+NXV+m+iobnWNtATD93gTgaNsOiQOzYB1/2e+8S6fl6obdNPB55yfXgtl4jt6GV6/ae4xuPhLv76vvg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc@7.0.0': + resolution: {integrity: sha512-hCf4XEhspsNb8TnQ+E961+rBuJcTyrmwNr4LDfVHEeO/VTqaN+yVwAI1wpxcnzwc+T4OoXcyujNiQWhVZPOhiA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/signers@6.10.0': + resolution: {integrity: sha512-+vtCc+mT1FpGxrA5oL2aaMxSHiMJ2hH5PcDIfjo2XJkHz2klZiCZyT5F9+zpltc9vdi1QTElQq59Sfplmtd33A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/signers@7.0.0': + resolution: {integrity: sha512-4E3xYQ0b9OZCTLghqfeHh66lfipy3jV1REdFJLk9WqPBaXVa/wSgGGIqZVa744ATSd9AeEfL/I5n/LrMNQOhoA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/subscribable@6.10.0': + resolution: {integrity: sha512-VsR6XMwkiDBkZJUcoGkEOhf397pOV75gKCL9Bx8bpi2T3Bbs0CxUpMn4yaUgAnRba3eXmjbXMNCXjttfa6sKbw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/subscribable@7.0.0': + resolution: {integrity: sha512-dJQA5AxDv/7YxuNe7GXIkaOUNhXczFaL3/SNOvXe7k77bC4dx4HPkySfcVDfEWBOePe3+8iyVbT8DZ3aOcp8Ng==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/sysvars@6.10.0': + resolution: {integrity: sha512-cG13p1+onxz+20iWjwWQr1Z1jQwPm0fnjoW75fqZq7p4rVCie3L2sXvaJsYPjWKrUvpOzOIEHnqZGkG05rCpjg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/sysvars@7.0.0': + resolution: {integrity: sha512-GKND6hCcBcrak3/VAtx6aEoAi9wQjJQzU2Fcu6JYmnTjGe5MHf21FqbjGl0aQ0C2HlJQQJmA07wgsuOiYDTDog==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-confirmation@6.10.0': + resolution: {integrity: sha512-ULvtg65qfenh4T/GYcIlKSUv5EqDcng9UN0dxbHU4kuZdR2e0B8HN2xDC4WhcFQVeFJSbTZmaYFkeTY/Y4gfGQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-confirmation@7.0.0': + resolution: {integrity: sha512-SaU2CY9ZDJGK47DtQ7xwKFmbgzDGqIN/Ug89ZSUzDPD9QdMRXhtxgH8KZgb0gSgpyel85sSt0QH9wkWzhp69ow==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-introspection@7.0.0': + resolution: {integrity: sha512-aO+5ewxGaziXYcXJZ6F3doq/KI1L3WU2z5eCjs4DBO0kRQBHp4bH6ZKygVX2JIxOZrd1rB9SxP/CCCX2wRm8Xw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-messages@6.10.0': + resolution: {integrity: sha512-s7v8G3BTxGlKYIj3eWCG0g1296v+1LBt16mVnlRH5FuyaJ5AdhlhtRho5HUDpdwE8EXun+y1c48V6uhcZ8wdbQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-messages@7.0.0': + resolution: {integrity: sha512-qCBYR3QQvykcI36vnqwI5090hGXS3mmCe72b/f/n9kBsBaA2oowdBXZupB1wwKe8+6x8o8VkhKQaK9oTKKbWTg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transactions@6.10.0': + resolution: {integrity: sha512-VADSqP9OTYmhrox4pcgDd4+RjVmednXSE0+8Y7SPK4PN1pK5Az2RJ0nSsy0xcTnaOr8mF/crwFktqPrRQwSbQA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transactions@7.0.0': + resolution: {integrity: sha512-y5nayd2Ozld/4Bxefz50e/E6qxyZteuZCZ7suh7z96KY6QUJlZDR+eCG1v/lA7Azt3GSOevJuYFX/ept/mqZkw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/mocha@10.0.10': + resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} + + '@types/node@26.1.2': + resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@2.1.4: + resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} + + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + + diff@7.0.0: + resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} + engines: {node: '>=0.3.1'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + js-yaml@4.3.1: + resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} + hasBin: true + + litesvm-darwin-arm64@1.3.0: + resolution: {integrity: sha512-fj6cV/ofjMXdl5CwjyyLTQnZObfVH5HYDScQ6O44iRqxASmgEyEh4sC8a7M0YZ1rcli9nu2cWl5ARGura89I7Q==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + litesvm-darwin-x64@1.3.0: + resolution: {integrity: sha512-ZYEddnc+tAn8sVYpzvww0oHFiekbCSv+0OZiA6eUDtcSx9uzeRDmPPQ9eI6vgyews2LefBDSENmUb70GHY6Cqg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + litesvm-linux-arm64-gnu@1.3.0: + resolution: {integrity: sha512-kmmKeef96pJI4AJGCvjzMCW6QHuzFrMF1i6dE6OcrtWHaz0Ag+TFaKOU35H1bjH/fDBwoJUV9UbaIbdWht81tA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + litesvm-linux-arm64-musl@1.3.0: + resolution: {integrity: sha512-FO9p6rx+/3h7R3CU7lkOebL+jy8UEDngSrENHu7pj9EOr78QVyE3Fm0O+WMnwXpMoCSgW0XLhu1cI9NHAbzCTA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + litesvm-linux-x64-gnu@1.3.0: + resolution: {integrity: sha512-yXC8ZAdIei9JQ2xw5/BocOTu/7EqZuFPyhgENQ1mYDhjNpoyUbIuGCWnqtria14mDda0aV9yVev8plGUrUpjUw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + litesvm-linux-x64-musl@1.3.0: + resolution: {integrity: sha512-oedromp1gTjShXmKmxZ1FYtnfM824vRcrPSPvGM0CrqJqKK61m1+tFwNRAVsDlpmWKvO/zsz90ctbgAUo/3TXg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + litesvm@1.3.0: + resolution: {integrity: sha512-tMu9sBIqSbF1gQluXEUtGmXPfZlMc10tOoBVeDokgK77nl/CcuC506sEoFKM5Rq58Dkb070lBMVBLc43TbMUzQ==} + engines: {node: '>= 20'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + mocha@11.8.0: + resolution: {integrity: sha512-VyCeUdGN3A9lmCTTgG4yuvY9ixxaDk+xt2R/7/+1AP6EqNG+G9OKkzBwhVtVYoNX8YsxNSgAl8mOv3IAeOpFbw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + tsx@4.23.5: + resolution: {integrity: sha512-rw55FUaqOoI7RvlQwLbhO4nSDApnQ4/CykPuiQ/EPvtrX3WA9Ig55jIt9VvbBJbzJuj12ueRu4PMZ2SxPVbihg==} + engines: {node: '>=18.0.0'} + hasBin: true + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@8.10.0: + resolution: {integrity: sha512-ibvdovq3nCFs8Msrd95BW+zUOq+aOVbT+wpHUoPWhztbHEoPc6oof51iFDB6Es8lTKvNvVW9jNSAB8dwrKTMGg==} + + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + workerpool@9.3.4: + resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + ws@8.21.1: + resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + + yargs@17.7.3: + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@solana-program/system@0.12.2(@solana/kit@6.10.0(typescript@5.9.3))': + dependencies: + '@solana/kit': 6.10.0(typescript@5.9.3) + + '@solana-program/token@0.14.0(@solana/kit@6.10.0(typescript@5.9.3))': + dependencies: + '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana/kit': 6.10.0(typescript@5.9.3) + + '@solana/accounts@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/accounts@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/addresses@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/addresses@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/assertions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/assertions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-core@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-core@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-data-structures@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-data-structures@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-numbers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-numbers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-strings@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-strings@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/fixed-points': 6.10.0(typescript@5.9.3) + '@solana/options': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/codecs@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/fixed-points': 7.0.0(typescript@5.9.3) + '@solana/options': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/errors@6.10.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 15.0.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/errors@7.0.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 15.0.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/fast-stable-stringify@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/fast-stable-stringify@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/fixed-points@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/fixed-points@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/functional@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/functional@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/instruction-plans@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/instruction-plans@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/instructions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/instructions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/keys@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/keys@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/kit@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/offchain-messages': 6.10.0(typescript@5.9.3) + '@solana/plugin-core': 6.10.0(typescript@5.9.3) + '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) + '@solana/program-client-core': 6.10.0(typescript@5.9.3) + '@solana/programs': 6.10.0(typescript@5.9.3) + '@solana/rpc': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + '@solana/sysvars': 6.10.0(typescript@5.9.3) + '@solana/transaction-confirmation': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/kit@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/offchain-messages': 7.0.0(typescript@5.9.3) + '@solana/plugin-core': 7.0.0(typescript@5.9.3) + '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) + '@solana/program-client-core': 7.0.0(typescript@5.9.3) + '@solana/programs': 7.0.0(typescript@5.9.3) + '@solana/rpc': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + '@solana/sysvars': 7.0.0(typescript@5.9.3) + '@solana/transaction-confirmation': 7.0.0(typescript@5.9.3) + '@solana/transaction-introspection': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/nominal-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/nominal-types@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/offchain-messages@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/offchain-messages@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/plugin-core@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/plugin-core@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/plugin-interfaces@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/plugin-interfaces@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/program-client-core@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/program-client-core@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/programs@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/programs@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/promises@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/promises@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-api@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-api@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-parsed-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-parsed-types@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec-types@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions-api@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-subscriptions-api@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-subscriptions-channel-websocket@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + ws: 8.21.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@solana/rpc-subscriptions-channel-websocket@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + ws: 8.21.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@solana/rpc-subscriptions-spec@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions-spec@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/rpc-subscriptions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/rpc-transformers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-transformers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-transport-http@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + undici-types: 8.10.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-transport-http@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + undici-types: 8.10.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-types@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fixed-points': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-types@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fixed-points': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-transport-http': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-transport-http': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/signers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/offchain-messages': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/signers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/offchain-messages': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/subscribable@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/subscribable@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/sysvars@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/sysvars@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-confirmation@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/transaction-confirmation@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/transaction-introspection@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-messages@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-messages@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transactions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transactions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/mocha@10.0.10': {} + + '@types/node@26.1.2': + dependencies: + undici-types: 8.3.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + argparse@2.0.1: {} + + assertion-error@2.0.1: {} + + balanced-match@1.0.2: {} + + brace-expansion@2.1.4: + dependencies: + balanced-match: 1.0.2 + + browser-stdout@1.3.1: {} + + camelcase@6.3.0: {} + + chai@6.2.2: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.6.2: {} + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@15.0.0: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + debug@4.4.3(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@4.0.0: {} + + diff@7.0.0: {} + + eastasianwidth@0.2.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat@5.0.2: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fsevents@2.3.3: + optional: true + + get-caller-file@2.0.5: {} + + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + has-flag@4.0.0: {} + + he@1.2.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@2.1.0: {} + + is-unicode-supported@0.1.0: {} + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + js-yaml@4.3.1: + dependencies: + argparse: 2.0.1 + + litesvm-darwin-arm64@1.3.0: + optional: true + + litesvm-darwin-x64@1.3.0: + optional: true + + litesvm-linux-arm64-gnu@1.3.0: + optional: true + + litesvm-linux-arm64-musl@1.3.0: + optional: true + + litesvm-linux-x64-gnu@1.3.0: + optional: true + + litesvm-linux-x64-musl@1.3.0: + optional: true + + litesvm@1.3.0(typescript@5.9.3): + dependencies: + '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana-program/token': 0.14.0(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana/kit': 6.10.0(typescript@5.9.3) + optionalDependencies: + litesvm-darwin-arm64: 1.3.0 + litesvm-darwin-x64: 1.3.0 + litesvm-linux-arm64-gnu: 1.3.0 + litesvm-linux-arm64-musl: 1.3.0 + litesvm-linux-x64-gnu: 1.3.0 + litesvm-linux-x64-musl: 1.3.0 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + lru-cache@10.4.3: {} + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.4 + + minipass@7.1.3: {} + + mocha@11.8.0: + dependencies: + browser-stdout: 1.3.1 + chokidar: 4.0.3 + debug: 4.4.3(supports-color@8.1.1) + diff: 7.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 10.5.0 + he: 1.2.0 + is-path-inside: 3.0.3 + js-yaml: 4.3.1 + log-symbols: 4.1.0 + minimatch: 9.0.9 + ms: 2.1.3 + picocolors: 1.1.1 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 9.3.4 + yargs: 17.7.3 + yargs-parser: 21.1.1 + yargs-unparser: 2.0.0 + + ms@2.1.3: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + package-json-from-dist@1.0.1: {} + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + + picocolors@1.1.1: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + readdirp@4.1.2: {} + + require-directory@2.1.1: {} + + safe-buffer@5.2.1: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@4.1.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + tsx@4.23.5: + dependencies: + esbuild: 0.28.1 + optionalDependencies: + fsevents: 2.3.3 + + typescript@5.9.3: {} + + undici-types@8.10.0: {} + + undici-types@8.3.0: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + workerpool@9.3.4: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + ws@8.21.1: {} + + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + + yargs@17.7.3: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} diff --git a/cryptography/bls-key-registry/pinocchio/program/Cargo.toml b/cryptography/bls-key-registry/pinocchio/program/Cargo.toml new file mode 100644 index 000000000..044c42745 --- /dev/null +++ b/cryptography/bls-key-registry/pinocchio/program/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "bls-key-registry-pinocchio-program" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] + +[features] +no-entrypoint = [] + +[dependencies] +pinocchio.workspace = true +solana-address.workspace = true + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(target_os, values("solana"))'] } + +[dev-dependencies] +litesvm = "0.15" +solana-account = "4.3" +solana-instruction = "3.4" +solana-keypair = "3.1" +solana-native-token = "3.0" +solana-signer = "3.0" +solana-transaction = "4.1" diff --git a/cryptography/bls-key-registry/pinocchio/program/src/lib.rs b/cryptography/bls-key-registry/pinocchio/program/src/lib.rs new file mode 100644 index 000000000..c288773b3 --- /dev/null +++ b/cryptography/bls-key-registry/pinocchio/program/src/lib.rs @@ -0,0 +1,149 @@ +#![no_std] + +use pinocchio::{error::ProgramError, nostd_panic_handler, AccountView, Address, ProgramResult}; + +pinocchio::address::declare_id!("94pF5VGFSahHcn26w7UTntbo4p6yKk7G7ppLkYuVeJWN"); + +#[cfg(not(feature = "no-entrypoint"))] +pinocchio::entrypoint!(process_instruction); + +nostd_panic_handler!(); + +pub const G2_POINT_SIZE: usize = 192; +const COUNT_PREFIX: usize = 2; + +const BLS12_381_G2: u64 = 6 | 0x80; +const GROUP_OP_ADD: u64 = 0; +const GROUP_OP_SUB: u64 = 1; + +#[derive(Clone, Copy, Debug, PartialEq)] +pub enum BlsKeyRegistryError { + InvalidInputLength, + SyscallFailed, + SyscallUnavailable, + InvalidRegistryAccount, + RegistryEmpty, +} + +impl From for ProgramError { + fn from(e: BlsKeyRegistryError) -> Self { + ProgramError::Custom(e as u32) + } +} + +pub fn process_instruction( + program_id: &Address, + accounts: &mut [AccountView], + instruction_data: &[u8], +) -> ProgramResult { + let (discriminator, input) = instruction_data.split_first().ok_or(ProgramError::InvalidInstructionData)?; + + match discriminator { + 0 => process_add(program_id, accounts, input), + 1 => process_remove(program_id, accounts, input), + _ => Err(ProgramError::InvalidInstructionData), + } +} + +fn member_count(data: &[u8]) -> u16 { + u16::from_le_bytes([data[0], data[1]]) +} + +/// Validates account 0 as the registry account (writable, owned by this +/// program) and the instruction data as exactly one 192-byte G2 public key. +/// The account stores `[count: u16-le][aggregate: 192]`. +fn registry_account<'a>( + program_id: &Address, + accounts: &'a mut [AccountView], + input: &[u8], +) -> Result<&'a mut AccountView, ProgramError> { + let account = accounts.first_mut().ok_or(ProgramError::NotEnoughAccountKeys)?; + if !account.is_writable() || !account.owned_by(program_id) { + return Err(BlsKeyRegistryError::InvalidRegistryAccount.into()); + } + if input.len() != G2_POINT_SIZE { + return Err(BlsKeyRegistryError::InvalidInputLength.into()); + } + Ok(account) +} + +/// Adds a BLS12-381 G2 public key (192 bytes) to the registry's aggregate key +/// via the G2 addition syscall. +pub fn process_add(program_id: &Address, accounts: &mut [AccountView], input: &[u8]) -> ProgramResult { + let account = registry_account(program_id, accounts, input)?; + let mut data = account.try_borrow_mut()?; + if data.len() < COUNT_PREFIX + G2_POINT_SIZE { + return Err(BlsKeyRegistryError::InvalidRegistryAccount.into()); + } + + let count = member_count(&data); + if count == 0 { + data[COUNT_PREFIX..COUNT_PREFIX + G2_POINT_SIZE].copy_from_slice(input); + } else { + let mut current = [0u8; G2_POINT_SIZE]; + current.copy_from_slice(&data[COUNT_PREFIX..COUNT_PREFIX + G2_POINT_SIZE]); + let mut updated = [0u8; G2_POINT_SIZE]; + curve_group_op(BLS12_381_G2, GROUP_OP_ADD, ¤t, input, &mut updated)?; + data[COUNT_PREFIX..COUNT_PREFIX + G2_POINT_SIZE].copy_from_slice(&updated); + } + data[..COUNT_PREFIX].copy_from_slice(&(count + 1).to_le_bytes()); + Ok(()) +} + +/// Removes a BLS12-381 G2 public key from the registry's aggregate key via the +/// G2 subtraction syscall (BLS12-381 has native subtraction). +pub fn process_remove(program_id: &Address, accounts: &mut [AccountView], input: &[u8]) -> ProgramResult { + let account = registry_account(program_id, accounts, input)?; + let mut data = account.try_borrow_mut()?; + if data.len() < COUNT_PREFIX + G2_POINT_SIZE { + return Err(BlsKeyRegistryError::InvalidRegistryAccount.into()); + } + + let count = member_count(&data); + if count == 0 { + return Err(BlsKeyRegistryError::RegistryEmpty.into()); + } + + if count == 1 { + data[COUNT_PREFIX..COUNT_PREFIX + G2_POINT_SIZE].fill(0); + } else { + let mut current = [0u8; G2_POINT_SIZE]; + current.copy_from_slice(&data[COUNT_PREFIX..COUNT_PREFIX + G2_POINT_SIZE]); + let mut updated = [0u8; G2_POINT_SIZE]; + curve_group_op(BLS12_381_G2, GROUP_OP_SUB, ¤t, input, &mut updated)?; + data[COUNT_PREFIX..COUNT_PREFIX + G2_POINT_SIZE].copy_from_slice(&updated); + } + data[..COUNT_PREFIX].copy_from_slice(&(count - 1).to_le_bytes()); + Ok(()) +} + +#[inline(always)] +fn curve_group_op( + curve_id: u64, + group_op: u64, + left: &[u8], + right: &[u8], + output: &mut [u8], +) -> Result<(), ProgramError> { + #[cfg(target_os = "solana")] + { + let code = unsafe { + pinocchio::syscalls::sol_curve_group_op( + curve_id, + group_op, + left.as_ptr(), + right.as_ptr(), + output.as_mut_ptr(), + ) + }; + match code { + 0 => Ok(()), + _ => Err(BlsKeyRegistryError::SyscallFailed.into()), + } + } + #[cfg(not(target_os = "solana"))] + { + let _ = (curve_id, group_op, left, right, output); + Err(BlsKeyRegistryError::SyscallUnavailable.into()) + } +} diff --git a/cryptography/bls-key-registry/pinocchio/program/tests/test.rs b/cryptography/bls-key-registry/pinocchio/program/tests/test.rs new file mode 100644 index 000000000..c2204f31d --- /dev/null +++ b/cryptography/bls-key-registry/pinocchio/program/tests/test.rs @@ -0,0 +1,133 @@ +use litesvm::LiteSVM; +use solana_account::Account; +use solana_address::Address; +use solana_instruction::{AccountMeta, Instruction}; +use solana_keypair::Keypair; +use solana_native_token::LAMPORTS_PER_SOL; +use solana_signer::Signer; +use solana_transaction::Transaction; + +const IX_ADD: u8 = 0; +const IX_REMOVE: u8 = 1; + +const G2_POINT: usize = 192; +const COUNT_PREFIX: usize = 2; + +// Big-endian BLS12-381 G2 keys and their running aggregates, taken from the +// crypto-primitives reference implementation. +const PUBKEY_1: &str = "13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb80606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be0ce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801"; +const PUBKEY_2: &str = "0a4edef9c1ed7f729f520e47730a124fd70662a904ba1074728114d1031e1572c6c886f6b57ec72a6178288c47c335771638533957d540a9d2370f17cc7ed5863bc0b995b8825e0ee1ea1e1e4d00dbae81f14b0bf3611b78c952aacab827a0530f6d4552fa65dd2638b361543f887136a43253d9c66c411697003f7a13c308f5422e1aa0a59c8967acdefd8b6e36ccf30468fb440d82b0630aeb8dca2b5256789a66da69bf91009cbfe6bd221e47aa8ae88dece9764bf3bd999d95d71e4c9899"; +const PUBKEY_3: &str = "09380275bbc8e5dcea7dc4dd7e0550ff2ac480905396eda55062650f8d251c96eb480673937cc6d9d6a44aaa56ca66dc122915c824a0857e2ee414a3dccb23ae691ae54329781315a0c75df1c04d6d7a50a030fc866f09d516020ef82324afae08f239ba329b3967fe48d718a36cfe5f62a7e42e0bf1c1ed714150a166bfbd6bcf6b3b58b975b9edea56d53f23a0e8490b21da7955969e61010c7a1abc1a6f0136961d1e3b20b1a7326ac738fef5c721479dfd948b52fdf2455e44813ecfd892"; +const AGG_1_2: &str = "09380275bbc8e5dcea7dc4dd7e0550ff2ac480905396eda55062650f8d251c96eb480673937cc6d9d6a44aaa56ca66dc122915c824a0857e2ee414a3dccb23ae691ae54329781315a0c75df1c04d6d7a50a030fc866f09d516020ef82324afae08f239ba329b3967fe48d718a36cfe5f62a7e42e0bf1c1ed714150a166bfbd6bcf6b3b58b975b9edea56d53f23a0e8490b21da7955969e61010c7a1abc1a6f0136961d1e3b20b1a7326ac738fef5c721479dfd948b52fdf2455e44813ecfd892"; +const AGG_1_2_3: &str = "03f4b4e761936d90fd5f55f99087138a07a69755ad4a46e4dd1c2cfe6d11371e1cc033111a0595e3bba98d0f538db45119e384121b7d70927c49e6d044fd8517c36bc6ed2813a8956dd64f049869e8a77f7e46930240e6984abe26fa6a89658f088bb5832f4a4a452edda646ebaa2853a54205d56329960b44b2450070734724a74daaa401879bad142132316e9b340117a31a4fccfb5f768a2157517c77a4f8aaf0dee8f260d96e02e1175a8754d09600923beae02a019afc327b65a2fdbbfc"; +const AGG_1_3: &str = "070227d3f13684fdb7ce31b8065ba3acb35f7bde6fe2ddfefa359f8b35d08a9ab9537b43e24f4ffb720b5a0bda2a82f20e7a30979a8853a077454eb63b8dcee75f106221b262886bb8e01b0abb043368da82f60899cc1412e33e4120195fc5570782c14e2c4ee61cbe7be6e462a66b2e3509f42d53ff333efc9bfe9a00307cd2f68b007606446d98a75fb808a405d8b90701377cb7da22789d032737eabcea2b2eee6bb4634c4365864511a43c2caad50422993ccd3e99636eb8a5f189454b18"; + +fn from_hex(s: &str) -> Vec { + (0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16).unwrap()).collect() +} + +fn setup() -> (LiteSVM, Address, Keypair) { + let program_id = Address::new_unique(); + let program_bytes = include_bytes!("../../tests/fixtures/bls_key_registry_pinocchio_program.so"); + + let mut svm = LiteSVM::new(); + svm.add_program(program_id, program_bytes).unwrap(); + + let payer = Keypair::new(); + svm.airdrop(&payer.pubkey(), LAMPORTS_PER_SOL).unwrap(); + (svm, program_id, payer) +} + +fn registry_account(svm: &mut LiteSVM, owner: Address, count: u16, aggregate: Option<&str>) -> Address { + let key = Address::new_unique(); + let mut data = vec![0u8; COUNT_PREFIX + G2_POINT]; + data[..COUNT_PREFIX].copy_from_slice(&count.to_le_bytes()); + if let Some(aggregate) = aggregate { + data[COUNT_PREFIX..].copy_from_slice(&from_hex(aggregate)); + } + svm.set_account(key, Account { lamports: 1_000_000_000, data, owner, ..Account::default() }).unwrap(); + key +} + +fn send( + svm: &mut LiteSVM, + program_id: Address, + payer: &Keypair, + discriminator: u8, + pubkey: &str, + registry: Address, +) -> Result<(), String> { + let mut data = vec![discriminator]; + data.extend_from_slice(&from_hex(pubkey)); + let ix = Instruction::new_with_bytes(program_id, &data, vec![AccountMeta::new(registry, false)]); + let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[payer], svm.latest_blockhash()); + match svm.send_transaction(tx) { + Ok(_) => Ok(()), + Err(failed) => Err(failed.err.to_string()), + } +} + +fn registry_data(count: u16, aggregate: &str) -> Vec { + let mut expected = count.to_le_bytes().to_vec(); + expected.extend_from_slice(&from_hex(aggregate)); + expected +} + +#[test] +fn add_first_member_stores_key_verbatim() { + let (mut svm, program_id, payer) = setup(); + let registry = registry_account(&mut svm, program_id, 0, None); + + send(&mut svm, program_id, &payer, IX_ADD, PUBKEY_1, registry).unwrap(); + assert_eq!(svm.get_account(®istry).unwrap().data, registry_data(1, PUBKEY_1)); +} + +#[test] +fn add_folds_members_into_running_aggregate() { + let (mut svm, program_id, payer) = setup(); + let registry = registry_account(&mut svm, program_id, 0, None); + + send(&mut svm, program_id, &payer, IX_ADD, PUBKEY_1, registry).unwrap(); + send(&mut svm, program_id, &payer, IX_ADD, PUBKEY_2, registry).unwrap(); + assert_eq!(svm.get_account(®istry).unwrap().data, registry_data(2, AGG_1_2)); + + send(&mut svm, program_id, &payer, IX_ADD, PUBKEY_3, registry).unwrap(); + assert_eq!(svm.get_account(®istry).unwrap().data, registry_data(3, AGG_1_2_3)); +} + +#[test] +fn remove_subtracts_member_from_aggregate() { + let (mut svm, program_id, payer) = setup(); + let registry = registry_account(&mut svm, program_id, 3, Some(AGG_1_2_3)); + + send(&mut svm, program_id, &payer, IX_REMOVE, PUBKEY_2, registry).unwrap(); + assert_eq!(svm.get_account(®istry).unwrap().data, registry_data(2, AGG_1_3)); +} + +#[test] +fn remove_last_member_zeroes_aggregate() { + let (mut svm, program_id, payer) = setup(); + let registry = registry_account(&mut svm, program_id, 1, Some(PUBKEY_1)); + + send(&mut svm, program_id, &payer, IX_REMOVE, PUBKEY_1, registry).unwrap(); + assert_eq!(svm.get_account(®istry).unwrap().data, vec![0u8; COUNT_PREFIX + G2_POINT]); +} + +#[test] +fn remove_from_empty_registry_is_rejected() { + let (mut svm, program_id, payer) = setup(); + let registry = registry_account(&mut svm, program_id, 0, None); + + let err = send(&mut svm, program_id, &payer, IX_REMOVE, PUBKEY_1, registry).unwrap_err(); + assert!(err.contains("custom program error: 0x4"), "unexpected error: {err}"); +} + +#[test] +fn foreign_account_is_rejected() { + let (mut svm, program_id, payer) = setup(); + let foreign_owner = Address::new_unique(); + let registry = registry_account(&mut svm, foreign_owner, 0, None); + + let err = send(&mut svm, program_id, &payer, IX_ADD, PUBKEY_1, registry).unwrap_err(); + assert!(err.contains("custom program error: 0x3"), "unexpected error: {err}"); +} diff --git a/cryptography/bls-key-registry/pinocchio/tests/bls-key-registry.test.ts b/cryptography/bls-key-registry/pinocchio/tests/bls-key-registry.test.ts new file mode 100644 index 000000000..da77065dd --- /dev/null +++ b/cryptography/bls-key-registry/pinocchio/tests/bls-key-registry.test.ts @@ -0,0 +1,149 @@ +import { Buffer } from 'node:buffer'; +import { + AccountRole, + type Address, + appendTransactionMessageInstruction, + createTransactionMessage, + generateKeyPairSigner, + type KeyPairSigner, + lamports, + pipe, + setTransactionMessageFeePayerSigner, + signTransactionMessageWithSigners, +} from '@solana/kit'; +import { assert } from 'chai'; +import { FailedTransactionMetadata, LiteSVM, TransactionMetadata } from 'litesvm'; + +// Big-endian BLS12-381 G2 keys and their running aggregates, taken from the +// crypto-primitives reference implementation. +const PUBKEY_1 = + '13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb80606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be0ce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801'; +const PUBKEY_2 = + '0a4edef9c1ed7f729f520e47730a124fd70662a904ba1074728114d1031e1572c6c886f6b57ec72a6178288c47c335771638533957d540a9d2370f17cc7ed5863bc0b995b8825e0ee1ea1e1e4d00dbae81f14b0bf3611b78c952aacab827a0530f6d4552fa65dd2638b361543f887136a43253d9c66c411697003f7a13c308f5422e1aa0a59c8967acdefd8b6e36ccf30468fb440d82b0630aeb8dca2b5256789a66da69bf91009cbfe6bd221e47aa8ae88dece9764bf3bd999d95d71e4c9899'; +const PUBKEY_3 = + '09380275bbc8e5dcea7dc4dd7e0550ff2ac480905396eda55062650f8d251c96eb480673937cc6d9d6a44aaa56ca66dc122915c824a0857e2ee414a3dccb23ae691ae54329781315a0c75df1c04d6d7a50a030fc866f09d516020ef82324afae08f239ba329b3967fe48d718a36cfe5f62a7e42e0bf1c1ed714150a166bfbd6bcf6b3b58b975b9edea56d53f23a0e8490b21da7955969e61010c7a1abc1a6f0136961d1e3b20b1a7326ac738fef5c721479dfd948b52fdf2455e44813ecfd892'; +const AGG_1_2 = PUBKEY_3; +const AGG_1_2_3 = + '03f4b4e761936d90fd5f55f99087138a07a69755ad4a46e4dd1c2cfe6d11371e1cc033111a0595e3bba98d0f538db45119e384121b7d70927c49e6d044fd8517c36bc6ed2813a8956dd64f049869e8a77f7e46930240e6984abe26fa6a89658f088bb5832f4a4a452edda646ebaa2853a54205d56329960b44b2450070734724a74daaa401879bad142132316e9b340117a31a4fccfb5f768a2157517c77a4f8aaf0dee8f260d96e02e1175a8754d09600923beae02a019afc327b65a2fdbbfc'; +const AGG_1_3 = + '070227d3f13684fdb7ce31b8065ba3acb35f7bde6fe2ddfefa359f8b35d08a9ab9537b43e24f4ffb720b5a0bda2a82f20e7a30979a8853a077454eb63b8dcee75f106221b262886bb8e01b0abb043368da82f60899cc1412e33e4120195fc5570782c14e2c4ee61cbe7be6e462a66b2e3509f42d53ff333efc9bfe9a00307cd2f68b007606446d98a75fb808a405d8b90701377cb7da22789d032737eabcea2b2eee6bb4634c4365864511a43c2caad50422993ccd3e99636eb8a5f189454b18'; + +const IX_ADD = 0; +const IX_REMOVE = 1; + +const G2_POINT = 192; +const COUNT_PREFIX = 2; + +const ERR_INVALID_REGISTRY_ACCOUNT = 'InstructionErrorCustom { code: 3 }'; +const ERR_REGISTRY_EMPTY = 'InstructionErrorCustom { code: 4 }'; + +const hex = (s: string) => Uint8Array.from(Buffer.from(s, 'hex')); + +const registryData = (count: number, aggregate?: string) => { + const data = new Uint8Array(COUNT_PREFIX + G2_POINT); + new DataView(data.buffer).setUint16(0, count, true); + if (aggregate) data.set(hex(aggregate), COUNT_PREFIX); + return data; +}; + +describe('bls-key-registry', () => { + const svm = new LiteSVM(); + let programId: Address; + let payer: KeyPairSigner; + + before(async () => { + programId = (await generateKeyPairSigner()).address; + svm.addProgramFromFile(programId, 'tests/fixtures/bls_key_registry_pinocchio_program.so'); + + payer = await generateKeyPairSigner(); + svm.airdrop(payer.address, lamports(1_000_000_000n)); + }); + + async function registryAccount(owner: Address, count: number, aggregate?: string) { + const address = (await generateKeyPairSigner()).address; + const data = registryData(count, aggregate); + svm.setAccount({ + address, + data, + executable: false, + lamports: lamports(1_000_000_000n), + programAddress: owner, + space: BigInt(data.length), + }); + return address; + } + + async function send(discriminator: number, pubkey: string, registry: Address) { + const data = new Uint8Array([discriminator, ...hex(pubkey)]); + const transactionMessage = pipe( + createTransactionMessage({ version: 0 }), + m => setTransactionMessageFeePayerSigner(payer, m), + m => svm.setTransactionMessageLifetimeUsingLatestBlockhash(m), + m => + appendTransactionMessageInstruction( + { programAddress: programId, accounts: [{ address: registry, role: AccountRole.WRITABLE }], data }, + m, + ), + ); + const signedTx = await signTransactionMessageWithSigners(transactionMessage); + + const result = svm.sendTransaction(signedTx); + svm.expireBlockhash(); + return result; + } + + function expectRegistry(registry: Address, count: number, aggregate?: string) { + const account = svm.getAccount(registry); + assert(account?.exists, 'expected the registry account to exist'); + assert.deepEqual(account.data, registryData(count, aggregate)); + } + + it('first member is stored verbatim', async () => { + const registry = await registryAccount(programId, 0); + const result = await send(IX_ADD, PUBKEY_1, registry); + + assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); + expectRegistry(registry, 1, PUBKEY_1); + }); + + it('members fold into a running aggregate key', async () => { + const registry = await registryAccount(programId, 0); + await send(IX_ADD, PUBKEY_1, registry); + await send(IX_ADD, PUBKEY_2, registry); + expectRegistry(registry, 2, AGG_1_2); + + await send(IX_ADD, PUBKEY_3, registry); + expectRegistry(registry, 3, AGG_1_2_3); + }); + + it('remove subtracts the member from the aggregate', async () => { + const registry = await registryAccount(programId, 3, AGG_1_2_3); + const result = await send(IX_REMOVE, PUBKEY_2, registry); + + assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); + expectRegistry(registry, 2, AGG_1_3); + }); + + it('removing the last member zeroes the aggregate', async () => { + const registry = await registryAccount(programId, 1, PUBKEY_1); + await send(IX_REMOVE, PUBKEY_1, registry); + expectRegistry(registry, 0); + }); + + it('removing from an empty registry is rejected', async () => { + const registry = await registryAccount(programId, 0); + const result = await send(IX_REMOVE, PUBKEY_1, registry); + + assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); + assert.include(String(result.err()), ERR_REGISTRY_EMPTY); + }); + + it('rejects an account not owned by the program', async () => { + const foreignOwner = (await generateKeyPairSigner()).address; + const registry = await registryAccount(foreignOwner, 0); + const result = await send(IX_ADD, PUBKEY_1, registry); + + assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); + assert.include(String(result.err()), ERR_INVALID_REGISTRY_ACCOUNT); + }); +}); diff --git a/cryptography/bls-key-registry/pinocchio/tsconfig.json b/cryptography/bls-key-registry/pinocchio/tsconfig.json new file mode 100644 index 000000000..c02443141 --- /dev/null +++ b/cryptography/bls-key-registry/pinocchio/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "types": ["mocha", "chai", "node"], + "typeRoots": ["./node_modules/@types"], + "lib": ["esnext"], + "module": "esnext", + "target": "esnext", + "moduleResolution": "bundler", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowImportingTsExtensions": true, + "noEmit": true, + "skipLibCheck": true + } +} diff --git a/cryptography/bls-multisig/pinocchio/README.md b/cryptography/bls-multisig/pinocchio/README.md new file mode 100644 index 000000000..2f40067fc --- /dev/null +++ b/cryptography/bls-multisig/pinocchio/README.md @@ -0,0 +1,19 @@ +# BLS multisig (Pinocchio) + +Verifies aggregate BLS signatures over BN254 with a single pairing check: public keys aggregate on-chain with the alt_bn128 G2 addition syscall, then `e(aggSig, G2) · e(-H(m), aggPk) == 1` is checked with the pairing syscall. Signatures are G1 points (64 bytes), public keys are G2 points (128 bytes), all big-endian. + +| Discriminator | Instruction | Input / accounts | +| ------------- | ---------------- | ---------------------------------------------------------------------------- | +| 0 | Aggregate verify | `aggSig` (64) ‖ `-H(m)` (64) ‖ pubkeys (128 each); no accounts | +| 1 | Add signers | pubkeys (128 each); account 0 = multisig `[count: u16-le][pubkey; capacity]` | +| 2 | Verify | `aggSig` (64) ‖ `-H(m)` (64); account 0 = multisig | + +The verify instructions only succeed when every registered signer contributed to the aggregate signature. G2 addition needs the `enable_alt_bn128_g2_syscalls` feature gate on public clusters; LiteSVM has it enabled. + +## Test + +```sh +pnpm install +pnpm build-and-test # TypeScript tests (mocha + LiteSVM) +cargo test --manifest-path=./program/Cargo.toml # Rust tests (litesvm), after build-and-test +``` diff --git a/cryptography/bls-multisig/pinocchio/package.json b/cryptography/bls-multisig/pinocchio/package.json new file mode 100644 index 000000000..1f1e0675a --- /dev/null +++ b/cryptography/bls-multisig/pinocchio/package.json @@ -0,0 +1,24 @@ +{ + "name": "bls-multisig-pinocchio", + "version": "0.1.0", + "type": "module", + "scripts": { + "test": "mocha --import=tsx -t 1000000 ./tests/bls-multisig.test.ts", + "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", + "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", + "deploy": "solana program deploy ./program/target/so/bls_multisig_pinocchio_program.so" + }, + "dependencies": { + "@solana/kit": "^7.0.0" + }, + "devDependencies": { + "@types/chai": "^5.2.3", + "@types/mocha": "^10.0.10", + "@types/node": "^26.1.0", + "chai": "^6.2.2", + "litesvm": "^1.3.0", + "mocha": "^11.7.5", + "tsx": "^4.19.2", + "typescript": "^5.9.3" + } +} diff --git a/cryptography/bls-multisig/pinocchio/pnpm-lock.yaml b/cryptography/bls-multisig/pinocchio/pnpm-lock.yaml new file mode 100644 index 000000000..6e11abae2 --- /dev/null +++ b/cryptography/bls-multisig/pinocchio/pnpm-lock.yaml @@ -0,0 +1,2825 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@solana/kit': + specifier: ^7.0.0 + version: 7.0.0(typescript@5.9.3) + devDependencies: + '@types/chai': + specifier: ^5.2.3 + version: 5.2.3 + '@types/mocha': + specifier: ^10.0.10 + version: 10.0.10 + '@types/node': + specifier: ^26.1.0 + version: 26.1.2 + chai: + specifier: ^6.2.2 + version: 6.2.2 + litesvm: + specifier: ^1.3.0 + version: 1.3.0(typescript@5.9.3) + mocha: + specifier: ^11.7.5 + version: 11.8.0 + tsx: + specifier: ^4.19.2 + version: 4.23.5 + typescript: + specifier: ^5.9.3 + version: 5.9.3 + +packages: + + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@solana-program/system@0.12.2': + resolution: {integrity: sha512-MaBeOxlvTruQhA7UYkOb3hVTEHPPagOtd+PvTm6a8rGgvEAP0kD4BbC37NceOaR4ABNqdaCmD5OMVRKgrE6KAg==} + peerDependencies: + '@solana/kit': ^6.4.0 + + '@solana-program/token@0.14.0': + resolution: {integrity: sha512-zpLMr6JZndlsQCQvrm0gezfwdr1lmzOGqN6v2WIYXjtDmbF+xg6zh/MAp2UFHRpv3uDmylEdjtQo05pa2OeaYg==} + engines: {node: '>=24.0.0'} + peerDependencies: + '@solana/kit': ^6.5.0 + + '@solana/accounts@6.10.0': + resolution: {integrity: sha512-+FxfDOrnifoPlBkF+fr8eeQdgM6xtIgAg9xKMu3WnIz60oZd4Xnry6+ff6t+ePPoZZp397FSg9ZJet68VCWm5Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/accounts@7.0.0': + resolution: {integrity: sha512-RfbinkhuWxcObxZIdjeWEn/mzLqRp/h2hAk/ZQCUxPdDBW8h4XxEybK9GBItGOAcrUz5HuusXTD+cXXnlIxWcg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/addresses@6.10.0': + resolution: {integrity: sha512-vEoCGBTxG0HCERAn84KXkrJjl+pDaNzOpZ0qbgcPS98fYxP5yzbKB8SNOY2bzrbkRUmmw5Q3hqTRERemUN2Gcw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/addresses@7.0.0': + resolution: {integrity: sha512-E7sJtV5d3bXrmw3I30rcKY+xoqM++6KIVJCi+q8ZaSMyP04UMfEENPHIJ+TkyS1RUgjzPT91ka/oWrtTh6EfkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/assertions@6.10.0': + resolution: {integrity: sha512-lKSAdVo+P/6Lp4vs6shstXmFOpvxrABwn4o1462tb7sKkNapk6o9pPFVPGw4DUgPS3WqWRs1j2tmpuVjhQRntg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/assertions@7.0.0': + resolution: {integrity: sha512-CShOQLPezI0tbrih+L88fzt8FMHDyJoWkmulk4wfRp3HhpQL2yNlH/SWLH033qysnvkmE7TxBFUtcnbnf7jz1g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-core@6.10.0': + resolution: {integrity: sha512-nfAl9OMGo4HanIMxGsQoVB7BxMoqBCYEUxl8oEAZZ09pDxnaXQZkTRXEwPPccag37XfW1ciPd1vWPKwB2b0HHQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-core@7.0.0': + resolution: {integrity: sha512-6HtEisZEtFb6okARUgYqmKdDbn2aHRrSCDgB1/GEwr0s6fK5XNYpafaSjorbs2MEyZV3tCUFTj2j6fk/4nNcLg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-data-structures@6.10.0': + resolution: {integrity: sha512-CNasJW3bq5u+632Zt5aJ8rOjAjv2HyenpV8o9kAIqdmV4CBpjCCoBnKn8LkuR/sbeREZxJYfhKTXO/9ruAkw7A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-data-structures@7.0.0': + resolution: {integrity: sha512-P0Ys1mB4lYlz3MMTCaJSysE3OYrq8WvsveU1ta8U/yG1qChXFGCOxPVh06swjaRxwPrEakb9VUESS5vNtp1rRA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-numbers@6.10.0': + resolution: {integrity: sha512-CcM+wX4zOiA9zkh8A7t1787A0Ehgmu5+6Z2tKoHew6cNw/dkaUTPa8JnNHbvfsLC8dfHC1BhAEJl86sKmRsfkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-numbers@7.0.0': + resolution: {integrity: sha512-XL0jnmnXr3ceoX4tusT+XkBVR2iGKEJecTIXbIV7ILi9xObg3fNXafNbTmbIOvKc0ByTyjo8EWZ9jQKSRWgsgA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-strings@6.10.0': + resolution: {integrity: sha512-zlaqkg7K6F6IN4V/Ec8TWkTn054gxv7ZLagvGkuEyAdPQ6BzzsehOm2TqCuyXgJJTCGPLY1bEk6yH9NxANe0kA==} + engines: {node: '>=20.18.0'} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5.4.0' + peerDependenciesMeta: + fastestsmallesttextencoderdecoder: + optional: true + typescript: + optional: true + + '@solana/codecs-strings@7.0.0': + resolution: {integrity: sha512-zXE1PE9HkVk6phZ6aqHTXvLZ0qIl5bJNIvG9eMB7LuFO1XBVQywJUtjKS8fE3/xmRCWSMilFSrEXGA+SpOyLrQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5.4.0' + peerDependenciesMeta: + fastestsmallesttextencoderdecoder: + optional: true + typescript: + optional: true + + '@solana/codecs@6.10.0': + resolution: {integrity: sha512-lLVuxod4ChWp9i7OvpgIykYG8Q9OGPVXKnHM9VlzDDLylsx7Y1FoQL00sHa7PqFkJVmkBufaA6dcGbQ7FU+lAQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs@7.0.0': + resolution: {integrity: sha512-xT1IbwKkPZ544u/eqhb9SZ0fNYJidWgIUzKNQMbvLCwduayAkQp+czlGdvLQ6CVlqtCewtH3gW8biGU7YuBdEw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/errors@6.10.0': + resolution: {integrity: sha512-KBLAxCtAXr357JNhCyIDQXWbuSj5vN6w+28FSfcYY6OOSiphmXLAV3V58jgV0C6iNbIzFJFi6yatFyDTdeJsNg==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/errors@7.0.0': + resolution: {integrity: sha512-94r+LLSzZ0XVp+LOogwxWGXeo138uvwqtqRW9Tjl1DIXrFgh8euXnJSXZyydu1UXJs7ItOSm0QreJviSGw3TGQ==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fast-stable-stringify@6.10.0': + resolution: {integrity: sha512-iCNed27wk6PKSS3QUtHovRfMWF/jbVWogs2vB4tukKUCsqG4rDfDInIwZ6ur/nY6XTrgi2gMMdZq9GAUlWsbfw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fast-stable-stringify@7.0.0': + resolution: {integrity: sha512-i/b5ZJMqMJXa6etjypANa2/ErPZfNG9/EVIYl7HpWooyCRgZ8hZJmJ2Cgrp0r4EMXCLeWn4aEG2HOBTzOJ4F7Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fixed-points@6.10.0': + resolution: {integrity: sha512-ZkKL0alXH3L7/wMiVG8YUuG8qBKunlM810+YBD7nUPRhifiGsX1zwADViHLYNqLr/jUk0mTYFUcKznTpB/K+Gg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fixed-points@7.0.0': + resolution: {integrity: sha512-Y3gcyHTponi5kXpWVEJIhuZ7yT84N+8He4dbjXWqwMBJnzKM+4tqFCbzy6y+6+Jxt44RT1lDmbpxmZopFRXU8Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/functional@6.10.0': + resolution: {integrity: sha512-P8cevu4mAqHTXC37h1TVoOh8zhWB2tlOI/R9vWjYPpcLwcyWf8p2qq4LEGHl5kY+1C+4PNX39HsmCocXOPCDkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/functional@7.0.0': + resolution: {integrity: sha512-ix9fzYhc2hCLiYf+hGI00mzzayANKDExEBxbwrtMj/BdQkwgUIvIlOssqHeSqDChL3UZhq9lR24Nz4JwYX8Jbw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instruction-plans@6.10.0': + resolution: {integrity: sha512-YG7mo4zykzdc6ZTV0BuN6pveK9qeBySzlYYerq578A4eQu3xcypMAYRGAvhMZtWTanjjmD6CKtM0M7kVp0TNxg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instruction-plans@7.0.0': + resolution: {integrity: sha512-uzXHztc8hLoT5TNWFsBX2DIETyp/Lr2l36O330s3YCgpRmfI4IRbBrjjq7TxDYFm/QY8+DD4CRG8p7wZSqG8dQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instructions@6.10.0': + resolution: {integrity: sha512-0TToYF+8LXQ3ofPMx+yF6yaM9l4YJvcAPMy0qV5JsrBUFlWXBSANRuudKBQLHMvb+a3OiUTq5X7omuorKMBB3A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instructions@7.0.0': + resolution: {integrity: sha512-ZN0gKAtCOKDuIaStcvLZDf5H20fkk7jr4dZE0Rk7z0kslf6mrRam9Y23N6AzeHp/b5ZeVKyfaTf4M35mOktLNg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/keys@6.10.0': + resolution: {integrity: sha512-26IRfdm/hTUCmM7MeEeX0ULSbCM6OzkZTkfkrPircqmRM7xyNqP4hq7u0P7wjb9dl7NfgyG6K7cdvUxrj2e3mA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/keys@7.0.0': + resolution: {integrity: sha512-JsdYR/YN3AGHZN2aZoeE5cymHYkNoBLnqgXoRncW/VyD7fMcR350aHU1hCMYd0b5BtITLsGmvvtvrgVkzK83Eg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/kit@6.10.0': + resolution: {integrity: sha512-/WnnQp3uARh2JCFSfAakejTAqwmXVuMVTcRn5r2yDwY2yzZ4R6mt/Cl59VPimVLNSoTyN/KsEwhv9omr3ERazQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/kit@7.0.0': + resolution: {integrity: sha512-ZCeai4LRJQooUmJXvpgMEGFTrCdJnV1ODbDJ8oqFZ+Y4t/9x1baQsFFpruqsdRyeGv2Rr+X6jV7cldVD+hyzRA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/nominal-types@6.10.0': + resolution: {integrity: sha512-9ykyBBvnkInH7fCacjJi7zu2PJyd+OCt+VTjIISv070fHzKIMFqZqJJ/dJ0SRH2aHwfB3n86iVsmtBtuxi4KKA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/nominal-types@7.0.0': + resolution: {integrity: sha512-ff21hmKKMckDkGWah9tRXsEyFCtSnkugH+EMLGJOn7tiXdtFljOXW5Q12IXyeil87EE8aWb1MS6p8v5+hi71Vg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/offchain-messages@6.10.0': + resolution: {integrity: sha512-RiEgAueeMkFMC1suOXBIcmCZgtXRxy24yk0DldPB37bB4zwOF1SAaRjNRPjIkGK8RhCYrEpPosnzLyavw9ueRg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/offchain-messages@7.0.0': + resolution: {integrity: sha512-fGrzxmqVStweGHRlXVAPKACdDboFCwXq5m8C+aD9Nupax6Q9rnvjICzYRLypwqB9X90XIZazh0ys+0KGLMpIJQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/options@6.10.0': + resolution: {integrity: sha512-RO9UT3UYD8/Cu2uM6ZXbKvLeMnVD42+g9JRds7Pfs4AhiOyg4R4TJrQUAppTgavPTO3PBRlWtWOC05ZH/yAIbg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/options@7.0.0': + resolution: {integrity: sha512-6DhvMqRcL3mG0R5JejYIW5PDTDr7HcLX2R9iCs6OPN1HdsyXmE2rX2EldnuA0rYz1buOodeWYsu4N1lpDcEpaQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-core@6.10.0': + resolution: {integrity: sha512-JE70YTQOfFACVFGvoJon4Scc/eHUWjMu8Ovo35CcV2kHTAHYMCd4UkBd2gmlhK0vRMMomsQi1ZLPlAlTq0OoUQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-core@7.0.0': + resolution: {integrity: sha512-EwTUfOGoQQ3aXooRlQFVbk+sJW7NqJl1K+bmSLiJUjaBTSqtbr3GtMu7aoybJqzZQKjOGSG4Hn0BzK24SvWy3A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-interfaces@6.10.0': + resolution: {integrity: sha512-vr0/l9wcM4orwGr8cjkFWaJ9A4HvzuAv00jMFNMg0Spd0GZqnwnpW+D/fXa1lIJnTRaF3EeEjLh4VjKU037T0Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-interfaces@7.0.0': + resolution: {integrity: sha512-fz/HknZLGnVIjhjXrMzW3Qm1x80oeEMSOk4RzMwjcyAEyfzhHtGNW74NsU5W+uFpYz6UBbV5mB1jpuAdJdnj9A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/program-client-core@6.10.0': + resolution: {integrity: sha512-4PPbTLdC1ylHIuvhOFDP8RnSkXPCFjNFWGslzc+UFKnoR4ajzBcByX94jmaruDMk5ncxgj7tr9pzJTvfGHIaMA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/program-client-core@7.0.0': + resolution: {integrity: sha512-+N8HImlR3MTbbvhOShsLelQXGZKbi6KhPhyy+4ZkDLbnRs4QikTamIChXZmoCyxB51S8/9cNRAKyQhbeF5Y8Qg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/programs@6.10.0': + resolution: {integrity: sha512-qn/HeLP5KGUJXVub3fyGe69/rWaLX4jzwm6V/1pNxJDbdF+MBdgn18hP6F+VmhfdNmwK0lue3J/1HQ1UTMuQeQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/programs@7.0.0': + resolution: {integrity: sha512-a1HNgzr9YiiZ8vK4VaKHEXjnZmKX7W5ab2ghuseIalEw/+PJLFcTRTOw8n3efRu677b/bG2Icmb3MBBEXmvbPg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/promises@6.10.0': + resolution: {integrity: sha512-oJSIn+VBBMWDo8oqw7RV3tI6Jih+Ieup6FcQLYLDUriaeo7+8l1Zdezl8zh7SIfeU4lOfAbRg6mR0huaS/Lltg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/promises@7.0.0': + resolution: {integrity: sha512-rjoHnaR4zeEIHqIzfgotxRrLKqY4Goj0G5duZOnjHm8ZC+7eDkH5/mXj1bDJ4ROM70dVM+y1Xkrjg7IL6k6StA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-api@6.10.0': + resolution: {integrity: sha512-RjPIVsAb/85P1ptoO3WpC0x7QG6gG/e4q/3lo6gbSznUZOcoM+8sSBnCX7BwP1ZkCDS6NK/ClXLnhhhYZx+OGg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-api@7.0.0': + resolution: {integrity: sha512-MTtBO883st83CjWpo8B4g8EKzXaeoBX5N7+sv4vcvsn2q1NpY4SG3XejdX1FrKeTe9Xjbv0/FzFtykstbKe1UA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-parsed-types@6.10.0': + resolution: {integrity: sha512-5275mvSV1mxhwvrMVa+K7BU/nAetpHfcb+8Ql9rtA8RRf6DyiimFQFZUukE4Ez6XJihEpCHNy98yhkgai9wytQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-parsed-types@7.0.0': + resolution: {integrity: sha512-80VjPbB/TZ/Hy5qdRF7onPfMPHk5cwBVbtNUGbilrmFuqRzSvzSOY1ynNXXODPZBytNmPq7u7oJfSCsQ5MA9Ig==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec-types@6.10.0': + resolution: {integrity: sha512-NDZrKyZrJk4HaMFhTE/lAiMB824cWAodKqDHyKi0UteHU9pyRmil3BN1jt7e+j08mwMWwfklSgyrTaq52g6DIQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec-types@7.0.0': + resolution: {integrity: sha512-V4Hp2//fW8eYq1zcGgHPu7FXKHyIWERBQd4+NRaKn2m8rPiVAm3pVRwPzSvVE0+8Nyf5qzdcfcMf7NQdhl6j7Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec@6.10.0': + resolution: {integrity: sha512-yQdbWw5mZEWrwsunHR9NHkuhMXIB9sPOObwm18D53v5tAJnxTB0IcHvO647XqFDLTK/yQ4AdDtlYD1vsY07AMQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec@7.0.0': + resolution: {integrity: sha512-GRGlXpLgap9yVh3qmCl4huuKAoLMp/p82/9Q9ONj6lmFH+RqJE4Q+16V+HxHI5ZakmwZYoVZU4GEKjumse9SCg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-api@6.10.0': + resolution: {integrity: sha512-CRPQoTtT1cOwOQUsqS7jgo7wYdAj7jB5ab/UmMPWVpecf2FNMhWhgvxP2s82M7VkDGTGl13qaQ0WySmi7Egrlg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-api@7.0.0': + resolution: {integrity: sha512-o2PZDeNC/kg3VO3ry4R0JySJ1xMHLchZwmzVwamxGidlLe9uvzm6CHlCqv/JCq4/zHLo7qbLqnmOckZ6vlDqaw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-channel-websocket@6.10.0': + resolution: {integrity: sha512-KkqP1186HELPlJftA88SNAT2znR8knCVzsUipXVzY4zfW8sN3LOa0ePMzh9VZ/V+J+raTt55laR87ovAO0n+zw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-channel-websocket@7.0.0': + resolution: {integrity: sha512-79ecXBCT2pG+vXNBZim80vUz+B04L1mEduXobBIXM55VvxsHYT+4H4V+/ZHoFJUK6Lhbt+6zhpconx8Wa3H+JA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-spec@6.10.0': + resolution: {integrity: sha512-nWMwGaG4ulzeX2sskY5TywXF3cwEd8FDmUpLe2JBWxE8XDAOGOKcsYPYFcBgb8ee9KqfPT2PTNdcz9jOhJf34w==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-spec@7.0.0': + resolution: {integrity: sha512-Oips5ciWqPGO5Cx7hcEQ/czbcrUjPf+4cTam0UMrK3BnvHPcEAWkPYlIgabQiqa60/pjOOz7B936oMXA5XwL+g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions@6.10.0': + resolution: {integrity: sha512-6mfuHp/K7unFKCOTCCBC9ziEGnxe2tyJ74EbR51QUnBeCUdYD7Hhdpxic1WRSJ3UeNW/mG4OzFM6z8Wi64Eh9Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions@7.0.0': + resolution: {integrity: sha512-jLNjUCGBbCIfABqqHopNJIeAkhd4GzhbodgCH4x2X+S0ycBaERX393+k+fG8JPJpGujkmeQFBCeIKO3lK+PoYg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transformers@6.10.0': + resolution: {integrity: sha512-2nFUrVTiE720pJOY4XKx3HuYmishw0of/4oScu76YGm6O8wsmvFvPNAkrEinmieWXQkfpBfRvLZmpl8PaAy+ug==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transformers@7.0.0': + resolution: {integrity: sha512-NHkTKC2J4oaMMzyOtIEDOLCGtzg1Y8vlPoBmUeA82o+DNjBSiZLR2Ariy7n7chmwKchCZ8aGirBxjLCSRc6b/g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transport-http@6.10.0': + resolution: {integrity: sha512-JrdNuYi0nBbD3X8JUtgX1dQJwIwz/WJvmigDdELysXfGB2bTJpfjqGDLhCLOz2sRl66FASIEqgG/LVa2C9VXcA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transport-http@7.0.0': + resolution: {integrity: sha512-W0G15BN0xljXzRRo/ZwepJNiOjKhRImF5SxhjZauh2yVBoUjfd6NSCmYcdWu0tj9lypKKrB1ReS4oPmb4yCHbA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-types@6.10.0': + resolution: {integrity: sha512-zaSecTfCPvz/vcoAmKD6XoRstGHTr1EKJBD8T9UcpEFFB6CtF6DxerDB+wrzkamuT6msmnR2DWXMrYOGDAsgIg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-types@7.0.0': + resolution: {integrity: sha512-Lf2csFSWHwN/8EL03uWfS7n1J19vWLK4DBGkQ5jebRhoJ3dD+xPcJtS+epI2281t5aghJvoV7D+RIM0NextZJg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc@6.10.0': + resolution: {integrity: sha512-EwxsqoD+NXV+m+iobnWNtATD93gTgaNsOiQOzYB1/2e+8S6fl6obdNPB55yfXgtl4jt6GV6/ae4xuPhLv76vvg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc@7.0.0': + resolution: {integrity: sha512-hCf4XEhspsNb8TnQ+E961+rBuJcTyrmwNr4LDfVHEeO/VTqaN+yVwAI1wpxcnzwc+T4OoXcyujNiQWhVZPOhiA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/signers@6.10.0': + resolution: {integrity: sha512-+vtCc+mT1FpGxrA5oL2aaMxSHiMJ2hH5PcDIfjo2XJkHz2klZiCZyT5F9+zpltc9vdi1QTElQq59Sfplmtd33A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/signers@7.0.0': + resolution: {integrity: sha512-4E3xYQ0b9OZCTLghqfeHh66lfipy3jV1REdFJLk9WqPBaXVa/wSgGGIqZVa744ATSd9AeEfL/I5n/LrMNQOhoA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/subscribable@6.10.0': + resolution: {integrity: sha512-VsR6XMwkiDBkZJUcoGkEOhf397pOV75gKCL9Bx8bpi2T3Bbs0CxUpMn4yaUgAnRba3eXmjbXMNCXjttfa6sKbw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/subscribable@7.0.0': + resolution: {integrity: sha512-dJQA5AxDv/7YxuNe7GXIkaOUNhXczFaL3/SNOvXe7k77bC4dx4HPkySfcVDfEWBOePe3+8iyVbT8DZ3aOcp8Ng==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/sysvars@6.10.0': + resolution: {integrity: sha512-cG13p1+onxz+20iWjwWQr1Z1jQwPm0fnjoW75fqZq7p4rVCie3L2sXvaJsYPjWKrUvpOzOIEHnqZGkG05rCpjg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/sysvars@7.0.0': + resolution: {integrity: sha512-GKND6hCcBcrak3/VAtx6aEoAi9wQjJQzU2Fcu6JYmnTjGe5MHf21FqbjGl0aQ0C2HlJQQJmA07wgsuOiYDTDog==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-confirmation@6.10.0': + resolution: {integrity: sha512-ULvtg65qfenh4T/GYcIlKSUv5EqDcng9UN0dxbHU4kuZdR2e0B8HN2xDC4WhcFQVeFJSbTZmaYFkeTY/Y4gfGQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-confirmation@7.0.0': + resolution: {integrity: sha512-SaU2CY9ZDJGK47DtQ7xwKFmbgzDGqIN/Ug89ZSUzDPD9QdMRXhtxgH8KZgb0gSgpyel85sSt0QH9wkWzhp69ow==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-introspection@7.0.0': + resolution: {integrity: sha512-aO+5ewxGaziXYcXJZ6F3doq/KI1L3WU2z5eCjs4DBO0kRQBHp4bH6ZKygVX2JIxOZrd1rB9SxP/CCCX2wRm8Xw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-messages@6.10.0': + resolution: {integrity: sha512-s7v8G3BTxGlKYIj3eWCG0g1296v+1LBt16mVnlRH5FuyaJ5AdhlhtRho5HUDpdwE8EXun+y1c48V6uhcZ8wdbQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-messages@7.0.0': + resolution: {integrity: sha512-qCBYR3QQvykcI36vnqwI5090hGXS3mmCe72b/f/n9kBsBaA2oowdBXZupB1wwKe8+6x8o8VkhKQaK9oTKKbWTg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transactions@6.10.0': + resolution: {integrity: sha512-VADSqP9OTYmhrox4pcgDd4+RjVmednXSE0+8Y7SPK4PN1pK5Az2RJ0nSsy0xcTnaOr8mF/crwFktqPrRQwSbQA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transactions@7.0.0': + resolution: {integrity: sha512-y5nayd2Ozld/4Bxefz50e/E6qxyZteuZCZ7suh7z96KY6QUJlZDR+eCG1v/lA7Azt3GSOevJuYFX/ept/mqZkw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/mocha@10.0.10': + resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} + + '@types/node@26.1.2': + resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@2.1.4: + resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} + + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + + diff@7.0.0: + resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} + engines: {node: '>=0.3.1'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + js-yaml@4.3.1: + resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} + hasBin: true + + litesvm-darwin-arm64@1.3.0: + resolution: {integrity: sha512-fj6cV/ofjMXdl5CwjyyLTQnZObfVH5HYDScQ6O44iRqxASmgEyEh4sC8a7M0YZ1rcli9nu2cWl5ARGura89I7Q==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + litesvm-darwin-x64@1.3.0: + resolution: {integrity: sha512-ZYEddnc+tAn8sVYpzvww0oHFiekbCSv+0OZiA6eUDtcSx9uzeRDmPPQ9eI6vgyews2LefBDSENmUb70GHY6Cqg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + litesvm-linux-arm64-gnu@1.3.0: + resolution: {integrity: sha512-kmmKeef96pJI4AJGCvjzMCW6QHuzFrMF1i6dE6OcrtWHaz0Ag+TFaKOU35H1bjH/fDBwoJUV9UbaIbdWht81tA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + litesvm-linux-arm64-musl@1.3.0: + resolution: {integrity: sha512-FO9p6rx+/3h7R3CU7lkOebL+jy8UEDngSrENHu7pj9EOr78QVyE3Fm0O+WMnwXpMoCSgW0XLhu1cI9NHAbzCTA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + litesvm-linux-x64-gnu@1.3.0: + resolution: {integrity: sha512-yXC8ZAdIei9JQ2xw5/BocOTu/7EqZuFPyhgENQ1mYDhjNpoyUbIuGCWnqtria14mDda0aV9yVev8plGUrUpjUw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + litesvm-linux-x64-musl@1.3.0: + resolution: {integrity: sha512-oedromp1gTjShXmKmxZ1FYtnfM824vRcrPSPvGM0CrqJqKK61m1+tFwNRAVsDlpmWKvO/zsz90ctbgAUo/3TXg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + litesvm@1.3.0: + resolution: {integrity: sha512-tMu9sBIqSbF1gQluXEUtGmXPfZlMc10tOoBVeDokgK77nl/CcuC506sEoFKM5Rq58Dkb070lBMVBLc43TbMUzQ==} + engines: {node: '>= 20'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + mocha@11.8.0: + resolution: {integrity: sha512-VyCeUdGN3A9lmCTTgG4yuvY9ixxaDk+xt2R/7/+1AP6EqNG+G9OKkzBwhVtVYoNX8YsxNSgAl8mOv3IAeOpFbw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + tsx@4.23.5: + resolution: {integrity: sha512-rw55FUaqOoI7RvlQwLbhO4nSDApnQ4/CykPuiQ/EPvtrX3WA9Ig55jIt9VvbBJbzJuj12ueRu4PMZ2SxPVbihg==} + engines: {node: '>=18.0.0'} + hasBin: true + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@8.10.0: + resolution: {integrity: sha512-ibvdovq3nCFs8Msrd95BW+zUOq+aOVbT+wpHUoPWhztbHEoPc6oof51iFDB6Es8lTKvNvVW9jNSAB8dwrKTMGg==} + + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + workerpool@9.3.4: + resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + ws@8.21.1: + resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + + yargs@17.7.3: + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@solana-program/system@0.12.2(@solana/kit@6.10.0(typescript@5.9.3))': + dependencies: + '@solana/kit': 6.10.0(typescript@5.9.3) + + '@solana-program/token@0.14.0(@solana/kit@6.10.0(typescript@5.9.3))': + dependencies: + '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana/kit': 6.10.0(typescript@5.9.3) + + '@solana/accounts@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/accounts@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/addresses@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/addresses@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/assertions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/assertions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-core@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-core@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-data-structures@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-data-structures@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-numbers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-numbers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-strings@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-strings@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/fixed-points': 6.10.0(typescript@5.9.3) + '@solana/options': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/codecs@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/fixed-points': 7.0.0(typescript@5.9.3) + '@solana/options': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/errors@6.10.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 15.0.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/errors@7.0.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 15.0.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/fast-stable-stringify@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/fast-stable-stringify@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/fixed-points@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/fixed-points@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/functional@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/functional@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/instruction-plans@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/instruction-plans@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/instructions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/instructions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/keys@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/keys@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/kit@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/offchain-messages': 6.10.0(typescript@5.9.3) + '@solana/plugin-core': 6.10.0(typescript@5.9.3) + '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) + '@solana/program-client-core': 6.10.0(typescript@5.9.3) + '@solana/programs': 6.10.0(typescript@5.9.3) + '@solana/rpc': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + '@solana/sysvars': 6.10.0(typescript@5.9.3) + '@solana/transaction-confirmation': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/kit@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/offchain-messages': 7.0.0(typescript@5.9.3) + '@solana/plugin-core': 7.0.0(typescript@5.9.3) + '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) + '@solana/program-client-core': 7.0.0(typescript@5.9.3) + '@solana/programs': 7.0.0(typescript@5.9.3) + '@solana/rpc': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + '@solana/sysvars': 7.0.0(typescript@5.9.3) + '@solana/transaction-confirmation': 7.0.0(typescript@5.9.3) + '@solana/transaction-introspection': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/nominal-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/nominal-types@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/offchain-messages@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/offchain-messages@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/plugin-core@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/plugin-core@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/plugin-interfaces@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/plugin-interfaces@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/program-client-core@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/program-client-core@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/programs@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/programs@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/promises@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/promises@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-api@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-api@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-parsed-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-parsed-types@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec-types@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions-api@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-subscriptions-api@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-subscriptions-channel-websocket@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + ws: 8.21.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@solana/rpc-subscriptions-channel-websocket@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + ws: 8.21.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@solana/rpc-subscriptions-spec@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions-spec@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/rpc-subscriptions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/rpc-transformers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-transformers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-transport-http@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + undici-types: 8.10.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-transport-http@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + undici-types: 8.10.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-types@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fixed-points': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-types@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fixed-points': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-transport-http': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-transport-http': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/signers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/offchain-messages': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/signers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/offchain-messages': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/subscribable@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/subscribable@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/sysvars@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/sysvars@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-confirmation@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/transaction-confirmation@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/transaction-introspection@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-messages@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-messages@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transactions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transactions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/mocha@10.0.10': {} + + '@types/node@26.1.2': + dependencies: + undici-types: 8.3.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + argparse@2.0.1: {} + + assertion-error@2.0.1: {} + + balanced-match@1.0.2: {} + + brace-expansion@2.1.4: + dependencies: + balanced-match: 1.0.2 + + browser-stdout@1.3.1: {} + + camelcase@6.3.0: {} + + chai@6.2.2: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.6.2: {} + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@15.0.0: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + debug@4.4.3(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@4.0.0: {} + + diff@7.0.0: {} + + eastasianwidth@0.2.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat@5.0.2: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fsevents@2.3.3: + optional: true + + get-caller-file@2.0.5: {} + + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + has-flag@4.0.0: {} + + he@1.2.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@2.1.0: {} + + is-unicode-supported@0.1.0: {} + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + js-yaml@4.3.1: + dependencies: + argparse: 2.0.1 + + litesvm-darwin-arm64@1.3.0: + optional: true + + litesvm-darwin-x64@1.3.0: + optional: true + + litesvm-linux-arm64-gnu@1.3.0: + optional: true + + litesvm-linux-arm64-musl@1.3.0: + optional: true + + litesvm-linux-x64-gnu@1.3.0: + optional: true + + litesvm-linux-x64-musl@1.3.0: + optional: true + + litesvm@1.3.0(typescript@5.9.3): + dependencies: + '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana-program/token': 0.14.0(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana/kit': 6.10.0(typescript@5.9.3) + optionalDependencies: + litesvm-darwin-arm64: 1.3.0 + litesvm-darwin-x64: 1.3.0 + litesvm-linux-arm64-gnu: 1.3.0 + litesvm-linux-arm64-musl: 1.3.0 + litesvm-linux-x64-gnu: 1.3.0 + litesvm-linux-x64-musl: 1.3.0 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + lru-cache@10.4.3: {} + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.4 + + minipass@7.1.3: {} + + mocha@11.8.0: + dependencies: + browser-stdout: 1.3.1 + chokidar: 4.0.3 + debug: 4.4.3(supports-color@8.1.1) + diff: 7.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 10.5.0 + he: 1.2.0 + is-path-inside: 3.0.3 + js-yaml: 4.3.1 + log-symbols: 4.1.0 + minimatch: 9.0.9 + ms: 2.1.3 + picocolors: 1.1.1 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 9.3.4 + yargs: 17.7.3 + yargs-parser: 21.1.1 + yargs-unparser: 2.0.0 + + ms@2.1.3: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + package-json-from-dist@1.0.1: {} + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + + picocolors@1.1.1: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + readdirp@4.1.2: {} + + require-directory@2.1.1: {} + + safe-buffer@5.2.1: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@4.1.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + tsx@4.23.5: + dependencies: + esbuild: 0.28.1 + optionalDependencies: + fsevents: 2.3.3 + + typescript@5.9.3: {} + + undici-types@8.10.0: {} + + undici-types@8.3.0: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + workerpool@9.3.4: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + ws@8.21.1: {} + + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + + yargs@17.7.3: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} diff --git a/cryptography/bls-multisig/pinocchio/program/Cargo.toml b/cryptography/bls-multisig/pinocchio/program/Cargo.toml new file mode 100644 index 000000000..5a3f4ebb5 --- /dev/null +++ b/cryptography/bls-multisig/pinocchio/program/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "bls-multisig-pinocchio-program" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] + +[features] +no-entrypoint = [] + +[dependencies] +pinocchio.workspace = true +solana-address.workspace = true + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(target_os, values("solana"))'] } + +[dev-dependencies] +litesvm = "0.15" +solana-account = "4.3" +solana-instruction = "3.4" +solana-keypair = "3.1" +solana-native-token = "3.0" +solana-signer = "3.0" +solana-transaction = "4.1" diff --git a/cryptography/bls-multisig/pinocchio/program/src/bn254.rs b/cryptography/bls-multisig/pinocchio/program/src/bn254.rs new file mode 100644 index 000000000..fbdd9c903 --- /dev/null +++ b/cryptography/bls-multisig/pinocchio/program/src/bn254.rs @@ -0,0 +1,83 @@ +use pinocchio::error::ProgramError; + +use crate::BlsMultisigError; + +pub const G1_POINT: usize = 64; +pub const G2_POINT: usize = 128; + +const ALT_BN128_PAIRING: u64 = 3; +const ALT_BN128_G2_ADD: u64 = 4; +const PAIRING_INPUT: usize = (G1_POINT + G2_POINT) * 2; + +/// Canonical BN254 G2 generator, big-endian (EIP-197 encoding). +pub const G2_GENERATOR: [u8; G2_POINT] = [ + 0x19, 0x8e, 0x93, 0x93, 0x92, 0x0d, 0x48, 0x3a, 0x72, 0x60, 0xbf, 0xb7, 0x31, 0xfb, 0x5d, 0x25, 0xf1, 0xaa, 0x49, + 0x33, 0x35, 0xa9, 0xe7, 0x12, 0x97, 0xe4, 0x85, 0xb7, 0xae, 0xf3, 0x12, 0xc2, 0x18, 0x00, 0xde, 0xef, 0x12, 0x1f, + 0x1e, 0x76, 0x42, 0x6a, 0x00, 0x66, 0x5e, 0x5c, 0x44, 0x79, 0x67, 0x43, 0x22, 0xd4, 0xf7, 0x5e, 0xda, 0xdd, 0x46, + 0xde, 0xbd, 0x5c, 0xd9, 0x92, 0xf6, 0xed, 0x09, 0x06, 0x89, 0xd0, 0x58, 0x5f, 0xf0, 0x75, 0xec, 0x9e, 0x99, 0xad, + 0x69, 0x0c, 0x33, 0x95, 0xbc, 0x4b, 0x31, 0x33, 0x70, 0xb3, 0x8e, 0xf3, 0x55, 0xac, 0xda, 0xdc, 0xd1, 0x22, 0x97, + 0x5b, 0x12, 0xc8, 0x5e, 0xa5, 0xdb, 0x8c, 0x6d, 0xeb, 0x4a, 0xab, 0x71, 0x80, 0x8d, 0xcb, 0x40, 0x8f, 0xe3, 0xd1, + 0xe7, 0x69, 0x0c, 0x43, 0xd3, 0x7b, 0x4c, 0xe6, 0xcc, 0x01, 0x66, 0xfa, 0x7d, 0xaa, +]; + +/// Sums a contiguous list of big-endian G2 points (128 bytes each) into one, +/// using the alt_bn128 G2 addition syscall. +pub fn aggregate_g2(points: &[u8]) -> Result<[u8; G2_POINT], ProgramError> { + if points.is_empty() || !points.len().is_multiple_of(G2_POINT) { + return Err(BlsMultisigError::InvalidInputLength.into()); + } + + let count = points.len() / G2_POINT; + let mut aggregate = [0u8; G2_POINT]; + aggregate.copy_from_slice(&points[..G2_POINT]); + + let mut add_input = [0u8; G2_POINT * 2]; + for i in 1..count { + add_input[..G2_POINT].copy_from_slice(&aggregate); + add_input[G2_POINT..].copy_from_slice(&points[i * G2_POINT..(i + 1) * G2_POINT]); + alt_bn128_group_op(ALT_BN128_G2_ADD, &add_input, &mut aggregate)?; + } + Ok(aggregate) +} + +/// Checks the BLS relation `e(aggregate_signature, G2) * e(negated_message_hash, +/// aggregate_pubkey) == 1` via the alt_bn128 pairing syscall. +pub fn aggregate_verify( + aggregate_signature: &[u8], + negated_message_hash: &[u8], + aggregate_pubkey: &[u8], +) -> Result { + let mut input = [0u8; PAIRING_INPUT]; + input[..G1_POINT].copy_from_slice(aggregate_signature); + input[G1_POINT..G1_POINT + G2_POINT].copy_from_slice(&G2_GENERATOR); + input[G1_POINT + G2_POINT..G1_POINT + G2_POINT + G1_POINT].copy_from_slice(negated_message_hash); + input[G1_POINT + G2_POINT + G1_POINT..].copy_from_slice(aggregate_pubkey); + + let mut result = [0u8; 32]; + alt_bn128_group_op(ALT_BN128_PAIRING, &input, &mut result)?; + Ok(result[31] == 1 && result[..31].iter().all(|&byte| byte == 0)) +} + +#[inline(always)] +fn alt_bn128_group_op(group_op: u64, input: &[u8], output: &mut [u8]) -> Result<(), ProgramError> { + #[cfg(target_os = "solana")] + { + let code = unsafe { + pinocchio::syscalls::sol_alt_bn128_group_op( + group_op, + input.as_ptr(), + input.len() as u64, + output.as_mut_ptr(), + ) + }; + match code { + 0 => Ok(()), + _ => Err(BlsMultisigError::SyscallFailed.into()), + } + } + #[cfg(not(target_os = "solana"))] + { + let _ = (group_op, input, output); + Err(BlsMultisigError::SyscallUnavailable.into()) + } +} diff --git a/cryptography/bls-multisig/pinocchio/program/src/lib.rs b/cryptography/bls-multisig/pinocchio/program/src/lib.rs new file mode 100644 index 000000000..a15d63f82 --- /dev/null +++ b/cryptography/bls-multisig/pinocchio/program/src/lib.rs @@ -0,0 +1,157 @@ +#![no_std] + +use pinocchio::{error::ProgramError, nostd_panic_handler, AccountView, Address, ProgramResult}; + +mod bn254; +use bn254::{aggregate_g2, aggregate_verify, G1_POINT, G2_POINT}; + +pinocchio::address::declare_id!("8v5LaPLsUEMEHnfShfovqJyUjcRHkngKhnskrYKV8WN4"); + +#[cfg(not(feature = "no-entrypoint"))] +pinocchio::entrypoint!(process_instruction); + +nostd_panic_handler!(); + +const COUNT_PREFIX: usize = 2; +const VERIFY_INPUT: usize = G1_POINT * 2; + +#[derive(Clone, Copy, Debug, PartialEq)] +pub enum BlsMultisigError { + InvalidInputLength, + SyscallFailed, + SyscallUnavailable, + AggregateVerifyFailed, + InvalidMultisigAccount, + MultisigFull, +} + +impl From for ProgramError { + fn from(e: BlsMultisigError) -> Self { + ProgramError::Custom(e as u32) + } +} + +pub fn process_instruction( + program_id: &Address, + accounts: &mut [AccountView], + instruction_data: &[u8], +) -> ProgramResult { + let (discriminator, input) = instruction_data.split_first().ok_or(ProgramError::InvalidInstructionData)?; + + match discriminator { + 0 => process_aggregate_verify(input), + 1 => process_add_signers(program_id, accounts, input), + 2 => process_verify(program_id, accounts, input), + _ => Err(ProgramError::InvalidInstructionData), + } +} + +fn signer_count(data: &[u8]) -> usize { + u16::from_le_bytes([data[0], data[1]]) as usize +} + +/// Stateless aggregate-signature check. +/// +/// # Layout +/// `aggregate_signature` (G1, 64 bytes) ‖ `negated_message_hash` (G1, 64 bytes) +/// ‖ one or more big-endian G2 public keys (128 bytes each). +/// +/// Aggregates the public keys on-chain via the G2 addition syscall, then checks +/// the BLS pairing relation `e(aggSig, G2) · e(-H(m), aggPk) == 1`. Returns the +/// on-chain aggregate public key as return data. +pub fn process_aggregate_verify(input: &[u8]) -> ProgramResult { + if input.len() < VERIFY_INPUT + G2_POINT || !(input.len() - VERIFY_INPUT).is_multiple_of(G2_POINT) { + return Err(BlsMultisigError::InvalidInputLength.into()); + } + + let aggregate_signature = &input[..G1_POINT]; + let negated_message_hash = &input[G1_POINT..VERIFY_INPUT]; + let aggregate_pubkey = aggregate_g2(&input[VERIFY_INPUT..])?; + + if !aggregate_verify(aggregate_signature, negated_message_hash, &aggregate_pubkey)? { + return Err(BlsMultisigError::AggregateVerifyFailed.into()); + } + + set_return_data(&aggregate_pubkey); + Ok(()) +} + +/// Appends signers to the multisig account. +/// +/// Account 0 is the multisig account (writable, owned by this program). Its data +/// is `[count: u16-le][G2 pubkey; count]`. The instruction data is a chunk of one +/// or more big-endian G2 public keys (128 bytes each) appended to the account. +pub fn process_add_signers(program_id: &Address, accounts: &mut [AccountView], input: &[u8]) -> ProgramResult { + let multisig = accounts.first_mut().ok_or(ProgramError::NotEnoughAccountKeys)?; + if !multisig.is_writable() || !multisig.owned_by(program_id) { + return Err(BlsMultisigError::InvalidMultisigAccount.into()); + } + if input.is_empty() || !input.len().is_multiple_of(G2_POINT) { + return Err(BlsMultisigError::InvalidInputLength.into()); + } + + let mut data = multisig.try_borrow_mut()?; + if data.len() < COUNT_PREFIX { + return Err(BlsMultisigError::InvalidMultisigAccount.into()); + } + + let count = signer_count(&data); + let added = input.len() / G2_POINT; + let start = COUNT_PREFIX + count * G2_POINT; + let end = start + input.len(); + if end > data.len() { + return Err(BlsMultisigError::MultisigFull.into()); + } + + data[start..end].copy_from_slice(input); + let new_count = (count + added) as u16; + data[..COUNT_PREFIX].copy_from_slice(&new_count.to_le_bytes()); + Ok(()) +} + +/// Verifies an aggregate signature against every registered signer. +/// +/// Account 0 is the multisig account (owned by this program). The instruction +/// data is `aggregate_signature` (G1, 64 bytes) ‖ `negated_message_hash` (G1, 64 +/// bytes). Every stored public key is aggregated on-chain via the G2 addition +/// syscall, then the BLS pairing relation is checked — it only holds when every +/// stored signer contributed to the aggregate signature. +pub fn process_verify(program_id: &Address, accounts: &[AccountView], input: &[u8]) -> ProgramResult { + let multisig = accounts.first().ok_or(ProgramError::NotEnoughAccountKeys)?; + if !multisig.owned_by(program_id) { + return Err(BlsMultisigError::InvalidMultisigAccount.into()); + } + if input.len() != VERIFY_INPUT { + return Err(BlsMultisigError::InvalidInputLength.into()); + } + + let aggregate_signature = &input[..G1_POINT]; + let negated_message_hash = &input[G1_POINT..]; + + let data = multisig.try_borrow()?; + if data.len() < COUNT_PREFIX { + return Err(BlsMultisigError::InvalidMultisigAccount.into()); + } + let count = signer_count(&data); + let pubkeys = &data[COUNT_PREFIX..COUNT_PREFIX + count * G2_POINT]; + + let aggregate_pubkey = aggregate_g2(pubkeys)?; + if !aggregate_verify(aggregate_signature, negated_message_hash, &aggregate_pubkey)? { + return Err(BlsMultisigError::AggregateVerifyFailed.into()); + } + + set_return_data(&aggregate_pubkey); + Ok(()) +} + +#[inline(always)] +fn set_return_data(data: &[u8]) { + #[cfg(target_os = "solana")] + unsafe { + pinocchio::syscalls::sol_set_return_data(data.as_ptr(), data.len() as u64); + } + #[cfg(not(target_os = "solana"))] + { + let _ = data; + } +} diff --git a/cryptography/bls-multisig/pinocchio/program/tests/test.rs b/cryptography/bls-multisig/pinocchio/program/tests/test.rs new file mode 100644 index 000000000..e10d47e07 --- /dev/null +++ b/cryptography/bls-multisig/pinocchio/program/tests/test.rs @@ -0,0 +1,160 @@ +use litesvm::LiteSVM; +use solana_account::Account; +use solana_address::Address; +use solana_instruction::{AccountMeta, Instruction}; +use solana_keypair::Keypair; +use solana_native_token::LAMPORTS_PER_SOL; +use solana_signer::Signer; +use solana_transaction::Transaction; + +const IX_AGGREGATE_VERIFY: u8 = 0; +const IX_ADD_SIGNERS: u8 = 1; +const IX_VERIFY: u8 = 2; + +const G2_POINT: usize = 128; +const COUNT_PREFIX: usize = 2; + +// BLS-over-BN254 test vectors (message "approve proposal #42", secrets 1, 2, 3), +// taken from the crypto-primitives reference implementation. +const PUBKEY_1: &str = "198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa"; +const PUBKEY_2: &str = "203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e"; +const PUBKEY_3: &str = "1014772f57bb9742735191cd5dcfe4ebbc04156b6878a0a7c9824f32ffb66e8506064e784db10e9051e52826e192715e8d7e478cb09a5e0012defa0694fbc7f5021e2335f3354bb7922ffcc2f38d3323dd9453ac49b55441452aeaca147711b2058e1d5681b5b9e0074b0f9c8d2c68a069b920d74521e79765036d57666c5597"; +const NEGATED_MESSAGE_HASH: &str = "093cccf0e7508f50d86197799d553d23be9a52fecf9fa7d309f3f6a6a0bae1dd25592fd60d368265921cb7232eec3492210e46b4b95682469e7590b0d2df6f28"; +const AGG_SIG_ALL: &str = "06a6497a71f97597f1acf925b1f67eca5b5dd8011f7140e08f484e57dc79bff61b8268216fa30b6505352cdde4fc0d71a005296166f81bfe8edbde2352a6abbf"; +const AGG_SIG_FIRST_TWO: &str = "29da90779ff721fffa657af0a02eb50fcb18cc8176e4d63127827a1767d69c7e227c651364e066d84349de32d97fd6b7f423a1e2b9a162ba061337d5a29e9303"; + +fn from_hex(s: &str) -> Vec { + (0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16).unwrap()).collect() +} + +fn setup() -> (LiteSVM, Address, Keypair) { + let program_id = Address::new_unique(); + let program_bytes = include_bytes!("../../tests/fixtures/bls_multisig_pinocchio_program.so"); + + let mut svm = LiteSVM::new(); + svm.add_program(program_id, program_bytes).unwrap(); + + let payer = Keypair::new(); + svm.airdrop(&payer.pubkey(), LAMPORTS_PER_SOL).unwrap(); + (svm, program_id, payer) +} + +fn multisig_account(svm: &mut LiteSVM, owner: Address, capacity: usize, members: &[&str]) -> Address { + let key = Address::new_unique(); + let mut data = vec![0u8; COUNT_PREFIX + capacity * G2_POINT]; + data[..COUNT_PREFIX].copy_from_slice(&(members.len() as u16).to_le_bytes()); + for (i, member) in members.iter().enumerate() { + let start = COUNT_PREFIX + i * G2_POINT; + data[start..start + G2_POINT].copy_from_slice(&from_hex(member)); + } + svm.set_account(key, Account { lamports: 1_000_000_000, data, owner, ..Account::default() }).unwrap(); + key +} + +fn send( + svm: &mut LiteSVM, + program_id: Address, + payer: &Keypair, + data: Vec, + accounts: Vec, +) -> Result, String> { + let ix = Instruction::new_with_bytes(program_id, &data, accounts); + let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[payer], svm.latest_blockhash()); + match svm.send_transaction(tx) { + Ok(meta) => Ok(meta.return_data.data), + Err(failed) => Err(failed.err.to_string()), + } +} + +fn verify_data(discriminator: u8, agg_sig: &str) -> Vec { + let mut data = vec![discriminator]; + data.extend_from_slice(&from_hex(agg_sig)); + data.extend_from_slice(&from_hex(NEGATED_MESSAGE_HASH)); + data +} + +#[test] +fn stateless_aggregate_of_all_signers_verifies() { + let (mut svm, program_id, payer) = setup(); + + let mut data = verify_data(IX_AGGREGATE_VERIFY, AGG_SIG_ALL); + for pubkey in [PUBKEY_1, PUBKEY_2, PUBKEY_3] { + data.extend_from_slice(&from_hex(pubkey)); + } + + send(&mut svm, program_id, &payer, data, vec![]).unwrap(); +} + +#[test] +fn stateless_partial_aggregate_is_rejected() { + let (mut svm, program_id, payer) = setup(); + + let mut data = verify_data(IX_AGGREGATE_VERIFY, AGG_SIG_FIRST_TWO); + for pubkey in [PUBKEY_1, PUBKEY_2, PUBKEY_3] { + data.extend_from_slice(&from_hex(pubkey)); + } + + let err = send(&mut svm, program_id, &payer, data, vec![]).unwrap_err(); + assert!(err.contains("custom program error: 0x3"), "unexpected error: {err}"); +} + +#[test] +fn add_signers_appends_to_account() { + let (mut svm, program_id, payer) = setup(); + let multisig = multisig_account(&mut svm, program_id, 3, &[]); + + let mut data = vec![IX_ADD_SIGNERS]; + for pubkey in [PUBKEY_1, PUBKEY_2, PUBKEY_3] { + data.extend_from_slice(&from_hex(pubkey)); + } + send(&mut svm, program_id, &payer, data, vec![AccountMeta::new(multisig, false)]).unwrap(); + + let mut expected = (3u16).to_le_bytes().to_vec(); + for pubkey in [PUBKEY_1, PUBKEY_2, PUBKEY_3] { + expected.extend_from_slice(&from_hex(pubkey)); + } + assert_eq!(svm.get_account(&multisig).unwrap().data, expected); +} + +#[test] +fn add_signers_beyond_capacity_is_rejected() { + let (mut svm, program_id, payer) = setup(); + let multisig = multisig_account(&mut svm, program_id, 2, &[]); + + let mut data = vec![IX_ADD_SIGNERS]; + for pubkey in [PUBKEY_1, PUBKEY_2, PUBKEY_3] { + data.extend_from_slice(&from_hex(pubkey)); + } + let err = send(&mut svm, program_id, &payer, data, vec![AccountMeta::new(multisig, false)]).unwrap_err(); + assert!(err.contains("custom program error: 0x5"), "unexpected error: {err}"); +} + +#[test] +fn verify_all_signers_succeeds() { + let (mut svm, program_id, payer) = setup(); + let multisig = multisig_account(&mut svm, program_id, 3, &[PUBKEY_1, PUBKEY_2, PUBKEY_3]); + + let data = verify_data(IX_VERIFY, AGG_SIG_ALL); + send(&mut svm, program_id, &payer, data, vec![AccountMeta::new(multisig, false)]).unwrap(); +} + +#[test] +fn verify_with_missing_signer_is_rejected() { + let (mut svm, program_id, payer) = setup(); + let multisig = multisig_account(&mut svm, program_id, 3, &[PUBKEY_1, PUBKEY_2, PUBKEY_3]); + + let data = verify_data(IX_VERIFY, AGG_SIG_FIRST_TWO); + let err = send(&mut svm, program_id, &payer, data, vec![AccountMeta::new(multisig, false)]).unwrap_err(); + assert!(err.contains("custom program error: 0x3"), "unexpected error: {err}"); +} + +#[test] +fn verify_rejects_foreign_account() { + let (mut svm, program_id, payer) = setup(); + let foreign_owner = Address::new_unique(); + let multisig = multisig_account(&mut svm, foreign_owner, 3, &[PUBKEY_1, PUBKEY_2, PUBKEY_3]); + + let data = verify_data(IX_VERIFY, AGG_SIG_ALL); + let err = send(&mut svm, program_id, &payer, data, vec![AccountMeta::new(multisig, false)]).unwrap_err(); + assert!(err.contains("custom program error: 0x4"), "unexpected error: {err}"); +} diff --git a/cryptography/bls-multisig/pinocchio/tests/bls-multisig.test.ts b/cryptography/bls-multisig/pinocchio/tests/bls-multisig.test.ts new file mode 100644 index 000000000..acd4ce01f --- /dev/null +++ b/cryptography/bls-multisig/pinocchio/tests/bls-multisig.test.ts @@ -0,0 +1,168 @@ +import { Buffer } from 'node:buffer'; +import { + AccountRole, + type Address, + appendTransactionMessageInstruction, + createTransactionMessage, + generateKeyPairSigner, + type KeyPairSigner, + lamports, + pipe, + setTransactionMessageFeePayerSigner, + signTransactionMessageWithSigners, +} from '@solana/kit'; +import { assert } from 'chai'; +import { FailedTransactionMetadata, LiteSVM, TransactionMetadata } from 'litesvm'; + +// BLS-over-BN254 test vectors (message "approve proposal #42", secrets 1, 2, 3), +// taken from the crypto-primitives reference implementation. +const PUBKEY_1 = + '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa'; +const PUBKEY_2 = + '203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e'; +const PUBKEY_3 = + '1014772f57bb9742735191cd5dcfe4ebbc04156b6878a0a7c9824f32ffb66e8506064e784db10e9051e52826e192715e8d7e478cb09a5e0012defa0694fbc7f5021e2335f3354bb7922ffcc2f38d3323dd9453ac49b55441452aeaca147711b2058e1d5681b5b9e0074b0f9c8d2c68a069b920d74521e79765036d57666c5597'; +const NEGATED_MESSAGE_HASH = + '093cccf0e7508f50d86197799d553d23be9a52fecf9fa7d309f3f6a6a0bae1dd25592fd60d368265921cb7232eec3492210e46b4b95682469e7590b0d2df6f28'; +const AGG_SIG_ALL = + '06a6497a71f97597f1acf925b1f67eca5b5dd8011f7140e08f484e57dc79bff61b8268216fa30b6505352cdde4fc0d71a005296166f81bfe8edbde2352a6abbf'; +const AGG_SIG_FIRST_TWO = + '29da90779ff721fffa657af0a02eb50fcb18cc8176e4d63127827a1767d69c7e227c651364e066d84349de32d97fd6b7f423a1e2b9a162ba061337d5a29e9303'; + +const IX_AGGREGATE_VERIFY = 0; +const IX_ADD_SIGNERS = 1; +const IX_VERIFY = 2; + +const G2_POINT = 128; +const COUNT_PREFIX = 2; + +const ERR_AGGREGATE_VERIFY_FAILED = 'InstructionErrorCustom { code: 3 }'; +const ERR_INVALID_MULTISIG_ACCOUNT = 'InstructionErrorCustom { code: 4 }'; +const ERR_MULTISIG_FULL = 'InstructionErrorCustom { code: 5 }'; + +const hex = (s: string) => Uint8Array.from(Buffer.from(s, 'hex')); + +const concat = (...parts: Uint8Array[]) => { + const total = parts.reduce((n, p) => n + p.length, 0); + const out = new Uint8Array(total); + let offset = 0; + for (const part of parts) { + out.set(part, offset); + offset += part.length; + } + return out; +}; + +describe('bls-multisig', () => { + const svm = new LiteSVM(); + let programId: Address; + let payer: KeyPairSigner; + + before(async () => { + programId = (await generateKeyPairSigner()).address; + svm.addProgramFromFile(programId, 'tests/fixtures/bls_multisig_pinocchio_program.so'); + + payer = await generateKeyPairSigner(); + svm.airdrop(payer.address, lamports(1_000_000_000n)); + }); + + async function multisigAccount(owner: Address, capacity: number, members: string[]) { + const address = (await generateKeyPairSigner()).address; + const data = new Uint8Array(COUNT_PREFIX + capacity * G2_POINT); + new DataView(data.buffer).setUint16(0, members.length, true); + members.forEach((member, i) => data.set(hex(member), COUNT_PREFIX + i * G2_POINT)); + + svm.setAccount({ + address, + data, + executable: false, + lamports: lamports(1_000_000_000n), + programAddress: owner, + space: BigInt(data.length), + }); + return address; + } + + async function send(data: Uint8Array, multisig?: Address) { + const accounts = multisig ? [{ address: multisig, role: AccountRole.WRITABLE }] : []; + const transactionMessage = pipe( + createTransactionMessage({ version: 0 }), + m => setTransactionMessageFeePayerSigner(payer, m), + m => svm.setTransactionMessageLifetimeUsingLatestBlockhash(m), + m => appendTransactionMessageInstruction({ programAddress: programId, accounts, data }, m), + ); + const signedTx = await signTransactionMessageWithSigners(transactionMessage); + + const result = svm.sendTransaction(signedTx); + svm.expireBlockhash(); + return result; + } + + const verifyData = (discriminator: number, aggSig: string) => + concat(new Uint8Array([discriminator]), hex(aggSig), hex(NEGATED_MESSAGE_HASH)); + + it('stateless verify: aggregate of all signers passes the pairing check', async () => { + const data = concat(verifyData(IX_AGGREGATE_VERIFY, AGG_SIG_ALL), hex(PUBKEY_1), hex(PUBKEY_2), hex(PUBKEY_3)); + const result = await send(data); + + assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); + }); + + it('stateless verify: partial aggregate is rejected', async () => { + const data = concat( + verifyData(IX_AGGREGATE_VERIFY, AGG_SIG_FIRST_TWO), + hex(PUBKEY_1), + hex(PUBKEY_2), + hex(PUBKEY_3), + ); + const result = await send(data); + + assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); + assert.include(String(result.err()), ERR_AGGREGATE_VERIFY_FAILED); + }); + + it('add signers appends each pubkey and updates the count', async () => { + const multisig = await multisigAccount(programId, 3, []); + const data = concat(new Uint8Array([IX_ADD_SIGNERS]), hex(PUBKEY_1), hex(PUBKEY_2), hex(PUBKEY_3)); + const result = await send(data, multisig); + + assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); + const expected = concat(new Uint8Array([3, 0]), hex(PUBKEY_1), hex(PUBKEY_2), hex(PUBKEY_3)); + const account = svm.getAccount(multisig); + assert(account?.exists, 'expected the multisig account to exist'); + assert.deepEqual(account.data, expected); + }); + + it('add signers beyond capacity is rejected', async () => { + const multisig = await multisigAccount(programId, 2, []); + const data = concat(new Uint8Array([IX_ADD_SIGNERS]), hex(PUBKEY_1), hex(PUBKEY_2), hex(PUBKEY_3)); + const result = await send(data, multisig); + + assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); + assert.include(String(result.err()), ERR_MULTISIG_FULL); + }); + + it('verify passes when every registered signer signed', async () => { + const multisig = await multisigAccount(programId, 3, [PUBKEY_1, PUBKEY_2, PUBKEY_3]); + const result = await send(verifyData(IX_VERIFY, AGG_SIG_ALL), multisig); + + assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); + }); + + it('verify rejects an aggregate missing one registered signer', async () => { + const multisig = await multisigAccount(programId, 3, [PUBKEY_1, PUBKEY_2, PUBKEY_3]); + const result = await send(verifyData(IX_VERIFY, AGG_SIG_FIRST_TWO), multisig); + + assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); + assert.include(String(result.err()), ERR_AGGREGATE_VERIFY_FAILED); + }); + + it('verify rejects an account not owned by the program', async () => { + const foreignOwner = (await generateKeyPairSigner()).address; + const multisig = await multisigAccount(foreignOwner, 3, [PUBKEY_1, PUBKEY_2, PUBKEY_3]); + const result = await send(verifyData(IX_VERIFY, AGG_SIG_ALL), multisig); + + assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); + assert.include(String(result.err()), ERR_INVALID_MULTISIG_ACCOUNT); + }); +}); diff --git a/cryptography/bls-multisig/pinocchio/tsconfig.json b/cryptography/bls-multisig/pinocchio/tsconfig.json new file mode 100644 index 000000000..c02443141 --- /dev/null +++ b/cryptography/bls-multisig/pinocchio/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "types": ["mocha", "chai", "node"], + "typeRoots": ["./node_modules/@types"], + "lib": ["esnext"], + "module": "esnext", + "target": "esnext", + "moduleResolution": "bundler", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowImportingTsExtensions": true, + "noEmit": true, + "skipLibCheck": true + } +} diff --git a/cryptography/bls12-381/pinocchio/README.md b/cryptography/bls12-381/pinocchio/README.md new file mode 100644 index 000000000..c1191e08b --- /dev/null +++ b/cryptography/bls12-381/pinocchio/README.md @@ -0,0 +1,22 @@ +# BLS12-381 curve operations (Pinocchio) + +A stateless program that wraps the BLS12-381 group operations of the `sol_curve_group_op` syscall. Results come back as transaction return data. Points are big-endian: G1 = 96 bytes, G2 = 192 bytes; scalars are 32 bytes big-endian and go first in the instruction data. + +| Discriminator | Instruction | Input | +| ------------- | ----------- | -------------- | +| 0 | G1 add | point ‖ point | +| 1 | G1 sub | point ‖ point | +| 2 | G1 mul | scalar ‖ point | +| 3 | G2 add | point ‖ point | +| 4 | G2 sub | point ‖ point | +| 5 | G2 mul | scalar ‖ point | + +The syscall runs in LiteSVM today but only works on public clusters once the `enable_bls12_381_syscall` feature gate activates. + +## Test + +```sh +pnpm install +pnpm build-and-test # TypeScript tests (mocha + LiteSVM) +cargo test --manifest-path=./program/Cargo.toml # Rust tests (litesvm), after build-and-test +``` diff --git a/cryptography/bls12-381/pinocchio/package.json b/cryptography/bls12-381/pinocchio/package.json new file mode 100644 index 000000000..1db867f9f --- /dev/null +++ b/cryptography/bls12-381/pinocchio/package.json @@ -0,0 +1,24 @@ +{ + "name": "bls12-381-pinocchio", + "version": "0.1.0", + "type": "module", + "scripts": { + "test": "mocha --import=tsx -t 1000000 ./tests/bls12-381.test.ts", + "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", + "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", + "deploy": "solana program deploy ./program/target/so/bls12_381_pinocchio_program.so" + }, + "dependencies": { + "@solana/kit": "^7.0.0" + }, + "devDependencies": { + "@types/chai": "^5.2.3", + "@types/mocha": "^10.0.10", + "@types/node": "^26.1.0", + "chai": "^6.2.2", + "litesvm": "^1.3.0", + "mocha": "^11.7.5", + "tsx": "^4.19.2", + "typescript": "^5.9.3" + } +} diff --git a/cryptography/bls12-381/pinocchio/pnpm-lock.yaml b/cryptography/bls12-381/pinocchio/pnpm-lock.yaml new file mode 100644 index 000000000..6e11abae2 --- /dev/null +++ b/cryptography/bls12-381/pinocchio/pnpm-lock.yaml @@ -0,0 +1,2825 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@solana/kit': + specifier: ^7.0.0 + version: 7.0.0(typescript@5.9.3) + devDependencies: + '@types/chai': + specifier: ^5.2.3 + version: 5.2.3 + '@types/mocha': + specifier: ^10.0.10 + version: 10.0.10 + '@types/node': + specifier: ^26.1.0 + version: 26.1.2 + chai: + specifier: ^6.2.2 + version: 6.2.2 + litesvm: + specifier: ^1.3.0 + version: 1.3.0(typescript@5.9.3) + mocha: + specifier: ^11.7.5 + version: 11.8.0 + tsx: + specifier: ^4.19.2 + version: 4.23.5 + typescript: + specifier: ^5.9.3 + version: 5.9.3 + +packages: + + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@solana-program/system@0.12.2': + resolution: {integrity: sha512-MaBeOxlvTruQhA7UYkOb3hVTEHPPagOtd+PvTm6a8rGgvEAP0kD4BbC37NceOaR4ABNqdaCmD5OMVRKgrE6KAg==} + peerDependencies: + '@solana/kit': ^6.4.0 + + '@solana-program/token@0.14.0': + resolution: {integrity: sha512-zpLMr6JZndlsQCQvrm0gezfwdr1lmzOGqN6v2WIYXjtDmbF+xg6zh/MAp2UFHRpv3uDmylEdjtQo05pa2OeaYg==} + engines: {node: '>=24.0.0'} + peerDependencies: + '@solana/kit': ^6.5.0 + + '@solana/accounts@6.10.0': + resolution: {integrity: sha512-+FxfDOrnifoPlBkF+fr8eeQdgM6xtIgAg9xKMu3WnIz60oZd4Xnry6+ff6t+ePPoZZp397FSg9ZJet68VCWm5Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/accounts@7.0.0': + resolution: {integrity: sha512-RfbinkhuWxcObxZIdjeWEn/mzLqRp/h2hAk/ZQCUxPdDBW8h4XxEybK9GBItGOAcrUz5HuusXTD+cXXnlIxWcg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/addresses@6.10.0': + resolution: {integrity: sha512-vEoCGBTxG0HCERAn84KXkrJjl+pDaNzOpZ0qbgcPS98fYxP5yzbKB8SNOY2bzrbkRUmmw5Q3hqTRERemUN2Gcw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/addresses@7.0.0': + resolution: {integrity: sha512-E7sJtV5d3bXrmw3I30rcKY+xoqM++6KIVJCi+q8ZaSMyP04UMfEENPHIJ+TkyS1RUgjzPT91ka/oWrtTh6EfkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/assertions@6.10.0': + resolution: {integrity: sha512-lKSAdVo+P/6Lp4vs6shstXmFOpvxrABwn4o1462tb7sKkNapk6o9pPFVPGw4DUgPS3WqWRs1j2tmpuVjhQRntg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/assertions@7.0.0': + resolution: {integrity: sha512-CShOQLPezI0tbrih+L88fzt8FMHDyJoWkmulk4wfRp3HhpQL2yNlH/SWLH033qysnvkmE7TxBFUtcnbnf7jz1g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-core@6.10.0': + resolution: {integrity: sha512-nfAl9OMGo4HanIMxGsQoVB7BxMoqBCYEUxl8oEAZZ09pDxnaXQZkTRXEwPPccag37XfW1ciPd1vWPKwB2b0HHQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-core@7.0.0': + resolution: {integrity: sha512-6HtEisZEtFb6okARUgYqmKdDbn2aHRrSCDgB1/GEwr0s6fK5XNYpafaSjorbs2MEyZV3tCUFTj2j6fk/4nNcLg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-data-structures@6.10.0': + resolution: {integrity: sha512-CNasJW3bq5u+632Zt5aJ8rOjAjv2HyenpV8o9kAIqdmV4CBpjCCoBnKn8LkuR/sbeREZxJYfhKTXO/9ruAkw7A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-data-structures@7.0.0': + resolution: {integrity: sha512-P0Ys1mB4lYlz3MMTCaJSysE3OYrq8WvsveU1ta8U/yG1qChXFGCOxPVh06swjaRxwPrEakb9VUESS5vNtp1rRA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-numbers@6.10.0': + resolution: {integrity: sha512-CcM+wX4zOiA9zkh8A7t1787A0Ehgmu5+6Z2tKoHew6cNw/dkaUTPa8JnNHbvfsLC8dfHC1BhAEJl86sKmRsfkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-numbers@7.0.0': + resolution: {integrity: sha512-XL0jnmnXr3ceoX4tusT+XkBVR2iGKEJecTIXbIV7ILi9xObg3fNXafNbTmbIOvKc0ByTyjo8EWZ9jQKSRWgsgA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-strings@6.10.0': + resolution: {integrity: sha512-zlaqkg7K6F6IN4V/Ec8TWkTn054gxv7ZLagvGkuEyAdPQ6BzzsehOm2TqCuyXgJJTCGPLY1bEk6yH9NxANe0kA==} + engines: {node: '>=20.18.0'} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5.4.0' + peerDependenciesMeta: + fastestsmallesttextencoderdecoder: + optional: true + typescript: + optional: true + + '@solana/codecs-strings@7.0.0': + resolution: {integrity: sha512-zXE1PE9HkVk6phZ6aqHTXvLZ0qIl5bJNIvG9eMB7LuFO1XBVQywJUtjKS8fE3/xmRCWSMilFSrEXGA+SpOyLrQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5.4.0' + peerDependenciesMeta: + fastestsmallesttextencoderdecoder: + optional: true + typescript: + optional: true + + '@solana/codecs@6.10.0': + resolution: {integrity: sha512-lLVuxod4ChWp9i7OvpgIykYG8Q9OGPVXKnHM9VlzDDLylsx7Y1FoQL00sHa7PqFkJVmkBufaA6dcGbQ7FU+lAQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs@7.0.0': + resolution: {integrity: sha512-xT1IbwKkPZ544u/eqhb9SZ0fNYJidWgIUzKNQMbvLCwduayAkQp+czlGdvLQ6CVlqtCewtH3gW8biGU7YuBdEw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/errors@6.10.0': + resolution: {integrity: sha512-KBLAxCtAXr357JNhCyIDQXWbuSj5vN6w+28FSfcYY6OOSiphmXLAV3V58jgV0C6iNbIzFJFi6yatFyDTdeJsNg==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/errors@7.0.0': + resolution: {integrity: sha512-94r+LLSzZ0XVp+LOogwxWGXeo138uvwqtqRW9Tjl1DIXrFgh8euXnJSXZyydu1UXJs7ItOSm0QreJviSGw3TGQ==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fast-stable-stringify@6.10.0': + resolution: {integrity: sha512-iCNed27wk6PKSS3QUtHovRfMWF/jbVWogs2vB4tukKUCsqG4rDfDInIwZ6ur/nY6XTrgi2gMMdZq9GAUlWsbfw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fast-stable-stringify@7.0.0': + resolution: {integrity: sha512-i/b5ZJMqMJXa6etjypANa2/ErPZfNG9/EVIYl7HpWooyCRgZ8hZJmJ2Cgrp0r4EMXCLeWn4aEG2HOBTzOJ4F7Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fixed-points@6.10.0': + resolution: {integrity: sha512-ZkKL0alXH3L7/wMiVG8YUuG8qBKunlM810+YBD7nUPRhifiGsX1zwADViHLYNqLr/jUk0mTYFUcKznTpB/K+Gg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fixed-points@7.0.0': + resolution: {integrity: sha512-Y3gcyHTponi5kXpWVEJIhuZ7yT84N+8He4dbjXWqwMBJnzKM+4tqFCbzy6y+6+Jxt44RT1lDmbpxmZopFRXU8Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/functional@6.10.0': + resolution: {integrity: sha512-P8cevu4mAqHTXC37h1TVoOh8zhWB2tlOI/R9vWjYPpcLwcyWf8p2qq4LEGHl5kY+1C+4PNX39HsmCocXOPCDkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/functional@7.0.0': + resolution: {integrity: sha512-ix9fzYhc2hCLiYf+hGI00mzzayANKDExEBxbwrtMj/BdQkwgUIvIlOssqHeSqDChL3UZhq9lR24Nz4JwYX8Jbw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instruction-plans@6.10.0': + resolution: {integrity: sha512-YG7mo4zykzdc6ZTV0BuN6pveK9qeBySzlYYerq578A4eQu3xcypMAYRGAvhMZtWTanjjmD6CKtM0M7kVp0TNxg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instruction-plans@7.0.0': + resolution: {integrity: sha512-uzXHztc8hLoT5TNWFsBX2DIETyp/Lr2l36O330s3YCgpRmfI4IRbBrjjq7TxDYFm/QY8+DD4CRG8p7wZSqG8dQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instructions@6.10.0': + resolution: {integrity: sha512-0TToYF+8LXQ3ofPMx+yF6yaM9l4YJvcAPMy0qV5JsrBUFlWXBSANRuudKBQLHMvb+a3OiUTq5X7omuorKMBB3A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instructions@7.0.0': + resolution: {integrity: sha512-ZN0gKAtCOKDuIaStcvLZDf5H20fkk7jr4dZE0Rk7z0kslf6mrRam9Y23N6AzeHp/b5ZeVKyfaTf4M35mOktLNg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/keys@6.10.0': + resolution: {integrity: sha512-26IRfdm/hTUCmM7MeEeX0ULSbCM6OzkZTkfkrPircqmRM7xyNqP4hq7u0P7wjb9dl7NfgyG6K7cdvUxrj2e3mA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/keys@7.0.0': + resolution: {integrity: sha512-JsdYR/YN3AGHZN2aZoeE5cymHYkNoBLnqgXoRncW/VyD7fMcR350aHU1hCMYd0b5BtITLsGmvvtvrgVkzK83Eg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/kit@6.10.0': + resolution: {integrity: sha512-/WnnQp3uARh2JCFSfAakejTAqwmXVuMVTcRn5r2yDwY2yzZ4R6mt/Cl59VPimVLNSoTyN/KsEwhv9omr3ERazQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/kit@7.0.0': + resolution: {integrity: sha512-ZCeai4LRJQooUmJXvpgMEGFTrCdJnV1ODbDJ8oqFZ+Y4t/9x1baQsFFpruqsdRyeGv2Rr+X6jV7cldVD+hyzRA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/nominal-types@6.10.0': + resolution: {integrity: sha512-9ykyBBvnkInH7fCacjJi7zu2PJyd+OCt+VTjIISv070fHzKIMFqZqJJ/dJ0SRH2aHwfB3n86iVsmtBtuxi4KKA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/nominal-types@7.0.0': + resolution: {integrity: sha512-ff21hmKKMckDkGWah9tRXsEyFCtSnkugH+EMLGJOn7tiXdtFljOXW5Q12IXyeil87EE8aWb1MS6p8v5+hi71Vg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/offchain-messages@6.10.0': + resolution: {integrity: sha512-RiEgAueeMkFMC1suOXBIcmCZgtXRxy24yk0DldPB37bB4zwOF1SAaRjNRPjIkGK8RhCYrEpPosnzLyavw9ueRg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/offchain-messages@7.0.0': + resolution: {integrity: sha512-fGrzxmqVStweGHRlXVAPKACdDboFCwXq5m8C+aD9Nupax6Q9rnvjICzYRLypwqB9X90XIZazh0ys+0KGLMpIJQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/options@6.10.0': + resolution: {integrity: sha512-RO9UT3UYD8/Cu2uM6ZXbKvLeMnVD42+g9JRds7Pfs4AhiOyg4R4TJrQUAppTgavPTO3PBRlWtWOC05ZH/yAIbg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/options@7.0.0': + resolution: {integrity: sha512-6DhvMqRcL3mG0R5JejYIW5PDTDr7HcLX2R9iCs6OPN1HdsyXmE2rX2EldnuA0rYz1buOodeWYsu4N1lpDcEpaQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-core@6.10.0': + resolution: {integrity: sha512-JE70YTQOfFACVFGvoJon4Scc/eHUWjMu8Ovo35CcV2kHTAHYMCd4UkBd2gmlhK0vRMMomsQi1ZLPlAlTq0OoUQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-core@7.0.0': + resolution: {integrity: sha512-EwTUfOGoQQ3aXooRlQFVbk+sJW7NqJl1K+bmSLiJUjaBTSqtbr3GtMu7aoybJqzZQKjOGSG4Hn0BzK24SvWy3A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-interfaces@6.10.0': + resolution: {integrity: sha512-vr0/l9wcM4orwGr8cjkFWaJ9A4HvzuAv00jMFNMg0Spd0GZqnwnpW+D/fXa1lIJnTRaF3EeEjLh4VjKU037T0Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-interfaces@7.0.0': + resolution: {integrity: sha512-fz/HknZLGnVIjhjXrMzW3Qm1x80oeEMSOk4RzMwjcyAEyfzhHtGNW74NsU5W+uFpYz6UBbV5mB1jpuAdJdnj9A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/program-client-core@6.10.0': + resolution: {integrity: sha512-4PPbTLdC1ylHIuvhOFDP8RnSkXPCFjNFWGslzc+UFKnoR4ajzBcByX94jmaruDMk5ncxgj7tr9pzJTvfGHIaMA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/program-client-core@7.0.0': + resolution: {integrity: sha512-+N8HImlR3MTbbvhOShsLelQXGZKbi6KhPhyy+4ZkDLbnRs4QikTamIChXZmoCyxB51S8/9cNRAKyQhbeF5Y8Qg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/programs@6.10.0': + resolution: {integrity: sha512-qn/HeLP5KGUJXVub3fyGe69/rWaLX4jzwm6V/1pNxJDbdF+MBdgn18hP6F+VmhfdNmwK0lue3J/1HQ1UTMuQeQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/programs@7.0.0': + resolution: {integrity: sha512-a1HNgzr9YiiZ8vK4VaKHEXjnZmKX7W5ab2ghuseIalEw/+PJLFcTRTOw8n3efRu677b/bG2Icmb3MBBEXmvbPg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/promises@6.10.0': + resolution: {integrity: sha512-oJSIn+VBBMWDo8oqw7RV3tI6Jih+Ieup6FcQLYLDUriaeo7+8l1Zdezl8zh7SIfeU4lOfAbRg6mR0huaS/Lltg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/promises@7.0.0': + resolution: {integrity: sha512-rjoHnaR4zeEIHqIzfgotxRrLKqY4Goj0G5duZOnjHm8ZC+7eDkH5/mXj1bDJ4ROM70dVM+y1Xkrjg7IL6k6StA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-api@6.10.0': + resolution: {integrity: sha512-RjPIVsAb/85P1ptoO3WpC0x7QG6gG/e4q/3lo6gbSznUZOcoM+8sSBnCX7BwP1ZkCDS6NK/ClXLnhhhYZx+OGg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-api@7.0.0': + resolution: {integrity: sha512-MTtBO883st83CjWpo8B4g8EKzXaeoBX5N7+sv4vcvsn2q1NpY4SG3XejdX1FrKeTe9Xjbv0/FzFtykstbKe1UA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-parsed-types@6.10.0': + resolution: {integrity: sha512-5275mvSV1mxhwvrMVa+K7BU/nAetpHfcb+8Ql9rtA8RRf6DyiimFQFZUukE4Ez6XJihEpCHNy98yhkgai9wytQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-parsed-types@7.0.0': + resolution: {integrity: sha512-80VjPbB/TZ/Hy5qdRF7onPfMPHk5cwBVbtNUGbilrmFuqRzSvzSOY1ynNXXODPZBytNmPq7u7oJfSCsQ5MA9Ig==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec-types@6.10.0': + resolution: {integrity: sha512-NDZrKyZrJk4HaMFhTE/lAiMB824cWAodKqDHyKi0UteHU9pyRmil3BN1jt7e+j08mwMWwfklSgyrTaq52g6DIQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec-types@7.0.0': + resolution: {integrity: sha512-V4Hp2//fW8eYq1zcGgHPu7FXKHyIWERBQd4+NRaKn2m8rPiVAm3pVRwPzSvVE0+8Nyf5qzdcfcMf7NQdhl6j7Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec@6.10.0': + resolution: {integrity: sha512-yQdbWw5mZEWrwsunHR9NHkuhMXIB9sPOObwm18D53v5tAJnxTB0IcHvO647XqFDLTK/yQ4AdDtlYD1vsY07AMQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec@7.0.0': + resolution: {integrity: sha512-GRGlXpLgap9yVh3qmCl4huuKAoLMp/p82/9Q9ONj6lmFH+RqJE4Q+16V+HxHI5ZakmwZYoVZU4GEKjumse9SCg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-api@6.10.0': + resolution: {integrity: sha512-CRPQoTtT1cOwOQUsqS7jgo7wYdAj7jB5ab/UmMPWVpecf2FNMhWhgvxP2s82M7VkDGTGl13qaQ0WySmi7Egrlg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-api@7.0.0': + resolution: {integrity: sha512-o2PZDeNC/kg3VO3ry4R0JySJ1xMHLchZwmzVwamxGidlLe9uvzm6CHlCqv/JCq4/zHLo7qbLqnmOckZ6vlDqaw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-channel-websocket@6.10.0': + resolution: {integrity: sha512-KkqP1186HELPlJftA88SNAT2znR8knCVzsUipXVzY4zfW8sN3LOa0ePMzh9VZ/V+J+raTt55laR87ovAO0n+zw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-channel-websocket@7.0.0': + resolution: {integrity: sha512-79ecXBCT2pG+vXNBZim80vUz+B04L1mEduXobBIXM55VvxsHYT+4H4V+/ZHoFJUK6Lhbt+6zhpconx8Wa3H+JA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-spec@6.10.0': + resolution: {integrity: sha512-nWMwGaG4ulzeX2sskY5TywXF3cwEd8FDmUpLe2JBWxE8XDAOGOKcsYPYFcBgb8ee9KqfPT2PTNdcz9jOhJf34w==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-spec@7.0.0': + resolution: {integrity: sha512-Oips5ciWqPGO5Cx7hcEQ/czbcrUjPf+4cTam0UMrK3BnvHPcEAWkPYlIgabQiqa60/pjOOz7B936oMXA5XwL+g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions@6.10.0': + resolution: {integrity: sha512-6mfuHp/K7unFKCOTCCBC9ziEGnxe2tyJ74EbR51QUnBeCUdYD7Hhdpxic1WRSJ3UeNW/mG4OzFM6z8Wi64Eh9Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions@7.0.0': + resolution: {integrity: sha512-jLNjUCGBbCIfABqqHopNJIeAkhd4GzhbodgCH4x2X+S0ycBaERX393+k+fG8JPJpGujkmeQFBCeIKO3lK+PoYg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transformers@6.10.0': + resolution: {integrity: sha512-2nFUrVTiE720pJOY4XKx3HuYmishw0of/4oScu76YGm6O8wsmvFvPNAkrEinmieWXQkfpBfRvLZmpl8PaAy+ug==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transformers@7.0.0': + resolution: {integrity: sha512-NHkTKC2J4oaMMzyOtIEDOLCGtzg1Y8vlPoBmUeA82o+DNjBSiZLR2Ariy7n7chmwKchCZ8aGirBxjLCSRc6b/g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transport-http@6.10.0': + resolution: {integrity: sha512-JrdNuYi0nBbD3X8JUtgX1dQJwIwz/WJvmigDdELysXfGB2bTJpfjqGDLhCLOz2sRl66FASIEqgG/LVa2C9VXcA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transport-http@7.0.0': + resolution: {integrity: sha512-W0G15BN0xljXzRRo/ZwepJNiOjKhRImF5SxhjZauh2yVBoUjfd6NSCmYcdWu0tj9lypKKrB1ReS4oPmb4yCHbA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-types@6.10.0': + resolution: {integrity: sha512-zaSecTfCPvz/vcoAmKD6XoRstGHTr1EKJBD8T9UcpEFFB6CtF6DxerDB+wrzkamuT6msmnR2DWXMrYOGDAsgIg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-types@7.0.0': + resolution: {integrity: sha512-Lf2csFSWHwN/8EL03uWfS7n1J19vWLK4DBGkQ5jebRhoJ3dD+xPcJtS+epI2281t5aghJvoV7D+RIM0NextZJg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc@6.10.0': + resolution: {integrity: sha512-EwxsqoD+NXV+m+iobnWNtATD93gTgaNsOiQOzYB1/2e+8S6fl6obdNPB55yfXgtl4jt6GV6/ae4xuPhLv76vvg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc@7.0.0': + resolution: {integrity: sha512-hCf4XEhspsNb8TnQ+E961+rBuJcTyrmwNr4LDfVHEeO/VTqaN+yVwAI1wpxcnzwc+T4OoXcyujNiQWhVZPOhiA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/signers@6.10.0': + resolution: {integrity: sha512-+vtCc+mT1FpGxrA5oL2aaMxSHiMJ2hH5PcDIfjo2XJkHz2klZiCZyT5F9+zpltc9vdi1QTElQq59Sfplmtd33A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/signers@7.0.0': + resolution: {integrity: sha512-4E3xYQ0b9OZCTLghqfeHh66lfipy3jV1REdFJLk9WqPBaXVa/wSgGGIqZVa744ATSd9AeEfL/I5n/LrMNQOhoA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/subscribable@6.10.0': + resolution: {integrity: sha512-VsR6XMwkiDBkZJUcoGkEOhf397pOV75gKCL9Bx8bpi2T3Bbs0CxUpMn4yaUgAnRba3eXmjbXMNCXjttfa6sKbw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/subscribable@7.0.0': + resolution: {integrity: sha512-dJQA5AxDv/7YxuNe7GXIkaOUNhXczFaL3/SNOvXe7k77bC4dx4HPkySfcVDfEWBOePe3+8iyVbT8DZ3aOcp8Ng==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/sysvars@6.10.0': + resolution: {integrity: sha512-cG13p1+onxz+20iWjwWQr1Z1jQwPm0fnjoW75fqZq7p4rVCie3L2sXvaJsYPjWKrUvpOzOIEHnqZGkG05rCpjg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/sysvars@7.0.0': + resolution: {integrity: sha512-GKND6hCcBcrak3/VAtx6aEoAi9wQjJQzU2Fcu6JYmnTjGe5MHf21FqbjGl0aQ0C2HlJQQJmA07wgsuOiYDTDog==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-confirmation@6.10.0': + resolution: {integrity: sha512-ULvtg65qfenh4T/GYcIlKSUv5EqDcng9UN0dxbHU4kuZdR2e0B8HN2xDC4WhcFQVeFJSbTZmaYFkeTY/Y4gfGQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-confirmation@7.0.0': + resolution: {integrity: sha512-SaU2CY9ZDJGK47DtQ7xwKFmbgzDGqIN/Ug89ZSUzDPD9QdMRXhtxgH8KZgb0gSgpyel85sSt0QH9wkWzhp69ow==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-introspection@7.0.0': + resolution: {integrity: sha512-aO+5ewxGaziXYcXJZ6F3doq/KI1L3WU2z5eCjs4DBO0kRQBHp4bH6ZKygVX2JIxOZrd1rB9SxP/CCCX2wRm8Xw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-messages@6.10.0': + resolution: {integrity: sha512-s7v8G3BTxGlKYIj3eWCG0g1296v+1LBt16mVnlRH5FuyaJ5AdhlhtRho5HUDpdwE8EXun+y1c48V6uhcZ8wdbQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-messages@7.0.0': + resolution: {integrity: sha512-qCBYR3QQvykcI36vnqwI5090hGXS3mmCe72b/f/n9kBsBaA2oowdBXZupB1wwKe8+6x8o8VkhKQaK9oTKKbWTg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transactions@6.10.0': + resolution: {integrity: sha512-VADSqP9OTYmhrox4pcgDd4+RjVmednXSE0+8Y7SPK4PN1pK5Az2RJ0nSsy0xcTnaOr8mF/crwFktqPrRQwSbQA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transactions@7.0.0': + resolution: {integrity: sha512-y5nayd2Ozld/4Bxefz50e/E6qxyZteuZCZ7suh7z96KY6QUJlZDR+eCG1v/lA7Azt3GSOevJuYFX/ept/mqZkw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/mocha@10.0.10': + resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} + + '@types/node@26.1.2': + resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@2.1.4: + resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} + + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + + diff@7.0.0: + resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} + engines: {node: '>=0.3.1'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + js-yaml@4.3.1: + resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} + hasBin: true + + litesvm-darwin-arm64@1.3.0: + resolution: {integrity: sha512-fj6cV/ofjMXdl5CwjyyLTQnZObfVH5HYDScQ6O44iRqxASmgEyEh4sC8a7M0YZ1rcli9nu2cWl5ARGura89I7Q==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + litesvm-darwin-x64@1.3.0: + resolution: {integrity: sha512-ZYEddnc+tAn8sVYpzvww0oHFiekbCSv+0OZiA6eUDtcSx9uzeRDmPPQ9eI6vgyews2LefBDSENmUb70GHY6Cqg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + litesvm-linux-arm64-gnu@1.3.0: + resolution: {integrity: sha512-kmmKeef96pJI4AJGCvjzMCW6QHuzFrMF1i6dE6OcrtWHaz0Ag+TFaKOU35H1bjH/fDBwoJUV9UbaIbdWht81tA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + litesvm-linux-arm64-musl@1.3.0: + resolution: {integrity: sha512-FO9p6rx+/3h7R3CU7lkOebL+jy8UEDngSrENHu7pj9EOr78QVyE3Fm0O+WMnwXpMoCSgW0XLhu1cI9NHAbzCTA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + litesvm-linux-x64-gnu@1.3.0: + resolution: {integrity: sha512-yXC8ZAdIei9JQ2xw5/BocOTu/7EqZuFPyhgENQ1mYDhjNpoyUbIuGCWnqtria14mDda0aV9yVev8plGUrUpjUw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + litesvm-linux-x64-musl@1.3.0: + resolution: {integrity: sha512-oedromp1gTjShXmKmxZ1FYtnfM824vRcrPSPvGM0CrqJqKK61m1+tFwNRAVsDlpmWKvO/zsz90ctbgAUo/3TXg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + litesvm@1.3.0: + resolution: {integrity: sha512-tMu9sBIqSbF1gQluXEUtGmXPfZlMc10tOoBVeDokgK77nl/CcuC506sEoFKM5Rq58Dkb070lBMVBLc43TbMUzQ==} + engines: {node: '>= 20'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + mocha@11.8.0: + resolution: {integrity: sha512-VyCeUdGN3A9lmCTTgG4yuvY9ixxaDk+xt2R/7/+1AP6EqNG+G9OKkzBwhVtVYoNX8YsxNSgAl8mOv3IAeOpFbw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + tsx@4.23.5: + resolution: {integrity: sha512-rw55FUaqOoI7RvlQwLbhO4nSDApnQ4/CykPuiQ/EPvtrX3WA9Ig55jIt9VvbBJbzJuj12ueRu4PMZ2SxPVbihg==} + engines: {node: '>=18.0.0'} + hasBin: true + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@8.10.0: + resolution: {integrity: sha512-ibvdovq3nCFs8Msrd95BW+zUOq+aOVbT+wpHUoPWhztbHEoPc6oof51iFDB6Es8lTKvNvVW9jNSAB8dwrKTMGg==} + + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + workerpool@9.3.4: + resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + ws@8.21.1: + resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + + yargs@17.7.3: + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@solana-program/system@0.12.2(@solana/kit@6.10.0(typescript@5.9.3))': + dependencies: + '@solana/kit': 6.10.0(typescript@5.9.3) + + '@solana-program/token@0.14.0(@solana/kit@6.10.0(typescript@5.9.3))': + dependencies: + '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana/kit': 6.10.0(typescript@5.9.3) + + '@solana/accounts@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/accounts@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/addresses@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/addresses@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/assertions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/assertions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-core@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-core@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-data-structures@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-data-structures@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-numbers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-numbers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-strings@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-strings@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/fixed-points': 6.10.0(typescript@5.9.3) + '@solana/options': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/codecs@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/fixed-points': 7.0.0(typescript@5.9.3) + '@solana/options': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/errors@6.10.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 15.0.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/errors@7.0.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 15.0.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/fast-stable-stringify@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/fast-stable-stringify@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/fixed-points@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/fixed-points@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/functional@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/functional@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/instruction-plans@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/instruction-plans@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/instructions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/instructions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/keys@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/keys@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/kit@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/offchain-messages': 6.10.0(typescript@5.9.3) + '@solana/plugin-core': 6.10.0(typescript@5.9.3) + '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) + '@solana/program-client-core': 6.10.0(typescript@5.9.3) + '@solana/programs': 6.10.0(typescript@5.9.3) + '@solana/rpc': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + '@solana/sysvars': 6.10.0(typescript@5.9.3) + '@solana/transaction-confirmation': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/kit@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/offchain-messages': 7.0.0(typescript@5.9.3) + '@solana/plugin-core': 7.0.0(typescript@5.9.3) + '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) + '@solana/program-client-core': 7.0.0(typescript@5.9.3) + '@solana/programs': 7.0.0(typescript@5.9.3) + '@solana/rpc': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + '@solana/sysvars': 7.0.0(typescript@5.9.3) + '@solana/transaction-confirmation': 7.0.0(typescript@5.9.3) + '@solana/transaction-introspection': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/nominal-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/nominal-types@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/offchain-messages@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/offchain-messages@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/plugin-core@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/plugin-core@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/plugin-interfaces@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/plugin-interfaces@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/program-client-core@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/program-client-core@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/programs@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/programs@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/promises@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/promises@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-api@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-api@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-parsed-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-parsed-types@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec-types@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions-api@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-subscriptions-api@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-subscriptions-channel-websocket@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + ws: 8.21.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@solana/rpc-subscriptions-channel-websocket@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + ws: 8.21.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@solana/rpc-subscriptions-spec@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions-spec@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/rpc-subscriptions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/rpc-transformers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-transformers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-transport-http@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + undici-types: 8.10.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-transport-http@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + undici-types: 8.10.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-types@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fixed-points': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-types@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fixed-points': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-transport-http': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-transport-http': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/signers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/offchain-messages': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/signers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/offchain-messages': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/subscribable@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/subscribable@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/sysvars@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/sysvars@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-confirmation@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/transaction-confirmation@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/transaction-introspection@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-messages@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-messages@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transactions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transactions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/mocha@10.0.10': {} + + '@types/node@26.1.2': + dependencies: + undici-types: 8.3.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + argparse@2.0.1: {} + + assertion-error@2.0.1: {} + + balanced-match@1.0.2: {} + + brace-expansion@2.1.4: + dependencies: + balanced-match: 1.0.2 + + browser-stdout@1.3.1: {} + + camelcase@6.3.0: {} + + chai@6.2.2: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.6.2: {} + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@15.0.0: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + debug@4.4.3(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@4.0.0: {} + + diff@7.0.0: {} + + eastasianwidth@0.2.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat@5.0.2: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fsevents@2.3.3: + optional: true + + get-caller-file@2.0.5: {} + + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + has-flag@4.0.0: {} + + he@1.2.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@2.1.0: {} + + is-unicode-supported@0.1.0: {} + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + js-yaml@4.3.1: + dependencies: + argparse: 2.0.1 + + litesvm-darwin-arm64@1.3.0: + optional: true + + litesvm-darwin-x64@1.3.0: + optional: true + + litesvm-linux-arm64-gnu@1.3.0: + optional: true + + litesvm-linux-arm64-musl@1.3.0: + optional: true + + litesvm-linux-x64-gnu@1.3.0: + optional: true + + litesvm-linux-x64-musl@1.3.0: + optional: true + + litesvm@1.3.0(typescript@5.9.3): + dependencies: + '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana-program/token': 0.14.0(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana/kit': 6.10.0(typescript@5.9.3) + optionalDependencies: + litesvm-darwin-arm64: 1.3.0 + litesvm-darwin-x64: 1.3.0 + litesvm-linux-arm64-gnu: 1.3.0 + litesvm-linux-arm64-musl: 1.3.0 + litesvm-linux-x64-gnu: 1.3.0 + litesvm-linux-x64-musl: 1.3.0 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + lru-cache@10.4.3: {} + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.4 + + minipass@7.1.3: {} + + mocha@11.8.0: + dependencies: + browser-stdout: 1.3.1 + chokidar: 4.0.3 + debug: 4.4.3(supports-color@8.1.1) + diff: 7.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 10.5.0 + he: 1.2.0 + is-path-inside: 3.0.3 + js-yaml: 4.3.1 + log-symbols: 4.1.0 + minimatch: 9.0.9 + ms: 2.1.3 + picocolors: 1.1.1 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 9.3.4 + yargs: 17.7.3 + yargs-parser: 21.1.1 + yargs-unparser: 2.0.0 + + ms@2.1.3: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + package-json-from-dist@1.0.1: {} + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + + picocolors@1.1.1: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + readdirp@4.1.2: {} + + require-directory@2.1.1: {} + + safe-buffer@5.2.1: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@4.1.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + tsx@4.23.5: + dependencies: + esbuild: 0.28.1 + optionalDependencies: + fsevents: 2.3.3 + + typescript@5.9.3: {} + + undici-types@8.10.0: {} + + undici-types@8.3.0: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + workerpool@9.3.4: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + ws@8.21.1: {} + + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + + yargs@17.7.3: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} diff --git a/cryptography/bls12-381/pinocchio/program/Cargo.toml b/cryptography/bls12-381/pinocchio/program/Cargo.toml new file mode 100644 index 000000000..156549971 --- /dev/null +++ b/cryptography/bls12-381/pinocchio/program/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "bls12-381-pinocchio-program" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] + +[features] +no-entrypoint = [] + +[dependencies] +pinocchio.workspace = true +solana-address.workspace = true + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(target_os, values("solana"))'] } + +[dev-dependencies] +litesvm = "0.15" +solana-instruction = "3.4" +solana-keypair = "3.1" +solana-native-token = "3.0" +solana-signer = "3.0" +solana-transaction = "4.1" diff --git a/cryptography/bls12-381/pinocchio/program/src/lib.rs b/cryptography/bls12-381/pinocchio/program/src/lib.rs new file mode 100644 index 000000000..24ee21cd4 --- /dev/null +++ b/cryptography/bls12-381/pinocchio/program/src/lib.rs @@ -0,0 +1,121 @@ +#![no_std] + +use pinocchio::{error::ProgramError, nostd_panic_handler, AccountView, Address, ProgramResult}; + +pinocchio::address::declare_id!("BdDTbzTrA7xrfZ6zm3Xy8UHvJjzQSdFDsGZWqwFKFJeF"); + +#[cfg(not(feature = "no-entrypoint"))] +pinocchio::entrypoint!(process_instruction); + +nostd_panic_handler!(); + +pub const G1_POINT_SIZE: usize = 96; +pub const G2_POINT_SIZE: usize = 192; +pub const SCALAR_SIZE: usize = 32; + +const BLS12_381_G1: u64 = 5 | 0x80; +const BLS12_381_G2: u64 = 6 | 0x80; +const ADD: u64 = 0; +const SUB: u64 = 1; +const MUL: u64 = 2; + +#[derive(Clone, Copy, Debug, PartialEq)] +pub enum Bls12381Error { + InvalidInputLength, + SyscallFailed, + SyscallUnavailable, +} + +impl From for ProgramError { + fn from(e: Bls12381Error) -> Self { + ProgramError::Custom(e as u32) + } +} + +pub fn process_instruction( + _program_id: &Address, + _accounts: &mut [AccountView], + instruction_data: &[u8], +) -> ProgramResult { + let (discriminator, input) = instruction_data.split_first().ok_or(ProgramError::InvalidInstructionData)?; + + match discriminator { + 0 => point_op::(BLS12_381_G1, ADD, input), + 1 => point_op::(BLS12_381_G1, SUB, input), + 2 => scalar_mul::(BLS12_381_G1, input), + 3 => point_op::(BLS12_381_G2, ADD, input), + 4 => point_op::(BLS12_381_G2, SUB, input), + 5 => scalar_mul::(BLS12_381_G2, input), + _ => Err(ProgramError::InvalidInstructionData), + } +} + +/// Adds or subtracts two big-endian points of the given size via the +/// `sol_curve_group_op` syscall and returns the result as return data. +fn point_op(curve_id: u64, group_op: u64, input: &[u8]) -> ProgramResult { + let (left, right) = split_operands(input, POINT, POINT)?; + let mut result = [0u8; POINT]; + curve_group_op(curve_id, group_op, left, right, &mut result)?; + set_return_data(&result); + Ok(()) +} + +/// Multiplies a big-endian point by a 32-byte big-endian scalar. The syscall +/// takes the scalar as the left operand and the point as the right operand. +fn scalar_mul(curve_id: u64, input: &[u8]) -> ProgramResult { + let (scalar, point) = split_operands(input, SCALAR_SIZE, POINT)?; + let mut result = [0u8; POINT]; + curve_group_op(curve_id, MUL, scalar, point, &mut result)?; + set_return_data(&result); + Ok(()) +} + +fn split_operands(data: &[u8], left_len: usize, right_len: usize) -> Result<(&[u8], &[u8]), ProgramError> { + if data.len() != left_len + right_len { + return Err(Bls12381Error::InvalidInputLength.into()); + } + Ok(data.split_at(left_len)) +} + +#[inline(always)] +fn curve_group_op( + curve_id: u64, + group_op: u64, + left: &[u8], + right: &[u8], + output: &mut [u8], +) -> Result<(), ProgramError> { + #[cfg(target_os = "solana")] + { + let code = unsafe { + pinocchio::syscalls::sol_curve_group_op( + curve_id, + group_op, + left.as_ptr(), + right.as_ptr(), + output.as_mut_ptr(), + ) + }; + match code { + 0 => Ok(()), + _ => Err(Bls12381Error::SyscallFailed.into()), + } + } + #[cfg(not(target_os = "solana"))] + { + let _ = (curve_id, group_op, left, right, output); + Err(Bls12381Error::SyscallUnavailable.into()) + } +} + +#[inline(always)] +fn set_return_data(data: &[u8]) { + #[cfg(target_os = "solana")] + unsafe { + pinocchio::syscalls::sol_set_return_data(data.as_ptr(), data.len() as u64); + } + #[cfg(not(target_os = "solana"))] + { + let _ = data; + } +} diff --git a/cryptography/bls12-381/pinocchio/program/tests/test.rs b/cryptography/bls12-381/pinocchio/program/tests/test.rs new file mode 100644 index 000000000..7bc34db3b --- /dev/null +++ b/cryptography/bls12-381/pinocchio/program/tests/test.rs @@ -0,0 +1,98 @@ +use litesvm::LiteSVM; +use solana_address::Address; +use solana_instruction::Instruction; +use solana_keypair::Keypair; +use solana_native_token::LAMPORTS_PER_SOL; +use solana_signer::Signer; +use solana_transaction::Transaction; + +const IX_G1_ADD: u8 = 0; +const IX_G1_SUB: u8 = 1; +const IX_G1_MUL: u8 = 2; +const IX_G2_ADD: u8 = 3; +const IX_G2_SUB: u8 = 4; +const IX_G2_MUL: u8 = 5; + +// Big-endian BLS12-381 points: multiples of the G1 and G2 generators, so +// GEN + 2*GEN == 3*GEN and 3*GEN - 2*GEN == GEN. +const G1_GEN: &str = "17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb08b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1"; +const G1_TWO: &str = "0572cbea904d67468808c8eb50a9450c9721db309128012543902d0ac358a62ae28f75bb8f1c7c42c39a8c5529bf0f4e166a9d8cabc673a322fda673779d8e3822ba3ecb8670e461f73bb9021d5fd76a4c56d9d4cd16bd1bba86881979749d28"; +const G1_THREE: &str = "09ece308f9d1f0131765212deca99697b112d61f9be9a5f1f3780a51335b3ff981747a0b2ca2179b96d2c0c9024e5224032b80d3a6f5b09f8a84623389c5f80ca69a0cddabc3097f9d9c27310fd43be6e745256c634af45ca3473b0590ae30d1"; +const G2_GEN: &str = "13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb80606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be0ce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801"; +const G2_TWO: &str = "0a4edef9c1ed7f729f520e47730a124fd70662a904ba1074728114d1031e1572c6c886f6b57ec72a6178288c47c335771638533957d540a9d2370f17cc7ed5863bc0b995b8825e0ee1ea1e1e4d00dbae81f14b0bf3611b78c952aacab827a0530f6d4552fa65dd2638b361543f887136a43253d9c66c411697003f7a13c308f5422e1aa0a59c8967acdefd8b6e36ccf30468fb440d82b0630aeb8dca2b5256789a66da69bf91009cbfe6bd221e47aa8ae88dece9764bf3bd999d95d71e4c9899"; +const G2_THREE: &str = "09380275bbc8e5dcea7dc4dd7e0550ff2ac480905396eda55062650f8d251c96eb480673937cc6d9d6a44aaa56ca66dc122915c824a0857e2ee414a3dccb23ae691ae54329781315a0c75df1c04d6d7a50a030fc866f09d516020ef82324afae08f239ba329b3967fe48d718a36cfe5f62a7e42e0bf1c1ed714150a166bfbd6bcf6b3b58b975b9edea56d53f23a0e8490b21da7955969e61010c7a1abc1a6f0136961d1e3b20b1a7326ac738fef5c721479dfd948b52fdf2455e44813ecfd892"; + +fn from_hex(s: &str) -> Vec { + (0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16).unwrap()).collect() +} + +fn scalar_three() -> Vec { + let mut scalar = vec![0u8; 32]; + scalar[31] = 3; + scalar +} + +fn setup() -> (LiteSVM, Address, Keypair) { + let program_id = Address::new_unique(); + let program_bytes = include_bytes!("../../tests/fixtures/bls12_381_pinocchio_program.so"); + + let mut svm = LiteSVM::new(); + svm.add_program(program_id, program_bytes).unwrap(); + + let payer = Keypair::new(); + svm.airdrop(&payer.pubkey(), LAMPORTS_PER_SOL).unwrap(); + (svm, program_id, payer) +} + +fn run(discriminator: u8, left: &[u8], right: &[u8], expected: &[u8]) { + let (mut svm, program_id, payer) = setup(); + + let mut data = vec![discriminator]; + data.extend_from_slice(left); + data.extend_from_slice(right); + + let ix = Instruction::new_with_bytes(program_id, &data, vec![]); + let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], svm.latest_blockhash()); + let meta = svm.send_transaction(tx).unwrap(); + assert_eq!(meta.return_data.data, expected); +} + +#[test] +fn g1_add_generator_plus_double_is_triple() { + run(IX_G1_ADD, &from_hex(G1_GEN), &from_hex(G1_TWO), &from_hex(G1_THREE)); +} + +#[test] +fn g1_sub_triple_minus_double_is_generator() { + run(IX_G1_SUB, &from_hex(G1_THREE), &from_hex(G1_TWO), &from_hex(G1_GEN)); +} + +#[test] +fn g1_mul_generator_times_three_is_triple() { + run(IX_G1_MUL, &scalar_three(), &from_hex(G1_GEN), &from_hex(G1_THREE)); +} + +#[test] +fn g2_add_generator_plus_double_is_triple() { + run(IX_G2_ADD, &from_hex(G2_GEN), &from_hex(G2_TWO), &from_hex(G2_THREE)); +} + +#[test] +fn g2_sub_triple_minus_double_is_generator() { + run(IX_G2_SUB, &from_hex(G2_THREE), &from_hex(G2_TWO), &from_hex(G2_GEN)); +} + +#[test] +fn g2_mul_generator_times_three_is_triple() { + run(IX_G2_MUL, &scalar_three(), &from_hex(G2_GEN), &from_hex(G2_THREE)); +} + +#[test] +fn wrong_input_length_is_rejected() { + let (mut svm, program_id, payer) = setup(); + + let ix = Instruction::new_with_bytes(program_id, &[IX_G1_ADD, 0, 1, 2], vec![]); + let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], svm.latest_blockhash()); + let err = svm.send_transaction(tx).unwrap_err().err.to_string(); + assert!(err.contains("custom program error: 0x0"), "unexpected error: {err}"); +} diff --git a/cryptography/bls12-381/pinocchio/tests/bls12-381.test.ts b/cryptography/bls12-381/pinocchio/tests/bls12-381.test.ts new file mode 100644 index 000000000..427bf2457 --- /dev/null +++ b/cryptography/bls12-381/pinocchio/tests/bls12-381.test.ts @@ -0,0 +1,111 @@ +import { Buffer } from 'node:buffer'; +import { + type Address, + appendTransactionMessageInstruction, + createTransactionMessage, + generateKeyPairSigner, + type KeyPairSigner, + lamports, + pipe, + setTransactionMessageFeePayerSigner, + signTransactionMessageWithSigners, +} from '@solana/kit'; +import { assert } from 'chai'; +import { FailedTransactionMetadata, LiteSVM, TransactionMetadata } from 'litesvm'; + +// Big-endian BLS12-381 points: multiples of the G1 and G2 generators, so +// GEN + 2*GEN == 3*GEN and 3*GEN - 2*GEN == GEN. +const G1_GEN = + '17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb08b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1'; +const G1_TWO = + '0572cbea904d67468808c8eb50a9450c9721db309128012543902d0ac358a62ae28f75bb8f1c7c42c39a8c5529bf0f4e166a9d8cabc673a322fda673779d8e3822ba3ecb8670e461f73bb9021d5fd76a4c56d9d4cd16bd1bba86881979749d28'; +const G1_THREE = + '09ece308f9d1f0131765212deca99697b112d61f9be9a5f1f3780a51335b3ff981747a0b2ca2179b96d2c0c9024e5224032b80d3a6f5b09f8a84623389c5f80ca69a0cddabc3097f9d9c27310fd43be6e745256c634af45ca3473b0590ae30d1'; +const G2_GEN = + '13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb80606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be0ce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801'; +const G2_TWO = + '0a4edef9c1ed7f729f520e47730a124fd70662a904ba1074728114d1031e1572c6c886f6b57ec72a6178288c47c335771638533957d540a9d2370f17cc7ed5863bc0b995b8825e0ee1ea1e1e4d00dbae81f14b0bf3611b78c952aacab827a0530f6d4552fa65dd2638b361543f887136a43253d9c66c411697003f7a13c308f5422e1aa0a59c8967acdefd8b6e36ccf30468fb440d82b0630aeb8dca2b5256789a66da69bf91009cbfe6bd221e47aa8ae88dece9764bf3bd999d95d71e4c9899'; +const G2_THREE = + '09380275bbc8e5dcea7dc4dd7e0550ff2ac480905396eda55062650f8d251c96eb480673937cc6d9d6a44aaa56ca66dc122915c824a0857e2ee414a3dccb23ae691ae54329781315a0c75df1c04d6d7a50a030fc866f09d516020ef82324afae08f239ba329b3967fe48d718a36cfe5f62a7e42e0bf1c1ed714150a166bfbd6bcf6b3b58b975b9edea56d53f23a0e8490b21da7955969e61010c7a1abc1a6f0136961d1e3b20b1a7326ac738fef5c721479dfd948b52fdf2455e44813ecfd892'; + +const IX_G1_ADD = 0; +const IX_G1_SUB = 1; +const IX_G1_MUL = 2; +const IX_G2_ADD = 3; +const IX_G2_SUB = 4; +const IX_G2_MUL = 5; + +const hex = (s: string) => Uint8Array.from(Buffer.from(s, 'hex')); + +const scalarThree = () => { + const scalar = new Uint8Array(32); + scalar[31] = 3; + return scalar; +}; + +describe('bls12-381', () => { + const svm = new LiteSVM(); + let programId: Address; + let payer: KeyPairSigner; + + before(async () => { + programId = (await generateKeyPairSigner()).address; + svm.addProgramFromFile(programId, 'tests/fixtures/bls12_381_pinocchio_program.so'); + + payer = await generateKeyPairSigner(); + svm.airdrop(payer.address, lamports(1_000_000_000n)); + }); + + async function send(discriminator: number, left: Uint8Array, right: Uint8Array) { + const data = new Uint8Array([discriminator, ...left, ...right]); + + const transactionMessage = pipe( + createTransactionMessage({ version: 0 }), + m => setTransactionMessageFeePayerSigner(payer, m), + m => svm.setTransactionMessageLifetimeUsingLatestBlockhash(m), + m => appendTransactionMessageInstruction({ programAddress: programId, accounts: [], data }, m), + ); + const signedTx = await signTransactionMessageWithSigners(transactionMessage); + + const result = svm.sendTransaction(signedTx); + svm.expireBlockhash(); + return result; + } + + async function expectReturnData(discriminator: number, left: Uint8Array, right: Uint8Array, expected: Uint8Array) { + const result = await send(discriminator, left, right); + assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); + assert.deepEqual(result.returnData().data(), expected); + } + + it('G1 add: G + 2G == 3G', async () => { + await expectReturnData(IX_G1_ADD, hex(G1_GEN), hex(G1_TWO), hex(G1_THREE)); + }); + + it('G1 sub: 3G - 2G == G', async () => { + await expectReturnData(IX_G1_SUB, hex(G1_THREE), hex(G1_TWO), hex(G1_GEN)); + }); + + it('G1 mul: G * 3 == 3G', async () => { + await expectReturnData(IX_G1_MUL, scalarThree(), hex(G1_GEN), hex(G1_THREE)); + }); + + it('G2 add: G + 2G == 3G', async () => { + await expectReturnData(IX_G2_ADD, hex(G2_GEN), hex(G2_TWO), hex(G2_THREE)); + }); + + it('G2 sub: 3G - 2G == G', async () => { + await expectReturnData(IX_G2_SUB, hex(G2_THREE), hex(G2_TWO), hex(G2_GEN)); + }); + + it('G2 mul: G * 3 == 3G', async () => { + await expectReturnData(IX_G2_MUL, scalarThree(), hex(G2_GEN), hex(G2_THREE)); + }); + + it('rejects input that is not two whole operands', async () => { + const result = await send(IX_G1_ADD, new Uint8Array(3), new Uint8Array(0)); + + assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); + assert.include(String(result.err()), 'InstructionErrorCustom { code: 0 }'); + }); +}); diff --git a/cryptography/bls12-381/pinocchio/tsconfig.json b/cryptography/bls12-381/pinocchio/tsconfig.json new file mode 100644 index 000000000..c02443141 --- /dev/null +++ b/cryptography/bls12-381/pinocchio/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "types": ["mocha", "chai", "node"], + "typeRoots": ["./node_modules/@types"], + "lib": ["esnext"], + "module": "esnext", + "target": "esnext", + "moduleResolution": "bundler", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowImportingTsExtensions": true, + "noEmit": true, + "skipLibCheck": true + } +} diff --git a/cryptography/encrypted-ballot/pinocchio/README.md b/cryptography/encrypted-ballot/pinocchio/README.md new file mode 100644 index 000000000..f1d648a14 --- /dev/null +++ b/cryptography/encrypted-ballot/pinocchio/README.md @@ -0,0 +1,17 @@ +# Encrypted ballot (Pinocchio) + +Keeps a running twisted ElGamal tally in an account without ever decrypting individual ballots. Each ballot is a 64-byte ciphertext (32-byte Pedersen commitment ‖ 32-byte decrypt handle); the program folds it into the tally with two ristretto255 additions via the `sol_curve_group_op` syscall. The account stores `[count: u16-le][tally: 64]`. + +| Discriminator | Instruction | Input | +| ------------- | ----------- | ----------------------------- | +| 0 | Tally add | one 64-byte ballot ciphertext | + +Only the holder of the ElGamal secret key can decrypt the final tally; the chain sees nothing but ciphertexts. + +## Test + +```sh +pnpm install +pnpm build-and-test # TypeScript tests (mocha + LiteSVM) +cargo test --manifest-path=./program/Cargo.toml # Rust tests (litesvm), after build-and-test +``` diff --git a/cryptography/encrypted-ballot/pinocchio/package.json b/cryptography/encrypted-ballot/pinocchio/package.json new file mode 100644 index 000000000..2e7325b8e --- /dev/null +++ b/cryptography/encrypted-ballot/pinocchio/package.json @@ -0,0 +1,24 @@ +{ + "name": "encrypted-ballot-pinocchio", + "version": "0.1.0", + "type": "module", + "scripts": { + "test": "mocha --import=tsx -t 1000000 ./tests/encrypted-ballot.test.ts", + "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", + "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", + "deploy": "solana program deploy ./program/target/so/encrypted_ballot_pinocchio_program.so" + }, + "dependencies": { + "@solana/kit": "^7.0.0" + }, + "devDependencies": { + "@types/chai": "^5.2.3", + "@types/mocha": "^10.0.10", + "@types/node": "^26.1.0", + "chai": "^6.2.2", + "litesvm": "^1.3.0", + "mocha": "^11.7.5", + "tsx": "^4.19.2", + "typescript": "^5.9.3" + } +} diff --git a/cryptography/encrypted-ballot/pinocchio/pnpm-lock.yaml b/cryptography/encrypted-ballot/pinocchio/pnpm-lock.yaml new file mode 100644 index 000000000..6e11abae2 --- /dev/null +++ b/cryptography/encrypted-ballot/pinocchio/pnpm-lock.yaml @@ -0,0 +1,2825 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@solana/kit': + specifier: ^7.0.0 + version: 7.0.0(typescript@5.9.3) + devDependencies: + '@types/chai': + specifier: ^5.2.3 + version: 5.2.3 + '@types/mocha': + specifier: ^10.0.10 + version: 10.0.10 + '@types/node': + specifier: ^26.1.0 + version: 26.1.2 + chai: + specifier: ^6.2.2 + version: 6.2.2 + litesvm: + specifier: ^1.3.0 + version: 1.3.0(typescript@5.9.3) + mocha: + specifier: ^11.7.5 + version: 11.8.0 + tsx: + specifier: ^4.19.2 + version: 4.23.5 + typescript: + specifier: ^5.9.3 + version: 5.9.3 + +packages: + + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@solana-program/system@0.12.2': + resolution: {integrity: sha512-MaBeOxlvTruQhA7UYkOb3hVTEHPPagOtd+PvTm6a8rGgvEAP0kD4BbC37NceOaR4ABNqdaCmD5OMVRKgrE6KAg==} + peerDependencies: + '@solana/kit': ^6.4.0 + + '@solana-program/token@0.14.0': + resolution: {integrity: sha512-zpLMr6JZndlsQCQvrm0gezfwdr1lmzOGqN6v2WIYXjtDmbF+xg6zh/MAp2UFHRpv3uDmylEdjtQo05pa2OeaYg==} + engines: {node: '>=24.0.0'} + peerDependencies: + '@solana/kit': ^6.5.0 + + '@solana/accounts@6.10.0': + resolution: {integrity: sha512-+FxfDOrnifoPlBkF+fr8eeQdgM6xtIgAg9xKMu3WnIz60oZd4Xnry6+ff6t+ePPoZZp397FSg9ZJet68VCWm5Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/accounts@7.0.0': + resolution: {integrity: sha512-RfbinkhuWxcObxZIdjeWEn/mzLqRp/h2hAk/ZQCUxPdDBW8h4XxEybK9GBItGOAcrUz5HuusXTD+cXXnlIxWcg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/addresses@6.10.0': + resolution: {integrity: sha512-vEoCGBTxG0HCERAn84KXkrJjl+pDaNzOpZ0qbgcPS98fYxP5yzbKB8SNOY2bzrbkRUmmw5Q3hqTRERemUN2Gcw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/addresses@7.0.0': + resolution: {integrity: sha512-E7sJtV5d3bXrmw3I30rcKY+xoqM++6KIVJCi+q8ZaSMyP04UMfEENPHIJ+TkyS1RUgjzPT91ka/oWrtTh6EfkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/assertions@6.10.0': + resolution: {integrity: sha512-lKSAdVo+P/6Lp4vs6shstXmFOpvxrABwn4o1462tb7sKkNapk6o9pPFVPGw4DUgPS3WqWRs1j2tmpuVjhQRntg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/assertions@7.0.0': + resolution: {integrity: sha512-CShOQLPezI0tbrih+L88fzt8FMHDyJoWkmulk4wfRp3HhpQL2yNlH/SWLH033qysnvkmE7TxBFUtcnbnf7jz1g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-core@6.10.0': + resolution: {integrity: sha512-nfAl9OMGo4HanIMxGsQoVB7BxMoqBCYEUxl8oEAZZ09pDxnaXQZkTRXEwPPccag37XfW1ciPd1vWPKwB2b0HHQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-core@7.0.0': + resolution: {integrity: sha512-6HtEisZEtFb6okARUgYqmKdDbn2aHRrSCDgB1/GEwr0s6fK5XNYpafaSjorbs2MEyZV3tCUFTj2j6fk/4nNcLg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-data-structures@6.10.0': + resolution: {integrity: sha512-CNasJW3bq5u+632Zt5aJ8rOjAjv2HyenpV8o9kAIqdmV4CBpjCCoBnKn8LkuR/sbeREZxJYfhKTXO/9ruAkw7A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-data-structures@7.0.0': + resolution: {integrity: sha512-P0Ys1mB4lYlz3MMTCaJSysE3OYrq8WvsveU1ta8U/yG1qChXFGCOxPVh06swjaRxwPrEakb9VUESS5vNtp1rRA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-numbers@6.10.0': + resolution: {integrity: sha512-CcM+wX4zOiA9zkh8A7t1787A0Ehgmu5+6Z2tKoHew6cNw/dkaUTPa8JnNHbvfsLC8dfHC1BhAEJl86sKmRsfkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-numbers@7.0.0': + resolution: {integrity: sha512-XL0jnmnXr3ceoX4tusT+XkBVR2iGKEJecTIXbIV7ILi9xObg3fNXafNbTmbIOvKc0ByTyjo8EWZ9jQKSRWgsgA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-strings@6.10.0': + resolution: {integrity: sha512-zlaqkg7K6F6IN4V/Ec8TWkTn054gxv7ZLagvGkuEyAdPQ6BzzsehOm2TqCuyXgJJTCGPLY1bEk6yH9NxANe0kA==} + engines: {node: '>=20.18.0'} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5.4.0' + peerDependenciesMeta: + fastestsmallesttextencoderdecoder: + optional: true + typescript: + optional: true + + '@solana/codecs-strings@7.0.0': + resolution: {integrity: sha512-zXE1PE9HkVk6phZ6aqHTXvLZ0qIl5bJNIvG9eMB7LuFO1XBVQywJUtjKS8fE3/xmRCWSMilFSrEXGA+SpOyLrQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5.4.0' + peerDependenciesMeta: + fastestsmallesttextencoderdecoder: + optional: true + typescript: + optional: true + + '@solana/codecs@6.10.0': + resolution: {integrity: sha512-lLVuxod4ChWp9i7OvpgIykYG8Q9OGPVXKnHM9VlzDDLylsx7Y1FoQL00sHa7PqFkJVmkBufaA6dcGbQ7FU+lAQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs@7.0.0': + resolution: {integrity: sha512-xT1IbwKkPZ544u/eqhb9SZ0fNYJidWgIUzKNQMbvLCwduayAkQp+czlGdvLQ6CVlqtCewtH3gW8biGU7YuBdEw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/errors@6.10.0': + resolution: {integrity: sha512-KBLAxCtAXr357JNhCyIDQXWbuSj5vN6w+28FSfcYY6OOSiphmXLAV3V58jgV0C6iNbIzFJFi6yatFyDTdeJsNg==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/errors@7.0.0': + resolution: {integrity: sha512-94r+LLSzZ0XVp+LOogwxWGXeo138uvwqtqRW9Tjl1DIXrFgh8euXnJSXZyydu1UXJs7ItOSm0QreJviSGw3TGQ==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fast-stable-stringify@6.10.0': + resolution: {integrity: sha512-iCNed27wk6PKSS3QUtHovRfMWF/jbVWogs2vB4tukKUCsqG4rDfDInIwZ6ur/nY6XTrgi2gMMdZq9GAUlWsbfw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fast-stable-stringify@7.0.0': + resolution: {integrity: sha512-i/b5ZJMqMJXa6etjypANa2/ErPZfNG9/EVIYl7HpWooyCRgZ8hZJmJ2Cgrp0r4EMXCLeWn4aEG2HOBTzOJ4F7Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fixed-points@6.10.0': + resolution: {integrity: sha512-ZkKL0alXH3L7/wMiVG8YUuG8qBKunlM810+YBD7nUPRhifiGsX1zwADViHLYNqLr/jUk0mTYFUcKznTpB/K+Gg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fixed-points@7.0.0': + resolution: {integrity: sha512-Y3gcyHTponi5kXpWVEJIhuZ7yT84N+8He4dbjXWqwMBJnzKM+4tqFCbzy6y+6+Jxt44RT1lDmbpxmZopFRXU8Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/functional@6.10.0': + resolution: {integrity: sha512-P8cevu4mAqHTXC37h1TVoOh8zhWB2tlOI/R9vWjYPpcLwcyWf8p2qq4LEGHl5kY+1C+4PNX39HsmCocXOPCDkQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/functional@7.0.0': + resolution: {integrity: sha512-ix9fzYhc2hCLiYf+hGI00mzzayANKDExEBxbwrtMj/BdQkwgUIvIlOssqHeSqDChL3UZhq9lR24Nz4JwYX8Jbw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instruction-plans@6.10.0': + resolution: {integrity: sha512-YG7mo4zykzdc6ZTV0BuN6pveK9qeBySzlYYerq578A4eQu3xcypMAYRGAvhMZtWTanjjmD6CKtM0M7kVp0TNxg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instruction-plans@7.0.0': + resolution: {integrity: sha512-uzXHztc8hLoT5TNWFsBX2DIETyp/Lr2l36O330s3YCgpRmfI4IRbBrjjq7TxDYFm/QY8+DD4CRG8p7wZSqG8dQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instructions@6.10.0': + resolution: {integrity: sha512-0TToYF+8LXQ3ofPMx+yF6yaM9l4YJvcAPMy0qV5JsrBUFlWXBSANRuudKBQLHMvb+a3OiUTq5X7omuorKMBB3A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instructions@7.0.0': + resolution: {integrity: sha512-ZN0gKAtCOKDuIaStcvLZDf5H20fkk7jr4dZE0Rk7z0kslf6mrRam9Y23N6AzeHp/b5ZeVKyfaTf4M35mOktLNg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/keys@6.10.0': + resolution: {integrity: sha512-26IRfdm/hTUCmM7MeEeX0ULSbCM6OzkZTkfkrPircqmRM7xyNqP4hq7u0P7wjb9dl7NfgyG6K7cdvUxrj2e3mA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/keys@7.0.0': + resolution: {integrity: sha512-JsdYR/YN3AGHZN2aZoeE5cymHYkNoBLnqgXoRncW/VyD7fMcR350aHU1hCMYd0b5BtITLsGmvvtvrgVkzK83Eg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/kit@6.10.0': + resolution: {integrity: sha512-/WnnQp3uARh2JCFSfAakejTAqwmXVuMVTcRn5r2yDwY2yzZ4R6mt/Cl59VPimVLNSoTyN/KsEwhv9omr3ERazQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/kit@7.0.0': + resolution: {integrity: sha512-ZCeai4LRJQooUmJXvpgMEGFTrCdJnV1ODbDJ8oqFZ+Y4t/9x1baQsFFpruqsdRyeGv2Rr+X6jV7cldVD+hyzRA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/nominal-types@6.10.0': + resolution: {integrity: sha512-9ykyBBvnkInH7fCacjJi7zu2PJyd+OCt+VTjIISv070fHzKIMFqZqJJ/dJ0SRH2aHwfB3n86iVsmtBtuxi4KKA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/nominal-types@7.0.0': + resolution: {integrity: sha512-ff21hmKKMckDkGWah9tRXsEyFCtSnkugH+EMLGJOn7tiXdtFljOXW5Q12IXyeil87EE8aWb1MS6p8v5+hi71Vg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/offchain-messages@6.10.0': + resolution: {integrity: sha512-RiEgAueeMkFMC1suOXBIcmCZgtXRxy24yk0DldPB37bB4zwOF1SAaRjNRPjIkGK8RhCYrEpPosnzLyavw9ueRg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/offchain-messages@7.0.0': + resolution: {integrity: sha512-fGrzxmqVStweGHRlXVAPKACdDboFCwXq5m8C+aD9Nupax6Q9rnvjICzYRLypwqB9X90XIZazh0ys+0KGLMpIJQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/options@6.10.0': + resolution: {integrity: sha512-RO9UT3UYD8/Cu2uM6ZXbKvLeMnVD42+g9JRds7Pfs4AhiOyg4R4TJrQUAppTgavPTO3PBRlWtWOC05ZH/yAIbg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/options@7.0.0': + resolution: {integrity: sha512-6DhvMqRcL3mG0R5JejYIW5PDTDr7HcLX2R9iCs6OPN1HdsyXmE2rX2EldnuA0rYz1buOodeWYsu4N1lpDcEpaQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-core@6.10.0': + resolution: {integrity: sha512-JE70YTQOfFACVFGvoJon4Scc/eHUWjMu8Ovo35CcV2kHTAHYMCd4UkBd2gmlhK0vRMMomsQi1ZLPlAlTq0OoUQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-core@7.0.0': + resolution: {integrity: sha512-EwTUfOGoQQ3aXooRlQFVbk+sJW7NqJl1K+bmSLiJUjaBTSqtbr3GtMu7aoybJqzZQKjOGSG4Hn0BzK24SvWy3A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-interfaces@6.10.0': + resolution: {integrity: sha512-vr0/l9wcM4orwGr8cjkFWaJ9A4HvzuAv00jMFNMg0Spd0GZqnwnpW+D/fXa1lIJnTRaF3EeEjLh4VjKU037T0Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-interfaces@7.0.0': + resolution: {integrity: sha512-fz/HknZLGnVIjhjXrMzW3Qm1x80oeEMSOk4RzMwjcyAEyfzhHtGNW74NsU5W+uFpYz6UBbV5mB1jpuAdJdnj9A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/program-client-core@6.10.0': + resolution: {integrity: sha512-4PPbTLdC1ylHIuvhOFDP8RnSkXPCFjNFWGslzc+UFKnoR4ajzBcByX94jmaruDMk5ncxgj7tr9pzJTvfGHIaMA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/program-client-core@7.0.0': + resolution: {integrity: sha512-+N8HImlR3MTbbvhOShsLelQXGZKbi6KhPhyy+4ZkDLbnRs4QikTamIChXZmoCyxB51S8/9cNRAKyQhbeF5Y8Qg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/programs@6.10.0': + resolution: {integrity: sha512-qn/HeLP5KGUJXVub3fyGe69/rWaLX4jzwm6V/1pNxJDbdF+MBdgn18hP6F+VmhfdNmwK0lue3J/1HQ1UTMuQeQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/programs@7.0.0': + resolution: {integrity: sha512-a1HNgzr9YiiZ8vK4VaKHEXjnZmKX7W5ab2ghuseIalEw/+PJLFcTRTOw8n3efRu677b/bG2Icmb3MBBEXmvbPg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/promises@6.10.0': + resolution: {integrity: sha512-oJSIn+VBBMWDo8oqw7RV3tI6Jih+Ieup6FcQLYLDUriaeo7+8l1Zdezl8zh7SIfeU4lOfAbRg6mR0huaS/Lltg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/promises@7.0.0': + resolution: {integrity: sha512-rjoHnaR4zeEIHqIzfgotxRrLKqY4Goj0G5duZOnjHm8ZC+7eDkH5/mXj1bDJ4ROM70dVM+y1Xkrjg7IL6k6StA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-api@6.10.0': + resolution: {integrity: sha512-RjPIVsAb/85P1ptoO3WpC0x7QG6gG/e4q/3lo6gbSznUZOcoM+8sSBnCX7BwP1ZkCDS6NK/ClXLnhhhYZx+OGg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-api@7.0.0': + resolution: {integrity: sha512-MTtBO883st83CjWpo8B4g8EKzXaeoBX5N7+sv4vcvsn2q1NpY4SG3XejdX1FrKeTe9Xjbv0/FzFtykstbKe1UA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-parsed-types@6.10.0': + resolution: {integrity: sha512-5275mvSV1mxhwvrMVa+K7BU/nAetpHfcb+8Ql9rtA8RRf6DyiimFQFZUukE4Ez6XJihEpCHNy98yhkgai9wytQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-parsed-types@7.0.0': + resolution: {integrity: sha512-80VjPbB/TZ/Hy5qdRF7onPfMPHk5cwBVbtNUGbilrmFuqRzSvzSOY1ynNXXODPZBytNmPq7u7oJfSCsQ5MA9Ig==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec-types@6.10.0': + resolution: {integrity: sha512-NDZrKyZrJk4HaMFhTE/lAiMB824cWAodKqDHyKi0UteHU9pyRmil3BN1jt7e+j08mwMWwfklSgyrTaq52g6DIQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec-types@7.0.0': + resolution: {integrity: sha512-V4Hp2//fW8eYq1zcGgHPu7FXKHyIWERBQd4+NRaKn2m8rPiVAm3pVRwPzSvVE0+8Nyf5qzdcfcMf7NQdhl6j7Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec@6.10.0': + resolution: {integrity: sha512-yQdbWw5mZEWrwsunHR9NHkuhMXIB9sPOObwm18D53v5tAJnxTB0IcHvO647XqFDLTK/yQ4AdDtlYD1vsY07AMQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec@7.0.0': + resolution: {integrity: sha512-GRGlXpLgap9yVh3qmCl4huuKAoLMp/p82/9Q9ONj6lmFH+RqJE4Q+16V+HxHI5ZakmwZYoVZU4GEKjumse9SCg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-api@6.10.0': + resolution: {integrity: sha512-CRPQoTtT1cOwOQUsqS7jgo7wYdAj7jB5ab/UmMPWVpecf2FNMhWhgvxP2s82M7VkDGTGl13qaQ0WySmi7Egrlg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-api@7.0.0': + resolution: {integrity: sha512-o2PZDeNC/kg3VO3ry4R0JySJ1xMHLchZwmzVwamxGidlLe9uvzm6CHlCqv/JCq4/zHLo7qbLqnmOckZ6vlDqaw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-channel-websocket@6.10.0': + resolution: {integrity: sha512-KkqP1186HELPlJftA88SNAT2znR8knCVzsUipXVzY4zfW8sN3LOa0ePMzh9VZ/V+J+raTt55laR87ovAO0n+zw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-channel-websocket@7.0.0': + resolution: {integrity: sha512-79ecXBCT2pG+vXNBZim80vUz+B04L1mEduXobBIXM55VvxsHYT+4H4V+/ZHoFJUK6Lhbt+6zhpconx8Wa3H+JA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-spec@6.10.0': + resolution: {integrity: sha512-nWMwGaG4ulzeX2sskY5TywXF3cwEd8FDmUpLe2JBWxE8XDAOGOKcsYPYFcBgb8ee9KqfPT2PTNdcz9jOhJf34w==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-spec@7.0.0': + resolution: {integrity: sha512-Oips5ciWqPGO5Cx7hcEQ/czbcrUjPf+4cTam0UMrK3BnvHPcEAWkPYlIgabQiqa60/pjOOz7B936oMXA5XwL+g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions@6.10.0': + resolution: {integrity: sha512-6mfuHp/K7unFKCOTCCBC9ziEGnxe2tyJ74EbR51QUnBeCUdYD7Hhdpxic1WRSJ3UeNW/mG4OzFM6z8Wi64Eh9Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions@7.0.0': + resolution: {integrity: sha512-jLNjUCGBbCIfABqqHopNJIeAkhd4GzhbodgCH4x2X+S0ycBaERX393+k+fG8JPJpGujkmeQFBCeIKO3lK+PoYg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transformers@6.10.0': + resolution: {integrity: sha512-2nFUrVTiE720pJOY4XKx3HuYmishw0of/4oScu76YGm6O8wsmvFvPNAkrEinmieWXQkfpBfRvLZmpl8PaAy+ug==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transformers@7.0.0': + resolution: {integrity: sha512-NHkTKC2J4oaMMzyOtIEDOLCGtzg1Y8vlPoBmUeA82o+DNjBSiZLR2Ariy7n7chmwKchCZ8aGirBxjLCSRc6b/g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transport-http@6.10.0': + resolution: {integrity: sha512-JrdNuYi0nBbD3X8JUtgX1dQJwIwz/WJvmigDdELysXfGB2bTJpfjqGDLhCLOz2sRl66FASIEqgG/LVa2C9VXcA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transport-http@7.0.0': + resolution: {integrity: sha512-W0G15BN0xljXzRRo/ZwepJNiOjKhRImF5SxhjZauh2yVBoUjfd6NSCmYcdWu0tj9lypKKrB1ReS4oPmb4yCHbA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-types@6.10.0': + resolution: {integrity: sha512-zaSecTfCPvz/vcoAmKD6XoRstGHTr1EKJBD8T9UcpEFFB6CtF6DxerDB+wrzkamuT6msmnR2DWXMrYOGDAsgIg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-types@7.0.0': + resolution: {integrity: sha512-Lf2csFSWHwN/8EL03uWfS7n1J19vWLK4DBGkQ5jebRhoJ3dD+xPcJtS+epI2281t5aghJvoV7D+RIM0NextZJg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc@6.10.0': + resolution: {integrity: sha512-EwxsqoD+NXV+m+iobnWNtATD93gTgaNsOiQOzYB1/2e+8S6fl6obdNPB55yfXgtl4jt6GV6/ae4xuPhLv76vvg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc@7.0.0': + resolution: {integrity: sha512-hCf4XEhspsNb8TnQ+E961+rBuJcTyrmwNr4LDfVHEeO/VTqaN+yVwAI1wpxcnzwc+T4OoXcyujNiQWhVZPOhiA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/signers@6.10.0': + resolution: {integrity: sha512-+vtCc+mT1FpGxrA5oL2aaMxSHiMJ2hH5PcDIfjo2XJkHz2klZiCZyT5F9+zpltc9vdi1QTElQq59Sfplmtd33A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/signers@7.0.0': + resolution: {integrity: sha512-4E3xYQ0b9OZCTLghqfeHh66lfipy3jV1REdFJLk9WqPBaXVa/wSgGGIqZVa744ATSd9AeEfL/I5n/LrMNQOhoA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/subscribable@6.10.0': + resolution: {integrity: sha512-VsR6XMwkiDBkZJUcoGkEOhf397pOV75gKCL9Bx8bpi2T3Bbs0CxUpMn4yaUgAnRba3eXmjbXMNCXjttfa6sKbw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/subscribable@7.0.0': + resolution: {integrity: sha512-dJQA5AxDv/7YxuNe7GXIkaOUNhXczFaL3/SNOvXe7k77bC4dx4HPkySfcVDfEWBOePe3+8iyVbT8DZ3aOcp8Ng==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/sysvars@6.10.0': + resolution: {integrity: sha512-cG13p1+onxz+20iWjwWQr1Z1jQwPm0fnjoW75fqZq7p4rVCie3L2sXvaJsYPjWKrUvpOzOIEHnqZGkG05rCpjg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/sysvars@7.0.0': + resolution: {integrity: sha512-GKND6hCcBcrak3/VAtx6aEoAi9wQjJQzU2Fcu6JYmnTjGe5MHf21FqbjGl0aQ0C2HlJQQJmA07wgsuOiYDTDog==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-confirmation@6.10.0': + resolution: {integrity: sha512-ULvtg65qfenh4T/GYcIlKSUv5EqDcng9UN0dxbHU4kuZdR2e0B8HN2xDC4WhcFQVeFJSbTZmaYFkeTY/Y4gfGQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-confirmation@7.0.0': + resolution: {integrity: sha512-SaU2CY9ZDJGK47DtQ7xwKFmbgzDGqIN/Ug89ZSUzDPD9QdMRXhtxgH8KZgb0gSgpyel85sSt0QH9wkWzhp69ow==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-introspection@7.0.0': + resolution: {integrity: sha512-aO+5ewxGaziXYcXJZ6F3doq/KI1L3WU2z5eCjs4DBO0kRQBHp4bH6ZKygVX2JIxOZrd1rB9SxP/CCCX2wRm8Xw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-messages@6.10.0': + resolution: {integrity: sha512-s7v8G3BTxGlKYIj3eWCG0g1296v+1LBt16mVnlRH5FuyaJ5AdhlhtRho5HUDpdwE8EXun+y1c48V6uhcZ8wdbQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-messages@7.0.0': + resolution: {integrity: sha512-qCBYR3QQvykcI36vnqwI5090hGXS3mmCe72b/f/n9kBsBaA2oowdBXZupB1wwKe8+6x8o8VkhKQaK9oTKKbWTg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transactions@6.10.0': + resolution: {integrity: sha512-VADSqP9OTYmhrox4pcgDd4+RjVmednXSE0+8Y7SPK4PN1pK5Az2RJ0nSsy0xcTnaOr8mF/crwFktqPrRQwSbQA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transactions@7.0.0': + resolution: {integrity: sha512-y5nayd2Ozld/4Bxefz50e/E6qxyZteuZCZ7suh7z96KY6QUJlZDR+eCG1v/lA7Azt3GSOevJuYFX/ept/mqZkw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/mocha@10.0.10': + resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} + + '@types/node@26.1.2': + resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@2.1.4: + resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} + + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + + diff@7.0.0: + resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} + engines: {node: '>=0.3.1'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + js-yaml@4.3.1: + resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} + hasBin: true + + litesvm-darwin-arm64@1.3.0: + resolution: {integrity: sha512-fj6cV/ofjMXdl5CwjyyLTQnZObfVH5HYDScQ6O44iRqxASmgEyEh4sC8a7M0YZ1rcli9nu2cWl5ARGura89I7Q==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + litesvm-darwin-x64@1.3.0: + resolution: {integrity: sha512-ZYEddnc+tAn8sVYpzvww0oHFiekbCSv+0OZiA6eUDtcSx9uzeRDmPPQ9eI6vgyews2LefBDSENmUb70GHY6Cqg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + litesvm-linux-arm64-gnu@1.3.0: + resolution: {integrity: sha512-kmmKeef96pJI4AJGCvjzMCW6QHuzFrMF1i6dE6OcrtWHaz0Ag+TFaKOU35H1bjH/fDBwoJUV9UbaIbdWht81tA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + litesvm-linux-arm64-musl@1.3.0: + resolution: {integrity: sha512-FO9p6rx+/3h7R3CU7lkOebL+jy8UEDngSrENHu7pj9EOr78QVyE3Fm0O+WMnwXpMoCSgW0XLhu1cI9NHAbzCTA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + litesvm-linux-x64-gnu@1.3.0: + resolution: {integrity: sha512-yXC8ZAdIei9JQ2xw5/BocOTu/7EqZuFPyhgENQ1mYDhjNpoyUbIuGCWnqtria14mDda0aV9yVev8plGUrUpjUw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + litesvm-linux-x64-musl@1.3.0: + resolution: {integrity: sha512-oedromp1gTjShXmKmxZ1FYtnfM824vRcrPSPvGM0CrqJqKK61m1+tFwNRAVsDlpmWKvO/zsz90ctbgAUo/3TXg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + litesvm@1.3.0: + resolution: {integrity: sha512-tMu9sBIqSbF1gQluXEUtGmXPfZlMc10tOoBVeDokgK77nl/CcuC506sEoFKM5Rq58Dkb070lBMVBLc43TbMUzQ==} + engines: {node: '>= 20'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + mocha@11.8.0: + resolution: {integrity: sha512-VyCeUdGN3A9lmCTTgG4yuvY9ixxaDk+xt2R/7/+1AP6EqNG+G9OKkzBwhVtVYoNX8YsxNSgAl8mOv3IAeOpFbw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + tsx@4.23.5: + resolution: {integrity: sha512-rw55FUaqOoI7RvlQwLbhO4nSDApnQ4/CykPuiQ/EPvtrX3WA9Ig55jIt9VvbBJbzJuj12ueRu4PMZ2SxPVbihg==} + engines: {node: '>=18.0.0'} + hasBin: true + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@8.10.0: + resolution: {integrity: sha512-ibvdovq3nCFs8Msrd95BW+zUOq+aOVbT+wpHUoPWhztbHEoPc6oof51iFDB6Es8lTKvNvVW9jNSAB8dwrKTMGg==} + + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + workerpool@9.3.4: + resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + ws@8.21.1: + resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + + yargs@17.7.3: + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@solana-program/system@0.12.2(@solana/kit@6.10.0(typescript@5.9.3))': + dependencies: + '@solana/kit': 6.10.0(typescript@5.9.3) + + '@solana-program/token@0.14.0(@solana/kit@6.10.0(typescript@5.9.3))': + dependencies: + '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana/kit': 6.10.0(typescript@5.9.3) + + '@solana/accounts@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/accounts@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/addresses@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/addresses@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/assertions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/assertions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-core@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-core@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-data-structures@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-data-structures@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-numbers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-numbers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-strings@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-strings@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/fixed-points': 6.10.0(typescript@5.9.3) + '@solana/options': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/codecs@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/fixed-points': 7.0.0(typescript@5.9.3) + '@solana/options': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/errors@6.10.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 15.0.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/errors@7.0.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 15.0.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/fast-stable-stringify@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/fast-stable-stringify@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/fixed-points@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/fixed-points@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/functional@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/functional@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/instruction-plans@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/instruction-plans@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/instructions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/instructions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/keys@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/keys@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/assertions': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/kit@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/offchain-messages': 6.10.0(typescript@5.9.3) + '@solana/plugin-core': 6.10.0(typescript@5.9.3) + '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) + '@solana/program-client-core': 6.10.0(typescript@5.9.3) + '@solana/programs': 6.10.0(typescript@5.9.3) + '@solana/rpc': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + '@solana/sysvars': 6.10.0(typescript@5.9.3) + '@solana/transaction-confirmation': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/kit@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/offchain-messages': 7.0.0(typescript@5.9.3) + '@solana/plugin-core': 7.0.0(typescript@5.9.3) + '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) + '@solana/program-client-core': 7.0.0(typescript@5.9.3) + '@solana/programs': 7.0.0(typescript@5.9.3) + '@solana/rpc': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + '@solana/sysvars': 7.0.0(typescript@5.9.3) + '@solana/transaction-confirmation': 7.0.0(typescript@5.9.3) + '@solana/transaction-introspection': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/nominal-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/nominal-types@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/offchain-messages@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/offchain-messages@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/plugin-core@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/plugin-core@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/plugin-interfaces@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/plugin-interfaces@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/program-client-core@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instruction-plans': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/signers': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/program-client-core@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instruction-plans': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/signers': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/programs@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/programs@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/promises@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/promises@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-api@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-api@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-parsed-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-parsed-types@7.0.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec-types@6.10.0(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec-types@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions-api@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-subscriptions-api@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-subscriptions-channel-websocket@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + ws: 8.21.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@solana/rpc-subscriptions-channel-websocket@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + ws: 8.21.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@solana/rpc-subscriptions-spec@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions-spec@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/subscribable': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/rpc-subscriptions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/subscribable': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/rpc-transformers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-transformers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-transport-http@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + undici-types: 8.10.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-transport-http@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + undici-types: 8.10.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-types@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fixed-points': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-types@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fixed-points': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/rpc-api': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec': 6.10.0(typescript@5.9.3) + '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) + '@solana/rpc-transport-http': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec': 7.0.0(typescript@5.9.3) + '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) + '@solana/rpc-transport-http': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/signers@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/offchain-messages': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/signers@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/offchain-messages': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/subscribable@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/subscribable@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/sysvars@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/sysvars@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-confirmation@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/promises': 6.10.0(typescript@5.9.3) + '@solana/rpc': 6.10.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + '@solana/transactions': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/transaction-confirmation@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/promises': 7.0.0(typescript@5.9.3) + '@solana/rpc': 7.0.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/transaction-introspection@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/rpc-api': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + '@solana/transactions': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-messages@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-messages@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transactions@6.10.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 6.10.0(typescript@5.9.3) + '@solana/codecs-core': 6.10.0(typescript@5.9.3) + '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) + '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) + '@solana/codecs-strings': 6.10.0(typescript@5.9.3) + '@solana/errors': 6.10.0(typescript@5.9.3) + '@solana/functional': 6.10.0(typescript@5.9.3) + '@solana/instructions': 6.10.0(typescript@5.9.3) + '@solana/keys': 6.10.0(typescript@5.9.3) + '@solana/nominal-types': 6.10.0(typescript@5.9.3) + '@solana/rpc-types': 6.10.0(typescript@5.9.3) + '@solana/transaction-messages': 6.10.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transactions@7.0.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 7.0.0(typescript@5.9.3) + '@solana/codecs-core': 7.0.0(typescript@5.9.3) + '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) + '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) + '@solana/codecs-strings': 7.0.0(typescript@5.9.3) + '@solana/errors': 7.0.0(typescript@5.9.3) + '@solana/functional': 7.0.0(typescript@5.9.3) + '@solana/instructions': 7.0.0(typescript@5.9.3) + '@solana/keys': 7.0.0(typescript@5.9.3) + '@solana/nominal-types': 7.0.0(typescript@5.9.3) + '@solana/rpc-types': 7.0.0(typescript@5.9.3) + '@solana/transaction-messages': 7.0.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/mocha@10.0.10': {} + + '@types/node@26.1.2': + dependencies: + undici-types: 8.3.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + argparse@2.0.1: {} + + assertion-error@2.0.1: {} + + balanced-match@1.0.2: {} + + brace-expansion@2.1.4: + dependencies: + balanced-match: 1.0.2 + + browser-stdout@1.3.1: {} + + camelcase@6.3.0: {} + + chai@6.2.2: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.6.2: {} + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@15.0.0: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + debug@4.4.3(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@4.0.0: {} + + diff@7.0.0: {} + + eastasianwidth@0.2.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat@5.0.2: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fsevents@2.3.3: + optional: true + + get-caller-file@2.0.5: {} + + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + has-flag@4.0.0: {} + + he@1.2.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@2.1.0: {} + + is-unicode-supported@0.1.0: {} + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + js-yaml@4.3.1: + dependencies: + argparse: 2.0.1 + + litesvm-darwin-arm64@1.3.0: + optional: true + + litesvm-darwin-x64@1.3.0: + optional: true + + litesvm-linux-arm64-gnu@1.3.0: + optional: true + + litesvm-linux-arm64-musl@1.3.0: + optional: true + + litesvm-linux-x64-gnu@1.3.0: + optional: true + + litesvm-linux-x64-musl@1.3.0: + optional: true + + litesvm@1.3.0(typescript@5.9.3): + dependencies: + '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana-program/token': 0.14.0(@solana/kit@6.10.0(typescript@5.9.3)) + '@solana/kit': 6.10.0(typescript@5.9.3) + optionalDependencies: + litesvm-darwin-arm64: 1.3.0 + litesvm-darwin-x64: 1.3.0 + litesvm-linux-arm64-gnu: 1.3.0 + litesvm-linux-arm64-musl: 1.3.0 + litesvm-linux-x64-gnu: 1.3.0 + litesvm-linux-x64-musl: 1.3.0 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + lru-cache@10.4.3: {} + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.4 + + minipass@7.1.3: {} + + mocha@11.8.0: + dependencies: + browser-stdout: 1.3.1 + chokidar: 4.0.3 + debug: 4.4.3(supports-color@8.1.1) + diff: 7.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 10.5.0 + he: 1.2.0 + is-path-inside: 3.0.3 + js-yaml: 4.3.1 + log-symbols: 4.1.0 + minimatch: 9.0.9 + ms: 2.1.3 + picocolors: 1.1.1 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 9.3.4 + yargs: 17.7.3 + yargs-parser: 21.1.1 + yargs-unparser: 2.0.0 + + ms@2.1.3: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + package-json-from-dist@1.0.1: {} + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + + picocolors@1.1.1: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + readdirp@4.1.2: {} + + require-directory@2.1.1: {} + + safe-buffer@5.2.1: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@4.1.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + tsx@4.23.5: + dependencies: + esbuild: 0.28.1 + optionalDependencies: + fsevents: 2.3.3 + + typescript@5.9.3: {} + + undici-types@8.10.0: {} + + undici-types@8.3.0: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + workerpool@9.3.4: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + ws@8.21.1: {} + + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + + yargs@17.7.3: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} diff --git a/cryptography/encrypted-ballot/pinocchio/program/Cargo.toml b/cryptography/encrypted-ballot/pinocchio/program/Cargo.toml new file mode 100644 index 000000000..dc52568ad --- /dev/null +++ b/cryptography/encrypted-ballot/pinocchio/program/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "encrypted-ballot-pinocchio-program" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] + +[features] +no-entrypoint = [] + +[dependencies] +pinocchio.workspace = true +solana-address.workspace = true + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(target_os, values("solana"))'] } + +[dev-dependencies] +litesvm = "0.15" +solana-account = "4.3" +solana-instruction = "3.4" +solana-keypair = "3.1" +solana-native-token = "3.0" +solana-signer = "3.0" +solana-transaction = "4.1" diff --git a/cryptography/encrypted-ballot/pinocchio/program/src/lib.rs b/cryptography/encrypted-ballot/pinocchio/program/src/lib.rs new file mode 100644 index 000000000..b25e355fb --- /dev/null +++ b/cryptography/encrypted-ballot/pinocchio/program/src/lib.rs @@ -0,0 +1,112 @@ +#![no_std] + +use pinocchio::{error::ProgramError, nostd_panic_handler, AccountView, Address, ProgramResult}; + +pinocchio::address::declare_id!("4xPPrCF43BLmNQjTEfgguVG5EnGLAtDp4NN9kGE2ptAq"); + +#[cfg(not(feature = "no-entrypoint"))] +pinocchio::entrypoint!(process_instruction); + +nostd_panic_handler!(); + +const CURVE25519_RISTRETTO: u64 = 1; +const GROUP_OP_ADD: u64 = 0; + +const POINT: usize = 32; +const CIPHERTEXT: usize = 64; +const COUNT_PREFIX: usize = 2; + +#[derive(Clone, Copy, Debug, PartialEq)] +pub enum EncryptedBallotError { + InvalidInputLength, + SyscallFailed, + SyscallUnavailable, + InvalidBallotAccount, +} + +impl From for ProgramError { + fn from(e: EncryptedBallotError) -> Self { + ProgramError::Custom(e as u32) + } +} + +pub fn process_instruction( + program_id: &Address, + accounts: &mut [AccountView], + instruction_data: &[u8], +) -> ProgramResult { + let (discriminator, input) = instruction_data.split_first().ok_or(ProgramError::InvalidInstructionData)?; + + match discriminator { + 0 => process_tally_add(program_id, accounts, input), + _ => Err(ProgramError::InvalidInstructionData), + } +} + +fn ballot_count(data: &[u8]) -> u16 { + u16::from_le_bytes([data[0], data[1]]) +} + +/// Adds a twisted ElGamal ballot ciphertext (64 bytes: 32-byte commitment then +/// 32-byte decrypt handle) to the tally account's running encrypted total via +/// two ristretto255 additions. The account stores `[count: u16-le][tally: 64]`. +pub fn process_tally_add(program_id: &Address, accounts: &mut [AccountView], input: &[u8]) -> ProgramResult { + let account = accounts.first_mut().ok_or(ProgramError::NotEnoughAccountKeys)?; + if !account.is_writable() || !account.owned_by(program_id) { + return Err(EncryptedBallotError::InvalidBallotAccount.into()); + } + if input.len() != CIPHERTEXT { + return Err(EncryptedBallotError::InvalidInputLength.into()); + } + + let mut data = account.try_borrow_mut()?; + if data.len() < COUNT_PREFIX + CIPHERTEXT { + return Err(EncryptedBallotError::InvalidBallotAccount.into()); + } + + let count = ballot_count(&data); + if count == 0 { + data[COUNT_PREFIX..COUNT_PREFIX + CIPHERTEXT].copy_from_slice(input); + } else { + for offset in [0, POINT] { + let mut current = [0u8; POINT]; + current.copy_from_slice(&data[COUNT_PREFIX + offset..COUNT_PREFIX + offset + POINT]); + let mut updated = [0u8; POINT]; + curve_group_op(CURVE25519_RISTRETTO, GROUP_OP_ADD, ¤t, &input[offset..offset + POINT], &mut updated)?; + data[COUNT_PREFIX + offset..COUNT_PREFIX + offset + POINT].copy_from_slice(&updated); + } + } + data[..COUNT_PREFIX].copy_from_slice(&(count + 1).to_le_bytes()); + Ok(()) +} + +#[inline(always)] +fn curve_group_op( + curve_id: u64, + group_op: u64, + left: &[u8], + right: &[u8], + output: &mut [u8], +) -> Result<(), ProgramError> { + #[cfg(target_os = "solana")] + { + let code = unsafe { + pinocchio::syscalls::sol_curve_group_op( + curve_id, + group_op, + left.as_ptr(), + right.as_ptr(), + output.as_mut_ptr(), + ) + }; + match code { + 0 => Ok(()), + _ => Err(EncryptedBallotError::SyscallFailed.into()), + } + } + #[cfg(not(target_os = "solana"))] + { + let _ = (curve_id, group_op, left, right, output); + Err(EncryptedBallotError::SyscallUnavailable.into()) + } +} diff --git a/cryptography/encrypted-ballot/pinocchio/program/tests/test.rs b/cryptography/encrypted-ballot/pinocchio/program/tests/test.rs new file mode 100644 index 000000000..4e937a405 --- /dev/null +++ b/cryptography/encrypted-ballot/pinocchio/program/tests/test.rs @@ -0,0 +1,100 @@ +use litesvm::LiteSVM; +use solana_account::Account; +use solana_address::Address; +use solana_instruction::{AccountMeta, Instruction}; +use solana_keypair::Keypair; +use solana_native_token::LAMPORTS_PER_SOL; +use solana_signer::Signer; +use solana_transaction::Transaction; + +const IX_TALLY_ADD: u8 = 0; + +const CIPHERTEXT: usize = 64; +const COUNT_PREFIX: usize = 2; + +// Deterministic ristretto255 basepoint multiples summed with @noble/curves: +// BALLOT_A = [2G || 3G], BALLOT_B = [5G || 7G], SUM = [7G || 10G]. +const BALLOT_A: &str = "6a493210f7499cd17fecb510ae0cea23a110e8d5b901f8acadd3095c73a3b91994741f5d5d52755ece4f23f044ee27d5d1ea1e2bd196b462166b16152a9d0259"; +const BALLOT_B: &str = "e882b131016b52c1d3337080187cf768423efccbb517bb495ab812c4160ff44e44f53520926ec81fbd5a387845beb7df85a96a24ece18738bdcfa6a7822a176d"; +const SUM_AB: &str = "44f53520926ec81fbd5a387845beb7df85a96a24ece18738bdcfa6a7822a176d20706fd788b2720a1ed2a5dad4952b01f413bcf0e7564de8cdc816689e2db95f"; + +fn from_hex(s: &str) -> Vec { + (0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16).unwrap()).collect() +} + +fn setup() -> (LiteSVM, Address, Keypair) { + let program_id = Address::new_unique(); + let program_bytes = include_bytes!("../../tests/fixtures/encrypted_ballot_pinocchio_program.so"); + + let mut svm = LiteSVM::new(); + svm.add_program(program_id, program_bytes).unwrap(); + + let payer = Keypair::new(); + svm.airdrop(&payer.pubkey(), LAMPORTS_PER_SOL).unwrap(); + (svm, program_id, payer) +} + +fn tally_account(svm: &mut LiteSVM, owner: Address, count: u16, tally: Option<&str>) -> Address { + let key = Address::new_unique(); + let mut data = vec![0u8; COUNT_PREFIX + CIPHERTEXT]; + data[..COUNT_PREFIX].copy_from_slice(&count.to_le_bytes()); + if let Some(tally) = tally { + data[COUNT_PREFIX..].copy_from_slice(&from_hex(tally)); + } + svm.set_account(key, Account { lamports: 1_000_000_000, data, owner, ..Account::default() }).unwrap(); + key +} + +fn send(svm: &mut LiteSVM, program_id: Address, payer: &Keypair, ballot: &[u8], tally: Address) -> Result<(), String> { + let mut data = vec![IX_TALLY_ADD]; + data.extend_from_slice(ballot); + let ix = Instruction::new_with_bytes(program_id, &data, vec![AccountMeta::new(tally, false)]); + let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[payer], svm.latest_blockhash()); + match svm.send_transaction(tx) { + Ok(_) => Ok(()), + Err(failed) => Err(failed.err.to_string()), + } +} + +#[test] +fn first_ballot_becomes_the_tally() { + let (mut svm, program_id, payer) = setup(); + let tally = tally_account(&mut svm, program_id, 0, None); + + send(&mut svm, program_id, &payer, &from_hex(BALLOT_A), tally).unwrap(); + + let mut expected = (1u16).to_le_bytes().to_vec(); + expected.extend_from_slice(&from_hex(BALLOT_A)); + assert_eq!(svm.get_account(&tally).unwrap().data, expected); +} + +#[test] +fn second_ballot_folds_into_the_tally() { + let (mut svm, program_id, payer) = setup(); + let tally = tally_account(&mut svm, program_id, 1, Some(BALLOT_A)); + + send(&mut svm, program_id, &payer, &from_hex(BALLOT_B), tally).unwrap(); + + let mut expected = (2u16).to_le_bytes().to_vec(); + expected.extend_from_slice(&from_hex(SUM_AB)); + assert_eq!(svm.get_account(&tally).unwrap().data, expected); +} + +#[test] +fn wrong_ciphertext_length_is_rejected() { + let (mut svm, program_id, payer) = setup(); + let tally = tally_account(&mut svm, program_id, 0, None); + + let err = send(&mut svm, program_id, &payer, &[0, 1, 2], tally).unwrap_err(); + assert!(err.contains("custom program error: 0x0"), "unexpected error: {err}"); +} + +#[test] +fn foreign_account_is_rejected() { + let (mut svm, program_id, payer) = setup(); + let foreign_owner = Address::new_unique(); + let tally = tally_account(&mut svm, foreign_owner, 0, None); + + let err = send(&mut svm, program_id, &payer, &from_hex(BALLOT_A), tally).unwrap_err(); + assert!(err.contains("custom program error: 0x3"), "unexpected error: {err}"); +} diff --git a/cryptography/encrypted-ballot/pinocchio/tests/encrypted-ballot.test.ts b/cryptography/encrypted-ballot/pinocchio/tests/encrypted-ballot.test.ts new file mode 100644 index 000000000..4ed2d6fa0 --- /dev/null +++ b/cryptography/encrypted-ballot/pinocchio/tests/encrypted-ballot.test.ts @@ -0,0 +1,127 @@ +import { Buffer } from 'node:buffer'; +import { + AccountRole, + type Address, + appendTransactionMessageInstruction, + createTransactionMessage, + generateKeyPairSigner, + type KeyPairSigner, + lamports, + pipe, + setTransactionMessageFeePayerSigner, + signTransactionMessageWithSigners, +} from '@solana/kit'; +import { assert } from 'chai'; +import { FailedTransactionMetadata, LiteSVM, TransactionMetadata } from 'litesvm'; + +// Deterministic ristretto255 basepoint multiples summed with @noble/curves: +// BALLOT_A = [2G || 3G], BALLOT_B = [5G || 7G], SUM = [7G || 10G]. +const BALLOT_A = + '6a493210f7499cd17fecb510ae0cea23a110e8d5b901f8acadd3095c73a3b91994741f5d5d52755ece4f23f044ee27d5d1ea1e2bd196b462166b16152a9d0259'; +const BALLOT_B = + 'e882b131016b52c1d3337080187cf768423efccbb517bb495ab812c4160ff44e44f53520926ec81fbd5a387845beb7df85a96a24ece18738bdcfa6a7822a176d'; +const SUM_AB = + '44f53520926ec81fbd5a387845beb7df85a96a24ece18738bdcfa6a7822a176d20706fd788b2720a1ed2a5dad4952b01f413bcf0e7564de8cdc816689e2db95f'; + +const IX_TALLY_ADD = 0; + +const CIPHERTEXT = 64; +const COUNT_PREFIX = 2; + +const ERR_INVALID_INPUT_LENGTH = 'InstructionErrorCustom { code: 0 }'; +const ERR_INVALID_BALLOT_ACCOUNT = 'InstructionErrorCustom { code: 3 }'; + +const hex = (s: string) => Uint8Array.from(Buffer.from(s, 'hex')); + +const tallyData = (count: number, tally?: string) => { + const data = new Uint8Array(COUNT_PREFIX + CIPHERTEXT); + new DataView(data.buffer).setUint16(0, count, true); + if (tally) data.set(hex(tally), COUNT_PREFIX); + return data; +}; + +describe('encrypted-ballot', () => { + const svm = new LiteSVM(); + let programId: Address; + let payer: KeyPairSigner; + + before(async () => { + programId = (await generateKeyPairSigner()).address; + svm.addProgramFromFile(programId, 'tests/fixtures/encrypted_ballot_pinocchio_program.so'); + + payer = await generateKeyPairSigner(); + svm.airdrop(payer.address, lamports(1_000_000_000n)); + }); + + async function tallyAccount(owner: Address, count: number, tally?: string) { + const address = (await generateKeyPairSigner()).address; + const data = tallyData(count, tally); + svm.setAccount({ + address, + data, + executable: false, + lamports: lamports(1_000_000_000n), + programAddress: owner, + space: BigInt(data.length), + }); + return address; + } + + function tallyAccountData(tally: Address) { + const account = svm.getAccount(tally); + assert(account?.exists, 'expected the tally account to exist'); + return account.data; + } + + async function send(ballot: Uint8Array, tally: Address) { + const data = new Uint8Array([IX_TALLY_ADD, ...ballot]); + const transactionMessage = pipe( + createTransactionMessage({ version: 0 }), + m => setTransactionMessageFeePayerSigner(payer, m), + m => svm.setTransactionMessageLifetimeUsingLatestBlockhash(m), + m => + appendTransactionMessageInstruction( + { programAddress: programId, accounts: [{ address: tally, role: AccountRole.WRITABLE }], data }, + m, + ), + ); + const signedTx = await signTransactionMessageWithSigners(transactionMessage); + + const result = svm.sendTransaction(signedTx); + svm.expireBlockhash(); + return result; + } + + it('the first ballot becomes the tally verbatim', async () => { + const tally = await tallyAccount(programId, 0); + const result = await send(hex(BALLOT_A), tally); + + assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); + assert.deepEqual(tallyAccountData(tally), tallyData(1, BALLOT_A)); + }); + + it('the second ballot folds into the running encrypted tally', async () => { + const tally = await tallyAccount(programId, 1, BALLOT_A); + const result = await send(hex(BALLOT_B), tally); + + assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); + assert.deepEqual(tallyAccountData(tally), tallyData(2, SUM_AB)); + }); + + it('rejects a ballot that is not exactly one ciphertext', async () => { + const tally = await tallyAccount(programId, 0); + const result = await send(new Uint8Array(3), tally); + + assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); + assert.include(String(result.err()), ERR_INVALID_INPUT_LENGTH); + }); + + it('rejects an account not owned by the program', async () => { + const foreignOwner = (await generateKeyPairSigner()).address; + const tally = await tallyAccount(foreignOwner, 0); + const result = await send(hex(BALLOT_A), tally); + + assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); + assert.include(String(result.err()), ERR_INVALID_BALLOT_ACCOUNT); + }); +}); diff --git a/cryptography/encrypted-ballot/pinocchio/tsconfig.json b/cryptography/encrypted-ballot/pinocchio/tsconfig.json new file mode 100644 index 000000000..c02443141 --- /dev/null +++ b/cryptography/encrypted-ballot/pinocchio/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "types": ["mocha", "chai", "node"], + "typeRoots": ["./node_modules/@types"], + "lib": ["esnext"], + "module": "esnext", + "target": "esnext", + "moduleResolution": "bundler", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowImportingTsExtensions": true, + "noEmit": true, + "skipLibCheck": true + } +} From 9bd1f0dbcfebdd33ad9b335ffeeb3a54137b4d25 Mon Sep 17 00:00:00 2001 From: Jo D Date: Mon, 3 Aug 2026 12:16:58 -0400 Subject: [PATCH 2/6] docs(cryptography): call out deliberate lack of access control in stateful examples The bls-multisig and bls-key-registry examples focus on the pairing and curve syscalls; access control is out of scope. Say so explicitly in the doc comments and READMEs so nobody ships the pattern as-is. Addresses review feedback on the unauthenticated mutation paths. --- cryptography/bls-key-registry/pinocchio/README.md | 2 ++ cryptography/bls-key-registry/pinocchio/program/src/lib.rs | 6 ++++++ cryptography/bls-multisig/pinocchio/README.md | 2 ++ cryptography/bls-multisig/pinocchio/program/src/lib.rs | 5 +++++ 4 files changed, 15 insertions(+) diff --git a/cryptography/bls-key-registry/pinocchio/README.md b/cryptography/bls-key-registry/pinocchio/README.md index f9af62e35..39adbb38b 100644 --- a/cryptography/bls-key-registry/pinocchio/README.md +++ b/cryptography/bls-key-registry/pinocchio/README.md @@ -9,6 +9,8 @@ Maintains a running aggregate BLS12-381 G2 public key in an account. Adding a me The BLS12-381 syscall runs in LiteSVM today but only works on public clusters once the `enable_bls12_381_syscall` feature gate activates. +> **Security note:** this example deliberately omits access control to stay focused on the curve syscalls — any caller can add to or remove from a writable registry account, and the lossy aggregate cannot prove a removed key was ever a member. A production registry needs an authority signer check and its own membership bookkeeping. + ## Test ```sh diff --git a/cryptography/bls-key-registry/pinocchio/program/src/lib.rs b/cryptography/bls-key-registry/pinocchio/program/src/lib.rs index c288773b3..24626dc7e 100644 --- a/cryptography/bls-key-registry/pinocchio/program/src/lib.rs +++ b/cryptography/bls-key-registry/pinocchio/program/src/lib.rs @@ -52,6 +52,12 @@ fn member_count(data: &[u8]) -> u16 { /// Validates account 0 as the registry account (writable, owned by this /// program) and the instruction data as exactly one 192-byte G2 public key. /// The account stores `[count: u16-le][aggregate: 192]`. +/// +/// This example deliberately omits access control to stay focused on the +/// curve syscalls: any caller can mutate a writable registry account, and the +/// lossy aggregate cannot prove that a removed key was ever a member. A +/// production registry needs an authority signer check and its own membership +/// bookkeeping. fn registry_account<'a>( program_id: &Address, accounts: &'a mut [AccountView], diff --git a/cryptography/bls-multisig/pinocchio/README.md b/cryptography/bls-multisig/pinocchio/README.md index 2f40067fc..b7b494b31 100644 --- a/cryptography/bls-multisig/pinocchio/README.md +++ b/cryptography/bls-multisig/pinocchio/README.md @@ -10,6 +10,8 @@ Verifies aggregate BLS signatures over BN254 with a single pairing check: public The verify instructions only succeed when every registered signer contributed to the aggregate signature. G2 addition needs the `enable_alt_bn128_g2_syscalls` feature gate on public clusters; LiteSVM has it enabled. +> **Security note:** this example deliberately omits access control to stay focused on the pairing syscalls — any caller can append keys to a writable multisig account. A production multisig needs an authority signer check, or an immutable signer set fixed at initialization. + ## Test ```sh diff --git a/cryptography/bls-multisig/pinocchio/program/src/lib.rs b/cryptography/bls-multisig/pinocchio/program/src/lib.rs index a15d63f82..b59524102 100644 --- a/cryptography/bls-multisig/pinocchio/program/src/lib.rs +++ b/cryptography/bls-multisig/pinocchio/program/src/lib.rs @@ -81,6 +81,11 @@ pub fn process_aggregate_verify(input: &[u8]) -> ProgramResult { /// Account 0 is the multisig account (writable, owned by this program). Its data /// is `[count: u16-le][G2 pubkey; count]`. The instruction data is a chunk of one /// or more big-endian G2 public keys (128 bytes each) appended to the account. +/// +/// This example deliberately omits access control to stay focused on the +/// pairing syscalls: any caller can append keys to a writable multisig +/// account. A production multisig needs an authority signer check, or an +/// immutable signer set fixed at initialization. pub fn process_add_signers(program_id: &Address, accounts: &mut [AccountView], input: &[u8]) -> ProgramResult { let multisig = accounts.first_mut().ok_or(ProgramError::NotEnoughAccountKeys)?; if !multisig.is_writable() || !multisig.owned_by(program_id) { From a5bb8944d181967de6f36acd12e4c1a7d40fede9 Mon Sep 17 00:00:00 2001 From: Jo D Date: Mon, 3 Aug 2026 13:08:35 -0400 Subject: [PATCH 3/6] refactor(cryptography): one stateless program per curve Cut the category down to raw syscall demos: bn254 (G2 add/mul plus aggregate BLS verify, keeping the pairing op covered) and bls12-381 (G1/G2 group ops). The stateful application examples (multisig, key registry, encrypted ballot) added account plumbing without teaching anything new about the syscalls; they stay available in the upstream crypto-primitives-examples repo, now linked from the category README. Renames alt-bn128-g2 to bn254 to match the primitive naming. --- Cargo.lock | 73 +- Cargo.toml | 5 +- README.md | 26 +- cryptography/alt-bn128-g2/pinocchio/README.md | 18 - .../alt-bn128-g2/pinocchio/program/src/lib.rs | 110 - .../bls-key-registry/pinocchio/README.md | 20 - .../bls-key-registry/pinocchio/package.json | 24 - .../bls-key-registry/pinocchio/pnpm-lock.yaml | 2825 ----------------- .../pinocchio/program/Cargo.toml | 26 - .../pinocchio/program/src/lib.rs | 155 - .../pinocchio/program/tests/test.rs | 133 - .../pinocchio/tests/bls-key-registry.test.ts | 149 - .../bls-key-registry/pinocchio/tsconfig.json | 15 - cryptography/bls-multisig/pinocchio/README.md | 21 - .../bls-multisig/pinocchio/package.json | 24 - .../bls-multisig/pinocchio/pnpm-lock.yaml | 2825 ----------------- .../bls-multisig/pinocchio/program/Cargo.toml | 26 - .../pinocchio/program/src/bn254.rs | 83 - .../bls-multisig/pinocchio/program/src/lib.rs | 162 - .../pinocchio/program/tests/test.rs | 160 - .../pinocchio/tests/bls-multisig.test.ts | 168 - .../bls-multisig/pinocchio/tsconfig.json | 15 - cryptography/bn254/pinocchio/README.md | 21 + .../pinocchio/package.json | 6 +- .../pinocchio/pnpm-lock.yaml | 0 .../pinocchio/program/Cargo.toml | 2 +- .../bn254/pinocchio/program/src/lib.rs | 189 ++ .../pinocchio/program/tests/test.rs | 35 +- .../pinocchio/tests/bn254.test.ts} | 42 +- .../pinocchio/tsconfig.json | 0 .../encrypted-ballot/pinocchio/README.md | 17 - .../encrypted-ballot/pinocchio/package.json | 24 - .../encrypted-ballot/pinocchio/pnpm-lock.yaml | 2825 ----------------- .../pinocchio/program/Cargo.toml | 26 - .../pinocchio/program/src/lib.rs | 112 - .../pinocchio/program/tests/test.rs | 100 - .../pinocchio/tests/encrypted-ballot.test.ts | 127 - .../encrypted-ballot/pinocchio/tsconfig.json | 15 - 38 files changed, 306 insertions(+), 10298 deletions(-) delete mode 100644 cryptography/alt-bn128-g2/pinocchio/README.md delete mode 100644 cryptography/alt-bn128-g2/pinocchio/program/src/lib.rs delete mode 100644 cryptography/bls-key-registry/pinocchio/README.md delete mode 100644 cryptography/bls-key-registry/pinocchio/package.json delete mode 100644 cryptography/bls-key-registry/pinocchio/pnpm-lock.yaml delete mode 100644 cryptography/bls-key-registry/pinocchio/program/Cargo.toml delete mode 100644 cryptography/bls-key-registry/pinocchio/program/src/lib.rs delete mode 100644 cryptography/bls-key-registry/pinocchio/program/tests/test.rs delete mode 100644 cryptography/bls-key-registry/pinocchio/tests/bls-key-registry.test.ts delete mode 100644 cryptography/bls-key-registry/pinocchio/tsconfig.json delete mode 100644 cryptography/bls-multisig/pinocchio/README.md delete mode 100644 cryptography/bls-multisig/pinocchio/package.json delete mode 100644 cryptography/bls-multisig/pinocchio/pnpm-lock.yaml delete mode 100644 cryptography/bls-multisig/pinocchio/program/Cargo.toml delete mode 100644 cryptography/bls-multisig/pinocchio/program/src/bn254.rs delete mode 100644 cryptography/bls-multisig/pinocchio/program/src/lib.rs delete mode 100644 cryptography/bls-multisig/pinocchio/program/tests/test.rs delete mode 100644 cryptography/bls-multisig/pinocchio/tests/bls-multisig.test.ts delete mode 100644 cryptography/bls-multisig/pinocchio/tsconfig.json create mode 100644 cryptography/bn254/pinocchio/README.md rename cryptography/{alt-bn128-g2 => bn254}/pinocchio/package.json (74%) rename cryptography/{alt-bn128-g2 => bn254}/pinocchio/pnpm-lock.yaml (100%) rename cryptography/{alt-bn128-g2 => bn254}/pinocchio/program/Cargo.toml (91%) create mode 100644 cryptography/bn254/pinocchio/program/src/lib.rs rename cryptography/{alt-bn128-g2 => bn254}/pinocchio/program/tests/test.rs (66%) rename cryptography/{alt-bn128-g2/pinocchio/tests/alt-bn128-g2.test.ts => bn254/pinocchio/tests/bn254.test.ts} (64%) rename cryptography/{alt-bn128-g2 => bn254}/pinocchio/tsconfig.json (100%) delete mode 100644 cryptography/encrypted-ballot/pinocchio/README.md delete mode 100644 cryptography/encrypted-ballot/pinocchio/package.json delete mode 100644 cryptography/encrypted-ballot/pinocchio/pnpm-lock.yaml delete mode 100644 cryptography/encrypted-ballot/pinocchio/program/Cargo.toml delete mode 100644 cryptography/encrypted-ballot/pinocchio/program/src/lib.rs delete mode 100644 cryptography/encrypted-ballot/pinocchio/program/tests/test.rs delete mode 100644 cryptography/encrypted-ballot/pinocchio/tests/encrypted-ballot.test.ts delete mode 100644 cryptography/encrypted-ballot/pinocchio/tsconfig.json diff --git a/Cargo.lock b/Cargo.lock index 139c163ac..f2e02c09a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -201,20 +201,6 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" -[[package]] -name = "alt-bn128-g2-pinocchio-program" -version = "0.1.0" -dependencies = [ - "litesvm 0.15.0", - "pinocchio", - "solana-address 2.6.1", - "solana-instruction", - "solana-keypair", - "solana-native-token", - "solana-signer", - "solana-transaction 4.1.5", -] - [[package]] name = "anchor-attribute-access-control" version = "1.0.2" @@ -801,36 +787,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "bls-key-registry-pinocchio-program" -version = "0.1.0" -dependencies = [ - "litesvm 0.15.0", - "pinocchio", - "solana-account 4.3.1", - "solana-address 2.6.1", - "solana-instruction", - "solana-keypair", - "solana-native-token", - "solana-signer", - "solana-transaction 4.1.5", -] - -[[package]] -name = "bls-multisig-pinocchio-program" -version = "0.1.0" -dependencies = [ - "litesvm 0.15.0", - "pinocchio", - "solana-account 4.3.1", - "solana-address 2.6.1", - "solana-instruction", - "solana-keypair", - "solana-native-token", - "solana-signer", - "solana-transaction 4.1.5", -] - [[package]] name = "bls12-381-pinocchio-program" version = "0.1.0" @@ -873,6 +829,20 @@ dependencies = [ "subtle", ] +[[package]] +name = "bn254-pinocchio-program" +version = "0.1.0" +dependencies = [ + "litesvm 0.15.0", + "pinocchio", + "solana-address 2.6.1", + "solana-instruction", + "solana-keypair", + "solana-native-token", + "solana-signer", + "solana-transaction 4.1.5", +] + [[package]] name = "borsh" version = "1.7.0" @@ -1527,21 +1497,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "encrypted-ballot-pinocchio-program" -version = "0.1.0" -dependencies = [ - "litesvm 0.15.0", - "pinocchio", - "solana-account 4.3.1", - "solana-address 2.6.1", - "solana-instruction", - "solana-keypair", - "solana-native-token", - "solana-signer", - "solana-transaction 4.1.5", -] - [[package]] name = "enum-iterator" version = "1.5.0" diff --git a/Cargo.toml b/Cargo.toml index 09104c61c..3eba5e90c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,11 +47,8 @@ members = [ "basics/transfer-sol/asm", # cryptography - "cryptography/alt-bn128-g2/pinocchio/program", - "cryptography/bls-key-registry/pinocchio/program", - "cryptography/bls-multisig/pinocchio/program", "cryptography/bls12-381/pinocchio/program", - "cryptography/encrypted-ballot/pinocchio/program", + "cryptography/bn254/pinocchio/program", # tokens "tokens/create-token/native/program", diff --git a/README.md b/README.md index a394fae30..d76760f31 100644 --- a/README.md +++ b/README.md @@ -316,13 +316,13 @@ Work with Metaplex compressed NFTs. ## Cryptography -Each example wraps a cryptographic syscall in a small Pinocchio program. The alt_bn128 G2 (SIMD-0302) and BLS12-381 syscalls run in LiteSVM today but only work on public clusters once their feature gates activate. +One stateless program per curve, wrapping the raw cryptographic syscalls. These run in LiteSVM today but only work on public clusters once their feature gates activate. Applied examples (multisig, key registry, encrypted ballot) live in the [crypto-primitives-examples](https://github.com/solana-foundation/crypto-primitives-examples) reference repo. -### Alt-bn128 G2 operations +### BN254 (alt_bn128) operations -Add and scalar-multiply BN254 G2 points with the `sol_alt_bn128_group_op` syscall. +Add and scalar-multiply G2 points (SIMD-0302) and verify aggregate BLS signatures with a single pairing check, via the `sol_alt_bn128_group_op` syscall. -[pinocchio](./cryptography/alt-bn128-g2/pinocchio) +[pinocchio](./cryptography/bn254/pinocchio) ### BLS12-381 curve operations @@ -330,24 +330,6 @@ Add, subtract, and scalar-multiply BLS12-381 G1 and G2 points with the `sol_curv [pinocchio](./cryptography/bls12-381/pinocchio) -### BLS multisig - -Verify aggregate BLS signatures over BN254 with a single pairing check — stateless, or against signers stored in a multisig account. - -[pinocchio](./cryptography/bls-multisig/pinocchio) - -### BLS key registry - -Maintain a running aggregate BLS12-381 G2 public key on-chain, adding and removing members with curve syscalls. - -[pinocchio](./cryptography/bls-key-registry/pinocchio) - -### Encrypted ballot - -Fold twisted ElGamal ballot ciphertexts into an encrypted running tally with ristretto255 additions. - -[pinocchio](./cryptography/encrypted-ballot/pinocchio) - ## Oracles ### pyth diff --git a/cryptography/alt-bn128-g2/pinocchio/README.md b/cryptography/alt-bn128-g2/pinocchio/README.md deleted file mode 100644 index 009d0377e..000000000 --- a/cryptography/alt-bn128-g2/pinocchio/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Alt-bn128 G2 operations (Pinocchio) - -A stateless program that wraps the BN254 (alt_bn128) G2 group operations added by [SIMD-0302](https://github.com/solana-foundation/solana-improvement-documents/pull/302), via the `sol_alt_bn128_group_op` syscall. Results come back as transaction return data. - -| Discriminator | Instruction | Input | -| ------------- | ----------- | --------------------------------------------------- | -| 0 | G2 add | two big-endian G2 points (128 bytes each) | -| 1 | G2 mul | one big-endian G2 point ‖ 32-byte big-endian scalar | - -The syscall runs in LiteSVM today but only works on public clusters once the `enable_alt_bn128_g2_syscalls` feature gate activates. - -## Test - -```sh -pnpm install -pnpm build-and-test # TypeScript tests (mocha + LiteSVM) -cargo test --manifest-path=./program/Cargo.toml # Rust tests (litesvm), after build-and-test -``` diff --git a/cryptography/alt-bn128-g2/pinocchio/program/src/lib.rs b/cryptography/alt-bn128-g2/pinocchio/program/src/lib.rs deleted file mode 100644 index fa3d13785..000000000 --- a/cryptography/alt-bn128-g2/pinocchio/program/src/lib.rs +++ /dev/null @@ -1,110 +0,0 @@ -#![no_std] - -use pinocchio::{error::ProgramError, nostd_panic_handler, AccountView, Address, ProgramResult}; - -pinocchio::address::declare_id!("DbkAQTKuGJAwAPWVJdHLwxD47QBhkBTKqHBeBDJ8kzNa"); - -#[cfg(not(feature = "no-entrypoint"))] -pinocchio::entrypoint!(process_instruction); - -nostd_panic_handler!(); - -pub const G2_POINT_SIZE: usize = 128; -pub const SCALAR_SIZE: usize = 32; -pub const G2_ADD_INPUT_SIZE: usize = G2_POINT_SIZE * 2; -pub const G2_MUL_INPUT_SIZE: usize = G2_POINT_SIZE + SCALAR_SIZE; - -const ALT_BN128_G2_ADD: u64 = 4; -const ALT_BN128_G2_MUL: u64 = 6; - -#[derive(Clone, Copy, Debug, PartialEq)] -pub enum AltBn128G2Error { - InvalidInputLength, - SyscallFailed, - SyscallUnavailable, -} - -impl From for ProgramError { - fn from(e: AltBn128G2Error) -> Self { - ProgramError::Custom(e as u32) - } -} - -pub fn process_instruction( - _program_id: &Address, - _accounts: &mut [AccountView], - instruction_data: &[u8], -) -> ProgramResult { - let (discriminator, input) = instruction_data.split_first().ok_or(ProgramError::InvalidInstructionData)?; - - match discriminator { - 0 => process_g2_add(input), - 1 => process_g2_mul(input), - _ => Err(ProgramError::InvalidInstructionData), - } -} - -/// Adds two big-endian G2 points (128 bytes each) via the -/// `sol_alt_bn128_group_op` syscall and returns the 128-byte sum as return data. -pub fn process_g2_add(input: &[u8]) -> ProgramResult { - if input.len() != G2_ADD_INPUT_SIZE { - return Err(AltBn128G2Error::InvalidInputLength.into()); - } - - let mut result = [0u8; G2_POINT_SIZE]; - alt_bn128_group_op(ALT_BN128_G2_ADD, input, &mut result)?; - - set_return_data(&result); - Ok(()) -} - -/// Multiplies a big-endian G2 point (128 bytes) by a big-endian 32-byte scalar -/// via the `sol_alt_bn128_group_op` syscall and returns the 128-byte product as -/// return data. -pub fn process_g2_mul(input: &[u8]) -> ProgramResult { - if input.len() != G2_MUL_INPUT_SIZE { - return Err(AltBn128G2Error::InvalidInputLength.into()); - } - - let mut result = [0u8; G2_POINT_SIZE]; - alt_bn128_group_op(ALT_BN128_G2_MUL, input, &mut result)?; - - set_return_data(&result); - Ok(()) -} - -#[inline(always)] -fn alt_bn128_group_op(group_op: u64, input: &[u8], output: &mut [u8]) -> Result<(), ProgramError> { - #[cfg(target_os = "solana")] - { - let code = unsafe { - pinocchio::syscalls::sol_alt_bn128_group_op( - group_op, - input.as_ptr(), - input.len() as u64, - output.as_mut_ptr(), - ) - }; - match code { - 0 => Ok(()), - _ => Err(AltBn128G2Error::SyscallFailed.into()), - } - } - #[cfg(not(target_os = "solana"))] - { - let _ = (group_op, input, output); - Err(AltBn128G2Error::SyscallUnavailable.into()) - } -} - -#[inline(always)] -fn set_return_data(data: &[u8]) { - #[cfg(target_os = "solana")] - unsafe { - pinocchio::syscalls::sol_set_return_data(data.as_ptr(), data.len() as u64); - } - #[cfg(not(target_os = "solana"))] - { - let _ = data; - } -} diff --git a/cryptography/bls-key-registry/pinocchio/README.md b/cryptography/bls-key-registry/pinocchio/README.md deleted file mode 100644 index 39adbb38b..000000000 --- a/cryptography/bls-key-registry/pinocchio/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# BLS key registry (Pinocchio) - -Maintains a running aggregate BLS12-381 G2 public key in an account. Adding a member folds their key into the aggregate with the G2 addition syscall; removing one subtracts it with the G2 subtraction syscall — no need to re-aggregate the remaining members. The account stores `[count: u16-le][aggregate: 192]`. - -| Discriminator | Instruction | Input | -| ------------- | ----------- | ---------------------------------------- | -| 0 | Add | one big-endian G2 public key (192 bytes) | -| 1 | Remove | one big-endian G2 public key (192 bytes) | - -The BLS12-381 syscall runs in LiteSVM today but only works on public clusters once the `enable_bls12_381_syscall` feature gate activates. - -> **Security note:** this example deliberately omits access control to stay focused on the curve syscalls — any caller can add to or remove from a writable registry account, and the lossy aggregate cannot prove a removed key was ever a member. A production registry needs an authority signer check and its own membership bookkeeping. - -## Test - -```sh -pnpm install -pnpm build-and-test # TypeScript tests (mocha + LiteSVM) -cargo test --manifest-path=./program/Cargo.toml # Rust tests (litesvm), after build-and-test -``` diff --git a/cryptography/bls-key-registry/pinocchio/package.json b/cryptography/bls-key-registry/pinocchio/package.json deleted file mode 100644 index 2f2e5fd2b..000000000 --- a/cryptography/bls-key-registry/pinocchio/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "bls-key-registry-pinocchio", - "version": "0.1.0", - "type": "module", - "scripts": { - "test": "mocha --import=tsx -t 1000000 ./tests/bls-key-registry.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/bls_key_registry_pinocchio_program.so" - }, - "dependencies": { - "@solana/kit": "^7.0.0" - }, - "devDependencies": { - "@types/chai": "^5.2.3", - "@types/mocha": "^10.0.10", - "@types/node": "^26.1.0", - "chai": "^6.2.2", - "litesvm": "^1.3.0", - "mocha": "^11.7.5", - "tsx": "^4.19.2", - "typescript": "^5.9.3" - } -} diff --git a/cryptography/bls-key-registry/pinocchio/pnpm-lock.yaml b/cryptography/bls-key-registry/pinocchio/pnpm-lock.yaml deleted file mode 100644 index 6e11abae2..000000000 --- a/cryptography/bls-key-registry/pinocchio/pnpm-lock.yaml +++ /dev/null @@ -1,2825 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@solana/kit': - specifier: ^7.0.0 - version: 7.0.0(typescript@5.9.3) - devDependencies: - '@types/chai': - specifier: ^5.2.3 - version: 5.2.3 - '@types/mocha': - specifier: ^10.0.10 - version: 10.0.10 - '@types/node': - specifier: ^26.1.0 - version: 26.1.2 - chai: - specifier: ^6.2.2 - version: 6.2.2 - litesvm: - specifier: ^1.3.0 - version: 1.3.0(typescript@5.9.3) - mocha: - specifier: ^11.7.5 - version: 11.8.0 - tsx: - specifier: ^4.19.2 - version: 4.23.5 - typescript: - specifier: ^5.9.3 - version: 5.9.3 - -packages: - - '@esbuild/aix-ppc64@0.28.1': - resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.28.1': - resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.28.1': - resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.28.1': - resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.28.1': - resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.28.1': - resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.28.1': - resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.28.1': - resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.28.1': - resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.28.1': - resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.28.1': - resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.28.1': - resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.28.1': - resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.28.1': - resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.28.1': - resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.28.1': - resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.28.1': - resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.28.1': - resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.28.1': - resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.28.1': - resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.28.1': - resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.28.1': - resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.28.1': - resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.28.1': - resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.28.1': - resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.28.1': - resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@solana-program/system@0.12.2': - resolution: {integrity: sha512-MaBeOxlvTruQhA7UYkOb3hVTEHPPagOtd+PvTm6a8rGgvEAP0kD4BbC37NceOaR4ABNqdaCmD5OMVRKgrE6KAg==} - peerDependencies: - '@solana/kit': ^6.4.0 - - '@solana-program/token@0.14.0': - resolution: {integrity: sha512-zpLMr6JZndlsQCQvrm0gezfwdr1lmzOGqN6v2WIYXjtDmbF+xg6zh/MAp2UFHRpv3uDmylEdjtQo05pa2OeaYg==} - engines: {node: '>=24.0.0'} - peerDependencies: - '@solana/kit': ^6.5.0 - - '@solana/accounts@6.10.0': - resolution: {integrity: sha512-+FxfDOrnifoPlBkF+fr8eeQdgM6xtIgAg9xKMu3WnIz60oZd4Xnry6+ff6t+ePPoZZp397FSg9ZJet68VCWm5Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/accounts@7.0.0': - resolution: {integrity: sha512-RfbinkhuWxcObxZIdjeWEn/mzLqRp/h2hAk/ZQCUxPdDBW8h4XxEybK9GBItGOAcrUz5HuusXTD+cXXnlIxWcg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/addresses@6.10.0': - resolution: {integrity: sha512-vEoCGBTxG0HCERAn84KXkrJjl+pDaNzOpZ0qbgcPS98fYxP5yzbKB8SNOY2bzrbkRUmmw5Q3hqTRERemUN2Gcw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/addresses@7.0.0': - resolution: {integrity: sha512-E7sJtV5d3bXrmw3I30rcKY+xoqM++6KIVJCi+q8ZaSMyP04UMfEENPHIJ+TkyS1RUgjzPT91ka/oWrtTh6EfkQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/assertions@6.10.0': - resolution: {integrity: sha512-lKSAdVo+P/6Lp4vs6shstXmFOpvxrABwn4o1462tb7sKkNapk6o9pPFVPGw4DUgPS3WqWRs1j2tmpuVjhQRntg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/assertions@7.0.0': - resolution: {integrity: sha512-CShOQLPezI0tbrih+L88fzt8FMHDyJoWkmulk4wfRp3HhpQL2yNlH/SWLH033qysnvkmE7TxBFUtcnbnf7jz1g==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-core@6.10.0': - resolution: {integrity: sha512-nfAl9OMGo4HanIMxGsQoVB7BxMoqBCYEUxl8oEAZZ09pDxnaXQZkTRXEwPPccag37XfW1ciPd1vWPKwB2b0HHQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-core@7.0.0': - resolution: {integrity: sha512-6HtEisZEtFb6okARUgYqmKdDbn2aHRrSCDgB1/GEwr0s6fK5XNYpafaSjorbs2MEyZV3tCUFTj2j6fk/4nNcLg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-data-structures@6.10.0': - resolution: {integrity: sha512-CNasJW3bq5u+632Zt5aJ8rOjAjv2HyenpV8o9kAIqdmV4CBpjCCoBnKn8LkuR/sbeREZxJYfhKTXO/9ruAkw7A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-data-structures@7.0.0': - resolution: {integrity: sha512-P0Ys1mB4lYlz3MMTCaJSysE3OYrq8WvsveU1ta8U/yG1qChXFGCOxPVh06swjaRxwPrEakb9VUESS5vNtp1rRA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-numbers@6.10.0': - resolution: {integrity: sha512-CcM+wX4zOiA9zkh8A7t1787A0Ehgmu5+6Z2tKoHew6cNw/dkaUTPa8JnNHbvfsLC8dfHC1BhAEJl86sKmRsfkQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-numbers@7.0.0': - resolution: {integrity: sha512-XL0jnmnXr3ceoX4tusT+XkBVR2iGKEJecTIXbIV7ILi9xObg3fNXafNbTmbIOvKc0ByTyjo8EWZ9jQKSRWgsgA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-strings@6.10.0': - resolution: {integrity: sha512-zlaqkg7K6F6IN4V/Ec8TWkTn054gxv7ZLagvGkuEyAdPQ6BzzsehOm2TqCuyXgJJTCGPLY1bEk6yH9NxANe0kA==} - engines: {node: '>=20.18.0'} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5.4.0' - peerDependenciesMeta: - fastestsmallesttextencoderdecoder: - optional: true - typescript: - optional: true - - '@solana/codecs-strings@7.0.0': - resolution: {integrity: sha512-zXE1PE9HkVk6phZ6aqHTXvLZ0qIl5bJNIvG9eMB7LuFO1XBVQywJUtjKS8fE3/xmRCWSMilFSrEXGA+SpOyLrQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5.4.0' - peerDependenciesMeta: - fastestsmallesttextencoderdecoder: - optional: true - typescript: - optional: true - - '@solana/codecs@6.10.0': - resolution: {integrity: sha512-lLVuxod4ChWp9i7OvpgIykYG8Q9OGPVXKnHM9VlzDDLylsx7Y1FoQL00sHa7PqFkJVmkBufaA6dcGbQ7FU+lAQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs@7.0.0': - resolution: {integrity: sha512-xT1IbwKkPZ544u/eqhb9SZ0fNYJidWgIUzKNQMbvLCwduayAkQp+czlGdvLQ6CVlqtCewtH3gW8biGU7YuBdEw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/errors@6.10.0': - resolution: {integrity: sha512-KBLAxCtAXr357JNhCyIDQXWbuSj5vN6w+28FSfcYY6OOSiphmXLAV3V58jgV0C6iNbIzFJFi6yatFyDTdeJsNg==} - engines: {node: '>=20.18.0'} - hasBin: true - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/errors@7.0.0': - resolution: {integrity: sha512-94r+LLSzZ0XVp+LOogwxWGXeo138uvwqtqRW9Tjl1DIXrFgh8euXnJSXZyydu1UXJs7ItOSm0QreJviSGw3TGQ==} - engines: {node: '>=20.18.0'} - hasBin: true - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/fast-stable-stringify@6.10.0': - resolution: {integrity: sha512-iCNed27wk6PKSS3QUtHovRfMWF/jbVWogs2vB4tukKUCsqG4rDfDInIwZ6ur/nY6XTrgi2gMMdZq9GAUlWsbfw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/fast-stable-stringify@7.0.0': - resolution: {integrity: sha512-i/b5ZJMqMJXa6etjypANa2/ErPZfNG9/EVIYl7HpWooyCRgZ8hZJmJ2Cgrp0r4EMXCLeWn4aEG2HOBTzOJ4F7Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/fixed-points@6.10.0': - resolution: {integrity: sha512-ZkKL0alXH3L7/wMiVG8YUuG8qBKunlM810+YBD7nUPRhifiGsX1zwADViHLYNqLr/jUk0mTYFUcKznTpB/K+Gg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/fixed-points@7.0.0': - resolution: {integrity: sha512-Y3gcyHTponi5kXpWVEJIhuZ7yT84N+8He4dbjXWqwMBJnzKM+4tqFCbzy6y+6+Jxt44RT1lDmbpxmZopFRXU8Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/functional@6.10.0': - resolution: {integrity: sha512-P8cevu4mAqHTXC37h1TVoOh8zhWB2tlOI/R9vWjYPpcLwcyWf8p2qq4LEGHl5kY+1C+4PNX39HsmCocXOPCDkQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/functional@7.0.0': - resolution: {integrity: sha512-ix9fzYhc2hCLiYf+hGI00mzzayANKDExEBxbwrtMj/BdQkwgUIvIlOssqHeSqDChL3UZhq9lR24Nz4JwYX8Jbw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/instruction-plans@6.10.0': - resolution: {integrity: sha512-YG7mo4zykzdc6ZTV0BuN6pveK9qeBySzlYYerq578A4eQu3xcypMAYRGAvhMZtWTanjjmD6CKtM0M7kVp0TNxg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/instruction-plans@7.0.0': - resolution: {integrity: sha512-uzXHztc8hLoT5TNWFsBX2DIETyp/Lr2l36O330s3YCgpRmfI4IRbBrjjq7TxDYFm/QY8+DD4CRG8p7wZSqG8dQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/instructions@6.10.0': - resolution: {integrity: sha512-0TToYF+8LXQ3ofPMx+yF6yaM9l4YJvcAPMy0qV5JsrBUFlWXBSANRuudKBQLHMvb+a3OiUTq5X7omuorKMBB3A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/instructions@7.0.0': - resolution: {integrity: sha512-ZN0gKAtCOKDuIaStcvLZDf5H20fkk7jr4dZE0Rk7z0kslf6mrRam9Y23N6AzeHp/b5ZeVKyfaTf4M35mOktLNg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/keys@6.10.0': - resolution: {integrity: sha512-26IRfdm/hTUCmM7MeEeX0ULSbCM6OzkZTkfkrPircqmRM7xyNqP4hq7u0P7wjb9dl7NfgyG6K7cdvUxrj2e3mA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/keys@7.0.0': - resolution: {integrity: sha512-JsdYR/YN3AGHZN2aZoeE5cymHYkNoBLnqgXoRncW/VyD7fMcR350aHU1hCMYd0b5BtITLsGmvvtvrgVkzK83Eg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/kit@6.10.0': - resolution: {integrity: sha512-/WnnQp3uARh2JCFSfAakejTAqwmXVuMVTcRn5r2yDwY2yzZ4R6mt/Cl59VPimVLNSoTyN/KsEwhv9omr3ERazQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/kit@7.0.0': - resolution: {integrity: sha512-ZCeai4LRJQooUmJXvpgMEGFTrCdJnV1ODbDJ8oqFZ+Y4t/9x1baQsFFpruqsdRyeGv2Rr+X6jV7cldVD+hyzRA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/nominal-types@6.10.0': - resolution: {integrity: sha512-9ykyBBvnkInH7fCacjJi7zu2PJyd+OCt+VTjIISv070fHzKIMFqZqJJ/dJ0SRH2aHwfB3n86iVsmtBtuxi4KKA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/nominal-types@7.0.0': - resolution: {integrity: sha512-ff21hmKKMckDkGWah9tRXsEyFCtSnkugH+EMLGJOn7tiXdtFljOXW5Q12IXyeil87EE8aWb1MS6p8v5+hi71Vg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/offchain-messages@6.10.0': - resolution: {integrity: sha512-RiEgAueeMkFMC1suOXBIcmCZgtXRxy24yk0DldPB37bB4zwOF1SAaRjNRPjIkGK8RhCYrEpPosnzLyavw9ueRg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/offchain-messages@7.0.0': - resolution: {integrity: sha512-fGrzxmqVStweGHRlXVAPKACdDboFCwXq5m8C+aD9Nupax6Q9rnvjICzYRLypwqB9X90XIZazh0ys+0KGLMpIJQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/options@6.10.0': - resolution: {integrity: sha512-RO9UT3UYD8/Cu2uM6ZXbKvLeMnVD42+g9JRds7Pfs4AhiOyg4R4TJrQUAppTgavPTO3PBRlWtWOC05ZH/yAIbg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/options@7.0.0': - resolution: {integrity: sha512-6DhvMqRcL3mG0R5JejYIW5PDTDr7HcLX2R9iCs6OPN1HdsyXmE2rX2EldnuA0rYz1buOodeWYsu4N1lpDcEpaQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/plugin-core@6.10.0': - resolution: {integrity: sha512-JE70YTQOfFACVFGvoJon4Scc/eHUWjMu8Ovo35CcV2kHTAHYMCd4UkBd2gmlhK0vRMMomsQi1ZLPlAlTq0OoUQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/plugin-core@7.0.0': - resolution: {integrity: sha512-EwTUfOGoQQ3aXooRlQFVbk+sJW7NqJl1K+bmSLiJUjaBTSqtbr3GtMu7aoybJqzZQKjOGSG4Hn0BzK24SvWy3A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/plugin-interfaces@6.10.0': - resolution: {integrity: sha512-vr0/l9wcM4orwGr8cjkFWaJ9A4HvzuAv00jMFNMg0Spd0GZqnwnpW+D/fXa1lIJnTRaF3EeEjLh4VjKU037T0Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/plugin-interfaces@7.0.0': - resolution: {integrity: sha512-fz/HknZLGnVIjhjXrMzW3Qm1x80oeEMSOk4RzMwjcyAEyfzhHtGNW74NsU5W+uFpYz6UBbV5mB1jpuAdJdnj9A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/program-client-core@6.10.0': - resolution: {integrity: sha512-4PPbTLdC1ylHIuvhOFDP8RnSkXPCFjNFWGslzc+UFKnoR4ajzBcByX94jmaruDMk5ncxgj7tr9pzJTvfGHIaMA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/program-client-core@7.0.0': - resolution: {integrity: sha512-+N8HImlR3MTbbvhOShsLelQXGZKbi6KhPhyy+4ZkDLbnRs4QikTamIChXZmoCyxB51S8/9cNRAKyQhbeF5Y8Qg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/programs@6.10.0': - resolution: {integrity: sha512-qn/HeLP5KGUJXVub3fyGe69/rWaLX4jzwm6V/1pNxJDbdF+MBdgn18hP6F+VmhfdNmwK0lue3J/1HQ1UTMuQeQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/programs@7.0.0': - resolution: {integrity: sha512-a1HNgzr9YiiZ8vK4VaKHEXjnZmKX7W5ab2ghuseIalEw/+PJLFcTRTOw8n3efRu677b/bG2Icmb3MBBEXmvbPg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/promises@6.10.0': - resolution: {integrity: sha512-oJSIn+VBBMWDo8oqw7RV3tI6Jih+Ieup6FcQLYLDUriaeo7+8l1Zdezl8zh7SIfeU4lOfAbRg6mR0huaS/Lltg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/promises@7.0.0': - resolution: {integrity: sha512-rjoHnaR4zeEIHqIzfgotxRrLKqY4Goj0G5duZOnjHm8ZC+7eDkH5/mXj1bDJ4ROM70dVM+y1Xkrjg7IL6k6StA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-api@6.10.0': - resolution: {integrity: sha512-RjPIVsAb/85P1ptoO3WpC0x7QG6gG/e4q/3lo6gbSznUZOcoM+8sSBnCX7BwP1ZkCDS6NK/ClXLnhhhYZx+OGg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-api@7.0.0': - resolution: {integrity: sha512-MTtBO883st83CjWpo8B4g8EKzXaeoBX5N7+sv4vcvsn2q1NpY4SG3XejdX1FrKeTe9Xjbv0/FzFtykstbKe1UA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-parsed-types@6.10.0': - resolution: {integrity: sha512-5275mvSV1mxhwvrMVa+K7BU/nAetpHfcb+8Ql9rtA8RRf6DyiimFQFZUukE4Ez6XJihEpCHNy98yhkgai9wytQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-parsed-types@7.0.0': - resolution: {integrity: sha512-80VjPbB/TZ/Hy5qdRF7onPfMPHk5cwBVbtNUGbilrmFuqRzSvzSOY1ynNXXODPZBytNmPq7u7oJfSCsQ5MA9Ig==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-spec-types@6.10.0': - resolution: {integrity: sha512-NDZrKyZrJk4HaMFhTE/lAiMB824cWAodKqDHyKi0UteHU9pyRmil3BN1jt7e+j08mwMWwfklSgyrTaq52g6DIQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-spec-types@7.0.0': - resolution: {integrity: sha512-V4Hp2//fW8eYq1zcGgHPu7FXKHyIWERBQd4+NRaKn2m8rPiVAm3pVRwPzSvVE0+8Nyf5qzdcfcMf7NQdhl6j7Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-spec@6.10.0': - resolution: {integrity: sha512-yQdbWw5mZEWrwsunHR9NHkuhMXIB9sPOObwm18D53v5tAJnxTB0IcHvO647XqFDLTK/yQ4AdDtlYD1vsY07AMQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-spec@7.0.0': - resolution: {integrity: sha512-GRGlXpLgap9yVh3qmCl4huuKAoLMp/p82/9Q9ONj6lmFH+RqJE4Q+16V+HxHI5ZakmwZYoVZU4GEKjumse9SCg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-api@6.10.0': - resolution: {integrity: sha512-CRPQoTtT1cOwOQUsqS7jgo7wYdAj7jB5ab/UmMPWVpecf2FNMhWhgvxP2s82M7VkDGTGl13qaQ0WySmi7Egrlg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-api@7.0.0': - resolution: {integrity: sha512-o2PZDeNC/kg3VO3ry4R0JySJ1xMHLchZwmzVwamxGidlLe9uvzm6CHlCqv/JCq4/zHLo7qbLqnmOckZ6vlDqaw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-channel-websocket@6.10.0': - resolution: {integrity: sha512-KkqP1186HELPlJftA88SNAT2znR8knCVzsUipXVzY4zfW8sN3LOa0ePMzh9VZ/V+J+raTt55laR87ovAO0n+zw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-channel-websocket@7.0.0': - resolution: {integrity: sha512-79ecXBCT2pG+vXNBZim80vUz+B04L1mEduXobBIXM55VvxsHYT+4H4V+/ZHoFJUK6Lhbt+6zhpconx8Wa3H+JA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-spec@6.10.0': - resolution: {integrity: sha512-nWMwGaG4ulzeX2sskY5TywXF3cwEd8FDmUpLe2JBWxE8XDAOGOKcsYPYFcBgb8ee9KqfPT2PTNdcz9jOhJf34w==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-spec@7.0.0': - resolution: {integrity: sha512-Oips5ciWqPGO5Cx7hcEQ/czbcrUjPf+4cTam0UMrK3BnvHPcEAWkPYlIgabQiqa60/pjOOz7B936oMXA5XwL+g==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions@6.10.0': - resolution: {integrity: sha512-6mfuHp/K7unFKCOTCCBC9ziEGnxe2tyJ74EbR51QUnBeCUdYD7Hhdpxic1WRSJ3UeNW/mG4OzFM6z8Wi64Eh9Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions@7.0.0': - resolution: {integrity: sha512-jLNjUCGBbCIfABqqHopNJIeAkhd4GzhbodgCH4x2X+S0ycBaERX393+k+fG8JPJpGujkmeQFBCeIKO3lK+PoYg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-transformers@6.10.0': - resolution: {integrity: sha512-2nFUrVTiE720pJOY4XKx3HuYmishw0of/4oScu76YGm6O8wsmvFvPNAkrEinmieWXQkfpBfRvLZmpl8PaAy+ug==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-transformers@7.0.0': - resolution: {integrity: sha512-NHkTKC2J4oaMMzyOtIEDOLCGtzg1Y8vlPoBmUeA82o+DNjBSiZLR2Ariy7n7chmwKchCZ8aGirBxjLCSRc6b/g==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-transport-http@6.10.0': - resolution: {integrity: sha512-JrdNuYi0nBbD3X8JUtgX1dQJwIwz/WJvmigDdELysXfGB2bTJpfjqGDLhCLOz2sRl66FASIEqgG/LVa2C9VXcA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-transport-http@7.0.0': - resolution: {integrity: sha512-W0G15BN0xljXzRRo/ZwepJNiOjKhRImF5SxhjZauh2yVBoUjfd6NSCmYcdWu0tj9lypKKrB1ReS4oPmb4yCHbA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-types@6.10.0': - resolution: {integrity: sha512-zaSecTfCPvz/vcoAmKD6XoRstGHTr1EKJBD8T9UcpEFFB6CtF6DxerDB+wrzkamuT6msmnR2DWXMrYOGDAsgIg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-types@7.0.0': - resolution: {integrity: sha512-Lf2csFSWHwN/8EL03uWfS7n1J19vWLK4DBGkQ5jebRhoJ3dD+xPcJtS+epI2281t5aghJvoV7D+RIM0NextZJg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc@6.10.0': - resolution: {integrity: sha512-EwxsqoD+NXV+m+iobnWNtATD93gTgaNsOiQOzYB1/2e+8S6fl6obdNPB55yfXgtl4jt6GV6/ae4xuPhLv76vvg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc@7.0.0': - resolution: {integrity: sha512-hCf4XEhspsNb8TnQ+E961+rBuJcTyrmwNr4LDfVHEeO/VTqaN+yVwAI1wpxcnzwc+T4OoXcyujNiQWhVZPOhiA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/signers@6.10.0': - resolution: {integrity: sha512-+vtCc+mT1FpGxrA5oL2aaMxSHiMJ2hH5PcDIfjo2XJkHz2klZiCZyT5F9+zpltc9vdi1QTElQq59Sfplmtd33A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/signers@7.0.0': - resolution: {integrity: sha512-4E3xYQ0b9OZCTLghqfeHh66lfipy3jV1REdFJLk9WqPBaXVa/wSgGGIqZVa744ATSd9AeEfL/I5n/LrMNQOhoA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/subscribable@6.10.0': - resolution: {integrity: sha512-VsR6XMwkiDBkZJUcoGkEOhf397pOV75gKCL9Bx8bpi2T3Bbs0CxUpMn4yaUgAnRba3eXmjbXMNCXjttfa6sKbw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/subscribable@7.0.0': - resolution: {integrity: sha512-dJQA5AxDv/7YxuNe7GXIkaOUNhXczFaL3/SNOvXe7k77bC4dx4HPkySfcVDfEWBOePe3+8iyVbT8DZ3aOcp8Ng==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/sysvars@6.10.0': - resolution: {integrity: sha512-cG13p1+onxz+20iWjwWQr1Z1jQwPm0fnjoW75fqZq7p4rVCie3L2sXvaJsYPjWKrUvpOzOIEHnqZGkG05rCpjg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/sysvars@7.0.0': - resolution: {integrity: sha512-GKND6hCcBcrak3/VAtx6aEoAi9wQjJQzU2Fcu6JYmnTjGe5MHf21FqbjGl0aQ0C2HlJQQJmA07wgsuOiYDTDog==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-confirmation@6.10.0': - resolution: {integrity: sha512-ULvtg65qfenh4T/GYcIlKSUv5EqDcng9UN0dxbHU4kuZdR2e0B8HN2xDC4WhcFQVeFJSbTZmaYFkeTY/Y4gfGQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-confirmation@7.0.0': - resolution: {integrity: sha512-SaU2CY9ZDJGK47DtQ7xwKFmbgzDGqIN/Ug89ZSUzDPD9QdMRXhtxgH8KZgb0gSgpyel85sSt0QH9wkWzhp69ow==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-introspection@7.0.0': - resolution: {integrity: sha512-aO+5ewxGaziXYcXJZ6F3doq/KI1L3WU2z5eCjs4DBO0kRQBHp4bH6ZKygVX2JIxOZrd1rB9SxP/CCCX2wRm8Xw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-messages@6.10.0': - resolution: {integrity: sha512-s7v8G3BTxGlKYIj3eWCG0g1296v+1LBt16mVnlRH5FuyaJ5AdhlhtRho5HUDpdwE8EXun+y1c48V6uhcZ8wdbQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-messages@7.0.0': - resolution: {integrity: sha512-qCBYR3QQvykcI36vnqwI5090hGXS3mmCe72b/f/n9kBsBaA2oowdBXZupB1wwKe8+6x8o8VkhKQaK9oTKKbWTg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transactions@6.10.0': - resolution: {integrity: sha512-VADSqP9OTYmhrox4pcgDd4+RjVmednXSE0+8Y7SPK4PN1pK5Az2RJ0nSsy0xcTnaOr8mF/crwFktqPrRQwSbQA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transactions@7.0.0': - resolution: {integrity: sha512-y5nayd2Ozld/4Bxefz50e/E6qxyZteuZCZ7suh7z96KY6QUJlZDR+eCG1v/lA7Azt3GSOevJuYFX/ept/mqZkw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - - '@types/mocha@10.0.10': - resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} - - '@types/node@26.1.2': - resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.3: - resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} - engines: {node: '>=12'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - brace-expansion@2.1.4: - resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@6.2.2: - resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} - engines: {node: '>=18'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.6.2: - resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@15.0.0: - resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} - engines: {node: '>=22.12.0'} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - diff@7.0.0: - resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} - engines: {node: '>=0.3.1'} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - esbuild@0.28.1: - resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - glob@10.5.0: - resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - hasBin: true - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - js-yaml@4.3.1: - resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} - hasBin: true - - litesvm-darwin-arm64@1.3.0: - resolution: {integrity: sha512-fj6cV/ofjMXdl5CwjyyLTQnZObfVH5HYDScQ6O44iRqxASmgEyEh4sC8a7M0YZ1rcli9nu2cWl5ARGura89I7Q==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [darwin] - - litesvm-darwin-x64@1.3.0: - resolution: {integrity: sha512-ZYEddnc+tAn8sVYpzvww0oHFiekbCSv+0OZiA6eUDtcSx9uzeRDmPPQ9eI6vgyews2LefBDSENmUb70GHY6Cqg==} - engines: {node: '>= 20'} - cpu: [x64] - os: [darwin] - - litesvm-linux-arm64-gnu@1.3.0: - resolution: {integrity: sha512-kmmKeef96pJI4AJGCvjzMCW6QHuzFrMF1i6dE6OcrtWHaz0Ag+TFaKOU35H1bjH/fDBwoJUV9UbaIbdWht81tA==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - litesvm-linux-arm64-musl@1.3.0: - resolution: {integrity: sha512-FO9p6rx+/3h7R3CU7lkOebL+jy8UEDngSrENHu7pj9EOr78QVyE3Fm0O+WMnwXpMoCSgW0XLhu1cI9NHAbzCTA==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [linux] - libc: [musl] - - litesvm-linux-x64-gnu@1.3.0: - resolution: {integrity: sha512-yXC8ZAdIei9JQ2xw5/BocOTu/7EqZuFPyhgENQ1mYDhjNpoyUbIuGCWnqtria14mDda0aV9yVev8plGUrUpjUw==} - engines: {node: '>= 20'} - cpu: [x64] - os: [linux] - libc: [glibc] - - litesvm-linux-x64-musl@1.3.0: - resolution: {integrity: sha512-oedromp1gTjShXmKmxZ1FYtnfM824vRcrPSPvGM0CrqJqKK61m1+tFwNRAVsDlpmWKvO/zsz90ctbgAUo/3TXg==} - engines: {node: '>= 20'} - cpu: [x64] - os: [linux] - libc: [musl] - - litesvm@1.3.0: - resolution: {integrity: sha512-tMu9sBIqSbF1gQluXEUtGmXPfZlMc10tOoBVeDokgK77nl/CcuC506sEoFKM5Rq58Dkb070lBMVBLc43TbMUzQ==} - engines: {node: '>= 20'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - minimatch@9.0.9: - resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass@7.1.3: - resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} - engines: {node: '>=16 || 14 >=14.17'} - - mocha@11.8.0: - resolution: {integrity: sha512-VyCeUdGN3A9lmCTTgG4yuvY9ixxaDk+xt2R/7/+1AP6EqNG+G9OKkzBwhVtVYoNX8YsxNSgAl8mOv3IAeOpFbw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.2.0: - resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} - engines: {node: '>=12'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - tsx@4.23.5: - resolution: {integrity: sha512-rw55FUaqOoI7RvlQwLbhO4nSDApnQ4/CykPuiQ/EPvtrX3WA9Ig55jIt9VvbBJbzJuj12ueRu4PMZ2SxPVbihg==} - engines: {node: '>=18.0.0'} - hasBin: true - - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@8.10.0: - resolution: {integrity: sha512-ibvdovq3nCFs8Msrd95BW+zUOq+aOVbT+wpHUoPWhztbHEoPc6oof51iFDB6Es8lTKvNvVW9jNSAB8dwrKTMGg==} - - undici-types@8.3.0: - resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - workerpool@9.3.4: - resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - ws@8.21.1: - resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@17.7.3: - resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} - engines: {node: '>=12'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@esbuild/aix-ppc64@0.28.1': - optional: true - - '@esbuild/android-arm64@0.28.1': - optional: true - - '@esbuild/android-arm@0.28.1': - optional: true - - '@esbuild/android-x64@0.28.1': - optional: true - - '@esbuild/darwin-arm64@0.28.1': - optional: true - - '@esbuild/darwin-x64@0.28.1': - optional: true - - '@esbuild/freebsd-arm64@0.28.1': - optional: true - - '@esbuild/freebsd-x64@0.28.1': - optional: true - - '@esbuild/linux-arm64@0.28.1': - optional: true - - '@esbuild/linux-arm@0.28.1': - optional: true - - '@esbuild/linux-ia32@0.28.1': - optional: true - - '@esbuild/linux-loong64@0.28.1': - optional: true - - '@esbuild/linux-mips64el@0.28.1': - optional: true - - '@esbuild/linux-ppc64@0.28.1': - optional: true - - '@esbuild/linux-riscv64@0.28.1': - optional: true - - '@esbuild/linux-s390x@0.28.1': - optional: true - - '@esbuild/linux-x64@0.28.1': - optional: true - - '@esbuild/netbsd-arm64@0.28.1': - optional: true - - '@esbuild/netbsd-x64@0.28.1': - optional: true - - '@esbuild/openbsd-arm64@0.28.1': - optional: true - - '@esbuild/openbsd-x64@0.28.1': - optional: true - - '@esbuild/openharmony-arm64@0.28.1': - optional: true - - '@esbuild/sunos-x64@0.28.1': - optional: true - - '@esbuild/win32-arm64@0.28.1': - optional: true - - '@esbuild/win32-ia32@0.28.1': - optional: true - - '@esbuild/win32-x64@0.28.1': - optional: true - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.2.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@solana-program/system@0.12.2(@solana/kit@6.10.0(typescript@5.9.3))': - dependencies: - '@solana/kit': 6.10.0(typescript@5.9.3) - - '@solana-program/token@0.14.0(@solana/kit@6.10.0(typescript@5.9.3))': - dependencies: - '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) - '@solana/kit': 6.10.0(typescript@5.9.3) - - '@solana/accounts@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/accounts@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/addresses@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/assertions': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/addresses@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/assertions': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/assertions@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/assertions@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-core@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-core@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-data-structures@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-data-structures@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-numbers@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-numbers@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-strings@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-strings@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/fixed-points': 6.10.0(typescript@5.9.3) - '@solana/options': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/codecs@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/fixed-points': 7.0.0(typescript@5.9.3) - '@solana/options': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/errors@6.10.0(typescript@5.9.3)': - dependencies: - chalk: 5.6.2 - commander: 15.0.0 - optionalDependencies: - typescript: 5.9.3 - - '@solana/errors@7.0.0(typescript@5.9.3)': - dependencies: - chalk: 5.6.2 - commander: 15.0.0 - optionalDependencies: - typescript: 5.9.3 - - '@solana/fast-stable-stringify@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/fast-stable-stringify@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/fixed-points@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/fixed-points@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/functional@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/functional@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/instruction-plans@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/instruction-plans@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/instructions@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/instructions@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/keys@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/assertions': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/keys@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/assertions': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/kit@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 6.10.0(typescript@5.9.3) - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/instruction-plans': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/offchain-messages': 6.10.0(typescript@5.9.3) - '@solana/plugin-core': 6.10.0(typescript@5.9.3) - '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) - '@solana/program-client-core': 6.10.0(typescript@5.9.3) - '@solana/programs': 6.10.0(typescript@5.9.3) - '@solana/rpc': 6.10.0(typescript@5.9.3) - '@solana/rpc-api': 6.10.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/signers': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - '@solana/sysvars': 6.10.0(typescript@5.9.3) - '@solana/transaction-confirmation': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/kit@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 7.0.0(typescript@5.9.3) - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/instruction-plans': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/offchain-messages': 7.0.0(typescript@5.9.3) - '@solana/plugin-core': 7.0.0(typescript@5.9.3) - '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) - '@solana/program-client-core': 7.0.0(typescript@5.9.3) - '@solana/programs': 7.0.0(typescript@5.9.3) - '@solana/rpc': 7.0.0(typescript@5.9.3) - '@solana/rpc-api': 7.0.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/signers': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - '@solana/sysvars': 7.0.0(typescript@5.9.3) - '@solana/transaction-confirmation': 7.0.0(typescript@5.9.3) - '@solana/transaction-introspection': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/nominal-types@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/nominal-types@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/offchain-messages@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/offchain-messages@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/options@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/options@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/plugin-core@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/plugin-core@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/plugin-interfaces@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/instruction-plans': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/signers': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/plugin-interfaces@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/instruction-plans': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/signers': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/program-client-core@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 6.10.0(typescript@5.9.3) - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/instruction-plans': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) - '@solana/rpc-api': 6.10.0(typescript@5.9.3) - '@solana/signers': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/program-client-core@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 7.0.0(typescript@5.9.3) - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/instruction-plans': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) - '@solana/rpc-api': 7.0.0(typescript@5.9.3) - '@solana/signers': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/programs@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/programs@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/promises@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/promises@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-api@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-api@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-parsed-types@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-parsed-types@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-spec-types@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-spec-types@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-spec@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-spec@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-subscriptions-api@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-subscriptions-api@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-subscriptions-channel-websocket@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - ws: 8.21.1 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@solana/rpc-subscriptions-channel-websocket@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - ws: 8.21.1 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@solana/rpc-subscriptions-spec@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-subscriptions-spec@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-subscriptions@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-api': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-channel-websocket': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/rpc-subscriptions@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-api': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-channel-websocket': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/rpc-transformers@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-transformers@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-transport-http@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - undici-types: 8.10.0 - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-transport-http@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - undici-types: 8.10.0 - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-types@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/fixed-points': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-types@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/fixed-points': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/rpc-api': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) - '@solana/rpc-transport-http': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/rpc-api': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) - '@solana/rpc-transport-http': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/signers@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/offchain-messages': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/signers@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/offchain-messages': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/subscribable@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/subscribable@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/sysvars@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/sysvars@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transaction-confirmation@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - '@solana/rpc': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/transaction-confirmation@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - '@solana/rpc': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/transaction-introspection@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/rpc-api': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transaction-messages@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transaction-messages@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transactions@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transactions@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@types/chai@5.2.3': - dependencies: - '@types/deep-eql': 4.0.2 - assertion-error: 2.0.1 - - '@types/deep-eql@4.0.2': {} - - '@types/mocha@10.0.10': {} - - '@types/node@26.1.2': - dependencies: - undici-types: 8.3.0 - - ansi-regex@5.0.1: {} - - ansi-regex@6.2.2: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.3: {} - - argparse@2.0.1: {} - - assertion-error@2.0.1: {} - - balanced-match@1.0.2: {} - - brace-expansion@2.1.4: - dependencies: - balanced-match: 1.0.2 - - browser-stdout@1.3.1: {} - - camelcase@6.3.0: {} - - chai@6.2.2: {} - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.6.2: {} - - chokidar@4.0.3: - dependencies: - readdirp: 4.1.2 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@15.0.0: {} - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - debug@4.4.3(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - diff@7.0.0: {} - - eastasianwidth@0.2.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - esbuild@0.28.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.28.1 - '@esbuild/android-arm': 0.28.1 - '@esbuild/android-arm64': 0.28.1 - '@esbuild/android-x64': 0.28.1 - '@esbuild/darwin-arm64': 0.28.1 - '@esbuild/darwin-x64': 0.28.1 - '@esbuild/freebsd-arm64': 0.28.1 - '@esbuild/freebsd-x64': 0.28.1 - '@esbuild/linux-arm': 0.28.1 - '@esbuild/linux-arm64': 0.28.1 - '@esbuild/linux-ia32': 0.28.1 - '@esbuild/linux-loong64': 0.28.1 - '@esbuild/linux-mips64el': 0.28.1 - '@esbuild/linux-ppc64': 0.28.1 - '@esbuild/linux-riscv64': 0.28.1 - '@esbuild/linux-s390x': 0.28.1 - '@esbuild/linux-x64': 0.28.1 - '@esbuild/netbsd-arm64': 0.28.1 - '@esbuild/netbsd-x64': 0.28.1 - '@esbuild/openbsd-arm64': 0.28.1 - '@esbuild/openbsd-x64': 0.28.1 - '@esbuild/openharmony-arm64': 0.28.1 - '@esbuild/sunos-x64': 0.28.1 - '@esbuild/win32-arm64': 0.28.1 - '@esbuild/win32-ia32': 0.28.1 - '@esbuild/win32-x64': 0.28.1 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - fsevents@2.3.3: - optional: true - - get-caller-file@2.0.5: {} - - glob@10.5.0: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.9 - minipass: 7.1.3 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - has-flag@4.0.0: {} - - he@1.2.0: {} - - is-fullwidth-code-point@3.0.0: {} - - is-path-inside@3.0.3: {} - - is-plain-obj@2.1.0: {} - - is-unicode-supported@0.1.0: {} - - isexe@2.0.0: {} - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - js-yaml@4.3.1: - dependencies: - argparse: 2.0.1 - - litesvm-darwin-arm64@1.3.0: - optional: true - - litesvm-darwin-x64@1.3.0: - optional: true - - litesvm-linux-arm64-gnu@1.3.0: - optional: true - - litesvm-linux-arm64-musl@1.3.0: - optional: true - - litesvm-linux-x64-gnu@1.3.0: - optional: true - - litesvm-linux-x64-musl@1.3.0: - optional: true - - litesvm@1.3.0(typescript@5.9.3): - dependencies: - '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) - '@solana-program/token': 0.14.0(@solana/kit@6.10.0(typescript@5.9.3)) - '@solana/kit': 6.10.0(typescript@5.9.3) - optionalDependencies: - litesvm-darwin-arm64: 1.3.0 - litesvm-darwin-x64: 1.3.0 - litesvm-linux-arm64-gnu: 1.3.0 - litesvm-linux-arm64-musl: 1.3.0 - litesvm-linux-x64-gnu: 1.3.0 - litesvm-linux-x64-musl: 1.3.0 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - lru-cache@10.4.3: {} - - minimatch@9.0.9: - dependencies: - brace-expansion: 2.1.4 - - minipass@7.1.3: {} - - mocha@11.8.0: - dependencies: - browser-stdout: 1.3.1 - chokidar: 4.0.3 - debug: 4.4.3(supports-color@8.1.1) - diff: 7.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 10.5.0 - he: 1.2.0 - is-path-inside: 3.0.3 - js-yaml: 4.3.1 - log-symbols: 4.1.0 - minimatch: 9.0.9 - ms: 2.1.3 - picocolors: 1.1.1 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 9.3.4 - yargs: 17.7.3 - yargs-parser: 21.1.1 - yargs-unparser: 2.0.0 - - ms@2.1.3: {} - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - package-json-from-dist@1.0.1: {} - - path-exists@4.0.0: {} - - path-key@3.1.1: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.3 - - picocolors@1.1.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@4.1.2: {} - - require-directory@2.1.1: {} - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - signal-exit@4.1.0: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.2.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.2.0: - dependencies: - ansi-regex: 6.2.2 - - strip-json-comments@3.1.1: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - tsx@4.23.5: - dependencies: - esbuild: 0.28.1 - optionalDependencies: - fsevents: 2.3.3 - - typescript@5.9.3: {} - - undici-types@8.10.0: {} - - undici-types@8.3.0: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - workerpool@9.3.4: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.3 - string-width: 5.1.2 - strip-ansi: 7.2.0 - - ws@8.21.1: {} - - y18n@5.0.8: {} - - yargs-parser@21.1.1: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@17.7.3: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yocto-queue@0.1.0: {} diff --git a/cryptography/bls-key-registry/pinocchio/program/Cargo.toml b/cryptography/bls-key-registry/pinocchio/program/Cargo.toml deleted file mode 100644 index 044c42745..000000000 --- a/cryptography/bls-key-registry/pinocchio/program/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "bls-key-registry-pinocchio-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[features] -no-entrypoint = [] - -[dependencies] -pinocchio.workspace = true -solana-address.workspace = true - -[lints.rust] -unexpected_cfgs = { level = "warn", check-cfg = ['cfg(target_os, values("solana"))'] } - -[dev-dependencies] -litesvm = "0.15" -solana-account = "4.3" -solana-instruction = "3.4" -solana-keypair = "3.1" -solana-native-token = "3.0" -solana-signer = "3.0" -solana-transaction = "4.1" diff --git a/cryptography/bls-key-registry/pinocchio/program/src/lib.rs b/cryptography/bls-key-registry/pinocchio/program/src/lib.rs deleted file mode 100644 index 24626dc7e..000000000 --- a/cryptography/bls-key-registry/pinocchio/program/src/lib.rs +++ /dev/null @@ -1,155 +0,0 @@ -#![no_std] - -use pinocchio::{error::ProgramError, nostd_panic_handler, AccountView, Address, ProgramResult}; - -pinocchio::address::declare_id!("94pF5VGFSahHcn26w7UTntbo4p6yKk7G7ppLkYuVeJWN"); - -#[cfg(not(feature = "no-entrypoint"))] -pinocchio::entrypoint!(process_instruction); - -nostd_panic_handler!(); - -pub const G2_POINT_SIZE: usize = 192; -const COUNT_PREFIX: usize = 2; - -const BLS12_381_G2: u64 = 6 | 0x80; -const GROUP_OP_ADD: u64 = 0; -const GROUP_OP_SUB: u64 = 1; - -#[derive(Clone, Copy, Debug, PartialEq)] -pub enum BlsKeyRegistryError { - InvalidInputLength, - SyscallFailed, - SyscallUnavailable, - InvalidRegistryAccount, - RegistryEmpty, -} - -impl From for ProgramError { - fn from(e: BlsKeyRegistryError) -> Self { - ProgramError::Custom(e as u32) - } -} - -pub fn process_instruction( - program_id: &Address, - accounts: &mut [AccountView], - instruction_data: &[u8], -) -> ProgramResult { - let (discriminator, input) = instruction_data.split_first().ok_or(ProgramError::InvalidInstructionData)?; - - match discriminator { - 0 => process_add(program_id, accounts, input), - 1 => process_remove(program_id, accounts, input), - _ => Err(ProgramError::InvalidInstructionData), - } -} - -fn member_count(data: &[u8]) -> u16 { - u16::from_le_bytes([data[0], data[1]]) -} - -/// Validates account 0 as the registry account (writable, owned by this -/// program) and the instruction data as exactly one 192-byte G2 public key. -/// The account stores `[count: u16-le][aggregate: 192]`. -/// -/// This example deliberately omits access control to stay focused on the -/// curve syscalls: any caller can mutate a writable registry account, and the -/// lossy aggregate cannot prove that a removed key was ever a member. A -/// production registry needs an authority signer check and its own membership -/// bookkeeping. -fn registry_account<'a>( - program_id: &Address, - accounts: &'a mut [AccountView], - input: &[u8], -) -> Result<&'a mut AccountView, ProgramError> { - let account = accounts.first_mut().ok_or(ProgramError::NotEnoughAccountKeys)?; - if !account.is_writable() || !account.owned_by(program_id) { - return Err(BlsKeyRegistryError::InvalidRegistryAccount.into()); - } - if input.len() != G2_POINT_SIZE { - return Err(BlsKeyRegistryError::InvalidInputLength.into()); - } - Ok(account) -} - -/// Adds a BLS12-381 G2 public key (192 bytes) to the registry's aggregate key -/// via the G2 addition syscall. -pub fn process_add(program_id: &Address, accounts: &mut [AccountView], input: &[u8]) -> ProgramResult { - let account = registry_account(program_id, accounts, input)?; - let mut data = account.try_borrow_mut()?; - if data.len() < COUNT_PREFIX + G2_POINT_SIZE { - return Err(BlsKeyRegistryError::InvalidRegistryAccount.into()); - } - - let count = member_count(&data); - if count == 0 { - data[COUNT_PREFIX..COUNT_PREFIX + G2_POINT_SIZE].copy_from_slice(input); - } else { - let mut current = [0u8; G2_POINT_SIZE]; - current.copy_from_slice(&data[COUNT_PREFIX..COUNT_PREFIX + G2_POINT_SIZE]); - let mut updated = [0u8; G2_POINT_SIZE]; - curve_group_op(BLS12_381_G2, GROUP_OP_ADD, ¤t, input, &mut updated)?; - data[COUNT_PREFIX..COUNT_PREFIX + G2_POINT_SIZE].copy_from_slice(&updated); - } - data[..COUNT_PREFIX].copy_from_slice(&(count + 1).to_le_bytes()); - Ok(()) -} - -/// Removes a BLS12-381 G2 public key from the registry's aggregate key via the -/// G2 subtraction syscall (BLS12-381 has native subtraction). -pub fn process_remove(program_id: &Address, accounts: &mut [AccountView], input: &[u8]) -> ProgramResult { - let account = registry_account(program_id, accounts, input)?; - let mut data = account.try_borrow_mut()?; - if data.len() < COUNT_PREFIX + G2_POINT_SIZE { - return Err(BlsKeyRegistryError::InvalidRegistryAccount.into()); - } - - let count = member_count(&data); - if count == 0 { - return Err(BlsKeyRegistryError::RegistryEmpty.into()); - } - - if count == 1 { - data[COUNT_PREFIX..COUNT_PREFIX + G2_POINT_SIZE].fill(0); - } else { - let mut current = [0u8; G2_POINT_SIZE]; - current.copy_from_slice(&data[COUNT_PREFIX..COUNT_PREFIX + G2_POINT_SIZE]); - let mut updated = [0u8; G2_POINT_SIZE]; - curve_group_op(BLS12_381_G2, GROUP_OP_SUB, ¤t, input, &mut updated)?; - data[COUNT_PREFIX..COUNT_PREFIX + G2_POINT_SIZE].copy_from_slice(&updated); - } - data[..COUNT_PREFIX].copy_from_slice(&(count - 1).to_le_bytes()); - Ok(()) -} - -#[inline(always)] -fn curve_group_op( - curve_id: u64, - group_op: u64, - left: &[u8], - right: &[u8], - output: &mut [u8], -) -> Result<(), ProgramError> { - #[cfg(target_os = "solana")] - { - let code = unsafe { - pinocchio::syscalls::sol_curve_group_op( - curve_id, - group_op, - left.as_ptr(), - right.as_ptr(), - output.as_mut_ptr(), - ) - }; - match code { - 0 => Ok(()), - _ => Err(BlsKeyRegistryError::SyscallFailed.into()), - } - } - #[cfg(not(target_os = "solana"))] - { - let _ = (curve_id, group_op, left, right, output); - Err(BlsKeyRegistryError::SyscallUnavailable.into()) - } -} diff --git a/cryptography/bls-key-registry/pinocchio/program/tests/test.rs b/cryptography/bls-key-registry/pinocchio/program/tests/test.rs deleted file mode 100644 index c2204f31d..000000000 --- a/cryptography/bls-key-registry/pinocchio/program/tests/test.rs +++ /dev/null @@ -1,133 +0,0 @@ -use litesvm::LiteSVM; -use solana_account::Account; -use solana_address::Address; -use solana_instruction::{AccountMeta, Instruction}; -use solana_keypair::Keypair; -use solana_native_token::LAMPORTS_PER_SOL; -use solana_signer::Signer; -use solana_transaction::Transaction; - -const IX_ADD: u8 = 0; -const IX_REMOVE: u8 = 1; - -const G2_POINT: usize = 192; -const COUNT_PREFIX: usize = 2; - -// Big-endian BLS12-381 G2 keys and their running aggregates, taken from the -// crypto-primitives reference implementation. -const PUBKEY_1: &str = "13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb80606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be0ce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801"; -const PUBKEY_2: &str = "0a4edef9c1ed7f729f520e47730a124fd70662a904ba1074728114d1031e1572c6c886f6b57ec72a6178288c47c335771638533957d540a9d2370f17cc7ed5863bc0b995b8825e0ee1ea1e1e4d00dbae81f14b0bf3611b78c952aacab827a0530f6d4552fa65dd2638b361543f887136a43253d9c66c411697003f7a13c308f5422e1aa0a59c8967acdefd8b6e36ccf30468fb440d82b0630aeb8dca2b5256789a66da69bf91009cbfe6bd221e47aa8ae88dece9764bf3bd999d95d71e4c9899"; -const PUBKEY_3: &str = "09380275bbc8e5dcea7dc4dd7e0550ff2ac480905396eda55062650f8d251c96eb480673937cc6d9d6a44aaa56ca66dc122915c824a0857e2ee414a3dccb23ae691ae54329781315a0c75df1c04d6d7a50a030fc866f09d516020ef82324afae08f239ba329b3967fe48d718a36cfe5f62a7e42e0bf1c1ed714150a166bfbd6bcf6b3b58b975b9edea56d53f23a0e8490b21da7955969e61010c7a1abc1a6f0136961d1e3b20b1a7326ac738fef5c721479dfd948b52fdf2455e44813ecfd892"; -const AGG_1_2: &str = "09380275bbc8e5dcea7dc4dd7e0550ff2ac480905396eda55062650f8d251c96eb480673937cc6d9d6a44aaa56ca66dc122915c824a0857e2ee414a3dccb23ae691ae54329781315a0c75df1c04d6d7a50a030fc866f09d516020ef82324afae08f239ba329b3967fe48d718a36cfe5f62a7e42e0bf1c1ed714150a166bfbd6bcf6b3b58b975b9edea56d53f23a0e8490b21da7955969e61010c7a1abc1a6f0136961d1e3b20b1a7326ac738fef5c721479dfd948b52fdf2455e44813ecfd892"; -const AGG_1_2_3: &str = "03f4b4e761936d90fd5f55f99087138a07a69755ad4a46e4dd1c2cfe6d11371e1cc033111a0595e3bba98d0f538db45119e384121b7d70927c49e6d044fd8517c36bc6ed2813a8956dd64f049869e8a77f7e46930240e6984abe26fa6a89658f088bb5832f4a4a452edda646ebaa2853a54205d56329960b44b2450070734724a74daaa401879bad142132316e9b340117a31a4fccfb5f768a2157517c77a4f8aaf0dee8f260d96e02e1175a8754d09600923beae02a019afc327b65a2fdbbfc"; -const AGG_1_3: &str = "070227d3f13684fdb7ce31b8065ba3acb35f7bde6fe2ddfefa359f8b35d08a9ab9537b43e24f4ffb720b5a0bda2a82f20e7a30979a8853a077454eb63b8dcee75f106221b262886bb8e01b0abb043368da82f60899cc1412e33e4120195fc5570782c14e2c4ee61cbe7be6e462a66b2e3509f42d53ff333efc9bfe9a00307cd2f68b007606446d98a75fb808a405d8b90701377cb7da22789d032737eabcea2b2eee6bb4634c4365864511a43c2caad50422993ccd3e99636eb8a5f189454b18"; - -fn from_hex(s: &str) -> Vec { - (0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16).unwrap()).collect() -} - -fn setup() -> (LiteSVM, Address, Keypair) { - let program_id = Address::new_unique(); - let program_bytes = include_bytes!("../../tests/fixtures/bls_key_registry_pinocchio_program.so"); - - let mut svm = LiteSVM::new(); - svm.add_program(program_id, program_bytes).unwrap(); - - let payer = Keypair::new(); - svm.airdrop(&payer.pubkey(), LAMPORTS_PER_SOL).unwrap(); - (svm, program_id, payer) -} - -fn registry_account(svm: &mut LiteSVM, owner: Address, count: u16, aggregate: Option<&str>) -> Address { - let key = Address::new_unique(); - let mut data = vec![0u8; COUNT_PREFIX + G2_POINT]; - data[..COUNT_PREFIX].copy_from_slice(&count.to_le_bytes()); - if let Some(aggregate) = aggregate { - data[COUNT_PREFIX..].copy_from_slice(&from_hex(aggregate)); - } - svm.set_account(key, Account { lamports: 1_000_000_000, data, owner, ..Account::default() }).unwrap(); - key -} - -fn send( - svm: &mut LiteSVM, - program_id: Address, - payer: &Keypair, - discriminator: u8, - pubkey: &str, - registry: Address, -) -> Result<(), String> { - let mut data = vec![discriminator]; - data.extend_from_slice(&from_hex(pubkey)); - let ix = Instruction::new_with_bytes(program_id, &data, vec![AccountMeta::new(registry, false)]); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[payer], svm.latest_blockhash()); - match svm.send_transaction(tx) { - Ok(_) => Ok(()), - Err(failed) => Err(failed.err.to_string()), - } -} - -fn registry_data(count: u16, aggregate: &str) -> Vec { - let mut expected = count.to_le_bytes().to_vec(); - expected.extend_from_slice(&from_hex(aggregate)); - expected -} - -#[test] -fn add_first_member_stores_key_verbatim() { - let (mut svm, program_id, payer) = setup(); - let registry = registry_account(&mut svm, program_id, 0, None); - - send(&mut svm, program_id, &payer, IX_ADD, PUBKEY_1, registry).unwrap(); - assert_eq!(svm.get_account(®istry).unwrap().data, registry_data(1, PUBKEY_1)); -} - -#[test] -fn add_folds_members_into_running_aggregate() { - let (mut svm, program_id, payer) = setup(); - let registry = registry_account(&mut svm, program_id, 0, None); - - send(&mut svm, program_id, &payer, IX_ADD, PUBKEY_1, registry).unwrap(); - send(&mut svm, program_id, &payer, IX_ADD, PUBKEY_2, registry).unwrap(); - assert_eq!(svm.get_account(®istry).unwrap().data, registry_data(2, AGG_1_2)); - - send(&mut svm, program_id, &payer, IX_ADD, PUBKEY_3, registry).unwrap(); - assert_eq!(svm.get_account(®istry).unwrap().data, registry_data(3, AGG_1_2_3)); -} - -#[test] -fn remove_subtracts_member_from_aggregate() { - let (mut svm, program_id, payer) = setup(); - let registry = registry_account(&mut svm, program_id, 3, Some(AGG_1_2_3)); - - send(&mut svm, program_id, &payer, IX_REMOVE, PUBKEY_2, registry).unwrap(); - assert_eq!(svm.get_account(®istry).unwrap().data, registry_data(2, AGG_1_3)); -} - -#[test] -fn remove_last_member_zeroes_aggregate() { - let (mut svm, program_id, payer) = setup(); - let registry = registry_account(&mut svm, program_id, 1, Some(PUBKEY_1)); - - send(&mut svm, program_id, &payer, IX_REMOVE, PUBKEY_1, registry).unwrap(); - assert_eq!(svm.get_account(®istry).unwrap().data, vec![0u8; COUNT_PREFIX + G2_POINT]); -} - -#[test] -fn remove_from_empty_registry_is_rejected() { - let (mut svm, program_id, payer) = setup(); - let registry = registry_account(&mut svm, program_id, 0, None); - - let err = send(&mut svm, program_id, &payer, IX_REMOVE, PUBKEY_1, registry).unwrap_err(); - assert!(err.contains("custom program error: 0x4"), "unexpected error: {err}"); -} - -#[test] -fn foreign_account_is_rejected() { - let (mut svm, program_id, payer) = setup(); - let foreign_owner = Address::new_unique(); - let registry = registry_account(&mut svm, foreign_owner, 0, None); - - let err = send(&mut svm, program_id, &payer, IX_ADD, PUBKEY_1, registry).unwrap_err(); - assert!(err.contains("custom program error: 0x3"), "unexpected error: {err}"); -} diff --git a/cryptography/bls-key-registry/pinocchio/tests/bls-key-registry.test.ts b/cryptography/bls-key-registry/pinocchio/tests/bls-key-registry.test.ts deleted file mode 100644 index da77065dd..000000000 --- a/cryptography/bls-key-registry/pinocchio/tests/bls-key-registry.test.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { Buffer } from 'node:buffer'; -import { - AccountRole, - type Address, - appendTransactionMessageInstruction, - createTransactionMessage, - generateKeyPairSigner, - type KeyPairSigner, - lamports, - pipe, - setTransactionMessageFeePayerSigner, - signTransactionMessageWithSigners, -} from '@solana/kit'; -import { assert } from 'chai'; -import { FailedTransactionMetadata, LiteSVM, TransactionMetadata } from 'litesvm'; - -// Big-endian BLS12-381 G2 keys and their running aggregates, taken from the -// crypto-primitives reference implementation. -const PUBKEY_1 = - '13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb80606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be0ce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801'; -const PUBKEY_2 = - '0a4edef9c1ed7f729f520e47730a124fd70662a904ba1074728114d1031e1572c6c886f6b57ec72a6178288c47c335771638533957d540a9d2370f17cc7ed5863bc0b995b8825e0ee1ea1e1e4d00dbae81f14b0bf3611b78c952aacab827a0530f6d4552fa65dd2638b361543f887136a43253d9c66c411697003f7a13c308f5422e1aa0a59c8967acdefd8b6e36ccf30468fb440d82b0630aeb8dca2b5256789a66da69bf91009cbfe6bd221e47aa8ae88dece9764bf3bd999d95d71e4c9899'; -const PUBKEY_3 = - '09380275bbc8e5dcea7dc4dd7e0550ff2ac480905396eda55062650f8d251c96eb480673937cc6d9d6a44aaa56ca66dc122915c824a0857e2ee414a3dccb23ae691ae54329781315a0c75df1c04d6d7a50a030fc866f09d516020ef82324afae08f239ba329b3967fe48d718a36cfe5f62a7e42e0bf1c1ed714150a166bfbd6bcf6b3b58b975b9edea56d53f23a0e8490b21da7955969e61010c7a1abc1a6f0136961d1e3b20b1a7326ac738fef5c721479dfd948b52fdf2455e44813ecfd892'; -const AGG_1_2 = PUBKEY_3; -const AGG_1_2_3 = - '03f4b4e761936d90fd5f55f99087138a07a69755ad4a46e4dd1c2cfe6d11371e1cc033111a0595e3bba98d0f538db45119e384121b7d70927c49e6d044fd8517c36bc6ed2813a8956dd64f049869e8a77f7e46930240e6984abe26fa6a89658f088bb5832f4a4a452edda646ebaa2853a54205d56329960b44b2450070734724a74daaa401879bad142132316e9b340117a31a4fccfb5f768a2157517c77a4f8aaf0dee8f260d96e02e1175a8754d09600923beae02a019afc327b65a2fdbbfc'; -const AGG_1_3 = - '070227d3f13684fdb7ce31b8065ba3acb35f7bde6fe2ddfefa359f8b35d08a9ab9537b43e24f4ffb720b5a0bda2a82f20e7a30979a8853a077454eb63b8dcee75f106221b262886bb8e01b0abb043368da82f60899cc1412e33e4120195fc5570782c14e2c4ee61cbe7be6e462a66b2e3509f42d53ff333efc9bfe9a00307cd2f68b007606446d98a75fb808a405d8b90701377cb7da22789d032737eabcea2b2eee6bb4634c4365864511a43c2caad50422993ccd3e99636eb8a5f189454b18'; - -const IX_ADD = 0; -const IX_REMOVE = 1; - -const G2_POINT = 192; -const COUNT_PREFIX = 2; - -const ERR_INVALID_REGISTRY_ACCOUNT = 'InstructionErrorCustom { code: 3 }'; -const ERR_REGISTRY_EMPTY = 'InstructionErrorCustom { code: 4 }'; - -const hex = (s: string) => Uint8Array.from(Buffer.from(s, 'hex')); - -const registryData = (count: number, aggregate?: string) => { - const data = new Uint8Array(COUNT_PREFIX + G2_POINT); - new DataView(data.buffer).setUint16(0, count, true); - if (aggregate) data.set(hex(aggregate), COUNT_PREFIX); - return data; -}; - -describe('bls-key-registry', () => { - const svm = new LiteSVM(); - let programId: Address; - let payer: KeyPairSigner; - - before(async () => { - programId = (await generateKeyPairSigner()).address; - svm.addProgramFromFile(programId, 'tests/fixtures/bls_key_registry_pinocchio_program.so'); - - payer = await generateKeyPairSigner(); - svm.airdrop(payer.address, lamports(1_000_000_000n)); - }); - - async function registryAccount(owner: Address, count: number, aggregate?: string) { - const address = (await generateKeyPairSigner()).address; - const data = registryData(count, aggregate); - svm.setAccount({ - address, - data, - executable: false, - lamports: lamports(1_000_000_000n), - programAddress: owner, - space: BigInt(data.length), - }); - return address; - } - - async function send(discriminator: number, pubkey: string, registry: Address) { - const data = new Uint8Array([discriminator, ...hex(pubkey)]); - const transactionMessage = pipe( - createTransactionMessage({ version: 0 }), - m => setTransactionMessageFeePayerSigner(payer, m), - m => svm.setTransactionMessageLifetimeUsingLatestBlockhash(m), - m => - appendTransactionMessageInstruction( - { programAddress: programId, accounts: [{ address: registry, role: AccountRole.WRITABLE }], data }, - m, - ), - ); - const signedTx = await signTransactionMessageWithSigners(transactionMessage); - - const result = svm.sendTransaction(signedTx); - svm.expireBlockhash(); - return result; - } - - function expectRegistry(registry: Address, count: number, aggregate?: string) { - const account = svm.getAccount(registry); - assert(account?.exists, 'expected the registry account to exist'); - assert.deepEqual(account.data, registryData(count, aggregate)); - } - - it('first member is stored verbatim', async () => { - const registry = await registryAccount(programId, 0); - const result = await send(IX_ADD, PUBKEY_1, registry); - - assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); - expectRegistry(registry, 1, PUBKEY_1); - }); - - it('members fold into a running aggregate key', async () => { - const registry = await registryAccount(programId, 0); - await send(IX_ADD, PUBKEY_1, registry); - await send(IX_ADD, PUBKEY_2, registry); - expectRegistry(registry, 2, AGG_1_2); - - await send(IX_ADD, PUBKEY_3, registry); - expectRegistry(registry, 3, AGG_1_2_3); - }); - - it('remove subtracts the member from the aggregate', async () => { - const registry = await registryAccount(programId, 3, AGG_1_2_3); - const result = await send(IX_REMOVE, PUBKEY_2, registry); - - assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); - expectRegistry(registry, 2, AGG_1_3); - }); - - it('removing the last member zeroes the aggregate', async () => { - const registry = await registryAccount(programId, 1, PUBKEY_1); - await send(IX_REMOVE, PUBKEY_1, registry); - expectRegistry(registry, 0); - }); - - it('removing from an empty registry is rejected', async () => { - const registry = await registryAccount(programId, 0); - const result = await send(IX_REMOVE, PUBKEY_1, registry); - - assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); - assert.include(String(result.err()), ERR_REGISTRY_EMPTY); - }); - - it('rejects an account not owned by the program', async () => { - const foreignOwner = (await generateKeyPairSigner()).address; - const registry = await registryAccount(foreignOwner, 0); - const result = await send(IX_ADD, PUBKEY_1, registry); - - assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); - assert.include(String(result.err()), ERR_INVALID_REGISTRY_ACCOUNT); - }); -}); diff --git a/cryptography/bls-key-registry/pinocchio/tsconfig.json b/cryptography/bls-key-registry/pinocchio/tsconfig.json deleted file mode 100644 index c02443141..000000000 --- a/cryptography/bls-key-registry/pinocchio/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai", "node"], - "typeRoots": ["./node_modules/@types"], - "lib": ["esnext"], - "module": "esnext", - "target": "esnext", - "moduleResolution": "bundler", - "esModuleInterop": true, - "resolveJsonModule": true, - "allowImportingTsExtensions": true, - "noEmit": true, - "skipLibCheck": true - } -} diff --git a/cryptography/bls-multisig/pinocchio/README.md b/cryptography/bls-multisig/pinocchio/README.md deleted file mode 100644 index b7b494b31..000000000 --- a/cryptography/bls-multisig/pinocchio/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# BLS multisig (Pinocchio) - -Verifies aggregate BLS signatures over BN254 with a single pairing check: public keys aggregate on-chain with the alt_bn128 G2 addition syscall, then `e(aggSig, G2) · e(-H(m), aggPk) == 1` is checked with the pairing syscall. Signatures are G1 points (64 bytes), public keys are G2 points (128 bytes), all big-endian. - -| Discriminator | Instruction | Input / accounts | -| ------------- | ---------------- | ---------------------------------------------------------------------------- | -| 0 | Aggregate verify | `aggSig` (64) ‖ `-H(m)` (64) ‖ pubkeys (128 each); no accounts | -| 1 | Add signers | pubkeys (128 each); account 0 = multisig `[count: u16-le][pubkey; capacity]` | -| 2 | Verify | `aggSig` (64) ‖ `-H(m)` (64); account 0 = multisig | - -The verify instructions only succeed when every registered signer contributed to the aggregate signature. G2 addition needs the `enable_alt_bn128_g2_syscalls` feature gate on public clusters; LiteSVM has it enabled. - -> **Security note:** this example deliberately omits access control to stay focused on the pairing syscalls — any caller can append keys to a writable multisig account. A production multisig needs an authority signer check, or an immutable signer set fixed at initialization. - -## Test - -```sh -pnpm install -pnpm build-and-test # TypeScript tests (mocha + LiteSVM) -cargo test --manifest-path=./program/Cargo.toml # Rust tests (litesvm), after build-and-test -``` diff --git a/cryptography/bls-multisig/pinocchio/package.json b/cryptography/bls-multisig/pinocchio/package.json deleted file mode 100644 index 1f1e0675a..000000000 --- a/cryptography/bls-multisig/pinocchio/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "bls-multisig-pinocchio", - "version": "0.1.0", - "type": "module", - "scripts": { - "test": "mocha --import=tsx -t 1000000 ./tests/bls-multisig.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/bls_multisig_pinocchio_program.so" - }, - "dependencies": { - "@solana/kit": "^7.0.0" - }, - "devDependencies": { - "@types/chai": "^5.2.3", - "@types/mocha": "^10.0.10", - "@types/node": "^26.1.0", - "chai": "^6.2.2", - "litesvm": "^1.3.0", - "mocha": "^11.7.5", - "tsx": "^4.19.2", - "typescript": "^5.9.3" - } -} diff --git a/cryptography/bls-multisig/pinocchio/pnpm-lock.yaml b/cryptography/bls-multisig/pinocchio/pnpm-lock.yaml deleted file mode 100644 index 6e11abae2..000000000 --- a/cryptography/bls-multisig/pinocchio/pnpm-lock.yaml +++ /dev/null @@ -1,2825 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@solana/kit': - specifier: ^7.0.0 - version: 7.0.0(typescript@5.9.3) - devDependencies: - '@types/chai': - specifier: ^5.2.3 - version: 5.2.3 - '@types/mocha': - specifier: ^10.0.10 - version: 10.0.10 - '@types/node': - specifier: ^26.1.0 - version: 26.1.2 - chai: - specifier: ^6.2.2 - version: 6.2.2 - litesvm: - specifier: ^1.3.0 - version: 1.3.0(typescript@5.9.3) - mocha: - specifier: ^11.7.5 - version: 11.8.0 - tsx: - specifier: ^4.19.2 - version: 4.23.5 - typescript: - specifier: ^5.9.3 - version: 5.9.3 - -packages: - - '@esbuild/aix-ppc64@0.28.1': - resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.28.1': - resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.28.1': - resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.28.1': - resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.28.1': - resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.28.1': - resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.28.1': - resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.28.1': - resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.28.1': - resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.28.1': - resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.28.1': - resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.28.1': - resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.28.1': - resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.28.1': - resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.28.1': - resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.28.1': - resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.28.1': - resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.28.1': - resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.28.1': - resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.28.1': - resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.28.1': - resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.28.1': - resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.28.1': - resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.28.1': - resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.28.1': - resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.28.1': - resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@solana-program/system@0.12.2': - resolution: {integrity: sha512-MaBeOxlvTruQhA7UYkOb3hVTEHPPagOtd+PvTm6a8rGgvEAP0kD4BbC37NceOaR4ABNqdaCmD5OMVRKgrE6KAg==} - peerDependencies: - '@solana/kit': ^6.4.0 - - '@solana-program/token@0.14.0': - resolution: {integrity: sha512-zpLMr6JZndlsQCQvrm0gezfwdr1lmzOGqN6v2WIYXjtDmbF+xg6zh/MAp2UFHRpv3uDmylEdjtQo05pa2OeaYg==} - engines: {node: '>=24.0.0'} - peerDependencies: - '@solana/kit': ^6.5.0 - - '@solana/accounts@6.10.0': - resolution: {integrity: sha512-+FxfDOrnifoPlBkF+fr8eeQdgM6xtIgAg9xKMu3WnIz60oZd4Xnry6+ff6t+ePPoZZp397FSg9ZJet68VCWm5Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/accounts@7.0.0': - resolution: {integrity: sha512-RfbinkhuWxcObxZIdjeWEn/mzLqRp/h2hAk/ZQCUxPdDBW8h4XxEybK9GBItGOAcrUz5HuusXTD+cXXnlIxWcg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/addresses@6.10.0': - resolution: {integrity: sha512-vEoCGBTxG0HCERAn84KXkrJjl+pDaNzOpZ0qbgcPS98fYxP5yzbKB8SNOY2bzrbkRUmmw5Q3hqTRERemUN2Gcw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/addresses@7.0.0': - resolution: {integrity: sha512-E7sJtV5d3bXrmw3I30rcKY+xoqM++6KIVJCi+q8ZaSMyP04UMfEENPHIJ+TkyS1RUgjzPT91ka/oWrtTh6EfkQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/assertions@6.10.0': - resolution: {integrity: sha512-lKSAdVo+P/6Lp4vs6shstXmFOpvxrABwn4o1462tb7sKkNapk6o9pPFVPGw4DUgPS3WqWRs1j2tmpuVjhQRntg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/assertions@7.0.0': - resolution: {integrity: sha512-CShOQLPezI0tbrih+L88fzt8FMHDyJoWkmulk4wfRp3HhpQL2yNlH/SWLH033qysnvkmE7TxBFUtcnbnf7jz1g==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-core@6.10.0': - resolution: {integrity: sha512-nfAl9OMGo4HanIMxGsQoVB7BxMoqBCYEUxl8oEAZZ09pDxnaXQZkTRXEwPPccag37XfW1ciPd1vWPKwB2b0HHQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-core@7.0.0': - resolution: {integrity: sha512-6HtEisZEtFb6okARUgYqmKdDbn2aHRrSCDgB1/GEwr0s6fK5XNYpafaSjorbs2MEyZV3tCUFTj2j6fk/4nNcLg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-data-structures@6.10.0': - resolution: {integrity: sha512-CNasJW3bq5u+632Zt5aJ8rOjAjv2HyenpV8o9kAIqdmV4CBpjCCoBnKn8LkuR/sbeREZxJYfhKTXO/9ruAkw7A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-data-structures@7.0.0': - resolution: {integrity: sha512-P0Ys1mB4lYlz3MMTCaJSysE3OYrq8WvsveU1ta8U/yG1qChXFGCOxPVh06swjaRxwPrEakb9VUESS5vNtp1rRA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-numbers@6.10.0': - resolution: {integrity: sha512-CcM+wX4zOiA9zkh8A7t1787A0Ehgmu5+6Z2tKoHew6cNw/dkaUTPa8JnNHbvfsLC8dfHC1BhAEJl86sKmRsfkQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-numbers@7.0.0': - resolution: {integrity: sha512-XL0jnmnXr3ceoX4tusT+XkBVR2iGKEJecTIXbIV7ILi9xObg3fNXafNbTmbIOvKc0ByTyjo8EWZ9jQKSRWgsgA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-strings@6.10.0': - resolution: {integrity: sha512-zlaqkg7K6F6IN4V/Ec8TWkTn054gxv7ZLagvGkuEyAdPQ6BzzsehOm2TqCuyXgJJTCGPLY1bEk6yH9NxANe0kA==} - engines: {node: '>=20.18.0'} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5.4.0' - peerDependenciesMeta: - fastestsmallesttextencoderdecoder: - optional: true - typescript: - optional: true - - '@solana/codecs-strings@7.0.0': - resolution: {integrity: sha512-zXE1PE9HkVk6phZ6aqHTXvLZ0qIl5bJNIvG9eMB7LuFO1XBVQywJUtjKS8fE3/xmRCWSMilFSrEXGA+SpOyLrQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5.4.0' - peerDependenciesMeta: - fastestsmallesttextencoderdecoder: - optional: true - typescript: - optional: true - - '@solana/codecs@6.10.0': - resolution: {integrity: sha512-lLVuxod4ChWp9i7OvpgIykYG8Q9OGPVXKnHM9VlzDDLylsx7Y1FoQL00sHa7PqFkJVmkBufaA6dcGbQ7FU+lAQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs@7.0.0': - resolution: {integrity: sha512-xT1IbwKkPZ544u/eqhb9SZ0fNYJidWgIUzKNQMbvLCwduayAkQp+czlGdvLQ6CVlqtCewtH3gW8biGU7YuBdEw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/errors@6.10.0': - resolution: {integrity: sha512-KBLAxCtAXr357JNhCyIDQXWbuSj5vN6w+28FSfcYY6OOSiphmXLAV3V58jgV0C6iNbIzFJFi6yatFyDTdeJsNg==} - engines: {node: '>=20.18.0'} - hasBin: true - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/errors@7.0.0': - resolution: {integrity: sha512-94r+LLSzZ0XVp+LOogwxWGXeo138uvwqtqRW9Tjl1DIXrFgh8euXnJSXZyydu1UXJs7ItOSm0QreJviSGw3TGQ==} - engines: {node: '>=20.18.0'} - hasBin: true - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/fast-stable-stringify@6.10.0': - resolution: {integrity: sha512-iCNed27wk6PKSS3QUtHovRfMWF/jbVWogs2vB4tukKUCsqG4rDfDInIwZ6ur/nY6XTrgi2gMMdZq9GAUlWsbfw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/fast-stable-stringify@7.0.0': - resolution: {integrity: sha512-i/b5ZJMqMJXa6etjypANa2/ErPZfNG9/EVIYl7HpWooyCRgZ8hZJmJ2Cgrp0r4EMXCLeWn4aEG2HOBTzOJ4F7Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/fixed-points@6.10.0': - resolution: {integrity: sha512-ZkKL0alXH3L7/wMiVG8YUuG8qBKunlM810+YBD7nUPRhifiGsX1zwADViHLYNqLr/jUk0mTYFUcKznTpB/K+Gg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/fixed-points@7.0.0': - resolution: {integrity: sha512-Y3gcyHTponi5kXpWVEJIhuZ7yT84N+8He4dbjXWqwMBJnzKM+4tqFCbzy6y+6+Jxt44RT1lDmbpxmZopFRXU8Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/functional@6.10.0': - resolution: {integrity: sha512-P8cevu4mAqHTXC37h1TVoOh8zhWB2tlOI/R9vWjYPpcLwcyWf8p2qq4LEGHl5kY+1C+4PNX39HsmCocXOPCDkQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/functional@7.0.0': - resolution: {integrity: sha512-ix9fzYhc2hCLiYf+hGI00mzzayANKDExEBxbwrtMj/BdQkwgUIvIlOssqHeSqDChL3UZhq9lR24Nz4JwYX8Jbw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/instruction-plans@6.10.0': - resolution: {integrity: sha512-YG7mo4zykzdc6ZTV0BuN6pveK9qeBySzlYYerq578A4eQu3xcypMAYRGAvhMZtWTanjjmD6CKtM0M7kVp0TNxg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/instruction-plans@7.0.0': - resolution: {integrity: sha512-uzXHztc8hLoT5TNWFsBX2DIETyp/Lr2l36O330s3YCgpRmfI4IRbBrjjq7TxDYFm/QY8+DD4CRG8p7wZSqG8dQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/instructions@6.10.0': - resolution: {integrity: sha512-0TToYF+8LXQ3ofPMx+yF6yaM9l4YJvcAPMy0qV5JsrBUFlWXBSANRuudKBQLHMvb+a3OiUTq5X7omuorKMBB3A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/instructions@7.0.0': - resolution: {integrity: sha512-ZN0gKAtCOKDuIaStcvLZDf5H20fkk7jr4dZE0Rk7z0kslf6mrRam9Y23N6AzeHp/b5ZeVKyfaTf4M35mOktLNg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/keys@6.10.0': - resolution: {integrity: sha512-26IRfdm/hTUCmM7MeEeX0ULSbCM6OzkZTkfkrPircqmRM7xyNqP4hq7u0P7wjb9dl7NfgyG6K7cdvUxrj2e3mA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/keys@7.0.0': - resolution: {integrity: sha512-JsdYR/YN3AGHZN2aZoeE5cymHYkNoBLnqgXoRncW/VyD7fMcR350aHU1hCMYd0b5BtITLsGmvvtvrgVkzK83Eg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/kit@6.10.0': - resolution: {integrity: sha512-/WnnQp3uARh2JCFSfAakejTAqwmXVuMVTcRn5r2yDwY2yzZ4R6mt/Cl59VPimVLNSoTyN/KsEwhv9omr3ERazQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/kit@7.0.0': - resolution: {integrity: sha512-ZCeai4LRJQooUmJXvpgMEGFTrCdJnV1ODbDJ8oqFZ+Y4t/9x1baQsFFpruqsdRyeGv2Rr+X6jV7cldVD+hyzRA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/nominal-types@6.10.0': - resolution: {integrity: sha512-9ykyBBvnkInH7fCacjJi7zu2PJyd+OCt+VTjIISv070fHzKIMFqZqJJ/dJ0SRH2aHwfB3n86iVsmtBtuxi4KKA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/nominal-types@7.0.0': - resolution: {integrity: sha512-ff21hmKKMckDkGWah9tRXsEyFCtSnkugH+EMLGJOn7tiXdtFljOXW5Q12IXyeil87EE8aWb1MS6p8v5+hi71Vg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/offchain-messages@6.10.0': - resolution: {integrity: sha512-RiEgAueeMkFMC1suOXBIcmCZgtXRxy24yk0DldPB37bB4zwOF1SAaRjNRPjIkGK8RhCYrEpPosnzLyavw9ueRg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/offchain-messages@7.0.0': - resolution: {integrity: sha512-fGrzxmqVStweGHRlXVAPKACdDboFCwXq5m8C+aD9Nupax6Q9rnvjICzYRLypwqB9X90XIZazh0ys+0KGLMpIJQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/options@6.10.0': - resolution: {integrity: sha512-RO9UT3UYD8/Cu2uM6ZXbKvLeMnVD42+g9JRds7Pfs4AhiOyg4R4TJrQUAppTgavPTO3PBRlWtWOC05ZH/yAIbg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/options@7.0.0': - resolution: {integrity: sha512-6DhvMqRcL3mG0R5JejYIW5PDTDr7HcLX2R9iCs6OPN1HdsyXmE2rX2EldnuA0rYz1buOodeWYsu4N1lpDcEpaQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/plugin-core@6.10.0': - resolution: {integrity: sha512-JE70YTQOfFACVFGvoJon4Scc/eHUWjMu8Ovo35CcV2kHTAHYMCd4UkBd2gmlhK0vRMMomsQi1ZLPlAlTq0OoUQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/plugin-core@7.0.0': - resolution: {integrity: sha512-EwTUfOGoQQ3aXooRlQFVbk+sJW7NqJl1K+bmSLiJUjaBTSqtbr3GtMu7aoybJqzZQKjOGSG4Hn0BzK24SvWy3A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/plugin-interfaces@6.10.0': - resolution: {integrity: sha512-vr0/l9wcM4orwGr8cjkFWaJ9A4HvzuAv00jMFNMg0Spd0GZqnwnpW+D/fXa1lIJnTRaF3EeEjLh4VjKU037T0Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/plugin-interfaces@7.0.0': - resolution: {integrity: sha512-fz/HknZLGnVIjhjXrMzW3Qm1x80oeEMSOk4RzMwjcyAEyfzhHtGNW74NsU5W+uFpYz6UBbV5mB1jpuAdJdnj9A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/program-client-core@6.10.0': - resolution: {integrity: sha512-4PPbTLdC1ylHIuvhOFDP8RnSkXPCFjNFWGslzc+UFKnoR4ajzBcByX94jmaruDMk5ncxgj7tr9pzJTvfGHIaMA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/program-client-core@7.0.0': - resolution: {integrity: sha512-+N8HImlR3MTbbvhOShsLelQXGZKbi6KhPhyy+4ZkDLbnRs4QikTamIChXZmoCyxB51S8/9cNRAKyQhbeF5Y8Qg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/programs@6.10.0': - resolution: {integrity: sha512-qn/HeLP5KGUJXVub3fyGe69/rWaLX4jzwm6V/1pNxJDbdF+MBdgn18hP6F+VmhfdNmwK0lue3J/1HQ1UTMuQeQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/programs@7.0.0': - resolution: {integrity: sha512-a1HNgzr9YiiZ8vK4VaKHEXjnZmKX7W5ab2ghuseIalEw/+PJLFcTRTOw8n3efRu677b/bG2Icmb3MBBEXmvbPg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/promises@6.10.0': - resolution: {integrity: sha512-oJSIn+VBBMWDo8oqw7RV3tI6Jih+Ieup6FcQLYLDUriaeo7+8l1Zdezl8zh7SIfeU4lOfAbRg6mR0huaS/Lltg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/promises@7.0.0': - resolution: {integrity: sha512-rjoHnaR4zeEIHqIzfgotxRrLKqY4Goj0G5duZOnjHm8ZC+7eDkH5/mXj1bDJ4ROM70dVM+y1Xkrjg7IL6k6StA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-api@6.10.0': - resolution: {integrity: sha512-RjPIVsAb/85P1ptoO3WpC0x7QG6gG/e4q/3lo6gbSznUZOcoM+8sSBnCX7BwP1ZkCDS6NK/ClXLnhhhYZx+OGg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-api@7.0.0': - resolution: {integrity: sha512-MTtBO883st83CjWpo8B4g8EKzXaeoBX5N7+sv4vcvsn2q1NpY4SG3XejdX1FrKeTe9Xjbv0/FzFtykstbKe1UA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-parsed-types@6.10.0': - resolution: {integrity: sha512-5275mvSV1mxhwvrMVa+K7BU/nAetpHfcb+8Ql9rtA8RRf6DyiimFQFZUukE4Ez6XJihEpCHNy98yhkgai9wytQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-parsed-types@7.0.0': - resolution: {integrity: sha512-80VjPbB/TZ/Hy5qdRF7onPfMPHk5cwBVbtNUGbilrmFuqRzSvzSOY1ynNXXODPZBytNmPq7u7oJfSCsQ5MA9Ig==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-spec-types@6.10.0': - resolution: {integrity: sha512-NDZrKyZrJk4HaMFhTE/lAiMB824cWAodKqDHyKi0UteHU9pyRmil3BN1jt7e+j08mwMWwfklSgyrTaq52g6DIQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-spec-types@7.0.0': - resolution: {integrity: sha512-V4Hp2//fW8eYq1zcGgHPu7FXKHyIWERBQd4+NRaKn2m8rPiVAm3pVRwPzSvVE0+8Nyf5qzdcfcMf7NQdhl6j7Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-spec@6.10.0': - resolution: {integrity: sha512-yQdbWw5mZEWrwsunHR9NHkuhMXIB9sPOObwm18D53v5tAJnxTB0IcHvO647XqFDLTK/yQ4AdDtlYD1vsY07AMQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-spec@7.0.0': - resolution: {integrity: sha512-GRGlXpLgap9yVh3qmCl4huuKAoLMp/p82/9Q9ONj6lmFH+RqJE4Q+16V+HxHI5ZakmwZYoVZU4GEKjumse9SCg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-api@6.10.0': - resolution: {integrity: sha512-CRPQoTtT1cOwOQUsqS7jgo7wYdAj7jB5ab/UmMPWVpecf2FNMhWhgvxP2s82M7VkDGTGl13qaQ0WySmi7Egrlg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-api@7.0.0': - resolution: {integrity: sha512-o2PZDeNC/kg3VO3ry4R0JySJ1xMHLchZwmzVwamxGidlLe9uvzm6CHlCqv/JCq4/zHLo7qbLqnmOckZ6vlDqaw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-channel-websocket@6.10.0': - resolution: {integrity: sha512-KkqP1186HELPlJftA88SNAT2znR8knCVzsUipXVzY4zfW8sN3LOa0ePMzh9VZ/V+J+raTt55laR87ovAO0n+zw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-channel-websocket@7.0.0': - resolution: {integrity: sha512-79ecXBCT2pG+vXNBZim80vUz+B04L1mEduXobBIXM55VvxsHYT+4H4V+/ZHoFJUK6Lhbt+6zhpconx8Wa3H+JA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-spec@6.10.0': - resolution: {integrity: sha512-nWMwGaG4ulzeX2sskY5TywXF3cwEd8FDmUpLe2JBWxE8XDAOGOKcsYPYFcBgb8ee9KqfPT2PTNdcz9jOhJf34w==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-spec@7.0.0': - resolution: {integrity: sha512-Oips5ciWqPGO5Cx7hcEQ/czbcrUjPf+4cTam0UMrK3BnvHPcEAWkPYlIgabQiqa60/pjOOz7B936oMXA5XwL+g==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions@6.10.0': - resolution: {integrity: sha512-6mfuHp/K7unFKCOTCCBC9ziEGnxe2tyJ74EbR51QUnBeCUdYD7Hhdpxic1WRSJ3UeNW/mG4OzFM6z8Wi64Eh9Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions@7.0.0': - resolution: {integrity: sha512-jLNjUCGBbCIfABqqHopNJIeAkhd4GzhbodgCH4x2X+S0ycBaERX393+k+fG8JPJpGujkmeQFBCeIKO3lK+PoYg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-transformers@6.10.0': - resolution: {integrity: sha512-2nFUrVTiE720pJOY4XKx3HuYmishw0of/4oScu76YGm6O8wsmvFvPNAkrEinmieWXQkfpBfRvLZmpl8PaAy+ug==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-transformers@7.0.0': - resolution: {integrity: sha512-NHkTKC2J4oaMMzyOtIEDOLCGtzg1Y8vlPoBmUeA82o+DNjBSiZLR2Ariy7n7chmwKchCZ8aGirBxjLCSRc6b/g==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-transport-http@6.10.0': - resolution: {integrity: sha512-JrdNuYi0nBbD3X8JUtgX1dQJwIwz/WJvmigDdELysXfGB2bTJpfjqGDLhCLOz2sRl66FASIEqgG/LVa2C9VXcA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-transport-http@7.0.0': - resolution: {integrity: sha512-W0G15BN0xljXzRRo/ZwepJNiOjKhRImF5SxhjZauh2yVBoUjfd6NSCmYcdWu0tj9lypKKrB1ReS4oPmb4yCHbA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-types@6.10.0': - resolution: {integrity: sha512-zaSecTfCPvz/vcoAmKD6XoRstGHTr1EKJBD8T9UcpEFFB6CtF6DxerDB+wrzkamuT6msmnR2DWXMrYOGDAsgIg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-types@7.0.0': - resolution: {integrity: sha512-Lf2csFSWHwN/8EL03uWfS7n1J19vWLK4DBGkQ5jebRhoJ3dD+xPcJtS+epI2281t5aghJvoV7D+RIM0NextZJg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc@6.10.0': - resolution: {integrity: sha512-EwxsqoD+NXV+m+iobnWNtATD93gTgaNsOiQOzYB1/2e+8S6fl6obdNPB55yfXgtl4jt6GV6/ae4xuPhLv76vvg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc@7.0.0': - resolution: {integrity: sha512-hCf4XEhspsNb8TnQ+E961+rBuJcTyrmwNr4LDfVHEeO/VTqaN+yVwAI1wpxcnzwc+T4OoXcyujNiQWhVZPOhiA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/signers@6.10.0': - resolution: {integrity: sha512-+vtCc+mT1FpGxrA5oL2aaMxSHiMJ2hH5PcDIfjo2XJkHz2klZiCZyT5F9+zpltc9vdi1QTElQq59Sfplmtd33A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/signers@7.0.0': - resolution: {integrity: sha512-4E3xYQ0b9OZCTLghqfeHh66lfipy3jV1REdFJLk9WqPBaXVa/wSgGGIqZVa744ATSd9AeEfL/I5n/LrMNQOhoA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/subscribable@6.10.0': - resolution: {integrity: sha512-VsR6XMwkiDBkZJUcoGkEOhf397pOV75gKCL9Bx8bpi2T3Bbs0CxUpMn4yaUgAnRba3eXmjbXMNCXjttfa6sKbw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/subscribable@7.0.0': - resolution: {integrity: sha512-dJQA5AxDv/7YxuNe7GXIkaOUNhXczFaL3/SNOvXe7k77bC4dx4HPkySfcVDfEWBOePe3+8iyVbT8DZ3aOcp8Ng==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/sysvars@6.10.0': - resolution: {integrity: sha512-cG13p1+onxz+20iWjwWQr1Z1jQwPm0fnjoW75fqZq7p4rVCie3L2sXvaJsYPjWKrUvpOzOIEHnqZGkG05rCpjg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/sysvars@7.0.0': - resolution: {integrity: sha512-GKND6hCcBcrak3/VAtx6aEoAi9wQjJQzU2Fcu6JYmnTjGe5MHf21FqbjGl0aQ0C2HlJQQJmA07wgsuOiYDTDog==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-confirmation@6.10.0': - resolution: {integrity: sha512-ULvtg65qfenh4T/GYcIlKSUv5EqDcng9UN0dxbHU4kuZdR2e0B8HN2xDC4WhcFQVeFJSbTZmaYFkeTY/Y4gfGQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-confirmation@7.0.0': - resolution: {integrity: sha512-SaU2CY9ZDJGK47DtQ7xwKFmbgzDGqIN/Ug89ZSUzDPD9QdMRXhtxgH8KZgb0gSgpyel85sSt0QH9wkWzhp69ow==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-introspection@7.0.0': - resolution: {integrity: sha512-aO+5ewxGaziXYcXJZ6F3doq/KI1L3WU2z5eCjs4DBO0kRQBHp4bH6ZKygVX2JIxOZrd1rB9SxP/CCCX2wRm8Xw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-messages@6.10.0': - resolution: {integrity: sha512-s7v8G3BTxGlKYIj3eWCG0g1296v+1LBt16mVnlRH5FuyaJ5AdhlhtRho5HUDpdwE8EXun+y1c48V6uhcZ8wdbQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-messages@7.0.0': - resolution: {integrity: sha512-qCBYR3QQvykcI36vnqwI5090hGXS3mmCe72b/f/n9kBsBaA2oowdBXZupB1wwKe8+6x8o8VkhKQaK9oTKKbWTg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transactions@6.10.0': - resolution: {integrity: sha512-VADSqP9OTYmhrox4pcgDd4+RjVmednXSE0+8Y7SPK4PN1pK5Az2RJ0nSsy0xcTnaOr8mF/crwFktqPrRQwSbQA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transactions@7.0.0': - resolution: {integrity: sha512-y5nayd2Ozld/4Bxefz50e/E6qxyZteuZCZ7suh7z96KY6QUJlZDR+eCG1v/lA7Azt3GSOevJuYFX/ept/mqZkw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - - '@types/mocha@10.0.10': - resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} - - '@types/node@26.1.2': - resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.3: - resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} - engines: {node: '>=12'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - brace-expansion@2.1.4: - resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@6.2.2: - resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} - engines: {node: '>=18'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.6.2: - resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@15.0.0: - resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} - engines: {node: '>=22.12.0'} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - diff@7.0.0: - resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} - engines: {node: '>=0.3.1'} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - esbuild@0.28.1: - resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - glob@10.5.0: - resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - hasBin: true - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - js-yaml@4.3.1: - resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} - hasBin: true - - litesvm-darwin-arm64@1.3.0: - resolution: {integrity: sha512-fj6cV/ofjMXdl5CwjyyLTQnZObfVH5HYDScQ6O44iRqxASmgEyEh4sC8a7M0YZ1rcli9nu2cWl5ARGura89I7Q==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [darwin] - - litesvm-darwin-x64@1.3.0: - resolution: {integrity: sha512-ZYEddnc+tAn8sVYpzvww0oHFiekbCSv+0OZiA6eUDtcSx9uzeRDmPPQ9eI6vgyews2LefBDSENmUb70GHY6Cqg==} - engines: {node: '>= 20'} - cpu: [x64] - os: [darwin] - - litesvm-linux-arm64-gnu@1.3.0: - resolution: {integrity: sha512-kmmKeef96pJI4AJGCvjzMCW6QHuzFrMF1i6dE6OcrtWHaz0Ag+TFaKOU35H1bjH/fDBwoJUV9UbaIbdWht81tA==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - litesvm-linux-arm64-musl@1.3.0: - resolution: {integrity: sha512-FO9p6rx+/3h7R3CU7lkOebL+jy8UEDngSrENHu7pj9EOr78QVyE3Fm0O+WMnwXpMoCSgW0XLhu1cI9NHAbzCTA==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [linux] - libc: [musl] - - litesvm-linux-x64-gnu@1.3.0: - resolution: {integrity: sha512-yXC8ZAdIei9JQ2xw5/BocOTu/7EqZuFPyhgENQ1mYDhjNpoyUbIuGCWnqtria14mDda0aV9yVev8plGUrUpjUw==} - engines: {node: '>= 20'} - cpu: [x64] - os: [linux] - libc: [glibc] - - litesvm-linux-x64-musl@1.3.0: - resolution: {integrity: sha512-oedromp1gTjShXmKmxZ1FYtnfM824vRcrPSPvGM0CrqJqKK61m1+tFwNRAVsDlpmWKvO/zsz90ctbgAUo/3TXg==} - engines: {node: '>= 20'} - cpu: [x64] - os: [linux] - libc: [musl] - - litesvm@1.3.0: - resolution: {integrity: sha512-tMu9sBIqSbF1gQluXEUtGmXPfZlMc10tOoBVeDokgK77nl/CcuC506sEoFKM5Rq58Dkb070lBMVBLc43TbMUzQ==} - engines: {node: '>= 20'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - minimatch@9.0.9: - resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass@7.1.3: - resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} - engines: {node: '>=16 || 14 >=14.17'} - - mocha@11.8.0: - resolution: {integrity: sha512-VyCeUdGN3A9lmCTTgG4yuvY9ixxaDk+xt2R/7/+1AP6EqNG+G9OKkzBwhVtVYoNX8YsxNSgAl8mOv3IAeOpFbw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.2.0: - resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} - engines: {node: '>=12'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - tsx@4.23.5: - resolution: {integrity: sha512-rw55FUaqOoI7RvlQwLbhO4nSDApnQ4/CykPuiQ/EPvtrX3WA9Ig55jIt9VvbBJbzJuj12ueRu4PMZ2SxPVbihg==} - engines: {node: '>=18.0.0'} - hasBin: true - - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@8.10.0: - resolution: {integrity: sha512-ibvdovq3nCFs8Msrd95BW+zUOq+aOVbT+wpHUoPWhztbHEoPc6oof51iFDB6Es8lTKvNvVW9jNSAB8dwrKTMGg==} - - undici-types@8.3.0: - resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - workerpool@9.3.4: - resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - ws@8.21.1: - resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@17.7.3: - resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} - engines: {node: '>=12'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@esbuild/aix-ppc64@0.28.1': - optional: true - - '@esbuild/android-arm64@0.28.1': - optional: true - - '@esbuild/android-arm@0.28.1': - optional: true - - '@esbuild/android-x64@0.28.1': - optional: true - - '@esbuild/darwin-arm64@0.28.1': - optional: true - - '@esbuild/darwin-x64@0.28.1': - optional: true - - '@esbuild/freebsd-arm64@0.28.1': - optional: true - - '@esbuild/freebsd-x64@0.28.1': - optional: true - - '@esbuild/linux-arm64@0.28.1': - optional: true - - '@esbuild/linux-arm@0.28.1': - optional: true - - '@esbuild/linux-ia32@0.28.1': - optional: true - - '@esbuild/linux-loong64@0.28.1': - optional: true - - '@esbuild/linux-mips64el@0.28.1': - optional: true - - '@esbuild/linux-ppc64@0.28.1': - optional: true - - '@esbuild/linux-riscv64@0.28.1': - optional: true - - '@esbuild/linux-s390x@0.28.1': - optional: true - - '@esbuild/linux-x64@0.28.1': - optional: true - - '@esbuild/netbsd-arm64@0.28.1': - optional: true - - '@esbuild/netbsd-x64@0.28.1': - optional: true - - '@esbuild/openbsd-arm64@0.28.1': - optional: true - - '@esbuild/openbsd-x64@0.28.1': - optional: true - - '@esbuild/openharmony-arm64@0.28.1': - optional: true - - '@esbuild/sunos-x64@0.28.1': - optional: true - - '@esbuild/win32-arm64@0.28.1': - optional: true - - '@esbuild/win32-ia32@0.28.1': - optional: true - - '@esbuild/win32-x64@0.28.1': - optional: true - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.2.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@solana-program/system@0.12.2(@solana/kit@6.10.0(typescript@5.9.3))': - dependencies: - '@solana/kit': 6.10.0(typescript@5.9.3) - - '@solana-program/token@0.14.0(@solana/kit@6.10.0(typescript@5.9.3))': - dependencies: - '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) - '@solana/kit': 6.10.0(typescript@5.9.3) - - '@solana/accounts@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/accounts@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/addresses@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/assertions': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/addresses@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/assertions': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/assertions@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/assertions@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-core@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-core@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-data-structures@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-data-structures@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-numbers@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-numbers@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-strings@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-strings@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/fixed-points': 6.10.0(typescript@5.9.3) - '@solana/options': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/codecs@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/fixed-points': 7.0.0(typescript@5.9.3) - '@solana/options': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/errors@6.10.0(typescript@5.9.3)': - dependencies: - chalk: 5.6.2 - commander: 15.0.0 - optionalDependencies: - typescript: 5.9.3 - - '@solana/errors@7.0.0(typescript@5.9.3)': - dependencies: - chalk: 5.6.2 - commander: 15.0.0 - optionalDependencies: - typescript: 5.9.3 - - '@solana/fast-stable-stringify@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/fast-stable-stringify@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/fixed-points@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/fixed-points@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/functional@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/functional@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/instruction-plans@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/instruction-plans@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/instructions@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/instructions@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/keys@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/assertions': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/keys@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/assertions': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/kit@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 6.10.0(typescript@5.9.3) - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/instruction-plans': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/offchain-messages': 6.10.0(typescript@5.9.3) - '@solana/plugin-core': 6.10.0(typescript@5.9.3) - '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) - '@solana/program-client-core': 6.10.0(typescript@5.9.3) - '@solana/programs': 6.10.0(typescript@5.9.3) - '@solana/rpc': 6.10.0(typescript@5.9.3) - '@solana/rpc-api': 6.10.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/signers': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - '@solana/sysvars': 6.10.0(typescript@5.9.3) - '@solana/transaction-confirmation': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/kit@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 7.0.0(typescript@5.9.3) - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/instruction-plans': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/offchain-messages': 7.0.0(typescript@5.9.3) - '@solana/plugin-core': 7.0.0(typescript@5.9.3) - '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) - '@solana/program-client-core': 7.0.0(typescript@5.9.3) - '@solana/programs': 7.0.0(typescript@5.9.3) - '@solana/rpc': 7.0.0(typescript@5.9.3) - '@solana/rpc-api': 7.0.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/signers': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - '@solana/sysvars': 7.0.0(typescript@5.9.3) - '@solana/transaction-confirmation': 7.0.0(typescript@5.9.3) - '@solana/transaction-introspection': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/nominal-types@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/nominal-types@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/offchain-messages@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/offchain-messages@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/options@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/options@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/plugin-core@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/plugin-core@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/plugin-interfaces@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/instruction-plans': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/signers': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/plugin-interfaces@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/instruction-plans': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/signers': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/program-client-core@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 6.10.0(typescript@5.9.3) - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/instruction-plans': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) - '@solana/rpc-api': 6.10.0(typescript@5.9.3) - '@solana/signers': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/program-client-core@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 7.0.0(typescript@5.9.3) - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/instruction-plans': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) - '@solana/rpc-api': 7.0.0(typescript@5.9.3) - '@solana/signers': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/programs@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/programs@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/promises@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/promises@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-api@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-api@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-parsed-types@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-parsed-types@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-spec-types@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-spec-types@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-spec@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-spec@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-subscriptions-api@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-subscriptions-api@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-subscriptions-channel-websocket@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - ws: 8.21.1 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@solana/rpc-subscriptions-channel-websocket@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - ws: 8.21.1 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@solana/rpc-subscriptions-spec@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-subscriptions-spec@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-subscriptions@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-api': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-channel-websocket': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/rpc-subscriptions@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-api': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-channel-websocket': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/rpc-transformers@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-transformers@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-transport-http@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - undici-types: 8.10.0 - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-transport-http@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - undici-types: 8.10.0 - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-types@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/fixed-points': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-types@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/fixed-points': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/rpc-api': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) - '@solana/rpc-transport-http': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/rpc-api': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) - '@solana/rpc-transport-http': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/signers@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/offchain-messages': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/signers@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/offchain-messages': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/subscribable@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/subscribable@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/sysvars@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/sysvars@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transaction-confirmation@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - '@solana/rpc': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/transaction-confirmation@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - '@solana/rpc': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/transaction-introspection@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/rpc-api': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transaction-messages@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transaction-messages@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transactions@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transactions@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@types/chai@5.2.3': - dependencies: - '@types/deep-eql': 4.0.2 - assertion-error: 2.0.1 - - '@types/deep-eql@4.0.2': {} - - '@types/mocha@10.0.10': {} - - '@types/node@26.1.2': - dependencies: - undici-types: 8.3.0 - - ansi-regex@5.0.1: {} - - ansi-regex@6.2.2: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.3: {} - - argparse@2.0.1: {} - - assertion-error@2.0.1: {} - - balanced-match@1.0.2: {} - - brace-expansion@2.1.4: - dependencies: - balanced-match: 1.0.2 - - browser-stdout@1.3.1: {} - - camelcase@6.3.0: {} - - chai@6.2.2: {} - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.6.2: {} - - chokidar@4.0.3: - dependencies: - readdirp: 4.1.2 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@15.0.0: {} - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - debug@4.4.3(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - diff@7.0.0: {} - - eastasianwidth@0.2.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - esbuild@0.28.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.28.1 - '@esbuild/android-arm': 0.28.1 - '@esbuild/android-arm64': 0.28.1 - '@esbuild/android-x64': 0.28.1 - '@esbuild/darwin-arm64': 0.28.1 - '@esbuild/darwin-x64': 0.28.1 - '@esbuild/freebsd-arm64': 0.28.1 - '@esbuild/freebsd-x64': 0.28.1 - '@esbuild/linux-arm': 0.28.1 - '@esbuild/linux-arm64': 0.28.1 - '@esbuild/linux-ia32': 0.28.1 - '@esbuild/linux-loong64': 0.28.1 - '@esbuild/linux-mips64el': 0.28.1 - '@esbuild/linux-ppc64': 0.28.1 - '@esbuild/linux-riscv64': 0.28.1 - '@esbuild/linux-s390x': 0.28.1 - '@esbuild/linux-x64': 0.28.1 - '@esbuild/netbsd-arm64': 0.28.1 - '@esbuild/netbsd-x64': 0.28.1 - '@esbuild/openbsd-arm64': 0.28.1 - '@esbuild/openbsd-x64': 0.28.1 - '@esbuild/openharmony-arm64': 0.28.1 - '@esbuild/sunos-x64': 0.28.1 - '@esbuild/win32-arm64': 0.28.1 - '@esbuild/win32-ia32': 0.28.1 - '@esbuild/win32-x64': 0.28.1 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - fsevents@2.3.3: - optional: true - - get-caller-file@2.0.5: {} - - glob@10.5.0: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.9 - minipass: 7.1.3 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - has-flag@4.0.0: {} - - he@1.2.0: {} - - is-fullwidth-code-point@3.0.0: {} - - is-path-inside@3.0.3: {} - - is-plain-obj@2.1.0: {} - - is-unicode-supported@0.1.0: {} - - isexe@2.0.0: {} - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - js-yaml@4.3.1: - dependencies: - argparse: 2.0.1 - - litesvm-darwin-arm64@1.3.0: - optional: true - - litesvm-darwin-x64@1.3.0: - optional: true - - litesvm-linux-arm64-gnu@1.3.0: - optional: true - - litesvm-linux-arm64-musl@1.3.0: - optional: true - - litesvm-linux-x64-gnu@1.3.0: - optional: true - - litesvm-linux-x64-musl@1.3.0: - optional: true - - litesvm@1.3.0(typescript@5.9.3): - dependencies: - '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) - '@solana-program/token': 0.14.0(@solana/kit@6.10.0(typescript@5.9.3)) - '@solana/kit': 6.10.0(typescript@5.9.3) - optionalDependencies: - litesvm-darwin-arm64: 1.3.0 - litesvm-darwin-x64: 1.3.0 - litesvm-linux-arm64-gnu: 1.3.0 - litesvm-linux-arm64-musl: 1.3.0 - litesvm-linux-x64-gnu: 1.3.0 - litesvm-linux-x64-musl: 1.3.0 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - lru-cache@10.4.3: {} - - minimatch@9.0.9: - dependencies: - brace-expansion: 2.1.4 - - minipass@7.1.3: {} - - mocha@11.8.0: - dependencies: - browser-stdout: 1.3.1 - chokidar: 4.0.3 - debug: 4.4.3(supports-color@8.1.1) - diff: 7.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 10.5.0 - he: 1.2.0 - is-path-inside: 3.0.3 - js-yaml: 4.3.1 - log-symbols: 4.1.0 - minimatch: 9.0.9 - ms: 2.1.3 - picocolors: 1.1.1 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 9.3.4 - yargs: 17.7.3 - yargs-parser: 21.1.1 - yargs-unparser: 2.0.0 - - ms@2.1.3: {} - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - package-json-from-dist@1.0.1: {} - - path-exists@4.0.0: {} - - path-key@3.1.1: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.3 - - picocolors@1.1.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@4.1.2: {} - - require-directory@2.1.1: {} - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - signal-exit@4.1.0: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.2.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.2.0: - dependencies: - ansi-regex: 6.2.2 - - strip-json-comments@3.1.1: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - tsx@4.23.5: - dependencies: - esbuild: 0.28.1 - optionalDependencies: - fsevents: 2.3.3 - - typescript@5.9.3: {} - - undici-types@8.10.0: {} - - undici-types@8.3.0: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - workerpool@9.3.4: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.3 - string-width: 5.1.2 - strip-ansi: 7.2.0 - - ws@8.21.1: {} - - y18n@5.0.8: {} - - yargs-parser@21.1.1: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@17.7.3: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yocto-queue@0.1.0: {} diff --git a/cryptography/bls-multisig/pinocchio/program/Cargo.toml b/cryptography/bls-multisig/pinocchio/program/Cargo.toml deleted file mode 100644 index 5a3f4ebb5..000000000 --- a/cryptography/bls-multisig/pinocchio/program/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "bls-multisig-pinocchio-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[features] -no-entrypoint = [] - -[dependencies] -pinocchio.workspace = true -solana-address.workspace = true - -[lints.rust] -unexpected_cfgs = { level = "warn", check-cfg = ['cfg(target_os, values("solana"))'] } - -[dev-dependencies] -litesvm = "0.15" -solana-account = "4.3" -solana-instruction = "3.4" -solana-keypair = "3.1" -solana-native-token = "3.0" -solana-signer = "3.0" -solana-transaction = "4.1" diff --git a/cryptography/bls-multisig/pinocchio/program/src/bn254.rs b/cryptography/bls-multisig/pinocchio/program/src/bn254.rs deleted file mode 100644 index fbdd9c903..000000000 --- a/cryptography/bls-multisig/pinocchio/program/src/bn254.rs +++ /dev/null @@ -1,83 +0,0 @@ -use pinocchio::error::ProgramError; - -use crate::BlsMultisigError; - -pub const G1_POINT: usize = 64; -pub const G2_POINT: usize = 128; - -const ALT_BN128_PAIRING: u64 = 3; -const ALT_BN128_G2_ADD: u64 = 4; -const PAIRING_INPUT: usize = (G1_POINT + G2_POINT) * 2; - -/// Canonical BN254 G2 generator, big-endian (EIP-197 encoding). -pub const G2_GENERATOR: [u8; G2_POINT] = [ - 0x19, 0x8e, 0x93, 0x93, 0x92, 0x0d, 0x48, 0x3a, 0x72, 0x60, 0xbf, 0xb7, 0x31, 0xfb, 0x5d, 0x25, 0xf1, 0xaa, 0x49, - 0x33, 0x35, 0xa9, 0xe7, 0x12, 0x97, 0xe4, 0x85, 0xb7, 0xae, 0xf3, 0x12, 0xc2, 0x18, 0x00, 0xde, 0xef, 0x12, 0x1f, - 0x1e, 0x76, 0x42, 0x6a, 0x00, 0x66, 0x5e, 0x5c, 0x44, 0x79, 0x67, 0x43, 0x22, 0xd4, 0xf7, 0x5e, 0xda, 0xdd, 0x46, - 0xde, 0xbd, 0x5c, 0xd9, 0x92, 0xf6, 0xed, 0x09, 0x06, 0x89, 0xd0, 0x58, 0x5f, 0xf0, 0x75, 0xec, 0x9e, 0x99, 0xad, - 0x69, 0x0c, 0x33, 0x95, 0xbc, 0x4b, 0x31, 0x33, 0x70, 0xb3, 0x8e, 0xf3, 0x55, 0xac, 0xda, 0xdc, 0xd1, 0x22, 0x97, - 0x5b, 0x12, 0xc8, 0x5e, 0xa5, 0xdb, 0x8c, 0x6d, 0xeb, 0x4a, 0xab, 0x71, 0x80, 0x8d, 0xcb, 0x40, 0x8f, 0xe3, 0xd1, - 0xe7, 0x69, 0x0c, 0x43, 0xd3, 0x7b, 0x4c, 0xe6, 0xcc, 0x01, 0x66, 0xfa, 0x7d, 0xaa, -]; - -/// Sums a contiguous list of big-endian G2 points (128 bytes each) into one, -/// using the alt_bn128 G2 addition syscall. -pub fn aggregate_g2(points: &[u8]) -> Result<[u8; G2_POINT], ProgramError> { - if points.is_empty() || !points.len().is_multiple_of(G2_POINT) { - return Err(BlsMultisigError::InvalidInputLength.into()); - } - - let count = points.len() / G2_POINT; - let mut aggregate = [0u8; G2_POINT]; - aggregate.copy_from_slice(&points[..G2_POINT]); - - let mut add_input = [0u8; G2_POINT * 2]; - for i in 1..count { - add_input[..G2_POINT].copy_from_slice(&aggregate); - add_input[G2_POINT..].copy_from_slice(&points[i * G2_POINT..(i + 1) * G2_POINT]); - alt_bn128_group_op(ALT_BN128_G2_ADD, &add_input, &mut aggregate)?; - } - Ok(aggregate) -} - -/// Checks the BLS relation `e(aggregate_signature, G2) * e(negated_message_hash, -/// aggregate_pubkey) == 1` via the alt_bn128 pairing syscall. -pub fn aggregate_verify( - aggregate_signature: &[u8], - negated_message_hash: &[u8], - aggregate_pubkey: &[u8], -) -> Result { - let mut input = [0u8; PAIRING_INPUT]; - input[..G1_POINT].copy_from_slice(aggregate_signature); - input[G1_POINT..G1_POINT + G2_POINT].copy_from_slice(&G2_GENERATOR); - input[G1_POINT + G2_POINT..G1_POINT + G2_POINT + G1_POINT].copy_from_slice(negated_message_hash); - input[G1_POINT + G2_POINT + G1_POINT..].copy_from_slice(aggregate_pubkey); - - let mut result = [0u8; 32]; - alt_bn128_group_op(ALT_BN128_PAIRING, &input, &mut result)?; - Ok(result[31] == 1 && result[..31].iter().all(|&byte| byte == 0)) -} - -#[inline(always)] -fn alt_bn128_group_op(group_op: u64, input: &[u8], output: &mut [u8]) -> Result<(), ProgramError> { - #[cfg(target_os = "solana")] - { - let code = unsafe { - pinocchio::syscalls::sol_alt_bn128_group_op( - group_op, - input.as_ptr(), - input.len() as u64, - output.as_mut_ptr(), - ) - }; - match code { - 0 => Ok(()), - _ => Err(BlsMultisigError::SyscallFailed.into()), - } - } - #[cfg(not(target_os = "solana"))] - { - let _ = (group_op, input, output); - Err(BlsMultisigError::SyscallUnavailable.into()) - } -} diff --git a/cryptography/bls-multisig/pinocchio/program/src/lib.rs b/cryptography/bls-multisig/pinocchio/program/src/lib.rs deleted file mode 100644 index b59524102..000000000 --- a/cryptography/bls-multisig/pinocchio/program/src/lib.rs +++ /dev/null @@ -1,162 +0,0 @@ -#![no_std] - -use pinocchio::{error::ProgramError, nostd_panic_handler, AccountView, Address, ProgramResult}; - -mod bn254; -use bn254::{aggregate_g2, aggregate_verify, G1_POINT, G2_POINT}; - -pinocchio::address::declare_id!("8v5LaPLsUEMEHnfShfovqJyUjcRHkngKhnskrYKV8WN4"); - -#[cfg(not(feature = "no-entrypoint"))] -pinocchio::entrypoint!(process_instruction); - -nostd_panic_handler!(); - -const COUNT_PREFIX: usize = 2; -const VERIFY_INPUT: usize = G1_POINT * 2; - -#[derive(Clone, Copy, Debug, PartialEq)] -pub enum BlsMultisigError { - InvalidInputLength, - SyscallFailed, - SyscallUnavailable, - AggregateVerifyFailed, - InvalidMultisigAccount, - MultisigFull, -} - -impl From for ProgramError { - fn from(e: BlsMultisigError) -> Self { - ProgramError::Custom(e as u32) - } -} - -pub fn process_instruction( - program_id: &Address, - accounts: &mut [AccountView], - instruction_data: &[u8], -) -> ProgramResult { - let (discriminator, input) = instruction_data.split_first().ok_or(ProgramError::InvalidInstructionData)?; - - match discriminator { - 0 => process_aggregate_verify(input), - 1 => process_add_signers(program_id, accounts, input), - 2 => process_verify(program_id, accounts, input), - _ => Err(ProgramError::InvalidInstructionData), - } -} - -fn signer_count(data: &[u8]) -> usize { - u16::from_le_bytes([data[0], data[1]]) as usize -} - -/// Stateless aggregate-signature check. -/// -/// # Layout -/// `aggregate_signature` (G1, 64 bytes) ‖ `negated_message_hash` (G1, 64 bytes) -/// ‖ one or more big-endian G2 public keys (128 bytes each). -/// -/// Aggregates the public keys on-chain via the G2 addition syscall, then checks -/// the BLS pairing relation `e(aggSig, G2) · e(-H(m), aggPk) == 1`. Returns the -/// on-chain aggregate public key as return data. -pub fn process_aggregate_verify(input: &[u8]) -> ProgramResult { - if input.len() < VERIFY_INPUT + G2_POINT || !(input.len() - VERIFY_INPUT).is_multiple_of(G2_POINT) { - return Err(BlsMultisigError::InvalidInputLength.into()); - } - - let aggregate_signature = &input[..G1_POINT]; - let negated_message_hash = &input[G1_POINT..VERIFY_INPUT]; - let aggregate_pubkey = aggregate_g2(&input[VERIFY_INPUT..])?; - - if !aggregate_verify(aggregate_signature, negated_message_hash, &aggregate_pubkey)? { - return Err(BlsMultisigError::AggregateVerifyFailed.into()); - } - - set_return_data(&aggregate_pubkey); - Ok(()) -} - -/// Appends signers to the multisig account. -/// -/// Account 0 is the multisig account (writable, owned by this program). Its data -/// is `[count: u16-le][G2 pubkey; count]`. The instruction data is a chunk of one -/// or more big-endian G2 public keys (128 bytes each) appended to the account. -/// -/// This example deliberately omits access control to stay focused on the -/// pairing syscalls: any caller can append keys to a writable multisig -/// account. A production multisig needs an authority signer check, or an -/// immutable signer set fixed at initialization. -pub fn process_add_signers(program_id: &Address, accounts: &mut [AccountView], input: &[u8]) -> ProgramResult { - let multisig = accounts.first_mut().ok_or(ProgramError::NotEnoughAccountKeys)?; - if !multisig.is_writable() || !multisig.owned_by(program_id) { - return Err(BlsMultisigError::InvalidMultisigAccount.into()); - } - if input.is_empty() || !input.len().is_multiple_of(G2_POINT) { - return Err(BlsMultisigError::InvalidInputLength.into()); - } - - let mut data = multisig.try_borrow_mut()?; - if data.len() < COUNT_PREFIX { - return Err(BlsMultisigError::InvalidMultisigAccount.into()); - } - - let count = signer_count(&data); - let added = input.len() / G2_POINT; - let start = COUNT_PREFIX + count * G2_POINT; - let end = start + input.len(); - if end > data.len() { - return Err(BlsMultisigError::MultisigFull.into()); - } - - data[start..end].copy_from_slice(input); - let new_count = (count + added) as u16; - data[..COUNT_PREFIX].copy_from_slice(&new_count.to_le_bytes()); - Ok(()) -} - -/// Verifies an aggregate signature against every registered signer. -/// -/// Account 0 is the multisig account (owned by this program). The instruction -/// data is `aggregate_signature` (G1, 64 bytes) ‖ `negated_message_hash` (G1, 64 -/// bytes). Every stored public key is aggregated on-chain via the G2 addition -/// syscall, then the BLS pairing relation is checked — it only holds when every -/// stored signer contributed to the aggregate signature. -pub fn process_verify(program_id: &Address, accounts: &[AccountView], input: &[u8]) -> ProgramResult { - let multisig = accounts.first().ok_or(ProgramError::NotEnoughAccountKeys)?; - if !multisig.owned_by(program_id) { - return Err(BlsMultisigError::InvalidMultisigAccount.into()); - } - if input.len() != VERIFY_INPUT { - return Err(BlsMultisigError::InvalidInputLength.into()); - } - - let aggregate_signature = &input[..G1_POINT]; - let negated_message_hash = &input[G1_POINT..]; - - let data = multisig.try_borrow()?; - if data.len() < COUNT_PREFIX { - return Err(BlsMultisigError::InvalidMultisigAccount.into()); - } - let count = signer_count(&data); - let pubkeys = &data[COUNT_PREFIX..COUNT_PREFIX + count * G2_POINT]; - - let aggregate_pubkey = aggregate_g2(pubkeys)?; - if !aggregate_verify(aggregate_signature, negated_message_hash, &aggregate_pubkey)? { - return Err(BlsMultisigError::AggregateVerifyFailed.into()); - } - - set_return_data(&aggregate_pubkey); - Ok(()) -} - -#[inline(always)] -fn set_return_data(data: &[u8]) { - #[cfg(target_os = "solana")] - unsafe { - pinocchio::syscalls::sol_set_return_data(data.as_ptr(), data.len() as u64); - } - #[cfg(not(target_os = "solana"))] - { - let _ = data; - } -} diff --git a/cryptography/bls-multisig/pinocchio/program/tests/test.rs b/cryptography/bls-multisig/pinocchio/program/tests/test.rs deleted file mode 100644 index e10d47e07..000000000 --- a/cryptography/bls-multisig/pinocchio/program/tests/test.rs +++ /dev/null @@ -1,160 +0,0 @@ -use litesvm::LiteSVM; -use solana_account::Account; -use solana_address::Address; -use solana_instruction::{AccountMeta, Instruction}; -use solana_keypair::Keypair; -use solana_native_token::LAMPORTS_PER_SOL; -use solana_signer::Signer; -use solana_transaction::Transaction; - -const IX_AGGREGATE_VERIFY: u8 = 0; -const IX_ADD_SIGNERS: u8 = 1; -const IX_VERIFY: u8 = 2; - -const G2_POINT: usize = 128; -const COUNT_PREFIX: usize = 2; - -// BLS-over-BN254 test vectors (message "approve proposal #42", secrets 1, 2, 3), -// taken from the crypto-primitives reference implementation. -const PUBKEY_1: &str = "198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa"; -const PUBKEY_2: &str = "203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e"; -const PUBKEY_3: &str = "1014772f57bb9742735191cd5dcfe4ebbc04156b6878a0a7c9824f32ffb66e8506064e784db10e9051e52826e192715e8d7e478cb09a5e0012defa0694fbc7f5021e2335f3354bb7922ffcc2f38d3323dd9453ac49b55441452aeaca147711b2058e1d5681b5b9e0074b0f9c8d2c68a069b920d74521e79765036d57666c5597"; -const NEGATED_MESSAGE_HASH: &str = "093cccf0e7508f50d86197799d553d23be9a52fecf9fa7d309f3f6a6a0bae1dd25592fd60d368265921cb7232eec3492210e46b4b95682469e7590b0d2df6f28"; -const AGG_SIG_ALL: &str = "06a6497a71f97597f1acf925b1f67eca5b5dd8011f7140e08f484e57dc79bff61b8268216fa30b6505352cdde4fc0d71a005296166f81bfe8edbde2352a6abbf"; -const AGG_SIG_FIRST_TWO: &str = "29da90779ff721fffa657af0a02eb50fcb18cc8176e4d63127827a1767d69c7e227c651364e066d84349de32d97fd6b7f423a1e2b9a162ba061337d5a29e9303"; - -fn from_hex(s: &str) -> Vec { - (0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16).unwrap()).collect() -} - -fn setup() -> (LiteSVM, Address, Keypair) { - let program_id = Address::new_unique(); - let program_bytes = include_bytes!("../../tests/fixtures/bls_multisig_pinocchio_program.so"); - - let mut svm = LiteSVM::new(); - svm.add_program(program_id, program_bytes).unwrap(); - - let payer = Keypair::new(); - svm.airdrop(&payer.pubkey(), LAMPORTS_PER_SOL).unwrap(); - (svm, program_id, payer) -} - -fn multisig_account(svm: &mut LiteSVM, owner: Address, capacity: usize, members: &[&str]) -> Address { - let key = Address::new_unique(); - let mut data = vec![0u8; COUNT_PREFIX + capacity * G2_POINT]; - data[..COUNT_PREFIX].copy_from_slice(&(members.len() as u16).to_le_bytes()); - for (i, member) in members.iter().enumerate() { - let start = COUNT_PREFIX + i * G2_POINT; - data[start..start + G2_POINT].copy_from_slice(&from_hex(member)); - } - svm.set_account(key, Account { lamports: 1_000_000_000, data, owner, ..Account::default() }).unwrap(); - key -} - -fn send( - svm: &mut LiteSVM, - program_id: Address, - payer: &Keypair, - data: Vec, - accounts: Vec, -) -> Result, String> { - let ix = Instruction::new_with_bytes(program_id, &data, accounts); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[payer], svm.latest_blockhash()); - match svm.send_transaction(tx) { - Ok(meta) => Ok(meta.return_data.data), - Err(failed) => Err(failed.err.to_string()), - } -} - -fn verify_data(discriminator: u8, agg_sig: &str) -> Vec { - let mut data = vec![discriminator]; - data.extend_from_slice(&from_hex(agg_sig)); - data.extend_from_slice(&from_hex(NEGATED_MESSAGE_HASH)); - data -} - -#[test] -fn stateless_aggregate_of_all_signers_verifies() { - let (mut svm, program_id, payer) = setup(); - - let mut data = verify_data(IX_AGGREGATE_VERIFY, AGG_SIG_ALL); - for pubkey in [PUBKEY_1, PUBKEY_2, PUBKEY_3] { - data.extend_from_slice(&from_hex(pubkey)); - } - - send(&mut svm, program_id, &payer, data, vec![]).unwrap(); -} - -#[test] -fn stateless_partial_aggregate_is_rejected() { - let (mut svm, program_id, payer) = setup(); - - let mut data = verify_data(IX_AGGREGATE_VERIFY, AGG_SIG_FIRST_TWO); - for pubkey in [PUBKEY_1, PUBKEY_2, PUBKEY_3] { - data.extend_from_slice(&from_hex(pubkey)); - } - - let err = send(&mut svm, program_id, &payer, data, vec![]).unwrap_err(); - assert!(err.contains("custom program error: 0x3"), "unexpected error: {err}"); -} - -#[test] -fn add_signers_appends_to_account() { - let (mut svm, program_id, payer) = setup(); - let multisig = multisig_account(&mut svm, program_id, 3, &[]); - - let mut data = vec![IX_ADD_SIGNERS]; - for pubkey in [PUBKEY_1, PUBKEY_2, PUBKEY_3] { - data.extend_from_slice(&from_hex(pubkey)); - } - send(&mut svm, program_id, &payer, data, vec![AccountMeta::new(multisig, false)]).unwrap(); - - let mut expected = (3u16).to_le_bytes().to_vec(); - for pubkey in [PUBKEY_1, PUBKEY_2, PUBKEY_3] { - expected.extend_from_slice(&from_hex(pubkey)); - } - assert_eq!(svm.get_account(&multisig).unwrap().data, expected); -} - -#[test] -fn add_signers_beyond_capacity_is_rejected() { - let (mut svm, program_id, payer) = setup(); - let multisig = multisig_account(&mut svm, program_id, 2, &[]); - - let mut data = vec![IX_ADD_SIGNERS]; - for pubkey in [PUBKEY_1, PUBKEY_2, PUBKEY_3] { - data.extend_from_slice(&from_hex(pubkey)); - } - let err = send(&mut svm, program_id, &payer, data, vec![AccountMeta::new(multisig, false)]).unwrap_err(); - assert!(err.contains("custom program error: 0x5"), "unexpected error: {err}"); -} - -#[test] -fn verify_all_signers_succeeds() { - let (mut svm, program_id, payer) = setup(); - let multisig = multisig_account(&mut svm, program_id, 3, &[PUBKEY_1, PUBKEY_2, PUBKEY_3]); - - let data = verify_data(IX_VERIFY, AGG_SIG_ALL); - send(&mut svm, program_id, &payer, data, vec![AccountMeta::new(multisig, false)]).unwrap(); -} - -#[test] -fn verify_with_missing_signer_is_rejected() { - let (mut svm, program_id, payer) = setup(); - let multisig = multisig_account(&mut svm, program_id, 3, &[PUBKEY_1, PUBKEY_2, PUBKEY_3]); - - let data = verify_data(IX_VERIFY, AGG_SIG_FIRST_TWO); - let err = send(&mut svm, program_id, &payer, data, vec![AccountMeta::new(multisig, false)]).unwrap_err(); - assert!(err.contains("custom program error: 0x3"), "unexpected error: {err}"); -} - -#[test] -fn verify_rejects_foreign_account() { - let (mut svm, program_id, payer) = setup(); - let foreign_owner = Address::new_unique(); - let multisig = multisig_account(&mut svm, foreign_owner, 3, &[PUBKEY_1, PUBKEY_2, PUBKEY_3]); - - let data = verify_data(IX_VERIFY, AGG_SIG_ALL); - let err = send(&mut svm, program_id, &payer, data, vec![AccountMeta::new(multisig, false)]).unwrap_err(); - assert!(err.contains("custom program error: 0x4"), "unexpected error: {err}"); -} diff --git a/cryptography/bls-multisig/pinocchio/tests/bls-multisig.test.ts b/cryptography/bls-multisig/pinocchio/tests/bls-multisig.test.ts deleted file mode 100644 index acd4ce01f..000000000 --- a/cryptography/bls-multisig/pinocchio/tests/bls-multisig.test.ts +++ /dev/null @@ -1,168 +0,0 @@ -import { Buffer } from 'node:buffer'; -import { - AccountRole, - type Address, - appendTransactionMessageInstruction, - createTransactionMessage, - generateKeyPairSigner, - type KeyPairSigner, - lamports, - pipe, - setTransactionMessageFeePayerSigner, - signTransactionMessageWithSigners, -} from '@solana/kit'; -import { assert } from 'chai'; -import { FailedTransactionMetadata, LiteSVM, TransactionMetadata } from 'litesvm'; - -// BLS-over-BN254 test vectors (message "approve proposal #42", secrets 1, 2, 3), -// taken from the crypto-primitives reference implementation. -const PUBKEY_1 = - '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa'; -const PUBKEY_2 = - '203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e'; -const PUBKEY_3 = - '1014772f57bb9742735191cd5dcfe4ebbc04156b6878a0a7c9824f32ffb66e8506064e784db10e9051e52826e192715e8d7e478cb09a5e0012defa0694fbc7f5021e2335f3354bb7922ffcc2f38d3323dd9453ac49b55441452aeaca147711b2058e1d5681b5b9e0074b0f9c8d2c68a069b920d74521e79765036d57666c5597'; -const NEGATED_MESSAGE_HASH = - '093cccf0e7508f50d86197799d553d23be9a52fecf9fa7d309f3f6a6a0bae1dd25592fd60d368265921cb7232eec3492210e46b4b95682469e7590b0d2df6f28'; -const AGG_SIG_ALL = - '06a6497a71f97597f1acf925b1f67eca5b5dd8011f7140e08f484e57dc79bff61b8268216fa30b6505352cdde4fc0d71a005296166f81bfe8edbde2352a6abbf'; -const AGG_SIG_FIRST_TWO = - '29da90779ff721fffa657af0a02eb50fcb18cc8176e4d63127827a1767d69c7e227c651364e066d84349de32d97fd6b7f423a1e2b9a162ba061337d5a29e9303'; - -const IX_AGGREGATE_VERIFY = 0; -const IX_ADD_SIGNERS = 1; -const IX_VERIFY = 2; - -const G2_POINT = 128; -const COUNT_PREFIX = 2; - -const ERR_AGGREGATE_VERIFY_FAILED = 'InstructionErrorCustom { code: 3 }'; -const ERR_INVALID_MULTISIG_ACCOUNT = 'InstructionErrorCustom { code: 4 }'; -const ERR_MULTISIG_FULL = 'InstructionErrorCustom { code: 5 }'; - -const hex = (s: string) => Uint8Array.from(Buffer.from(s, 'hex')); - -const concat = (...parts: Uint8Array[]) => { - const total = parts.reduce((n, p) => n + p.length, 0); - const out = new Uint8Array(total); - let offset = 0; - for (const part of parts) { - out.set(part, offset); - offset += part.length; - } - return out; -}; - -describe('bls-multisig', () => { - const svm = new LiteSVM(); - let programId: Address; - let payer: KeyPairSigner; - - before(async () => { - programId = (await generateKeyPairSigner()).address; - svm.addProgramFromFile(programId, 'tests/fixtures/bls_multisig_pinocchio_program.so'); - - payer = await generateKeyPairSigner(); - svm.airdrop(payer.address, lamports(1_000_000_000n)); - }); - - async function multisigAccount(owner: Address, capacity: number, members: string[]) { - const address = (await generateKeyPairSigner()).address; - const data = new Uint8Array(COUNT_PREFIX + capacity * G2_POINT); - new DataView(data.buffer).setUint16(0, members.length, true); - members.forEach((member, i) => data.set(hex(member), COUNT_PREFIX + i * G2_POINT)); - - svm.setAccount({ - address, - data, - executable: false, - lamports: lamports(1_000_000_000n), - programAddress: owner, - space: BigInt(data.length), - }); - return address; - } - - async function send(data: Uint8Array, multisig?: Address) { - const accounts = multisig ? [{ address: multisig, role: AccountRole.WRITABLE }] : []; - const transactionMessage = pipe( - createTransactionMessage({ version: 0 }), - m => setTransactionMessageFeePayerSigner(payer, m), - m => svm.setTransactionMessageLifetimeUsingLatestBlockhash(m), - m => appendTransactionMessageInstruction({ programAddress: programId, accounts, data }, m), - ); - const signedTx = await signTransactionMessageWithSigners(transactionMessage); - - const result = svm.sendTransaction(signedTx); - svm.expireBlockhash(); - return result; - } - - const verifyData = (discriminator: number, aggSig: string) => - concat(new Uint8Array([discriminator]), hex(aggSig), hex(NEGATED_MESSAGE_HASH)); - - it('stateless verify: aggregate of all signers passes the pairing check', async () => { - const data = concat(verifyData(IX_AGGREGATE_VERIFY, AGG_SIG_ALL), hex(PUBKEY_1), hex(PUBKEY_2), hex(PUBKEY_3)); - const result = await send(data); - - assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); - }); - - it('stateless verify: partial aggregate is rejected', async () => { - const data = concat( - verifyData(IX_AGGREGATE_VERIFY, AGG_SIG_FIRST_TWO), - hex(PUBKEY_1), - hex(PUBKEY_2), - hex(PUBKEY_3), - ); - const result = await send(data); - - assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); - assert.include(String(result.err()), ERR_AGGREGATE_VERIFY_FAILED); - }); - - it('add signers appends each pubkey and updates the count', async () => { - const multisig = await multisigAccount(programId, 3, []); - const data = concat(new Uint8Array([IX_ADD_SIGNERS]), hex(PUBKEY_1), hex(PUBKEY_2), hex(PUBKEY_3)); - const result = await send(data, multisig); - - assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); - const expected = concat(new Uint8Array([3, 0]), hex(PUBKEY_1), hex(PUBKEY_2), hex(PUBKEY_3)); - const account = svm.getAccount(multisig); - assert(account?.exists, 'expected the multisig account to exist'); - assert.deepEqual(account.data, expected); - }); - - it('add signers beyond capacity is rejected', async () => { - const multisig = await multisigAccount(programId, 2, []); - const data = concat(new Uint8Array([IX_ADD_SIGNERS]), hex(PUBKEY_1), hex(PUBKEY_2), hex(PUBKEY_3)); - const result = await send(data, multisig); - - assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); - assert.include(String(result.err()), ERR_MULTISIG_FULL); - }); - - it('verify passes when every registered signer signed', async () => { - const multisig = await multisigAccount(programId, 3, [PUBKEY_1, PUBKEY_2, PUBKEY_3]); - const result = await send(verifyData(IX_VERIFY, AGG_SIG_ALL), multisig); - - assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); - }); - - it('verify rejects an aggregate missing one registered signer', async () => { - const multisig = await multisigAccount(programId, 3, [PUBKEY_1, PUBKEY_2, PUBKEY_3]); - const result = await send(verifyData(IX_VERIFY, AGG_SIG_FIRST_TWO), multisig); - - assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); - assert.include(String(result.err()), ERR_AGGREGATE_VERIFY_FAILED); - }); - - it('verify rejects an account not owned by the program', async () => { - const foreignOwner = (await generateKeyPairSigner()).address; - const multisig = await multisigAccount(foreignOwner, 3, [PUBKEY_1, PUBKEY_2, PUBKEY_3]); - const result = await send(verifyData(IX_VERIFY, AGG_SIG_ALL), multisig); - - assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); - assert.include(String(result.err()), ERR_INVALID_MULTISIG_ACCOUNT); - }); -}); diff --git a/cryptography/bls-multisig/pinocchio/tsconfig.json b/cryptography/bls-multisig/pinocchio/tsconfig.json deleted file mode 100644 index c02443141..000000000 --- a/cryptography/bls-multisig/pinocchio/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai", "node"], - "typeRoots": ["./node_modules/@types"], - "lib": ["esnext"], - "module": "esnext", - "target": "esnext", - "moduleResolution": "bundler", - "esModuleInterop": true, - "resolveJsonModule": true, - "allowImportingTsExtensions": true, - "noEmit": true, - "skipLibCheck": true - } -} diff --git a/cryptography/bn254/pinocchio/README.md b/cryptography/bn254/pinocchio/README.md new file mode 100644 index 000000000..995bc1a5f --- /dev/null +++ b/cryptography/bn254/pinocchio/README.md @@ -0,0 +1,21 @@ +# BN254 (alt_bn128) operations (Pinocchio) + +A stateless program that wraps the BN254 (alt_bn128) G2 group operations added by [SIMD-0302](https://github.com/solana-foundation/solana-improvement-documents/pull/302) and the pairing operation, via the `sol_alt_bn128_group_op` syscall. Results come back as transaction return data. + +| Discriminator | Instruction | Input | +| ------------- | ---------------- | ------------------------------------------------------------------------------ | +| 0 | G2 add | two big-endian G2 points (128 bytes each) | +| 1 | G2 mul | one big-endian G2 point ‖ 32-byte big-endian scalar | +| 2 | Aggregate verify | `aggSig` (G1, 64) ‖ `-H(m)` (G1, 64) ‖ one or more G2 pubkeys (128 bytes each) | + +Aggregate verify shows what the pairing buys you: N BLS signatures collapse into one 64-byte G1 point, the pubkeys aggregate on-chain with G2 additions, and a single pairing check `e(aggSig, G2) · e(-H(m), aggPk) == 1` verifies them all at once. + +The G2 operations run in LiteSVM today but only work on public clusters once the `enable_alt_bn128_g2_syscalls` feature gate activates. + +## Test + +```sh +pnpm install +pnpm build-and-test # TypeScript tests (mocha + LiteSVM) +cargo test --manifest-path=./program/Cargo.toml # Rust tests (litesvm), after build-and-test +``` diff --git a/cryptography/alt-bn128-g2/pinocchio/package.json b/cryptography/bn254/pinocchio/package.json similarity index 74% rename from cryptography/alt-bn128-g2/pinocchio/package.json rename to cryptography/bn254/pinocchio/package.json index 9bce91a3f..980afc6ca 100644 --- a/cryptography/alt-bn128-g2/pinocchio/package.json +++ b/cryptography/bn254/pinocchio/package.json @@ -1,12 +1,12 @@ { - "name": "alt-bn128-g2-pinocchio", + "name": "bn254-pinocchio", "version": "0.1.0", "type": "module", "scripts": { - "test": "mocha --import=tsx -t 1000000 ./tests/alt-bn128-g2.test.ts", + "test": "mocha --import=tsx -t 1000000 ./tests/bn254.test.ts", "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/alt_bn128_g2_pinocchio_program.so" + "deploy": "solana program deploy ./program/target/so/bn254_pinocchio_program.so" }, "dependencies": { "@solana/kit": "^7.0.0" diff --git a/cryptography/alt-bn128-g2/pinocchio/pnpm-lock.yaml b/cryptography/bn254/pinocchio/pnpm-lock.yaml similarity index 100% rename from cryptography/alt-bn128-g2/pinocchio/pnpm-lock.yaml rename to cryptography/bn254/pinocchio/pnpm-lock.yaml diff --git a/cryptography/alt-bn128-g2/pinocchio/program/Cargo.toml b/cryptography/bn254/pinocchio/program/Cargo.toml similarity index 91% rename from cryptography/alt-bn128-g2/pinocchio/program/Cargo.toml rename to cryptography/bn254/pinocchio/program/Cargo.toml index 1568d978d..3af8cf065 100644 --- a/cryptography/alt-bn128-g2/pinocchio/program/Cargo.toml +++ b/cryptography/bn254/pinocchio/program/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "alt-bn128-g2-pinocchio-program" +name = "bn254-pinocchio-program" version = "0.1.0" edition = "2021" diff --git a/cryptography/bn254/pinocchio/program/src/lib.rs b/cryptography/bn254/pinocchio/program/src/lib.rs new file mode 100644 index 000000000..ed1d9b452 --- /dev/null +++ b/cryptography/bn254/pinocchio/program/src/lib.rs @@ -0,0 +1,189 @@ +#![no_std] + +use pinocchio::{error::ProgramError, nostd_panic_handler, AccountView, Address, ProgramResult}; + +pinocchio::address::declare_id!("DbkAQTKuGJAwAPWVJdHLwxD47QBhkBTKqHBeBDJ8kzNa"); + +#[cfg(not(feature = "no-entrypoint"))] +pinocchio::entrypoint!(process_instruction); + +nostd_panic_handler!(); + +pub const G1_POINT_SIZE: usize = 64; +pub const G2_POINT_SIZE: usize = 128; +pub const SCALAR_SIZE: usize = 32; +pub const G2_ADD_INPUT_SIZE: usize = G2_POINT_SIZE * 2; +pub const G2_MUL_INPUT_SIZE: usize = G2_POINT_SIZE + SCALAR_SIZE; + +const ALT_BN128_PAIRING: u64 = 3; +const ALT_BN128_G2_ADD: u64 = 4; +const ALT_BN128_G2_MUL: u64 = 6; + +const VERIFY_HEADER: usize = G1_POINT_SIZE * 2; +const PAIRING_INPUT: usize = (G1_POINT_SIZE + G2_POINT_SIZE) * 2; + +/// Canonical BN254 G2 generator, big-endian (EIP-197 encoding). +pub const G2_GENERATOR: [u8; G2_POINT_SIZE] = [ + 0x19, 0x8e, 0x93, 0x93, 0x92, 0x0d, 0x48, 0x3a, 0x72, 0x60, 0xbf, 0xb7, 0x31, 0xfb, 0x5d, 0x25, 0xf1, 0xaa, 0x49, + 0x33, 0x35, 0xa9, 0xe7, 0x12, 0x97, 0xe4, 0x85, 0xb7, 0xae, 0xf3, 0x12, 0xc2, 0x18, 0x00, 0xde, 0xef, 0x12, 0x1f, + 0x1e, 0x76, 0x42, 0x6a, 0x00, 0x66, 0x5e, 0x5c, 0x44, 0x79, 0x67, 0x43, 0x22, 0xd4, 0xf7, 0x5e, 0xda, 0xdd, 0x46, + 0xde, 0xbd, 0x5c, 0xd9, 0x92, 0xf6, 0xed, 0x09, 0x06, 0x89, 0xd0, 0x58, 0x5f, 0xf0, 0x75, 0xec, 0x9e, 0x99, 0xad, + 0x69, 0x0c, 0x33, 0x95, 0xbc, 0x4b, 0x31, 0x33, 0x70, 0xb3, 0x8e, 0xf3, 0x55, 0xac, 0xda, 0xdc, 0xd1, 0x22, 0x97, + 0x5b, 0x12, 0xc8, 0x5e, 0xa5, 0xdb, 0x8c, 0x6d, 0xeb, 0x4a, 0xab, 0x71, 0x80, 0x8d, 0xcb, 0x40, 0x8f, 0xe3, 0xd1, + 0xe7, 0x69, 0x0c, 0x43, 0xd3, 0x7b, 0x4c, 0xe6, 0xcc, 0x01, 0x66, 0xfa, 0x7d, 0xaa, +]; + +#[derive(Clone, Copy, Debug, PartialEq)] +pub enum Bn254Error { + InvalidInputLength, + SyscallFailed, + SyscallUnavailable, + AggregateVerifyFailed, +} + +impl From for ProgramError { + fn from(e: Bn254Error) -> Self { + ProgramError::Custom(e as u32) + } +} + +pub fn process_instruction( + _program_id: &Address, + _accounts: &mut [AccountView], + instruction_data: &[u8], +) -> ProgramResult { + let (discriminator, input) = instruction_data.split_first().ok_or(ProgramError::InvalidInstructionData)?; + + match discriminator { + 0 => process_g2_add(input), + 1 => process_g2_mul(input), + 2 => process_aggregate_verify(input), + _ => Err(ProgramError::InvalidInstructionData), + } +} + +/// Adds two big-endian G2 points (128 bytes each) via the +/// `sol_alt_bn128_group_op` syscall and returns the 128-byte sum as return data. +pub fn process_g2_add(input: &[u8]) -> ProgramResult { + if input.len() != G2_ADD_INPUT_SIZE { + return Err(Bn254Error::InvalidInputLength.into()); + } + + let mut result = [0u8; G2_POINT_SIZE]; + alt_bn128_group_op(ALT_BN128_G2_ADD, input, &mut result)?; + + set_return_data(&result); + Ok(()) +} + +/// Multiplies a big-endian G2 point (128 bytes) by a big-endian 32-byte scalar +/// via the `sol_alt_bn128_group_op` syscall and returns the 128-byte product as +/// return data. +pub fn process_g2_mul(input: &[u8]) -> ProgramResult { + if input.len() != G2_MUL_INPUT_SIZE { + return Err(Bn254Error::InvalidInputLength.into()); + } + + let mut result = [0u8; G2_POINT_SIZE]; + alt_bn128_group_op(ALT_BN128_G2_MUL, input, &mut result)?; + + set_return_data(&result); + Ok(()) +} + +/// Verifies an aggregate BLS signature over BN254 with a single pairing check. +/// +/// # Layout +/// `aggregate_signature` (G1, 64 bytes) ‖ `negated_message_hash` (G1, 64 bytes) +/// ‖ one or more big-endian G2 public keys (128 bytes each). +/// +/// Aggregates the public keys on-chain via the G2 addition syscall, then checks +/// the BLS pairing relation `e(aggSig, G2) · e(-H(m), aggPk) == 1`. Returns the +/// on-chain aggregate public key as return data. +pub fn process_aggregate_verify(input: &[u8]) -> ProgramResult { + if input.len() < VERIFY_HEADER + G2_POINT_SIZE || !(input.len() - VERIFY_HEADER).is_multiple_of(G2_POINT_SIZE) { + return Err(Bn254Error::InvalidInputLength.into()); + } + + let aggregate_signature = &input[..G1_POINT_SIZE]; + let negated_message_hash = &input[G1_POINT_SIZE..VERIFY_HEADER]; + let aggregate_pubkey = aggregate_g2(&input[VERIFY_HEADER..])?; + + if !aggregate_verify(aggregate_signature, negated_message_hash, &aggregate_pubkey)? { + return Err(Bn254Error::AggregateVerifyFailed.into()); + } + + set_return_data(&aggregate_pubkey); + Ok(()) +} + +/// Sums a contiguous list of big-endian G2 points (128 bytes each) into one, +/// using the G2 addition syscall. +fn aggregate_g2(points: &[u8]) -> Result<[u8; G2_POINT_SIZE], ProgramError> { + let count = points.len() / G2_POINT_SIZE; + let mut aggregate = [0u8; G2_POINT_SIZE]; + aggregate.copy_from_slice(&points[..G2_POINT_SIZE]); + + let mut add_input = [0u8; G2_ADD_INPUT_SIZE]; + for i in 1..count { + add_input[..G2_POINT_SIZE].copy_from_slice(&aggregate); + add_input[G2_POINT_SIZE..].copy_from_slice(&points[i * G2_POINT_SIZE..(i + 1) * G2_POINT_SIZE]); + alt_bn128_group_op(ALT_BN128_G2_ADD, &add_input, &mut aggregate)?; + } + Ok(aggregate) +} + +/// Checks the BLS relation `e(aggregate_signature, G2) * e(negated_message_hash, +/// aggregate_pubkey) == 1` via the alt_bn128 pairing syscall. +fn aggregate_verify( + aggregate_signature: &[u8], + negated_message_hash: &[u8], + aggregate_pubkey: &[u8], +) -> Result { + let mut input = [0u8; PAIRING_INPUT]; + input[..G1_POINT_SIZE].copy_from_slice(aggregate_signature); + input[G1_POINT_SIZE..G1_POINT_SIZE + G2_POINT_SIZE].copy_from_slice(&G2_GENERATOR); + input[G1_POINT_SIZE + G2_POINT_SIZE..G1_POINT_SIZE + G2_POINT_SIZE + G1_POINT_SIZE] + .copy_from_slice(negated_message_hash); + input[G1_POINT_SIZE + G2_POINT_SIZE + G1_POINT_SIZE..].copy_from_slice(aggregate_pubkey); + + let mut result = [0u8; 32]; + alt_bn128_group_op(ALT_BN128_PAIRING, &input, &mut result)?; + Ok(result[31] == 1 && result[..31].iter().all(|&byte| byte == 0)) +} + +#[inline(always)] +fn alt_bn128_group_op(group_op: u64, input: &[u8], output: &mut [u8]) -> Result<(), ProgramError> { + #[cfg(target_os = "solana")] + { + let code = unsafe { + pinocchio::syscalls::sol_alt_bn128_group_op( + group_op, + input.as_ptr(), + input.len() as u64, + output.as_mut_ptr(), + ) + }; + match code { + 0 => Ok(()), + _ => Err(Bn254Error::SyscallFailed.into()), + } + } + #[cfg(not(target_os = "solana"))] + { + let _ = (group_op, input, output); + Err(Bn254Error::SyscallUnavailable.into()) + } +} + +#[inline(always)] +fn set_return_data(data: &[u8]) { + #[cfg(target_os = "solana")] + unsafe { + pinocchio::syscalls::sol_set_return_data(data.as_ptr(), data.len() as u64); + } + #[cfg(not(target_os = "solana"))] + { + let _ = data; + } +} diff --git a/cryptography/alt-bn128-g2/pinocchio/program/tests/test.rs b/cryptography/bn254/pinocchio/program/tests/test.rs similarity index 66% rename from cryptography/alt-bn128-g2/pinocchio/program/tests/test.rs rename to cryptography/bn254/pinocchio/program/tests/test.rs index 8cd52a39c..e1e1b253a 100644 --- a/cryptography/alt-bn128-g2/pinocchio/program/tests/test.rs +++ b/cryptography/bn254/pinocchio/program/tests/test.rs @@ -8,6 +8,7 @@ use solana_transaction::Transaction; const IX_G2_ADD: u8 = 0; const IX_G2_MUL: u8 = 1; +const IX_AGGREGATE_VERIFY: u8 = 2; // Big-endian alt_bn128 G2 points derived from the BN254 G2 generator: // GENERATOR + 2*GENERATOR == 3*GENERATOR. @@ -15,13 +16,20 @@ const G2_GENERATOR: &str = "198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e4 const G2_TWO_GENERATOR: &str = "203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e"; const G2_THREE_GENERATOR: &str = "1014772f57bb9742735191cd5dcfe4ebbc04156b6878a0a7c9824f32ffb66e8506064e784db10e9051e52826e192715e8d7e478cb09a5e0012defa0694fbc7f5021e2335f3354bb7922ffcc2f38d3323dd9453ac49b55441452aeaca147711b2058e1d5681b5b9e0074b0f9c8d2c68a069b920d74521e79765036d57666c5597"; +// Aggregate BLS vectors (message "approve proposal #42", secrets 1, 2, 3), from +// the crypto-primitives reference implementation. The three pubkeys are the +// generator multiples above. +const NEGATED_MESSAGE_HASH: &str = "093cccf0e7508f50d86197799d553d23be9a52fecf9fa7d309f3f6a6a0bae1dd25592fd60d368265921cb7232eec3492210e46b4b95682469e7590b0d2df6f28"; +const AGG_SIG_ALL: &str = "06a6497a71f97597f1acf925b1f67eca5b5dd8011f7140e08f484e57dc79bff61b8268216fa30b6505352cdde4fc0d71a005296166f81bfe8edbde2352a6abbf"; +const AGG_SIG_FIRST_TWO: &str = "29da90779ff721fffa657af0a02eb50fcb18cc8176e4d63127827a1767d69c7e227c651364e066d84349de32d97fd6b7f423a1e2b9a162ba061337d5a29e9303"; + fn from_hex(s: &str) -> Vec { (0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16).unwrap()).collect() } fn setup() -> (LiteSVM, Address, Keypair) { let program_id = Address::new_unique(); - let program_bytes = include_bytes!("../../tests/fixtures/alt_bn128_g2_pinocchio_program.so"); + let program_bytes = include_bytes!("../../tests/fixtures/bn254_pinocchio_program.so"); let mut svm = LiteSVM::new(); svm.add_program(program_id, program_bytes).unwrap(); @@ -40,6 +48,16 @@ fn send(svm: &mut LiteSVM, program_id: Address, payer: &Keypair, data: Vec) } } +fn verify_data(agg_sig: &str) -> Vec { + let mut data = vec![IX_AGGREGATE_VERIFY]; + data.extend_from_slice(&from_hex(agg_sig)); + data.extend_from_slice(&from_hex(NEGATED_MESSAGE_HASH)); + for pubkey in [G2_GENERATOR, G2_TWO_GENERATOR, G2_THREE_GENERATOR] { + data.extend_from_slice(&from_hex(pubkey)); + } + data +} + #[test] fn g2_add_generator_plus_double_is_triple() { let (mut svm, program_id, payer) = setup(); @@ -66,6 +84,21 @@ fn g2_mul_generator_times_three_is_triple() { assert_eq!(return_data, from_hex(G2_THREE_GENERATOR)); } +#[test] +fn aggregate_of_all_signers_verifies() { + let (mut svm, program_id, payer) = setup(); + + send(&mut svm, program_id, &payer, verify_data(AGG_SIG_ALL)).unwrap(); +} + +#[test] +fn partial_aggregate_is_rejected() { + let (mut svm, program_id, payer) = setup(); + + let err = send(&mut svm, program_id, &payer, verify_data(AGG_SIG_FIRST_TWO)).unwrap_err(); + assert!(err.contains("custom program error: 0x3"), "unexpected error: {err}"); +} + #[test] fn wrong_input_length_is_rejected() { let (mut svm, program_id, payer) = setup(); diff --git a/cryptography/alt-bn128-g2/pinocchio/tests/alt-bn128-g2.test.ts b/cryptography/bn254/pinocchio/tests/bn254.test.ts similarity index 64% rename from cryptography/alt-bn128-g2/pinocchio/tests/alt-bn128-g2.test.ts rename to cryptography/bn254/pinocchio/tests/bn254.test.ts index cd692e2d8..755b65cf8 100644 --- a/cryptography/alt-bn128-g2/pinocchio/tests/alt-bn128-g2.test.ts +++ b/cryptography/bn254/pinocchio/tests/bn254.test.ts @@ -22,19 +22,33 @@ const G2_TWO_GENERATOR = const G2_THREE_GENERATOR = '1014772f57bb9742735191cd5dcfe4ebbc04156b6878a0a7c9824f32ffb66e8506064e784db10e9051e52826e192715e8d7e478cb09a5e0012defa0694fbc7f5021e2335f3354bb7922ffcc2f38d3323dd9453ac49b55441452aeaca147711b2058e1d5681b5b9e0074b0f9c8d2c68a069b920d74521e79765036d57666c5597'; +// Aggregate BLS vectors (message "approve proposal #42", secrets 1, 2, 3), from +// the crypto-primitives reference implementation. The three pubkeys are the +// generator multiples above. +const NEGATED_MESSAGE_HASH = + '093cccf0e7508f50d86197799d553d23be9a52fecf9fa7d309f3f6a6a0bae1dd25592fd60d368265921cb7232eec3492210e46b4b95682469e7590b0d2df6f28'; +const AGG_SIG_ALL = + '06a6497a71f97597f1acf925b1f67eca5b5dd8011f7140e08f484e57dc79bff61b8268216fa30b6505352cdde4fc0d71a005296166f81bfe8edbde2352a6abbf'; +const AGG_SIG_FIRST_TWO = + '29da90779ff721fffa657af0a02eb50fcb18cc8176e4d63127827a1767d69c7e227c651364e066d84349de32d97fd6b7f423a1e2b9a162ba061337d5a29e9303'; + const IX_G2_ADD = 0; const IX_G2_MUL = 1; +const IX_AGGREGATE_VERIFY = 2; + +const ERR_INVALID_INPUT_LENGTH = 'InstructionErrorCustom { code: 0 }'; +const ERR_AGGREGATE_VERIFY_FAILED = 'InstructionErrorCustom { code: 3 }'; const hex = (s: string) => Uint8Array.from(Buffer.from(s, 'hex')); -describe('alt-bn128-g2', () => { +describe('bn254', () => { const svm = new LiteSVM(); let programId: Address; let payer: KeyPairSigner; before(async () => { programId = (await generateKeyPairSigner()).address; - svm.addProgramFromFile(programId, 'tests/fixtures/alt_bn128_g2_pinocchio_program.so'); + svm.addProgramFromFile(programId, 'tests/fixtures/bn254_pinocchio_program.so'); payer = await generateKeyPairSigner(); svm.airdrop(payer.address, lamports(1_000_000_000n)); @@ -58,6 +72,15 @@ describe('alt-bn128-g2', () => { return result; } + const verifyInput = (aggSig: string) => + new Uint8Array([ + ...hex(aggSig), + ...hex(NEGATED_MESSAGE_HASH), + ...hex(G2_GENERATOR), + ...hex(G2_TWO_GENERATOR), + ...hex(G2_THREE_GENERATOR), + ]); + it('adds two G2 points: G + 2G == 3G', async () => { const result = await send(IX_G2_ADD, new Uint8Array([...hex(G2_GENERATOR), ...hex(G2_TWO_GENERATOR)])); @@ -74,10 +97,23 @@ describe('alt-bn128-g2', () => { assert.deepEqual(result.returnData().data(), hex(G2_THREE_GENERATOR)); }); + it('verifies an aggregate signature from all signers with one pairing check', async () => { + const result = await send(IX_AGGREGATE_VERIFY, verifyInput(AGG_SIG_ALL)); + + assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); + }); + + it('rejects an aggregate signature missing one signer', async () => { + const result = await send(IX_AGGREGATE_VERIFY, verifyInput(AGG_SIG_FIRST_TWO)); + + assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); + assert.include(String(result.err()), ERR_AGGREGATE_VERIFY_FAILED); + }); + it('rejects input that is not two whole G2 points', async () => { const result = await send(IX_G2_ADD, new Uint8Array(255)); assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); - assert.include(String(result.err()), 'InstructionErrorCustom { code: 0 }'); + assert.include(String(result.err()), ERR_INVALID_INPUT_LENGTH); }); }); diff --git a/cryptography/alt-bn128-g2/pinocchio/tsconfig.json b/cryptography/bn254/pinocchio/tsconfig.json similarity index 100% rename from cryptography/alt-bn128-g2/pinocchio/tsconfig.json rename to cryptography/bn254/pinocchio/tsconfig.json diff --git a/cryptography/encrypted-ballot/pinocchio/README.md b/cryptography/encrypted-ballot/pinocchio/README.md deleted file mode 100644 index f1d648a14..000000000 --- a/cryptography/encrypted-ballot/pinocchio/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Encrypted ballot (Pinocchio) - -Keeps a running twisted ElGamal tally in an account without ever decrypting individual ballots. Each ballot is a 64-byte ciphertext (32-byte Pedersen commitment ‖ 32-byte decrypt handle); the program folds it into the tally with two ristretto255 additions via the `sol_curve_group_op` syscall. The account stores `[count: u16-le][tally: 64]`. - -| Discriminator | Instruction | Input | -| ------------- | ----------- | ----------------------------- | -| 0 | Tally add | one 64-byte ballot ciphertext | - -Only the holder of the ElGamal secret key can decrypt the final tally; the chain sees nothing but ciphertexts. - -## Test - -```sh -pnpm install -pnpm build-and-test # TypeScript tests (mocha + LiteSVM) -cargo test --manifest-path=./program/Cargo.toml # Rust tests (litesvm), after build-and-test -``` diff --git a/cryptography/encrypted-ballot/pinocchio/package.json b/cryptography/encrypted-ballot/pinocchio/package.json deleted file mode 100644 index 2e7325b8e..000000000 --- a/cryptography/encrypted-ballot/pinocchio/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "encrypted-ballot-pinocchio", - "version": "0.1.0", - "type": "module", - "scripts": { - "test": "mocha --import=tsx -t 1000000 ./tests/encrypted-ballot.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/encrypted_ballot_pinocchio_program.so" - }, - "dependencies": { - "@solana/kit": "^7.0.0" - }, - "devDependencies": { - "@types/chai": "^5.2.3", - "@types/mocha": "^10.0.10", - "@types/node": "^26.1.0", - "chai": "^6.2.2", - "litesvm": "^1.3.0", - "mocha": "^11.7.5", - "tsx": "^4.19.2", - "typescript": "^5.9.3" - } -} diff --git a/cryptography/encrypted-ballot/pinocchio/pnpm-lock.yaml b/cryptography/encrypted-ballot/pinocchio/pnpm-lock.yaml deleted file mode 100644 index 6e11abae2..000000000 --- a/cryptography/encrypted-ballot/pinocchio/pnpm-lock.yaml +++ /dev/null @@ -1,2825 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@solana/kit': - specifier: ^7.0.0 - version: 7.0.0(typescript@5.9.3) - devDependencies: - '@types/chai': - specifier: ^5.2.3 - version: 5.2.3 - '@types/mocha': - specifier: ^10.0.10 - version: 10.0.10 - '@types/node': - specifier: ^26.1.0 - version: 26.1.2 - chai: - specifier: ^6.2.2 - version: 6.2.2 - litesvm: - specifier: ^1.3.0 - version: 1.3.0(typescript@5.9.3) - mocha: - specifier: ^11.7.5 - version: 11.8.0 - tsx: - specifier: ^4.19.2 - version: 4.23.5 - typescript: - specifier: ^5.9.3 - version: 5.9.3 - -packages: - - '@esbuild/aix-ppc64@0.28.1': - resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.28.1': - resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.28.1': - resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.28.1': - resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.28.1': - resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.28.1': - resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.28.1': - resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.28.1': - resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.28.1': - resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.28.1': - resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.28.1': - resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.28.1': - resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.28.1': - resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.28.1': - resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.28.1': - resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.28.1': - resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.28.1': - resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.28.1': - resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.28.1': - resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.28.1': - resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.28.1': - resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.28.1': - resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.28.1': - resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.28.1': - resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.28.1': - resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.28.1': - resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@solana-program/system@0.12.2': - resolution: {integrity: sha512-MaBeOxlvTruQhA7UYkOb3hVTEHPPagOtd+PvTm6a8rGgvEAP0kD4BbC37NceOaR4ABNqdaCmD5OMVRKgrE6KAg==} - peerDependencies: - '@solana/kit': ^6.4.0 - - '@solana-program/token@0.14.0': - resolution: {integrity: sha512-zpLMr6JZndlsQCQvrm0gezfwdr1lmzOGqN6v2WIYXjtDmbF+xg6zh/MAp2UFHRpv3uDmylEdjtQo05pa2OeaYg==} - engines: {node: '>=24.0.0'} - peerDependencies: - '@solana/kit': ^6.5.0 - - '@solana/accounts@6.10.0': - resolution: {integrity: sha512-+FxfDOrnifoPlBkF+fr8eeQdgM6xtIgAg9xKMu3WnIz60oZd4Xnry6+ff6t+ePPoZZp397FSg9ZJet68VCWm5Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/accounts@7.0.0': - resolution: {integrity: sha512-RfbinkhuWxcObxZIdjeWEn/mzLqRp/h2hAk/ZQCUxPdDBW8h4XxEybK9GBItGOAcrUz5HuusXTD+cXXnlIxWcg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/addresses@6.10.0': - resolution: {integrity: sha512-vEoCGBTxG0HCERAn84KXkrJjl+pDaNzOpZ0qbgcPS98fYxP5yzbKB8SNOY2bzrbkRUmmw5Q3hqTRERemUN2Gcw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/addresses@7.0.0': - resolution: {integrity: sha512-E7sJtV5d3bXrmw3I30rcKY+xoqM++6KIVJCi+q8ZaSMyP04UMfEENPHIJ+TkyS1RUgjzPT91ka/oWrtTh6EfkQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/assertions@6.10.0': - resolution: {integrity: sha512-lKSAdVo+P/6Lp4vs6shstXmFOpvxrABwn4o1462tb7sKkNapk6o9pPFVPGw4DUgPS3WqWRs1j2tmpuVjhQRntg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/assertions@7.0.0': - resolution: {integrity: sha512-CShOQLPezI0tbrih+L88fzt8FMHDyJoWkmulk4wfRp3HhpQL2yNlH/SWLH033qysnvkmE7TxBFUtcnbnf7jz1g==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-core@6.10.0': - resolution: {integrity: sha512-nfAl9OMGo4HanIMxGsQoVB7BxMoqBCYEUxl8oEAZZ09pDxnaXQZkTRXEwPPccag37XfW1ciPd1vWPKwB2b0HHQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-core@7.0.0': - resolution: {integrity: sha512-6HtEisZEtFb6okARUgYqmKdDbn2aHRrSCDgB1/GEwr0s6fK5XNYpafaSjorbs2MEyZV3tCUFTj2j6fk/4nNcLg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-data-structures@6.10.0': - resolution: {integrity: sha512-CNasJW3bq5u+632Zt5aJ8rOjAjv2HyenpV8o9kAIqdmV4CBpjCCoBnKn8LkuR/sbeREZxJYfhKTXO/9ruAkw7A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-data-structures@7.0.0': - resolution: {integrity: sha512-P0Ys1mB4lYlz3MMTCaJSysE3OYrq8WvsveU1ta8U/yG1qChXFGCOxPVh06swjaRxwPrEakb9VUESS5vNtp1rRA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-numbers@6.10.0': - resolution: {integrity: sha512-CcM+wX4zOiA9zkh8A7t1787A0Ehgmu5+6Z2tKoHew6cNw/dkaUTPa8JnNHbvfsLC8dfHC1BhAEJl86sKmRsfkQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-numbers@7.0.0': - resolution: {integrity: sha512-XL0jnmnXr3ceoX4tusT+XkBVR2iGKEJecTIXbIV7ILi9xObg3fNXafNbTmbIOvKc0ByTyjo8EWZ9jQKSRWgsgA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs-strings@6.10.0': - resolution: {integrity: sha512-zlaqkg7K6F6IN4V/Ec8TWkTn054gxv7ZLagvGkuEyAdPQ6BzzsehOm2TqCuyXgJJTCGPLY1bEk6yH9NxANe0kA==} - engines: {node: '>=20.18.0'} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5.4.0' - peerDependenciesMeta: - fastestsmallesttextencoderdecoder: - optional: true - typescript: - optional: true - - '@solana/codecs-strings@7.0.0': - resolution: {integrity: sha512-zXE1PE9HkVk6phZ6aqHTXvLZ0qIl5bJNIvG9eMB7LuFO1XBVQywJUtjKS8fE3/xmRCWSMilFSrEXGA+SpOyLrQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5.4.0' - peerDependenciesMeta: - fastestsmallesttextencoderdecoder: - optional: true - typescript: - optional: true - - '@solana/codecs@6.10.0': - resolution: {integrity: sha512-lLVuxod4ChWp9i7OvpgIykYG8Q9OGPVXKnHM9VlzDDLylsx7Y1FoQL00sHa7PqFkJVmkBufaA6dcGbQ7FU+lAQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/codecs@7.0.0': - resolution: {integrity: sha512-xT1IbwKkPZ544u/eqhb9SZ0fNYJidWgIUzKNQMbvLCwduayAkQp+czlGdvLQ6CVlqtCewtH3gW8biGU7YuBdEw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/errors@6.10.0': - resolution: {integrity: sha512-KBLAxCtAXr357JNhCyIDQXWbuSj5vN6w+28FSfcYY6OOSiphmXLAV3V58jgV0C6iNbIzFJFi6yatFyDTdeJsNg==} - engines: {node: '>=20.18.0'} - hasBin: true - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/errors@7.0.0': - resolution: {integrity: sha512-94r+LLSzZ0XVp+LOogwxWGXeo138uvwqtqRW9Tjl1DIXrFgh8euXnJSXZyydu1UXJs7ItOSm0QreJviSGw3TGQ==} - engines: {node: '>=20.18.0'} - hasBin: true - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/fast-stable-stringify@6.10.0': - resolution: {integrity: sha512-iCNed27wk6PKSS3QUtHovRfMWF/jbVWogs2vB4tukKUCsqG4rDfDInIwZ6ur/nY6XTrgi2gMMdZq9GAUlWsbfw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/fast-stable-stringify@7.0.0': - resolution: {integrity: sha512-i/b5ZJMqMJXa6etjypANa2/ErPZfNG9/EVIYl7HpWooyCRgZ8hZJmJ2Cgrp0r4EMXCLeWn4aEG2HOBTzOJ4F7Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/fixed-points@6.10.0': - resolution: {integrity: sha512-ZkKL0alXH3L7/wMiVG8YUuG8qBKunlM810+YBD7nUPRhifiGsX1zwADViHLYNqLr/jUk0mTYFUcKznTpB/K+Gg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/fixed-points@7.0.0': - resolution: {integrity: sha512-Y3gcyHTponi5kXpWVEJIhuZ7yT84N+8He4dbjXWqwMBJnzKM+4tqFCbzy6y+6+Jxt44RT1lDmbpxmZopFRXU8Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/functional@6.10.0': - resolution: {integrity: sha512-P8cevu4mAqHTXC37h1TVoOh8zhWB2tlOI/R9vWjYPpcLwcyWf8p2qq4LEGHl5kY+1C+4PNX39HsmCocXOPCDkQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/functional@7.0.0': - resolution: {integrity: sha512-ix9fzYhc2hCLiYf+hGI00mzzayANKDExEBxbwrtMj/BdQkwgUIvIlOssqHeSqDChL3UZhq9lR24Nz4JwYX8Jbw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/instruction-plans@6.10.0': - resolution: {integrity: sha512-YG7mo4zykzdc6ZTV0BuN6pveK9qeBySzlYYerq578A4eQu3xcypMAYRGAvhMZtWTanjjmD6CKtM0M7kVp0TNxg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/instruction-plans@7.0.0': - resolution: {integrity: sha512-uzXHztc8hLoT5TNWFsBX2DIETyp/Lr2l36O330s3YCgpRmfI4IRbBrjjq7TxDYFm/QY8+DD4CRG8p7wZSqG8dQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/instructions@6.10.0': - resolution: {integrity: sha512-0TToYF+8LXQ3ofPMx+yF6yaM9l4YJvcAPMy0qV5JsrBUFlWXBSANRuudKBQLHMvb+a3OiUTq5X7omuorKMBB3A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/instructions@7.0.0': - resolution: {integrity: sha512-ZN0gKAtCOKDuIaStcvLZDf5H20fkk7jr4dZE0Rk7z0kslf6mrRam9Y23N6AzeHp/b5ZeVKyfaTf4M35mOktLNg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/keys@6.10.0': - resolution: {integrity: sha512-26IRfdm/hTUCmM7MeEeX0ULSbCM6OzkZTkfkrPircqmRM7xyNqP4hq7u0P7wjb9dl7NfgyG6K7cdvUxrj2e3mA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/keys@7.0.0': - resolution: {integrity: sha512-JsdYR/YN3AGHZN2aZoeE5cymHYkNoBLnqgXoRncW/VyD7fMcR350aHU1hCMYd0b5BtITLsGmvvtvrgVkzK83Eg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/kit@6.10.0': - resolution: {integrity: sha512-/WnnQp3uARh2JCFSfAakejTAqwmXVuMVTcRn5r2yDwY2yzZ4R6mt/Cl59VPimVLNSoTyN/KsEwhv9omr3ERazQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/kit@7.0.0': - resolution: {integrity: sha512-ZCeai4LRJQooUmJXvpgMEGFTrCdJnV1ODbDJ8oqFZ+Y4t/9x1baQsFFpruqsdRyeGv2Rr+X6jV7cldVD+hyzRA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/nominal-types@6.10.0': - resolution: {integrity: sha512-9ykyBBvnkInH7fCacjJi7zu2PJyd+OCt+VTjIISv070fHzKIMFqZqJJ/dJ0SRH2aHwfB3n86iVsmtBtuxi4KKA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/nominal-types@7.0.0': - resolution: {integrity: sha512-ff21hmKKMckDkGWah9tRXsEyFCtSnkugH+EMLGJOn7tiXdtFljOXW5Q12IXyeil87EE8aWb1MS6p8v5+hi71Vg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/offchain-messages@6.10.0': - resolution: {integrity: sha512-RiEgAueeMkFMC1suOXBIcmCZgtXRxy24yk0DldPB37bB4zwOF1SAaRjNRPjIkGK8RhCYrEpPosnzLyavw9ueRg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/offchain-messages@7.0.0': - resolution: {integrity: sha512-fGrzxmqVStweGHRlXVAPKACdDboFCwXq5m8C+aD9Nupax6Q9rnvjICzYRLypwqB9X90XIZazh0ys+0KGLMpIJQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/options@6.10.0': - resolution: {integrity: sha512-RO9UT3UYD8/Cu2uM6ZXbKvLeMnVD42+g9JRds7Pfs4AhiOyg4R4TJrQUAppTgavPTO3PBRlWtWOC05ZH/yAIbg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/options@7.0.0': - resolution: {integrity: sha512-6DhvMqRcL3mG0R5JejYIW5PDTDr7HcLX2R9iCs6OPN1HdsyXmE2rX2EldnuA0rYz1buOodeWYsu4N1lpDcEpaQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/plugin-core@6.10.0': - resolution: {integrity: sha512-JE70YTQOfFACVFGvoJon4Scc/eHUWjMu8Ovo35CcV2kHTAHYMCd4UkBd2gmlhK0vRMMomsQi1ZLPlAlTq0OoUQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/plugin-core@7.0.0': - resolution: {integrity: sha512-EwTUfOGoQQ3aXooRlQFVbk+sJW7NqJl1K+bmSLiJUjaBTSqtbr3GtMu7aoybJqzZQKjOGSG4Hn0BzK24SvWy3A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/plugin-interfaces@6.10.0': - resolution: {integrity: sha512-vr0/l9wcM4orwGr8cjkFWaJ9A4HvzuAv00jMFNMg0Spd0GZqnwnpW+D/fXa1lIJnTRaF3EeEjLh4VjKU037T0Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/plugin-interfaces@7.0.0': - resolution: {integrity: sha512-fz/HknZLGnVIjhjXrMzW3Qm1x80oeEMSOk4RzMwjcyAEyfzhHtGNW74NsU5W+uFpYz6UBbV5mB1jpuAdJdnj9A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/program-client-core@6.10.0': - resolution: {integrity: sha512-4PPbTLdC1ylHIuvhOFDP8RnSkXPCFjNFWGslzc+UFKnoR4ajzBcByX94jmaruDMk5ncxgj7tr9pzJTvfGHIaMA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/program-client-core@7.0.0': - resolution: {integrity: sha512-+N8HImlR3MTbbvhOShsLelQXGZKbi6KhPhyy+4ZkDLbnRs4QikTamIChXZmoCyxB51S8/9cNRAKyQhbeF5Y8Qg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/programs@6.10.0': - resolution: {integrity: sha512-qn/HeLP5KGUJXVub3fyGe69/rWaLX4jzwm6V/1pNxJDbdF+MBdgn18hP6F+VmhfdNmwK0lue3J/1HQ1UTMuQeQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/programs@7.0.0': - resolution: {integrity: sha512-a1HNgzr9YiiZ8vK4VaKHEXjnZmKX7W5ab2ghuseIalEw/+PJLFcTRTOw8n3efRu677b/bG2Icmb3MBBEXmvbPg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/promises@6.10.0': - resolution: {integrity: sha512-oJSIn+VBBMWDo8oqw7RV3tI6Jih+Ieup6FcQLYLDUriaeo7+8l1Zdezl8zh7SIfeU4lOfAbRg6mR0huaS/Lltg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/promises@7.0.0': - resolution: {integrity: sha512-rjoHnaR4zeEIHqIzfgotxRrLKqY4Goj0G5duZOnjHm8ZC+7eDkH5/mXj1bDJ4ROM70dVM+y1Xkrjg7IL6k6StA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-api@6.10.0': - resolution: {integrity: sha512-RjPIVsAb/85P1ptoO3WpC0x7QG6gG/e4q/3lo6gbSznUZOcoM+8sSBnCX7BwP1ZkCDS6NK/ClXLnhhhYZx+OGg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-api@7.0.0': - resolution: {integrity: sha512-MTtBO883st83CjWpo8B4g8EKzXaeoBX5N7+sv4vcvsn2q1NpY4SG3XejdX1FrKeTe9Xjbv0/FzFtykstbKe1UA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-parsed-types@6.10.0': - resolution: {integrity: sha512-5275mvSV1mxhwvrMVa+K7BU/nAetpHfcb+8Ql9rtA8RRf6DyiimFQFZUukE4Ez6XJihEpCHNy98yhkgai9wytQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-parsed-types@7.0.0': - resolution: {integrity: sha512-80VjPbB/TZ/Hy5qdRF7onPfMPHk5cwBVbtNUGbilrmFuqRzSvzSOY1ynNXXODPZBytNmPq7u7oJfSCsQ5MA9Ig==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-spec-types@6.10.0': - resolution: {integrity: sha512-NDZrKyZrJk4HaMFhTE/lAiMB824cWAodKqDHyKi0UteHU9pyRmil3BN1jt7e+j08mwMWwfklSgyrTaq52g6DIQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-spec-types@7.0.0': - resolution: {integrity: sha512-V4Hp2//fW8eYq1zcGgHPu7FXKHyIWERBQd4+NRaKn2m8rPiVAm3pVRwPzSvVE0+8Nyf5qzdcfcMf7NQdhl6j7Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-spec@6.10.0': - resolution: {integrity: sha512-yQdbWw5mZEWrwsunHR9NHkuhMXIB9sPOObwm18D53v5tAJnxTB0IcHvO647XqFDLTK/yQ4AdDtlYD1vsY07AMQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-spec@7.0.0': - resolution: {integrity: sha512-GRGlXpLgap9yVh3qmCl4huuKAoLMp/p82/9Q9ONj6lmFH+RqJE4Q+16V+HxHI5ZakmwZYoVZU4GEKjumse9SCg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-api@6.10.0': - resolution: {integrity: sha512-CRPQoTtT1cOwOQUsqS7jgo7wYdAj7jB5ab/UmMPWVpecf2FNMhWhgvxP2s82M7VkDGTGl13qaQ0WySmi7Egrlg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-api@7.0.0': - resolution: {integrity: sha512-o2PZDeNC/kg3VO3ry4R0JySJ1xMHLchZwmzVwamxGidlLe9uvzm6CHlCqv/JCq4/zHLo7qbLqnmOckZ6vlDqaw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-channel-websocket@6.10.0': - resolution: {integrity: sha512-KkqP1186HELPlJftA88SNAT2znR8knCVzsUipXVzY4zfW8sN3LOa0ePMzh9VZ/V+J+raTt55laR87ovAO0n+zw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-channel-websocket@7.0.0': - resolution: {integrity: sha512-79ecXBCT2pG+vXNBZim80vUz+B04L1mEduXobBIXM55VvxsHYT+4H4V+/ZHoFJUK6Lhbt+6zhpconx8Wa3H+JA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-spec@6.10.0': - resolution: {integrity: sha512-nWMwGaG4ulzeX2sskY5TywXF3cwEd8FDmUpLe2JBWxE8XDAOGOKcsYPYFcBgb8ee9KqfPT2PTNdcz9jOhJf34w==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions-spec@7.0.0': - resolution: {integrity: sha512-Oips5ciWqPGO5Cx7hcEQ/czbcrUjPf+4cTam0UMrK3BnvHPcEAWkPYlIgabQiqa60/pjOOz7B936oMXA5XwL+g==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions@6.10.0': - resolution: {integrity: sha512-6mfuHp/K7unFKCOTCCBC9ziEGnxe2tyJ74EbR51QUnBeCUdYD7Hhdpxic1WRSJ3UeNW/mG4OzFM6z8Wi64Eh9Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-subscriptions@7.0.0': - resolution: {integrity: sha512-jLNjUCGBbCIfABqqHopNJIeAkhd4GzhbodgCH4x2X+S0ycBaERX393+k+fG8JPJpGujkmeQFBCeIKO3lK+PoYg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-transformers@6.10.0': - resolution: {integrity: sha512-2nFUrVTiE720pJOY4XKx3HuYmishw0of/4oScu76YGm6O8wsmvFvPNAkrEinmieWXQkfpBfRvLZmpl8PaAy+ug==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-transformers@7.0.0': - resolution: {integrity: sha512-NHkTKC2J4oaMMzyOtIEDOLCGtzg1Y8vlPoBmUeA82o+DNjBSiZLR2Ariy7n7chmwKchCZ8aGirBxjLCSRc6b/g==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-transport-http@6.10.0': - resolution: {integrity: sha512-JrdNuYi0nBbD3X8JUtgX1dQJwIwz/WJvmigDdELysXfGB2bTJpfjqGDLhCLOz2sRl66FASIEqgG/LVa2C9VXcA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-transport-http@7.0.0': - resolution: {integrity: sha512-W0G15BN0xljXzRRo/ZwepJNiOjKhRImF5SxhjZauh2yVBoUjfd6NSCmYcdWu0tj9lypKKrB1ReS4oPmb4yCHbA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-types@6.10.0': - resolution: {integrity: sha512-zaSecTfCPvz/vcoAmKD6XoRstGHTr1EKJBD8T9UcpEFFB6CtF6DxerDB+wrzkamuT6msmnR2DWXMrYOGDAsgIg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc-types@7.0.0': - resolution: {integrity: sha512-Lf2csFSWHwN/8EL03uWfS7n1J19vWLK4DBGkQ5jebRhoJ3dD+xPcJtS+epI2281t5aghJvoV7D+RIM0NextZJg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc@6.10.0': - resolution: {integrity: sha512-EwxsqoD+NXV+m+iobnWNtATD93gTgaNsOiQOzYB1/2e+8S6fl6obdNPB55yfXgtl4jt6GV6/ae4xuPhLv76vvg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/rpc@7.0.0': - resolution: {integrity: sha512-hCf4XEhspsNb8TnQ+E961+rBuJcTyrmwNr4LDfVHEeO/VTqaN+yVwAI1wpxcnzwc+T4OoXcyujNiQWhVZPOhiA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/signers@6.10.0': - resolution: {integrity: sha512-+vtCc+mT1FpGxrA5oL2aaMxSHiMJ2hH5PcDIfjo2XJkHz2klZiCZyT5F9+zpltc9vdi1QTElQq59Sfplmtd33A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/signers@7.0.0': - resolution: {integrity: sha512-4E3xYQ0b9OZCTLghqfeHh66lfipy3jV1REdFJLk9WqPBaXVa/wSgGGIqZVa744ATSd9AeEfL/I5n/LrMNQOhoA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/subscribable@6.10.0': - resolution: {integrity: sha512-VsR6XMwkiDBkZJUcoGkEOhf397pOV75gKCL9Bx8bpi2T3Bbs0CxUpMn4yaUgAnRba3eXmjbXMNCXjttfa6sKbw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/subscribable@7.0.0': - resolution: {integrity: sha512-dJQA5AxDv/7YxuNe7GXIkaOUNhXczFaL3/SNOvXe7k77bC4dx4HPkySfcVDfEWBOePe3+8iyVbT8DZ3aOcp8Ng==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/sysvars@6.10.0': - resolution: {integrity: sha512-cG13p1+onxz+20iWjwWQr1Z1jQwPm0fnjoW75fqZq7p4rVCie3L2sXvaJsYPjWKrUvpOzOIEHnqZGkG05rCpjg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/sysvars@7.0.0': - resolution: {integrity: sha512-GKND6hCcBcrak3/VAtx6aEoAi9wQjJQzU2Fcu6JYmnTjGe5MHf21FqbjGl0aQ0C2HlJQQJmA07wgsuOiYDTDog==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-confirmation@6.10.0': - resolution: {integrity: sha512-ULvtg65qfenh4T/GYcIlKSUv5EqDcng9UN0dxbHU4kuZdR2e0B8HN2xDC4WhcFQVeFJSbTZmaYFkeTY/Y4gfGQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-confirmation@7.0.0': - resolution: {integrity: sha512-SaU2CY9ZDJGK47DtQ7xwKFmbgzDGqIN/Ug89ZSUzDPD9QdMRXhtxgH8KZgb0gSgpyel85sSt0QH9wkWzhp69ow==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-introspection@7.0.0': - resolution: {integrity: sha512-aO+5ewxGaziXYcXJZ6F3doq/KI1L3WU2z5eCjs4DBO0kRQBHp4bH6ZKygVX2JIxOZrd1rB9SxP/CCCX2wRm8Xw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-messages@6.10.0': - resolution: {integrity: sha512-s7v8G3BTxGlKYIj3eWCG0g1296v+1LBt16mVnlRH5FuyaJ5AdhlhtRho5HUDpdwE8EXun+y1c48V6uhcZ8wdbQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transaction-messages@7.0.0': - resolution: {integrity: sha512-qCBYR3QQvykcI36vnqwI5090hGXS3mmCe72b/f/n9kBsBaA2oowdBXZupB1wwKe8+6x8o8VkhKQaK9oTKKbWTg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transactions@6.10.0': - resolution: {integrity: sha512-VADSqP9OTYmhrox4pcgDd4+RjVmednXSE0+8Y7SPK4PN1pK5Az2RJ0nSsy0xcTnaOr8mF/crwFktqPrRQwSbQA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@solana/transactions@7.0.0': - resolution: {integrity: sha512-y5nayd2Ozld/4Bxefz50e/E6qxyZteuZCZ7suh7z96KY6QUJlZDR+eCG1v/lA7Azt3GSOevJuYFX/ept/mqZkw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - - '@types/mocha@10.0.10': - resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} - - '@types/node@26.1.2': - resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.3: - resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} - engines: {node: '>=12'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - brace-expansion@2.1.4: - resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@6.2.2: - resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} - engines: {node: '>=18'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.6.2: - resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@15.0.0: - resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} - engines: {node: '>=22.12.0'} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - diff@7.0.0: - resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} - engines: {node: '>=0.3.1'} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - esbuild@0.28.1: - resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - glob@10.5.0: - resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - hasBin: true - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - js-yaml@4.3.1: - resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} - hasBin: true - - litesvm-darwin-arm64@1.3.0: - resolution: {integrity: sha512-fj6cV/ofjMXdl5CwjyyLTQnZObfVH5HYDScQ6O44iRqxASmgEyEh4sC8a7M0YZ1rcli9nu2cWl5ARGura89I7Q==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [darwin] - - litesvm-darwin-x64@1.3.0: - resolution: {integrity: sha512-ZYEddnc+tAn8sVYpzvww0oHFiekbCSv+0OZiA6eUDtcSx9uzeRDmPPQ9eI6vgyews2LefBDSENmUb70GHY6Cqg==} - engines: {node: '>= 20'} - cpu: [x64] - os: [darwin] - - litesvm-linux-arm64-gnu@1.3.0: - resolution: {integrity: sha512-kmmKeef96pJI4AJGCvjzMCW6QHuzFrMF1i6dE6OcrtWHaz0Ag+TFaKOU35H1bjH/fDBwoJUV9UbaIbdWht81tA==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - litesvm-linux-arm64-musl@1.3.0: - resolution: {integrity: sha512-FO9p6rx+/3h7R3CU7lkOebL+jy8UEDngSrENHu7pj9EOr78QVyE3Fm0O+WMnwXpMoCSgW0XLhu1cI9NHAbzCTA==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [linux] - libc: [musl] - - litesvm-linux-x64-gnu@1.3.0: - resolution: {integrity: sha512-yXC8ZAdIei9JQ2xw5/BocOTu/7EqZuFPyhgENQ1mYDhjNpoyUbIuGCWnqtria14mDda0aV9yVev8plGUrUpjUw==} - engines: {node: '>= 20'} - cpu: [x64] - os: [linux] - libc: [glibc] - - litesvm-linux-x64-musl@1.3.0: - resolution: {integrity: sha512-oedromp1gTjShXmKmxZ1FYtnfM824vRcrPSPvGM0CrqJqKK61m1+tFwNRAVsDlpmWKvO/zsz90ctbgAUo/3TXg==} - engines: {node: '>= 20'} - cpu: [x64] - os: [linux] - libc: [musl] - - litesvm@1.3.0: - resolution: {integrity: sha512-tMu9sBIqSbF1gQluXEUtGmXPfZlMc10tOoBVeDokgK77nl/CcuC506sEoFKM5Rq58Dkb070lBMVBLc43TbMUzQ==} - engines: {node: '>= 20'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - minimatch@9.0.9: - resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass@7.1.3: - resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} - engines: {node: '>=16 || 14 >=14.17'} - - mocha@11.8.0: - resolution: {integrity: sha512-VyCeUdGN3A9lmCTTgG4yuvY9ixxaDk+xt2R/7/+1AP6EqNG+G9OKkzBwhVtVYoNX8YsxNSgAl8mOv3IAeOpFbw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.2.0: - resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} - engines: {node: '>=12'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - tsx@4.23.5: - resolution: {integrity: sha512-rw55FUaqOoI7RvlQwLbhO4nSDApnQ4/CykPuiQ/EPvtrX3WA9Ig55jIt9VvbBJbzJuj12ueRu4PMZ2SxPVbihg==} - engines: {node: '>=18.0.0'} - hasBin: true - - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@8.10.0: - resolution: {integrity: sha512-ibvdovq3nCFs8Msrd95BW+zUOq+aOVbT+wpHUoPWhztbHEoPc6oof51iFDB6Es8lTKvNvVW9jNSAB8dwrKTMGg==} - - undici-types@8.3.0: - resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - workerpool@9.3.4: - resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - ws@8.21.1: - resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@17.7.3: - resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} - engines: {node: '>=12'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@esbuild/aix-ppc64@0.28.1': - optional: true - - '@esbuild/android-arm64@0.28.1': - optional: true - - '@esbuild/android-arm@0.28.1': - optional: true - - '@esbuild/android-x64@0.28.1': - optional: true - - '@esbuild/darwin-arm64@0.28.1': - optional: true - - '@esbuild/darwin-x64@0.28.1': - optional: true - - '@esbuild/freebsd-arm64@0.28.1': - optional: true - - '@esbuild/freebsd-x64@0.28.1': - optional: true - - '@esbuild/linux-arm64@0.28.1': - optional: true - - '@esbuild/linux-arm@0.28.1': - optional: true - - '@esbuild/linux-ia32@0.28.1': - optional: true - - '@esbuild/linux-loong64@0.28.1': - optional: true - - '@esbuild/linux-mips64el@0.28.1': - optional: true - - '@esbuild/linux-ppc64@0.28.1': - optional: true - - '@esbuild/linux-riscv64@0.28.1': - optional: true - - '@esbuild/linux-s390x@0.28.1': - optional: true - - '@esbuild/linux-x64@0.28.1': - optional: true - - '@esbuild/netbsd-arm64@0.28.1': - optional: true - - '@esbuild/netbsd-x64@0.28.1': - optional: true - - '@esbuild/openbsd-arm64@0.28.1': - optional: true - - '@esbuild/openbsd-x64@0.28.1': - optional: true - - '@esbuild/openharmony-arm64@0.28.1': - optional: true - - '@esbuild/sunos-x64@0.28.1': - optional: true - - '@esbuild/win32-arm64@0.28.1': - optional: true - - '@esbuild/win32-ia32@0.28.1': - optional: true - - '@esbuild/win32-x64@0.28.1': - optional: true - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.2.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@solana-program/system@0.12.2(@solana/kit@6.10.0(typescript@5.9.3))': - dependencies: - '@solana/kit': 6.10.0(typescript@5.9.3) - - '@solana-program/token@0.14.0(@solana/kit@6.10.0(typescript@5.9.3))': - dependencies: - '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) - '@solana/kit': 6.10.0(typescript@5.9.3) - - '@solana/accounts@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/accounts@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/addresses@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/assertions': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/addresses@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/assertions': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/assertions@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/assertions@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-core@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-core@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-data-structures@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-data-structures@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-numbers@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-numbers@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-strings@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs-strings@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/codecs@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/fixed-points': 6.10.0(typescript@5.9.3) - '@solana/options': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/codecs@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/fixed-points': 7.0.0(typescript@5.9.3) - '@solana/options': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/errors@6.10.0(typescript@5.9.3)': - dependencies: - chalk: 5.6.2 - commander: 15.0.0 - optionalDependencies: - typescript: 5.9.3 - - '@solana/errors@7.0.0(typescript@5.9.3)': - dependencies: - chalk: 5.6.2 - commander: 15.0.0 - optionalDependencies: - typescript: 5.9.3 - - '@solana/fast-stable-stringify@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/fast-stable-stringify@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/fixed-points@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/fixed-points@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/functional@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/functional@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/instruction-plans@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/instruction-plans@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/instructions@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/instructions@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/keys@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/assertions': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/keys@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/assertions': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/kit@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 6.10.0(typescript@5.9.3) - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/instruction-plans': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/offchain-messages': 6.10.0(typescript@5.9.3) - '@solana/plugin-core': 6.10.0(typescript@5.9.3) - '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) - '@solana/program-client-core': 6.10.0(typescript@5.9.3) - '@solana/programs': 6.10.0(typescript@5.9.3) - '@solana/rpc': 6.10.0(typescript@5.9.3) - '@solana/rpc-api': 6.10.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/signers': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - '@solana/sysvars': 6.10.0(typescript@5.9.3) - '@solana/transaction-confirmation': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/kit@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 7.0.0(typescript@5.9.3) - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/instruction-plans': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/offchain-messages': 7.0.0(typescript@5.9.3) - '@solana/plugin-core': 7.0.0(typescript@5.9.3) - '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) - '@solana/program-client-core': 7.0.0(typescript@5.9.3) - '@solana/programs': 7.0.0(typescript@5.9.3) - '@solana/rpc': 7.0.0(typescript@5.9.3) - '@solana/rpc-api': 7.0.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/signers': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - '@solana/sysvars': 7.0.0(typescript@5.9.3) - '@solana/transaction-confirmation': 7.0.0(typescript@5.9.3) - '@solana/transaction-introspection': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/nominal-types@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/nominal-types@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/offchain-messages@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/offchain-messages@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/options@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/options@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/plugin-core@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/plugin-core@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/plugin-interfaces@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/instruction-plans': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/signers': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/plugin-interfaces@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/instruction-plans': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/signers': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/program-client-core@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 6.10.0(typescript@5.9.3) - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/instruction-plans': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/plugin-interfaces': 6.10.0(typescript@5.9.3) - '@solana/rpc-api': 6.10.0(typescript@5.9.3) - '@solana/signers': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/program-client-core@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 7.0.0(typescript@5.9.3) - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/instruction-plans': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/plugin-interfaces': 7.0.0(typescript@5.9.3) - '@solana/rpc-api': 7.0.0(typescript@5.9.3) - '@solana/signers': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/programs@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/programs@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/promises@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/promises@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-api@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-api@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-parsed-types@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-parsed-types@7.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-spec-types@6.10.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-spec-types@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-spec@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-spec@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-subscriptions-api@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-subscriptions-api@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-subscriptions-channel-websocket@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - ws: 8.21.1 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@solana/rpc-subscriptions-channel-websocket@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - ws: 8.21.1 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@solana/rpc-subscriptions-spec@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-subscriptions-spec@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-subscriptions@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-api': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-channel-websocket': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/subscribable': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/rpc-subscriptions@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-api': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-channel-websocket': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/subscribable': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/rpc-transformers@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-transformers@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-transport-http@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - undici-types: 8.10.0 - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-transport-http@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - undici-types: 8.10.0 - optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-types@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/fixed-points': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-types@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/fixed-points': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/rpc-api': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec': 6.10.0(typescript@5.9.3) - '@solana/rpc-spec-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-transformers': 6.10.0(typescript@5.9.3) - '@solana/rpc-transport-http': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/rpc-api': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec': 7.0.0(typescript@5.9.3) - '@solana/rpc-spec-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-transformers': 7.0.0(typescript@5.9.3) - '@solana/rpc-transport-http': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/signers@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/offchain-messages': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/signers@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/offchain-messages': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/subscribable@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/subscribable@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - '@solana/sysvars@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/sysvars@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transaction-confirmation@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/promises': 6.10.0(typescript@5.9.3) - '@solana/rpc': 6.10.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - '@solana/transactions': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/transaction-confirmation@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/promises': 7.0.0(typescript@5.9.3) - '@solana/rpc': 7.0.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - utf-8-validate - - '@solana/transaction-introspection@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/rpc-api': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - '@solana/transactions': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transaction-messages@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transaction-messages@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transactions@6.10.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 6.10.0(typescript@5.9.3) - '@solana/codecs-core': 6.10.0(typescript@5.9.3) - '@solana/codecs-data-structures': 6.10.0(typescript@5.9.3) - '@solana/codecs-numbers': 6.10.0(typescript@5.9.3) - '@solana/codecs-strings': 6.10.0(typescript@5.9.3) - '@solana/errors': 6.10.0(typescript@5.9.3) - '@solana/functional': 6.10.0(typescript@5.9.3) - '@solana/instructions': 6.10.0(typescript@5.9.3) - '@solana/keys': 6.10.0(typescript@5.9.3) - '@solana/nominal-types': 6.10.0(typescript@5.9.3) - '@solana/rpc-types': 6.10.0(typescript@5.9.3) - '@solana/transaction-messages': 6.10.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transactions@7.0.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 7.0.0(typescript@5.9.3) - '@solana/codecs-core': 7.0.0(typescript@5.9.3) - '@solana/codecs-data-structures': 7.0.0(typescript@5.9.3) - '@solana/codecs-numbers': 7.0.0(typescript@5.9.3) - '@solana/codecs-strings': 7.0.0(typescript@5.9.3) - '@solana/errors': 7.0.0(typescript@5.9.3) - '@solana/functional': 7.0.0(typescript@5.9.3) - '@solana/instructions': 7.0.0(typescript@5.9.3) - '@solana/keys': 7.0.0(typescript@5.9.3) - '@solana/nominal-types': 7.0.0(typescript@5.9.3) - '@solana/rpc-types': 7.0.0(typescript@5.9.3) - '@solana/transaction-messages': 7.0.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@types/chai@5.2.3': - dependencies: - '@types/deep-eql': 4.0.2 - assertion-error: 2.0.1 - - '@types/deep-eql@4.0.2': {} - - '@types/mocha@10.0.10': {} - - '@types/node@26.1.2': - dependencies: - undici-types: 8.3.0 - - ansi-regex@5.0.1: {} - - ansi-regex@6.2.2: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.3: {} - - argparse@2.0.1: {} - - assertion-error@2.0.1: {} - - balanced-match@1.0.2: {} - - brace-expansion@2.1.4: - dependencies: - balanced-match: 1.0.2 - - browser-stdout@1.3.1: {} - - camelcase@6.3.0: {} - - chai@6.2.2: {} - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.6.2: {} - - chokidar@4.0.3: - dependencies: - readdirp: 4.1.2 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@15.0.0: {} - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - debug@4.4.3(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - diff@7.0.0: {} - - eastasianwidth@0.2.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - esbuild@0.28.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.28.1 - '@esbuild/android-arm': 0.28.1 - '@esbuild/android-arm64': 0.28.1 - '@esbuild/android-x64': 0.28.1 - '@esbuild/darwin-arm64': 0.28.1 - '@esbuild/darwin-x64': 0.28.1 - '@esbuild/freebsd-arm64': 0.28.1 - '@esbuild/freebsd-x64': 0.28.1 - '@esbuild/linux-arm': 0.28.1 - '@esbuild/linux-arm64': 0.28.1 - '@esbuild/linux-ia32': 0.28.1 - '@esbuild/linux-loong64': 0.28.1 - '@esbuild/linux-mips64el': 0.28.1 - '@esbuild/linux-ppc64': 0.28.1 - '@esbuild/linux-riscv64': 0.28.1 - '@esbuild/linux-s390x': 0.28.1 - '@esbuild/linux-x64': 0.28.1 - '@esbuild/netbsd-arm64': 0.28.1 - '@esbuild/netbsd-x64': 0.28.1 - '@esbuild/openbsd-arm64': 0.28.1 - '@esbuild/openbsd-x64': 0.28.1 - '@esbuild/openharmony-arm64': 0.28.1 - '@esbuild/sunos-x64': 0.28.1 - '@esbuild/win32-arm64': 0.28.1 - '@esbuild/win32-ia32': 0.28.1 - '@esbuild/win32-x64': 0.28.1 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - fsevents@2.3.3: - optional: true - - get-caller-file@2.0.5: {} - - glob@10.5.0: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.9 - minipass: 7.1.3 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - has-flag@4.0.0: {} - - he@1.2.0: {} - - is-fullwidth-code-point@3.0.0: {} - - is-path-inside@3.0.3: {} - - is-plain-obj@2.1.0: {} - - is-unicode-supported@0.1.0: {} - - isexe@2.0.0: {} - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - js-yaml@4.3.1: - dependencies: - argparse: 2.0.1 - - litesvm-darwin-arm64@1.3.0: - optional: true - - litesvm-darwin-x64@1.3.0: - optional: true - - litesvm-linux-arm64-gnu@1.3.0: - optional: true - - litesvm-linux-arm64-musl@1.3.0: - optional: true - - litesvm-linux-x64-gnu@1.3.0: - optional: true - - litesvm-linux-x64-musl@1.3.0: - optional: true - - litesvm@1.3.0(typescript@5.9.3): - dependencies: - '@solana-program/system': 0.12.2(@solana/kit@6.10.0(typescript@5.9.3)) - '@solana-program/token': 0.14.0(@solana/kit@6.10.0(typescript@5.9.3)) - '@solana/kit': 6.10.0(typescript@5.9.3) - optionalDependencies: - litesvm-darwin-arm64: 1.3.0 - litesvm-darwin-x64: 1.3.0 - litesvm-linux-arm64-gnu: 1.3.0 - litesvm-linux-arm64-musl: 1.3.0 - litesvm-linux-x64-gnu: 1.3.0 - litesvm-linux-x64-musl: 1.3.0 - transitivePeerDependencies: - - bufferutil - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - lru-cache@10.4.3: {} - - minimatch@9.0.9: - dependencies: - brace-expansion: 2.1.4 - - minipass@7.1.3: {} - - mocha@11.8.0: - dependencies: - browser-stdout: 1.3.1 - chokidar: 4.0.3 - debug: 4.4.3(supports-color@8.1.1) - diff: 7.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 10.5.0 - he: 1.2.0 - is-path-inside: 3.0.3 - js-yaml: 4.3.1 - log-symbols: 4.1.0 - minimatch: 9.0.9 - ms: 2.1.3 - picocolors: 1.1.1 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 9.3.4 - yargs: 17.7.3 - yargs-parser: 21.1.1 - yargs-unparser: 2.0.0 - - ms@2.1.3: {} - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - package-json-from-dist@1.0.1: {} - - path-exists@4.0.0: {} - - path-key@3.1.1: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.3 - - picocolors@1.1.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@4.1.2: {} - - require-directory@2.1.1: {} - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - signal-exit@4.1.0: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.2.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.2.0: - dependencies: - ansi-regex: 6.2.2 - - strip-json-comments@3.1.1: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - tsx@4.23.5: - dependencies: - esbuild: 0.28.1 - optionalDependencies: - fsevents: 2.3.3 - - typescript@5.9.3: {} - - undici-types@8.10.0: {} - - undici-types@8.3.0: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - workerpool@9.3.4: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.3 - string-width: 5.1.2 - strip-ansi: 7.2.0 - - ws@8.21.1: {} - - y18n@5.0.8: {} - - yargs-parser@21.1.1: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@17.7.3: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yocto-queue@0.1.0: {} diff --git a/cryptography/encrypted-ballot/pinocchio/program/Cargo.toml b/cryptography/encrypted-ballot/pinocchio/program/Cargo.toml deleted file mode 100644 index dc52568ad..000000000 --- a/cryptography/encrypted-ballot/pinocchio/program/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "encrypted-ballot-pinocchio-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[features] -no-entrypoint = [] - -[dependencies] -pinocchio.workspace = true -solana-address.workspace = true - -[lints.rust] -unexpected_cfgs = { level = "warn", check-cfg = ['cfg(target_os, values("solana"))'] } - -[dev-dependencies] -litesvm = "0.15" -solana-account = "4.3" -solana-instruction = "3.4" -solana-keypair = "3.1" -solana-native-token = "3.0" -solana-signer = "3.0" -solana-transaction = "4.1" diff --git a/cryptography/encrypted-ballot/pinocchio/program/src/lib.rs b/cryptography/encrypted-ballot/pinocchio/program/src/lib.rs deleted file mode 100644 index b25e355fb..000000000 --- a/cryptography/encrypted-ballot/pinocchio/program/src/lib.rs +++ /dev/null @@ -1,112 +0,0 @@ -#![no_std] - -use pinocchio::{error::ProgramError, nostd_panic_handler, AccountView, Address, ProgramResult}; - -pinocchio::address::declare_id!("4xPPrCF43BLmNQjTEfgguVG5EnGLAtDp4NN9kGE2ptAq"); - -#[cfg(not(feature = "no-entrypoint"))] -pinocchio::entrypoint!(process_instruction); - -nostd_panic_handler!(); - -const CURVE25519_RISTRETTO: u64 = 1; -const GROUP_OP_ADD: u64 = 0; - -const POINT: usize = 32; -const CIPHERTEXT: usize = 64; -const COUNT_PREFIX: usize = 2; - -#[derive(Clone, Copy, Debug, PartialEq)] -pub enum EncryptedBallotError { - InvalidInputLength, - SyscallFailed, - SyscallUnavailable, - InvalidBallotAccount, -} - -impl From for ProgramError { - fn from(e: EncryptedBallotError) -> Self { - ProgramError::Custom(e as u32) - } -} - -pub fn process_instruction( - program_id: &Address, - accounts: &mut [AccountView], - instruction_data: &[u8], -) -> ProgramResult { - let (discriminator, input) = instruction_data.split_first().ok_or(ProgramError::InvalidInstructionData)?; - - match discriminator { - 0 => process_tally_add(program_id, accounts, input), - _ => Err(ProgramError::InvalidInstructionData), - } -} - -fn ballot_count(data: &[u8]) -> u16 { - u16::from_le_bytes([data[0], data[1]]) -} - -/// Adds a twisted ElGamal ballot ciphertext (64 bytes: 32-byte commitment then -/// 32-byte decrypt handle) to the tally account's running encrypted total via -/// two ristretto255 additions. The account stores `[count: u16-le][tally: 64]`. -pub fn process_tally_add(program_id: &Address, accounts: &mut [AccountView], input: &[u8]) -> ProgramResult { - let account = accounts.first_mut().ok_or(ProgramError::NotEnoughAccountKeys)?; - if !account.is_writable() || !account.owned_by(program_id) { - return Err(EncryptedBallotError::InvalidBallotAccount.into()); - } - if input.len() != CIPHERTEXT { - return Err(EncryptedBallotError::InvalidInputLength.into()); - } - - let mut data = account.try_borrow_mut()?; - if data.len() < COUNT_PREFIX + CIPHERTEXT { - return Err(EncryptedBallotError::InvalidBallotAccount.into()); - } - - let count = ballot_count(&data); - if count == 0 { - data[COUNT_PREFIX..COUNT_PREFIX + CIPHERTEXT].copy_from_slice(input); - } else { - for offset in [0, POINT] { - let mut current = [0u8; POINT]; - current.copy_from_slice(&data[COUNT_PREFIX + offset..COUNT_PREFIX + offset + POINT]); - let mut updated = [0u8; POINT]; - curve_group_op(CURVE25519_RISTRETTO, GROUP_OP_ADD, ¤t, &input[offset..offset + POINT], &mut updated)?; - data[COUNT_PREFIX + offset..COUNT_PREFIX + offset + POINT].copy_from_slice(&updated); - } - } - data[..COUNT_PREFIX].copy_from_slice(&(count + 1).to_le_bytes()); - Ok(()) -} - -#[inline(always)] -fn curve_group_op( - curve_id: u64, - group_op: u64, - left: &[u8], - right: &[u8], - output: &mut [u8], -) -> Result<(), ProgramError> { - #[cfg(target_os = "solana")] - { - let code = unsafe { - pinocchio::syscalls::sol_curve_group_op( - curve_id, - group_op, - left.as_ptr(), - right.as_ptr(), - output.as_mut_ptr(), - ) - }; - match code { - 0 => Ok(()), - _ => Err(EncryptedBallotError::SyscallFailed.into()), - } - } - #[cfg(not(target_os = "solana"))] - { - let _ = (curve_id, group_op, left, right, output); - Err(EncryptedBallotError::SyscallUnavailable.into()) - } -} diff --git a/cryptography/encrypted-ballot/pinocchio/program/tests/test.rs b/cryptography/encrypted-ballot/pinocchio/program/tests/test.rs deleted file mode 100644 index 4e937a405..000000000 --- a/cryptography/encrypted-ballot/pinocchio/program/tests/test.rs +++ /dev/null @@ -1,100 +0,0 @@ -use litesvm::LiteSVM; -use solana_account::Account; -use solana_address::Address; -use solana_instruction::{AccountMeta, Instruction}; -use solana_keypair::Keypair; -use solana_native_token::LAMPORTS_PER_SOL; -use solana_signer::Signer; -use solana_transaction::Transaction; - -const IX_TALLY_ADD: u8 = 0; - -const CIPHERTEXT: usize = 64; -const COUNT_PREFIX: usize = 2; - -// Deterministic ristretto255 basepoint multiples summed with @noble/curves: -// BALLOT_A = [2G || 3G], BALLOT_B = [5G || 7G], SUM = [7G || 10G]. -const BALLOT_A: &str = "6a493210f7499cd17fecb510ae0cea23a110e8d5b901f8acadd3095c73a3b91994741f5d5d52755ece4f23f044ee27d5d1ea1e2bd196b462166b16152a9d0259"; -const BALLOT_B: &str = "e882b131016b52c1d3337080187cf768423efccbb517bb495ab812c4160ff44e44f53520926ec81fbd5a387845beb7df85a96a24ece18738bdcfa6a7822a176d"; -const SUM_AB: &str = "44f53520926ec81fbd5a387845beb7df85a96a24ece18738bdcfa6a7822a176d20706fd788b2720a1ed2a5dad4952b01f413bcf0e7564de8cdc816689e2db95f"; - -fn from_hex(s: &str) -> Vec { - (0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16).unwrap()).collect() -} - -fn setup() -> (LiteSVM, Address, Keypair) { - let program_id = Address::new_unique(); - let program_bytes = include_bytes!("../../tests/fixtures/encrypted_ballot_pinocchio_program.so"); - - let mut svm = LiteSVM::new(); - svm.add_program(program_id, program_bytes).unwrap(); - - let payer = Keypair::new(); - svm.airdrop(&payer.pubkey(), LAMPORTS_PER_SOL).unwrap(); - (svm, program_id, payer) -} - -fn tally_account(svm: &mut LiteSVM, owner: Address, count: u16, tally: Option<&str>) -> Address { - let key = Address::new_unique(); - let mut data = vec![0u8; COUNT_PREFIX + CIPHERTEXT]; - data[..COUNT_PREFIX].copy_from_slice(&count.to_le_bytes()); - if let Some(tally) = tally { - data[COUNT_PREFIX..].copy_from_slice(&from_hex(tally)); - } - svm.set_account(key, Account { lamports: 1_000_000_000, data, owner, ..Account::default() }).unwrap(); - key -} - -fn send(svm: &mut LiteSVM, program_id: Address, payer: &Keypair, ballot: &[u8], tally: Address) -> Result<(), String> { - let mut data = vec![IX_TALLY_ADD]; - data.extend_from_slice(ballot); - let ix = Instruction::new_with_bytes(program_id, &data, vec![AccountMeta::new(tally, false)]); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[payer], svm.latest_blockhash()); - match svm.send_transaction(tx) { - Ok(_) => Ok(()), - Err(failed) => Err(failed.err.to_string()), - } -} - -#[test] -fn first_ballot_becomes_the_tally() { - let (mut svm, program_id, payer) = setup(); - let tally = tally_account(&mut svm, program_id, 0, None); - - send(&mut svm, program_id, &payer, &from_hex(BALLOT_A), tally).unwrap(); - - let mut expected = (1u16).to_le_bytes().to_vec(); - expected.extend_from_slice(&from_hex(BALLOT_A)); - assert_eq!(svm.get_account(&tally).unwrap().data, expected); -} - -#[test] -fn second_ballot_folds_into_the_tally() { - let (mut svm, program_id, payer) = setup(); - let tally = tally_account(&mut svm, program_id, 1, Some(BALLOT_A)); - - send(&mut svm, program_id, &payer, &from_hex(BALLOT_B), tally).unwrap(); - - let mut expected = (2u16).to_le_bytes().to_vec(); - expected.extend_from_slice(&from_hex(SUM_AB)); - assert_eq!(svm.get_account(&tally).unwrap().data, expected); -} - -#[test] -fn wrong_ciphertext_length_is_rejected() { - let (mut svm, program_id, payer) = setup(); - let tally = tally_account(&mut svm, program_id, 0, None); - - let err = send(&mut svm, program_id, &payer, &[0, 1, 2], tally).unwrap_err(); - assert!(err.contains("custom program error: 0x0"), "unexpected error: {err}"); -} - -#[test] -fn foreign_account_is_rejected() { - let (mut svm, program_id, payer) = setup(); - let foreign_owner = Address::new_unique(); - let tally = tally_account(&mut svm, foreign_owner, 0, None); - - let err = send(&mut svm, program_id, &payer, &from_hex(BALLOT_A), tally).unwrap_err(); - assert!(err.contains("custom program error: 0x3"), "unexpected error: {err}"); -} diff --git a/cryptography/encrypted-ballot/pinocchio/tests/encrypted-ballot.test.ts b/cryptography/encrypted-ballot/pinocchio/tests/encrypted-ballot.test.ts deleted file mode 100644 index 4ed2d6fa0..000000000 --- a/cryptography/encrypted-ballot/pinocchio/tests/encrypted-ballot.test.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { Buffer } from 'node:buffer'; -import { - AccountRole, - type Address, - appendTransactionMessageInstruction, - createTransactionMessage, - generateKeyPairSigner, - type KeyPairSigner, - lamports, - pipe, - setTransactionMessageFeePayerSigner, - signTransactionMessageWithSigners, -} from '@solana/kit'; -import { assert } from 'chai'; -import { FailedTransactionMetadata, LiteSVM, TransactionMetadata } from 'litesvm'; - -// Deterministic ristretto255 basepoint multiples summed with @noble/curves: -// BALLOT_A = [2G || 3G], BALLOT_B = [5G || 7G], SUM = [7G || 10G]. -const BALLOT_A = - '6a493210f7499cd17fecb510ae0cea23a110e8d5b901f8acadd3095c73a3b91994741f5d5d52755ece4f23f044ee27d5d1ea1e2bd196b462166b16152a9d0259'; -const BALLOT_B = - 'e882b131016b52c1d3337080187cf768423efccbb517bb495ab812c4160ff44e44f53520926ec81fbd5a387845beb7df85a96a24ece18738bdcfa6a7822a176d'; -const SUM_AB = - '44f53520926ec81fbd5a387845beb7df85a96a24ece18738bdcfa6a7822a176d20706fd788b2720a1ed2a5dad4952b01f413bcf0e7564de8cdc816689e2db95f'; - -const IX_TALLY_ADD = 0; - -const CIPHERTEXT = 64; -const COUNT_PREFIX = 2; - -const ERR_INVALID_INPUT_LENGTH = 'InstructionErrorCustom { code: 0 }'; -const ERR_INVALID_BALLOT_ACCOUNT = 'InstructionErrorCustom { code: 3 }'; - -const hex = (s: string) => Uint8Array.from(Buffer.from(s, 'hex')); - -const tallyData = (count: number, tally?: string) => { - const data = new Uint8Array(COUNT_PREFIX + CIPHERTEXT); - new DataView(data.buffer).setUint16(0, count, true); - if (tally) data.set(hex(tally), COUNT_PREFIX); - return data; -}; - -describe('encrypted-ballot', () => { - const svm = new LiteSVM(); - let programId: Address; - let payer: KeyPairSigner; - - before(async () => { - programId = (await generateKeyPairSigner()).address; - svm.addProgramFromFile(programId, 'tests/fixtures/encrypted_ballot_pinocchio_program.so'); - - payer = await generateKeyPairSigner(); - svm.airdrop(payer.address, lamports(1_000_000_000n)); - }); - - async function tallyAccount(owner: Address, count: number, tally?: string) { - const address = (await generateKeyPairSigner()).address; - const data = tallyData(count, tally); - svm.setAccount({ - address, - data, - executable: false, - lamports: lamports(1_000_000_000n), - programAddress: owner, - space: BigInt(data.length), - }); - return address; - } - - function tallyAccountData(tally: Address) { - const account = svm.getAccount(tally); - assert(account?.exists, 'expected the tally account to exist'); - return account.data; - } - - async function send(ballot: Uint8Array, tally: Address) { - const data = new Uint8Array([IX_TALLY_ADD, ...ballot]); - const transactionMessage = pipe( - createTransactionMessage({ version: 0 }), - m => setTransactionMessageFeePayerSigner(payer, m), - m => svm.setTransactionMessageLifetimeUsingLatestBlockhash(m), - m => - appendTransactionMessageInstruction( - { programAddress: programId, accounts: [{ address: tally, role: AccountRole.WRITABLE }], data }, - m, - ), - ); - const signedTx = await signTransactionMessageWithSigners(transactionMessage); - - const result = svm.sendTransaction(signedTx); - svm.expireBlockhash(); - return result; - } - - it('the first ballot becomes the tally verbatim', async () => { - const tally = await tallyAccount(programId, 0); - const result = await send(hex(BALLOT_A), tally); - - assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); - assert.deepEqual(tallyAccountData(tally), tallyData(1, BALLOT_A)); - }); - - it('the second ballot folds into the running encrypted tally', async () => { - const tally = await tallyAccount(programId, 1, BALLOT_A); - const result = await send(hex(BALLOT_B), tally); - - assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); - assert.deepEqual(tallyAccountData(tally), tallyData(2, SUM_AB)); - }); - - it('rejects a ballot that is not exactly one ciphertext', async () => { - const tally = await tallyAccount(programId, 0); - const result = await send(new Uint8Array(3), tally); - - assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); - assert.include(String(result.err()), ERR_INVALID_INPUT_LENGTH); - }); - - it('rejects an account not owned by the program', async () => { - const foreignOwner = (await generateKeyPairSigner()).address; - const tally = await tallyAccount(foreignOwner, 0); - const result = await send(hex(BALLOT_A), tally); - - assert(result instanceof FailedTransactionMetadata, 'expected the transaction to fail'); - assert.include(String(result.err()), ERR_INVALID_BALLOT_ACCOUNT); - }); -}); diff --git a/cryptography/encrypted-ballot/pinocchio/tsconfig.json b/cryptography/encrypted-ballot/pinocchio/tsconfig.json deleted file mode 100644 index c02443141..000000000 --- a/cryptography/encrypted-ballot/pinocchio/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai", "node"], - "typeRoots": ["./node_modules/@types"], - "lib": ["esnext"], - "module": "esnext", - "target": "esnext", - "moduleResolution": "bundler", - "esModuleInterop": true, - "resolveJsonModule": true, - "allowImportingTsExtensions": true, - "noEmit": true, - "skipLibCheck": true - } -} From 48a0bb60279977650ebdb9e8c57b97168292cddf Mon Sep 17 00:00:00 2001 From: Jo D Date: Mon, 3 Aug 2026 13:23:00 -0400 Subject: [PATCH 4/6] docs(cryptography): document size, op-code, and curve-id constants --- cryptography/bls12-381/pinocchio/program/src/lib.rs | 8 ++++++++ cryptography/bn254/pinocchio/program/src/lib.rs | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/cryptography/bls12-381/pinocchio/program/src/lib.rs b/cryptography/bls12-381/pinocchio/program/src/lib.rs index 24ee21cd4..5f3bcde6d 100644 --- a/cryptography/bls12-381/pinocchio/program/src/lib.rs +++ b/cryptography/bls12-381/pinocchio/program/src/lib.rs @@ -9,14 +9,22 @@ pinocchio::entrypoint!(process_instruction); nostd_panic_handler!(); +/// Uncompressed big-endian G1 point: x ‖ y, 48 bytes each. pub const G1_POINT_SIZE: usize = 96; +/// Uncompressed big-endian G2 point: two Fq2 coordinates, 4 × 48 bytes. pub const G2_POINT_SIZE: usize = 192; +/// Big-endian scalar for point multiplication. pub const SCALAR_SIZE: usize = 32; +/// `sol_curve_group_op` curve id for BLS12-381 G1; `0x80` selects big-endian encoding. const BLS12_381_G1: u64 = 5 | 0x80; +/// `sol_curve_group_op` curve id for BLS12-381 G2; `0x80` selects big-endian encoding. const BLS12_381_G2: u64 = 6 | 0x80; +/// `sol_curve_group_op` group op code: point addition. const ADD: u64 = 0; +/// `sol_curve_group_op` group op code: point subtraction. const SUB: u64 = 1; +/// `sol_curve_group_op` group op code: scalar multiplication (scalar ‖ point operands). const MUL: u64 = 2; #[derive(Clone, Copy, Debug, PartialEq)] diff --git a/cryptography/bn254/pinocchio/program/src/lib.rs b/cryptography/bn254/pinocchio/program/src/lib.rs index ed1d9b452..03a61caff 100644 --- a/cryptography/bn254/pinocchio/program/src/lib.rs +++ b/cryptography/bn254/pinocchio/program/src/lib.rs @@ -9,17 +9,27 @@ pinocchio::entrypoint!(process_instruction); nostd_panic_handler!(); +/// Uncompressed big-endian G1 point: x ‖ y, 32 bytes each. pub const G1_POINT_SIZE: usize = 64; +/// Uncompressed big-endian G2 point: two Fq2 coordinates, 4 × 32 bytes. pub const G2_POINT_SIZE: usize = 128; +/// Big-endian scalar for point multiplication. pub const SCALAR_SIZE: usize = 32; +/// G2 add input: left point ‖ right point. pub const G2_ADD_INPUT_SIZE: usize = G2_POINT_SIZE * 2; +/// G2 mul input: point ‖ scalar. pub const G2_MUL_INPUT_SIZE: usize = G2_POINT_SIZE + SCALAR_SIZE; +/// `sol_alt_bn128_group_op` op code: product-of-pairings check, big-endian. const ALT_BN128_PAIRING: u64 = 3; +/// `sol_alt_bn128_group_op` op code: G2 addition, big-endian (SIMD-0302). const ALT_BN128_G2_ADD: u64 = 4; +/// `sol_alt_bn128_group_op` op code: G2 scalar multiplication, big-endian (SIMD-0302). const ALT_BN128_G2_MUL: u64 = 6; +/// Aggregate-verify input prefix: aggregate signature ‖ negated message hash. const VERIFY_HEADER: usize = G1_POINT_SIZE * 2; +/// Pairing input: two (G1, G2) pairs. const PAIRING_INPUT: usize = (G1_POINT_SIZE + G2_POINT_SIZE) * 2; /// Canonical BN254 G2 generator, big-endian (EIP-197 encoding). From 68e1cd3996020119ef2903b3f9a86d4dc30d8929 Mon Sep 17 00:00:00 2001 From: Jo D Date: Mon, 3 Aug 2026 13:34:22 -0400 Subject: [PATCH 5/6] docs(cryptography): annotate test discriminator and error-code constants --- cryptography/bls12-381/pinocchio/program/tests/test.rs | 1 + cryptography/bls12-381/pinocchio/tests/bls12-381.test.ts | 1 + cryptography/bn254/pinocchio/program/tests/test.rs | 1 + cryptography/bn254/pinocchio/tests/bn254.test.ts | 2 ++ 4 files changed, 5 insertions(+) diff --git a/cryptography/bls12-381/pinocchio/program/tests/test.rs b/cryptography/bls12-381/pinocchio/program/tests/test.rs index 7bc34db3b..6c41072fb 100644 --- a/cryptography/bls12-381/pinocchio/program/tests/test.rs +++ b/cryptography/bls12-381/pinocchio/program/tests/test.rs @@ -6,6 +6,7 @@ use solana_native_token::LAMPORTS_PER_SOL; use solana_signer::Signer; use solana_transaction::Transaction; +// Instruction discriminators, mirroring the program's dispatch order. const IX_G1_ADD: u8 = 0; const IX_G1_SUB: u8 = 1; const IX_G1_MUL: u8 = 2; diff --git a/cryptography/bls12-381/pinocchio/tests/bls12-381.test.ts b/cryptography/bls12-381/pinocchio/tests/bls12-381.test.ts index 427bf2457..cedcf7b3a 100644 --- a/cryptography/bls12-381/pinocchio/tests/bls12-381.test.ts +++ b/cryptography/bls12-381/pinocchio/tests/bls12-381.test.ts @@ -28,6 +28,7 @@ const G2_TWO = const G2_THREE = '09380275bbc8e5dcea7dc4dd7e0550ff2ac480905396eda55062650f8d251c96eb480673937cc6d9d6a44aaa56ca66dc122915c824a0857e2ee414a3dccb23ae691ae54329781315a0c75df1c04d6d7a50a030fc866f09d516020ef82324afae08f239ba329b3967fe48d718a36cfe5f62a7e42e0bf1c1ed714150a166bfbd6bcf6b3b58b975b9edea56d53f23a0e8490b21da7955969e61010c7a1abc1a6f0136961d1e3b20b1a7326ac738fef5c721479dfd948b52fdf2455e44813ecfd892'; +// Instruction discriminators, mirroring the program's dispatch order. const IX_G1_ADD = 0; const IX_G1_SUB = 1; const IX_G1_MUL = 2; diff --git a/cryptography/bn254/pinocchio/program/tests/test.rs b/cryptography/bn254/pinocchio/program/tests/test.rs index e1e1b253a..d641347b4 100644 --- a/cryptography/bn254/pinocchio/program/tests/test.rs +++ b/cryptography/bn254/pinocchio/program/tests/test.rs @@ -6,6 +6,7 @@ use solana_native_token::LAMPORTS_PER_SOL; use solana_signer::Signer; use solana_transaction::Transaction; +// Instruction discriminators, mirroring the program's dispatch order. const IX_G2_ADD: u8 = 0; const IX_G2_MUL: u8 = 1; const IX_AGGREGATE_VERIFY: u8 = 2; diff --git a/cryptography/bn254/pinocchio/tests/bn254.test.ts b/cryptography/bn254/pinocchio/tests/bn254.test.ts index 755b65cf8..6af30a80d 100644 --- a/cryptography/bn254/pinocchio/tests/bn254.test.ts +++ b/cryptography/bn254/pinocchio/tests/bn254.test.ts @@ -32,10 +32,12 @@ const AGG_SIG_ALL = const AGG_SIG_FIRST_TWO = '29da90779ff721fffa657af0a02eb50fcb18cc8176e4d63127827a1767d69c7e227c651364e066d84349de32d97fd6b7f423a1e2b9a162ba061337d5a29e9303'; +// Instruction discriminators, mirroring the program's dispatch order. const IX_G2_ADD = 0; const IX_G2_MUL = 1; const IX_AGGREGATE_VERIFY = 2; +// How LiteSVM renders the program's Bn254Error codes in a failed transaction. const ERR_INVALID_INPUT_LENGTH = 'InstructionErrorCustom { code: 0 }'; const ERR_AGGREGATE_VERIFY_FAILED = 'InstructionErrorCustom { code: 3 }'; From 93b105c4727dee13150b4773eba0a7f786ef709d Mon Sep 17 00:00:00 2001 From: Jo D Date: Mon, 3 Aug 2026 16:35:33 -0400 Subject: [PATCH 6/6] docs(cryptography): reviewer-suggested README intros and kit codecs in tests Adopt amilz's beginner-friendly curve intros with links to the merged SIMD-0302/0388 specs and EIP-197, and switch the TypeScript tests to kit codecs: getBase16Codec for hex vectors and a struct codec spelling out the aggregate-verify wire layout. --- cryptography/bls12-381/pinocchio/README.md | 6 ++- .../pinocchio/tests/bls12-381.test.ts | 17 +++++--- cryptography/bn254/pinocchio/README.md | 4 +- .../bn254/pinocchio/tests/bn254.test.ts | 41 +++++++++++++------ 4 files changed, 49 insertions(+), 19 deletions(-) diff --git a/cryptography/bls12-381/pinocchio/README.md b/cryptography/bls12-381/pinocchio/README.md index c1191e08b..5f8489d12 100644 --- a/cryptography/bls12-381/pinocchio/README.md +++ b/cryptography/bls12-381/pinocchio/README.md @@ -1,6 +1,10 @@ # BLS12-381 curve operations (Pinocchio) -A stateless program that wraps the BLS12-381 group operations of the `sol_curve_group_op` syscall. Results come back as transaction return data. Points are big-endian: G1 = 96 bytes, G2 = 192 bytes; scalars are 32 bytes big-endian and go first in the instruction data. +BLS12-381 is a modern elliptic curve designed for _pairings_ — a special operation that powers short aggregate signatures (many signers, one small signature to check) and zero-knowledge proofs, and it's the curve Ethereum and Solana's upcoming consensus both rely on. The underlying point math (adding two points, subtracting, or multiplying a point by a number) is far too expensive to run in ordinary program code without exhausting Solana's compute budget, so the runtime exposes it as a native building block: the `sol_curve_group_op` syscall. This example is a thin, stateless wrapper over that syscall — you pass in points and scalars, it returns the result as transaction return data — so you can see the raw curve operations by themselves before combining them into something like signature verification. + +Learn more: [Solana's BLS12-381 syscall spec (SIMD-0388)](https://github.com/solana-foundation/solana-improvement-documents/blob/main/proposals/0388-bls12-381-syscalls.md) · [BLS12-381 for the rest of us (a beginner-friendly explainer)](https://hackmd.io/@benjaminion/bls12-381) + +Points are big-endian: G1 = 96 bytes, G2 = 192 bytes; scalars are 32 bytes big-endian and go first in the instruction data. | Discriminator | Instruction | Input | | ------------- | ----------- | -------------- | diff --git a/cryptography/bls12-381/pinocchio/tests/bls12-381.test.ts b/cryptography/bls12-381/pinocchio/tests/bls12-381.test.ts index cedcf7b3a..01be6ad42 100644 --- a/cryptography/bls12-381/pinocchio/tests/bls12-381.test.ts +++ b/cryptography/bls12-381/pinocchio/tests/bls12-381.test.ts @@ -1,10 +1,11 @@ -import { Buffer } from 'node:buffer'; import { type Address, appendTransactionMessageInstruction, createTransactionMessage, generateKeyPairSigner, + getBase16Codec, type KeyPairSigner, + type ReadonlyUint8Array, lamports, pipe, setTransactionMessageFeePayerSigner, @@ -36,7 +37,8 @@ const IX_G2_ADD = 3; const IX_G2_SUB = 4; const IX_G2_MUL = 5; -const hex = (s: string) => Uint8Array.from(Buffer.from(s, 'hex')); +const base16 = getBase16Codec(); +const hex = (s: string) => base16.encode(s); const scalarThree = () => { const scalar = new Uint8Array(32); @@ -57,7 +59,7 @@ describe('bls12-381', () => { svm.airdrop(payer.address, lamports(1_000_000_000n)); }); - async function send(discriminator: number, left: Uint8Array, right: Uint8Array) { + async function send(discriminator: number, left: ReadonlyUint8Array, right: ReadonlyUint8Array) { const data = new Uint8Array([discriminator, ...left, ...right]); const transactionMessage = pipe( @@ -73,10 +75,15 @@ describe('bls12-381', () => { return result; } - async function expectReturnData(discriminator: number, left: Uint8Array, right: Uint8Array, expected: Uint8Array) { + async function expectReturnData( + discriminator: number, + left: ReadonlyUint8Array, + right: ReadonlyUint8Array, + expected: ReadonlyUint8Array, + ) { const result = await send(discriminator, left, right); assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); - assert.deepEqual(result.returnData().data(), expected); + assert.deepEqual(result.returnData().data(), expected); } it('G1 add: G + 2G == 3G', async () => { diff --git a/cryptography/bn254/pinocchio/README.md b/cryptography/bn254/pinocchio/README.md index 995bc1a5f..b0fd54319 100644 --- a/cryptography/bn254/pinocchio/README.md +++ b/cryptography/bn254/pinocchio/README.md @@ -1,6 +1,8 @@ # BN254 (alt_bn128) operations (Pinocchio) -A stateless program that wraps the BN254 (alt_bn128) G2 group operations added by [SIMD-0302](https://github.com/solana-foundation/solana-improvement-documents/pull/302) and the pairing operation, via the `sol_alt_bn128_group_op` syscall. Results come back as transaction return data. +BN254 is an elliptic curve — a set of points you can "add" and "multiply" using special math. What makes it useful is its _pairing_: an operation that relates points in a way ordinary addition can't, and that's the engine behind things like zero-knowledge proofs and BLS signatures (many signers collapse into one tiny signature that verifies in a single check). This curve math is far too expensive to run in normal program code without blowing past Solana's compute budget, so the runtime provides it as a native building block — the `sol_alt_bn128_group_op` syscall. This example is a thin, stateless wrapper over that syscall: it hands your points and scalars to the runtime and returns the result as transaction return data, so you can see exactly what goes in and comes out before building anything larger on top. + +Learn more: [Solana's BN254 G2 syscall spec (SIMD-0302)](https://github.com/solana-foundation/solana-improvement-documents/blob/main/proposals/0302-bn254-g2-syscalls.md) · [the alt_bn128/BN254 pairing encoding these ops follow (Ethereum EIP-197)](https://eips.ethereum.org/EIPS/eip-197) | Discriminator | Instruction | Input | | ------------- | ---------------- | ------------------------------------------------------------------------------ | diff --git a/cryptography/bn254/pinocchio/tests/bn254.test.ts b/cryptography/bn254/pinocchio/tests/bn254.test.ts index 6af30a80d..ac44643d8 100644 --- a/cryptography/bn254/pinocchio/tests/bn254.test.ts +++ b/cryptography/bn254/pinocchio/tests/bn254.test.ts @@ -1,12 +1,16 @@ -import { Buffer } from 'node:buffer'; import { type Address, appendTransactionMessageInstruction, createTransactionMessage, + fixCodecSize, generateKeyPairSigner, + getBase16Codec, + getBytesCodec, + getStructCodec, type KeyPairSigner, lamports, pipe, + type ReadonlyUint8Array, setTransactionMessageFeePayerSigner, signTransactionMessageWithSigners, } from '@solana/kit'; @@ -41,7 +45,20 @@ const IX_AGGREGATE_VERIFY = 2; const ERR_INVALID_INPUT_LENGTH = 'InstructionErrorCustom { code: 0 }'; const ERR_AGGREGATE_VERIFY_FAILED = 'InstructionErrorCustom { code: 3 }'; -const hex = (s: string) => Uint8Array.from(Buffer.from(s, 'hex')); +const base16 = getBase16Codec(); +const hex = (s: string) => base16.encode(s); + +const g1 = fixCodecSize(getBytesCodec(), 64); +const g2 = fixCodecSize(getBytesCodec(), 128); + +// Wire layout of the AggregateVerify instruction data (after the discriminator). +const aggregateVerifyCodec = getStructCodec([ + ['signature', g1], + ['negatedMessageHash', g1], + ['pubkey1', g2], + ['pubkey2', g2], + ['pubkey3', g2], +]); describe('bn254', () => { const svm = new LiteSVM(); @@ -56,7 +73,7 @@ describe('bn254', () => { svm.airdrop(payer.address, lamports(1_000_000_000n)); }); - async function send(discriminator: number, input: Uint8Array) { + async function send(discriminator: number, input: ReadonlyUint8Array) { const data = new Uint8Array(1 + input.length); data[0] = discriminator; data.set(input, 1); @@ -75,19 +92,19 @@ describe('bn254', () => { } const verifyInput = (aggSig: string) => - new Uint8Array([ - ...hex(aggSig), - ...hex(NEGATED_MESSAGE_HASH), - ...hex(G2_GENERATOR), - ...hex(G2_TWO_GENERATOR), - ...hex(G2_THREE_GENERATOR), - ]); + aggregateVerifyCodec.encode({ + negatedMessageHash: hex(NEGATED_MESSAGE_HASH), + pubkey1: hex(G2_GENERATOR), + pubkey2: hex(G2_TWO_GENERATOR), + pubkey3: hex(G2_THREE_GENERATOR), + signature: hex(aggSig), + }); it('adds two G2 points: G + 2G == 3G', async () => { const result = await send(IX_G2_ADD, new Uint8Array([...hex(G2_GENERATOR), ...hex(G2_TWO_GENERATOR)])); assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); - assert.deepEqual(result.returnData().data(), hex(G2_THREE_GENERATOR)); + assert.deepEqual(result.returnData().data(), hex(G2_THREE_GENERATOR)); }); it('multiplies a G2 point by a scalar: G * 3 == 3G', async () => { @@ -96,7 +113,7 @@ describe('bn254', () => { const result = await send(IX_G2_MUL, new Uint8Array([...hex(G2_GENERATOR), ...scalar])); assert(result instanceof TransactionMetadata, `transaction failed: ${result.toString()}`); - assert.deepEqual(result.returnData().data(), hex(G2_THREE_GENERATOR)); + assert.deepEqual(result.returnData().data(), hex(G2_THREE_GENERATOR)); }); it('verifies an aggregate signature from all signers with one pairing check', async () => {