diff --git a/.github/workflows/forester-tests.yml b/.github/workflows/forester-tests.yml new file mode 100644 index 0000000000..7fb248b57a --- /dev/null +++ b/.github/workflows/forester-tests.yml @@ -0,0 +1,50 @@ +on: + push: + branches: + - main + paths: + - "forester/**" + - "photon-api/**" + - ".github/workflows/forester-tests.yml" + pull_request: + branches: + - main + paths: + - "forester/**" + - "photon-api/**" + - ".github/workflows/forester-tests.yml" + types: + - opened + - synchronize + - reopened + - ready_for_review + +name: forester-tests + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + forester-tests: + name: forester-tests + if: github.event.pull_request.draft == false + runs-on: buildjet-2vcpu-ubuntu-2204 + timeout-minutes: 30 + + steps: + - name: Checkout sources + uses: actions/checkout@v4 + with: + submodules: true + + - name: Setup and build + uses: ./.github/actions/setup-and-build + + - name: Run forester tests + run: | + source ./scripts/devenv.sh + mkdir -p ./target/deploy + cp ./third-party/solana-program-library/spl_noop.so ./target/deploy/spl_noop.so + RUST_MIN_STACK=8388608 RUSTFLAGS="-D warnings" cargo test --package forester + diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 486657528c..0e642e5a07 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -42,12 +42,8 @@ jobs: shell: bash run: ./scripts/install.sh - - name: Build workspace - run: | - source ./scripts/devenv.sh - echo "Rust version: $(rustc --version)" - - name: Test workspace run: | source ./scripts/devenv.sh - RUST_MIN_STACK=8388608 RUSTFLAGS="-D warnings" cargo test --workspace --all-targets + echo "Rust version: $(rustc --version)" + RUST_MIN_STACK=8388608 RUSTFLAGS="-D warnings" cargo test --workspace --all-targets --exclude photon-api --exclude forester diff --git a/Cargo.lock b/Cargo.lock index 4306da0ddd..bbce7c32c0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -27,7 +27,7 @@ dependencies = [ "light-indexed-merkle-tree", "light-macros", "light-utils", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", "solana-sdk", "solana-security-txt", @@ -53,9 +53,9 @@ dependencies = [ "light-utils", "light-verifier", "memoffset 0.9.1", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", - "reqwest 0.11.26", + "reqwest 0.11.27", "serde_json", "solana-cli-output", "solana-program-test", @@ -118,11 +118,11 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.15", "once_cell", "version_check", ] @@ -134,7 +134,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom 0.2.12", + "getrandom 0.2.15", "once_cell", "version_check", "zerocopy", @@ -142,9 +142,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -161,7 +161,7 @@ version = "0.1.4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -198,7 +198,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7f2a3e1df4685f18d12a943a9f2a7456305401af21a07c9fe076ef9ecd6e400" dependencies = [ "anchor-syn", - "bs58 0.5.0", + "bs58 0.5.1", "proc-macro2", "quote", "syn 1.0.109", @@ -304,7 +304,7 @@ dependencies = [ "bincode", "borsh 0.10.3", "bytemuck", - "getrandom 0.2.12", + "getrandom 0.2.15", "solana-program", "thiserror", ] @@ -329,7 +329,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9101b84702fed2ea57bd22992f75065da5648017135b844283a2f6d74f27825" dependencies = [ "anyhow", - "bs58 0.5.0", + "bs58 0.5.1", "heck 0.3.3", "proc-macro2", "quote", @@ -366,47 +366,48 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.11" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3a318f1f38d2418400f8209655bfd825785afd25aa30bb7ba6cc792e4596748" +checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -414,9 +415,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "aquamarine" @@ -493,7 +494,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", "paste", "rayon", @@ -517,7 +518,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", "proc-macro2", "quote", @@ -575,7 +576,7 @@ dependencies = [ "ark-serialize-derive", "ark-std", "digest 0.10.7", - "num-bigint 0.4.4", + "num-bigint 0.4.5", ] [[package]] @@ -688,9 +689,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.3" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb42b2197bf15ccb092b62c74515dbd8b86d0effd934795f6687c93b6e679a2c" +checksum = "9c90a406b4495d129f00461241616194cb8a032c8d1c53c657f0961d5f8e0498" dependencies = [ "brotli", "flate2", @@ -717,9 +718,15 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "atty" version = "0.2.14" @@ -733,15 +740,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line", "cc", @@ -772,9 +779,9 @@ checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" @@ -837,9 +844,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" dependencies = [ "arrayref", "arrayvec", @@ -896,11 +903,11 @@ dependencies = [ [[package]] name = "borsh" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0901fc8eb0aca4c83be0106d6f2db17d86a08dfc2c25f0e84464bf381158add6" +checksum = "dbe5b10e214954177fb1dc9fbd20a1a2608fe99e6c832033bdc7cea287a20d77" dependencies = [ - "borsh-derive 1.4.0", + "borsh-derive 1.5.0", "cfg_aliases", ] @@ -932,15 +939,15 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51670c3aa053938b0ee3bd67c3817e471e626151131b934038e83c5bf8de48f5" +checksum = "d7a8646f94ab393e43e8b35a2558b1624bed28b97ee09c5d15456e3c9463f46d" dependencies = [ "once_cell", "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", "syn_derive", ] @@ -990,9 +997,9 @@ dependencies = [ [[package]] name = "brotli" -version = "3.4.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" +checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1001,9 +1008,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.5.0" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da74e2b81409b1b743f8f0c62cc6254afefb8b8e50bbfe3735550f7aeefa3448" +checksum = "e6221fe77a248b9117d431ad93761222e1cf8ff282d9d1d5d9f53d6299a1cf76" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1017,18 +1024,18 @@ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] name = "bs58" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" dependencies = [ "tinyvec", ] [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bv" @@ -1042,9 +1049,9 @@ dependencies = [ [[package]] name = "bytecount" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205" +checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "bytemuck" @@ -1057,13 +1064,13 @@ dependencies = [ [[package]] name = "bytemuck_derive" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" +checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -1074,9 +1081,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "bzip2" @@ -1111,12 +1118,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" dependencies = [ "jobserver", "libc", + "once_cell", ] [[package]] @@ -1133,9 +1141,9 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", @@ -1143,7 +1151,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] @@ -1192,14 +1200,14 @@ dependencies = [ "once_cell", "strsim 0.10.0", "termcolor", - "textwrap 0.16.0", + "textwrap 0.16.1", ] [[package]] name = "clap" -version = "4.4.11" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" dependencies = [ "clap_builder", "clap_derive", @@ -1207,26 +1215,26 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.11" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstream", "anstyle", - "clap_lex 0.6.0", - "strsim 0.10.0", + "clap_lex 0.7.0", + "strsim 0.11.1", ] [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -1240,9 +1248,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "color-eyre" @@ -1273,9 +1281,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "combine" @@ -1305,9 +1313,9 @@ dependencies = [ "light-test-utils", "light-utils", "light-verifier", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", - "reqwest 0.11.26", + "reqwest 0.11.27", "solana-program-test", "solana-sdk", "spl-token 3.5.0", @@ -1316,13 +1324,33 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] +[[package]] +name = "config" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7328b20597b53c2454f0b1919720c25c7339051c02b72b7e05409e00b14132be" +dependencies = [ + "async-trait", + "convert_case", + "json5", + "lazy_static", + "nom", + "pathdiff", + "ron", + "rust-ini", + "serde", + "serde_json", + "toml 0.8.13", + "yaml-rust", +] + [[package]] name = "console" version = "0.15.8" @@ -1362,17 +1390,46 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "tiny-keccak", +] + [[package]] name = "constant_time_eq" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -1380,66 +1437,61 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset 0.9.1", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crunchy" @@ -1492,9 +1544,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.3" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" dependencies = [ "darling_core", "darling_macro", @@ -1502,27 +1554,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim 0.10.0", - "syn 2.0.48", + "strsim 0.11.1", + "syn 2.0.65", ] [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -1532,7 +1584,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.1", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -1541,9 +1593,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "der" @@ -1563,16 +1615,20 @@ dependencies = [ "asn1-rs", "displaydoc", "nom", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", "rusticata-macros", ] [[package]] name = "deranged" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] [[package]] name = "derivation-path" @@ -1667,7 +1723,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -1690,7 +1746,16 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", +] + +[[package]] +name = "dlv-list" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" +dependencies = [ + "const-random", ] [[package]] @@ -1728,10 +1793,10 @@ dependencies = [ "light-test-utils", "light-utils", "light-verifier", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", "rand 0.8.5", - "reqwest 0.11.26", + "reqwest 0.11.27", "solana-client 1.18.11 (registry+https://github.com/rust-lang/crates.io-index)", "solana-program-test", "solana-sdk", @@ -1795,9 +1860,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" [[package]] name = "encode_unicode" @@ -1807,9 +1872,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] @@ -1825,13 +1890,13 @@ dependencies = [ [[package]] name = "enum-iterator-derive" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03cdc46ec28bd728e67540c528013c6a10eb69a02eb31078a1bda695438cbfb8" +checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -1840,11 +1905,21 @@ version = "3.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" dependencies = [ - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", +] + +[[package]] +name = "env_filter" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +dependencies = [ + "log", + "regex", ] [[package]] @@ -1873,6 +1948,19 @@ dependencies = [ "termcolor", ] +[[package]] +name = "env_logger" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -1881,9 +1969,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1907,9 +1995,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "feature-probe" @@ -1919,21 +2007,21 @@ checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" [[package]] name = "filetime" -version = "0.2.22" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", - "windows-sys 0.48.0", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", ] [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", @@ -1969,6 +2057,51 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +[[package]] +name = "forester" +version = "0.1.0" +dependencies = [ + "account-compression", + "anchor-lang", + "bincode", + "borsh 0.10.3", + "bs58 0.4.0", + "chrono", + "clap 4.5.4", + "config", + "env_logger 0.11.3", + "function_name", + "futures", + "light-bounded-vec", + "light-circuitlib-rs", + "light-concurrent-merkle-tree", + "light-hash-set", + "light-hasher", + "light-merkle-tree-reference", + "light-registry", + "light-system-program", + "light-test-utils", + "log", + "num-bigint 0.4.5", + "num-traits", + "photon-api", + "rand 0.8.5", + "reqwest 0.11.27", + "rstest", + "serde", + "serde_json", + "serial_test", + "solana-client 1.18.11 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-sdk", + "solana-transaction-status", + "sysinfo", + "thiserror", + "time", + "tiny-bip39", + "tokio", + "tokio-util 0.7.11", +] + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -1984,6 +2117,21 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" +[[package]] +name = "function_name" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1ab577a896d09940b5fe12ec5ae71f9d8211fff62c919c03a3750a9901e98a7" +dependencies = [ + "function_name-proc-macro", +] + +[[package]] +name = "function_name-proc-macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673464e1e314dd67a0fd9544abc99e8eb28d0c7e3b69b033bcff9b2d00b87333" + [[package]] name = "futures" version = "0.3.30" @@ -2040,7 +2188,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -2055,6 +2203,12 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + [[package]] name = "futures-util" version = "0.3.30" @@ -2109,9 +2263,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", @@ -2122,9 +2276,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "goblin" @@ -2153,39 +2313,39 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.21" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http 0.2.9", - "indexmap 1.9.3", + "http 0.2.12", + "indexmap 2.2.6", "slab", "tokio", - "tokio-util 0.7.9", + "tokio-util 0.7.11", "tracing", ] [[package]] name = "h2" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" dependencies = [ + "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "futures-util", "http 1.1.0", "indexmap 2.2.6", "slab", "tokio", - "tokio-util 0.7.9", + "tokio-util 0.7.11", "tracing", ] @@ -2204,7 +2364,7 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.8", ] [[package]] @@ -2213,7 +2373,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.8", ] [[package]] @@ -2227,9 +2387,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.1" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "heck" @@ -2246,6 +2406,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -2257,9 +2423,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -2305,9 +2471,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -2327,12 +2493,12 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http 0.2.9", + "http 0.2.12", "pin-project-lite", ] @@ -2379,22 +2545,22 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", - "h2 0.3.21", - "http 0.2.9", - "http-body 0.4.5", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "socket2", "tokio", "tower-service", "tracing", @@ -2410,7 +2576,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.4", + "h2 0.4.5", "http 1.1.0", "http-body 1.0.0", "httparse", @@ -2423,13 +2589,13 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", - "http 0.2.9", - "hyper 0.14.27", + "http 0.2.12", + "hyper 0.14.28", "rustls", "tokio", "tokio-rustls", @@ -2442,7 +2608,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.27", + "hyper 0.14.28", "native-tls", "tokio", "tokio-native-tls", @@ -2477,7 +2643,7 @@ dependencies = [ "http-body 1.0.0", "hyper 1.3.1", "pin-project-lite", - "socket2 0.5.5", + "socket2", "tokio", "tower", "tower-service", @@ -2486,16 +2652,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows 0.48.0", + "windows-core", ] [[package]] @@ -2578,6 +2744,7 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] @@ -2587,14 +2754,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.1", + "hashbrown 0.14.5", ] [[package]] name = "indicatif" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ "console", "instant", @@ -2605,18 +2772,18 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] [[package]] name = "ipnet" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is-terminal" @@ -2624,11 +2791,17 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi 0.3.3", + "hermit-abi 0.3.9", "libc", "windows-sys 0.52.0", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + [[package]] name = "itertools" version = "0.10.5" @@ -2640,15 +2813,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.26" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" dependencies = [ "libc", ] @@ -2662,6 +2835,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json5" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +dependencies = [ + "pest", + "pest_derive", + "serde", +] + [[package]] name = "jsonrpc-core" version = "18.0.0" @@ -2679,9 +2863,9 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] @@ -2694,19 +2878,18 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.5.0", "libc", - "redox_syscall 0.4.1", ] [[package]] @@ -2778,7 +2961,7 @@ dependencies = [ "ark-relations", "ark-serialize", "ark-std", - "borsh 0.9.3", + "borsh 0.10.3", "bytemuck", "color-eyre", "duct", @@ -2789,10 +2972,10 @@ dependencies = [ "light-merkle-tree-reference", "light-utils", "log", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", "once_cell", - "reqwest 0.11.26", + "reqwest 0.11.27", "serde", "serde_json", "solana-program", @@ -2833,7 +3016,7 @@ dependencies = [ "light-merkle-tree-reference", "light-utils", "memoffset 0.8.0", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", "rand 0.8.5", "solana-program", @@ -2853,7 +3036,7 @@ dependencies = [ "light-heap", "light-utils", "memoffset 0.9.1", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", "rand 0.8.5", "solana-program", @@ -2891,7 +3074,7 @@ dependencies = [ "light-hasher", "light-merkle-tree-reference", "light-utils", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", "solana-program", "thiserror", @@ -2924,7 +3107,7 @@ checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" dependencies = [ "ark-bn254", "ark-ff", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "thiserror", ] @@ -2984,14 +3167,15 @@ dependencies = [ "light-utils", "light-verifier", "memoffset 0.9.1", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", + "photon-api", "rand 0.8.5", - "reqwest 0.11.26", + "reqwest 0.11.27", "solana-client 1.18.11 (registry+https://github.com/rust-lang/crates.io-index)", "solana-program-test", "solana-sdk", - "solana-transaction-status 1.18.11 (git+https://github.com/Lightprotocol/agave?branch=v1.18.11-enforce-cpi-tracking)", + "solana-transaction-status", "spl-token 3.5.0", "thiserror", "tokio", @@ -3004,7 +3188,7 @@ dependencies = [ "anyhow", "ark-bn254", "ark-ff", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "rand 0.8.5", "solana-program", "thiserror", @@ -3017,7 +3201,7 @@ dependencies = [ "borsh 0.10.3", "groth16-solana", "light-circuitlib-rs", - "reqwest 0.11.26", + "reqwest 0.11.27", "solana-program", "thiserror", "tokio", @@ -3034,23 +3218,29 @@ dependencies = [ "hex", "js-sys", "light-poseidon", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "thiserror", "wasm-bindgen", "web-sys", ] +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -3058,9 +3248,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "lru" @@ -3093,9 +3283,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memmap2" @@ -3151,6 +3341,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -3159,18 +3359,18 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", @@ -3308,11 +3508,10 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" dependencies = [ - "autocfg", "num-integer", "num-traits", "rand 0.8.5", @@ -3329,6 +3528,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-derive" version = "0.3.3" @@ -3348,24 +3553,23 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -3386,9 +3590,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -3399,7 +3603,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.3", + "hermit-abi 0.3.9", "libc", ] @@ -3451,7 +3655,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -3463,7 +3667,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -3474,9 +3678,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] @@ -3492,21 +3696,21 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.63" +version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ "bitflags 2.5.0", "cfg-if", @@ -3525,7 +3729,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -3536,9 +3740,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.99" +version = "0.9.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" dependencies = [ "cc", "libc", @@ -3565,6 +3769,16 @@ dependencies = [ "thiserror", ] +[[package]] +name = "ordered-multimap" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ed8acf08e98e744e5384c8bc63ceb0364e68a6854187221c18df61c4797690e" +dependencies = [ + "dlv-list", + "hashbrown 0.13.2", +] + [[package]] name = "os_pipe" version = "1.1.5" @@ -3577,9 +3791,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.5.1" +version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "ouroboros" @@ -3623,9 +3837,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" dependencies = [ "lock_api", "parking_lot_core", @@ -3633,22 +3847,28 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall 0.5.1", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" [[package]] name = "pbkdf2" @@ -3692,31 +3912,89 @@ dependencies = [ "num", ] +[[package]] +name = "pest" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.65", +] + +[[package]] +name = "pest_meta" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" +dependencies = [ + "once_cell", + "pest", + "sha2 0.10.8", +] + +[[package]] +name = "photon-api" +version = "0.19.0" +dependencies = [ + "reqwest 0.11.27", + "serde", + "serde_derive", + "serde_json", + "serde_with", + "url", + "uuid", +] + [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -3737,9 +4015,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plain" @@ -3761,9 +4039,15 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.4.3" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" @@ -3813,7 +4097,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" dependencies = [ - "toml", + "toml 0.5.11", ] [[package]] @@ -3861,9 +4145,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.81" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43" dependencies = [ "unicode-ident", ] @@ -3885,7 +4169,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -3931,16 +4215,16 @@ checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" dependencies = [ "bytes", "libc", - "socket2 0.5.5", + "socket2", "tracing", "windows-sys 0.48.0", ] [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -4004,7 +4288,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.15", ] [[package]] @@ -4059,29 +4343,29 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", ] [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.15", "libredox", "thiserror", ] @@ -4132,9 +4416,9 @@ dependencies = [ "light-test-utils", "light-utils", "light-verifier", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", - "reqwest 0.11.26", + "reqwest 0.11.27", "serde_json", "solana-cli-output", "solana-program-test", @@ -4143,11 +4427,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "relative-path" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" + [[package]] name = "reqwest" -version = "0.11.26" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bf93c4af7a8bb7d879d51cebe797356ff10ae8516ace542b5182d9dcac10b2" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "async-compression", "base64 0.21.7", @@ -4155,22 +4445,23 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.3.21", - "http 0.2.9", - "http-body 0.4.5", - "hyper 0.14.27", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.28", "hyper-rustls", "hyper-tls 0.5.0", "ipnet", "js-sys", "log", "mime", + "mime_guess", "native-tls", "once_cell", "percent-encoding", "pin-project-lite", "rustls", - "rustls-pemfile 1.0.3", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", @@ -4179,13 +4470,13 @@ dependencies = [ "tokio", "tokio-native-tls", "tokio-rustls", - "tokio-util 0.7.9", + "tokio-util 0.7.11", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.25.2", + "webpki-roots 0.25.4", "winreg 0.50.0", ] @@ -4195,12 +4486,12 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "bytes", "encoding_rs", "futures-core", "futures-util", - "h2 0.4.4", + "h2 0.4.5", "http 1.1.0", "http-body 1.0.0", "http-body-util", @@ -4254,13 +4545,25 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.12", + "getrandom 0.2.15", "libc", "spin 0.9.8", "untrusted 0.9.0", "windows-sys 0.52.0", ] +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64 0.21.7", + "bitflags 2.5.0", + "serde", + "serde_derive", +] + [[package]] name = "rpassword" version = "7.3.1" @@ -4272,21 +4575,60 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "rstest" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97eeab2f3c0a199bc4be135c36c924b6590b88c377d416494288c14f2db30199" +dependencies = [ + "futures", + "futures-timer", + "rstest_macros", + "rustc_version", +] + +[[package]] +name = "rstest_macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d428f8247852f894ee1be110b375111b586d4fa431f6c46e64ba5a0dcccbe605" +dependencies = [ + "cfg-if", + "glob", + "proc-macro2", + "quote", + "regex", + "relative-path", + "rustc_version", + "syn 2.0.65", + "unicode-ident", +] + [[package]] name = "rtoolbox" -version = "0.0.1" +version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034e22c514f5c0cb8a10ff341b9b048b5ceb21591f31c8f44c43b960f9b3524a" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" dependencies = [ "libc", - "winapi", + "windows-sys 0.48.0", +] + +[[package]] +name = "rust-ini" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e2a3bcec1f113553ef1c88aae6c020a369d03d55b58de9869a0908930385091" +dependencies = [ + "cfg-if", + "ordered-multimap", ] [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -4314,9 +4656,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ "bitflags 2.5.0", "errno", @@ -4327,9 +4669,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.10" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring 0.17.8", @@ -4344,16 +4686,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", - "rustls-pemfile 1.0.3", + "rustls-pemfile 1.0.4", "schannel", "security-framework", ] [[package]] name = "rustls-pemfile" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ "base64 0.21.7", ] @@ -4364,15 +4706,15 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.5.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beb461507cee2c2ff151784c52762cf4d9ff6a61f3e80968600ed24fa837fa54" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] name = "rustls-webpki" @@ -4386,15 +4728,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -4407,11 +4749,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -4437,26 +4779,26 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring 0.17.8", + "untrusted 0.9.0", ] [[package]] name = "security-framework" -version = "2.9.2" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "core-foundation", "core-foundation-sys", "libc", @@ -4465,9 +4807,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" dependencies = [ "core-foundation-sys", "libc", @@ -4475,9 +4817,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "seqlock" @@ -4490,9 +4832,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.197" +version = "1.0.202" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" dependencies = [ "serde_derive", ] @@ -4508,26 +4850,35 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.202" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] name = "serde_json" -version = "1.0.114" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa", "ryu", "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -4546,8 +4897,14 @@ version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" dependencies = [ + "base64 0.13.1", + "chrono", + "hex", + "indexmap 1.9.3", "serde", + "serde_json", "serde_with_macros", + "time", ] [[package]] @@ -4559,14 +4916,14 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] name = "serde_yaml" -version = "0.9.30" +version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1bf28c79a99f70ee1f1d83d10c875d2e70618417fda01ad1785e027579d9d38" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ "indexmap 2.2.6", "itoa", @@ -4575,6 +4932,31 @@ dependencies = [ "unsafe-libyaml", ] +[[package]] +name = "serial_test" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d" +dependencies = [ + "dashmap", + "futures", + "lazy_static", + "log", + "parking_lot", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.65", +] + [[package]] name = "sha1" version = "0.10.6" @@ -4659,9 +5041,9 @@ checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -4705,22 +5087,12 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "socket2" -version = "0.5.5" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -4832,7 +5204,7 @@ name = "solana-banks-client" version = "1.18.11" source = "git+https://github.com/Lightprotocol/agave?branch=v1.18.11-enforce-cpi-tracking#a24d3c07e25de696b4922ddde3e69877e8e9fa27" dependencies = [ - "borsh 1.4.0", + "borsh 1.5.0", "futures", "solana-banks-interface", "solana-program", @@ -4997,7 +5369,7 @@ dependencies = [ "solana-cli-config", "solana-rpc-client-api", "solana-sdk", - "solana-transaction-status 1.18.11 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-transaction-status", "solana-vote-program 1.18.11 (registry+https://github.com/rust-lang/crates.io-index)", "spl-memo", ] @@ -5213,7 +5585,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -5224,7 +5596,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -5289,7 +5661,7 @@ dependencies = [ "gethostname", "lazy_static", "log", - "reqwest 0.11.26", + "reqwest 0.11.27", "solana-sdk", "thiserror", ] @@ -5303,7 +5675,7 @@ dependencies = [ "gethostname", "lazy_static", "log", - "reqwest 0.11.26", + "reqwest 0.11.27", "solana-sdk", "thiserror", ] @@ -5322,7 +5694,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_derive", - "socket2 0.5.5", + "socket2", "solana-logger 1.18.11 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", "solana-version 1.18.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -5343,7 +5715,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_derive", - "socket2 0.5.5", + "socket2", "solana-logger 1.18.11 (git+https://github.com/Lightprotocol/agave?branch=v1.18.11-enforce-cpi-tracking)", "solana-sdk", "solana-version 1.18.11 (git+https://github.com/Lightprotocol/agave?branch=v1.18.11-enforce-cpi-tracking)", @@ -5429,7 +5801,7 @@ dependencies = [ "blake3", "borsh 0.10.3", "borsh 0.9.3", - "borsh 1.4.0", + "borsh 1.5.0", "bs58 0.4.0", "bv", "bytemuck", @@ -5437,7 +5809,7 @@ dependencies = [ "console_error_panic_hook", "console_log", "curve25519-dalek", - "getrandom 0.2.12", + "getrandom 0.2.15", "itertools", "js-sys", "lazy_static", @@ -5446,7 +5818,7 @@ dependencies = [ "light-poseidon", "log", "memoffset 0.9.1", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-derive 0.4.2", "num-traits", "parking_lot", @@ -5534,7 +5906,7 @@ dependencies = [ "crossbeam-channel", "futures-util", "log", - "reqwest 0.11.26", + "reqwest 0.11.27", "semver", "serde", "serde_derive", @@ -5558,7 +5930,7 @@ dependencies = [ "crossbeam-channel", "futures-util", "log", - "reqwest 0.11.26", + "reqwest 0.11.27", "semver", "serde", "serde_derive", @@ -5694,7 +6066,7 @@ dependencies = [ "bs58 0.4.0", "indicatif", "log", - "reqwest 0.11.26", + "reqwest 0.11.27", "semver", "serde", "serde_derive", @@ -5702,7 +6074,7 @@ dependencies = [ "solana-account-decoder", "solana-rpc-client-api", "solana-sdk", - "solana-transaction-status 1.18.11 (git+https://github.com/Lightprotocol/agave?branch=v1.18.11-enforce-cpi-tracking)", + "solana-transaction-status", "solana-version 1.18.11 (git+https://github.com/Lightprotocol/agave?branch=v1.18.11-enforce-cpi-tracking)", "solana-vote-program 1.18.11 (git+https://github.com/Lightprotocol/agave?branch=v1.18.11-enforce-cpi-tracking)", "tokio", @@ -5716,14 +6088,14 @@ dependencies = [ "base64 0.21.7", "bs58 0.4.0", "jsonrpc-core", - "reqwest 0.11.26", + "reqwest 0.11.27", "semver", "serde", "serde_derive", "serde_json", "solana-account-decoder", "solana-sdk", - "solana-transaction-status 1.18.11 (git+https://github.com/Lightprotocol/agave?branch=v1.18.11-enforce-cpi-tracking)", + "solana-transaction-status", "solana-version 1.18.11 (git+https://github.com/Lightprotocol/agave?branch=v1.18.11-enforce-cpi-tracking)", "spl-token-2022 1.0.0", "thiserror", @@ -5839,7 +6211,7 @@ dependencies = [ "base64 0.21.7", "bincode", "bitflags 2.5.0", - "borsh 1.4.0", + "borsh 1.5.0", "bs58 0.4.0", "bytemuck", "byteorder", @@ -5893,7 +6265,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -6085,31 +6457,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "solana-transaction-status" -version = "1.18.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b5614e42e4d5a8b15e4553b68008788fae3a0dbc1a3672b62e9574252579536" -dependencies = [ - "Inflector", - "base64 0.21.7", - "bincode", - "borsh 0.10.3", - "bs58 0.4.0", - "lazy_static", - "log", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder", - "solana-sdk", - "spl-associated-token-account", - "spl-memo", - "spl-token 4.0.0", - "spl-token-2022 1.0.0", - "thiserror", -] - [[package]] name = "solana-transaction-status" version = "1.18.11" @@ -6407,9 +6754,9 @@ dependencies = [ [[package]] name = "spl-discriminator" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f" +checksum = "daa600f2fe56f32e923261719bae640d873edadbc5237681a39b8e37bfd4d263" dependencies = [ "bytemuck", "solana-program", @@ -6424,7 +6771,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -6436,7 +6783,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.48", + "syn 2.0.65", "thiserror", ] @@ -6460,9 +6807,9 @@ dependencies = [ [[package]] name = "spl-pod" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079" +checksum = "85a5db7e4efb1107b0b8e52a13f035437cdcb36ef99c58f6d467f089d9b2915a" dependencies = [ "borsh 0.10.3", "bytemuck", @@ -6473,9 +6820,9 @@ dependencies = [ [[package]] name = "spl-program-error" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c" +checksum = "7e0657b6490196971d9e729520ba934911ff41fbb2cb9004463dbe23cf8b4b4f" dependencies = [ "num-derive 0.4.2", "num-traits", @@ -6493,7 +6840,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -6661,9 +7008,9 @@ dependencies = [ [[package]] name = "spl-type-length-value" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a468e6f6371f9c69aae760186ea9f1a01c2908351b06a5e0026d21cfc4d7ecac" +checksum = "8f9ebd75d29c5f48de5f6a9c114e08531030b75b8ac2c557600ac7da0b73b1e8" dependencies = [ "bytemuck", "solana-program", @@ -6690,6 +7037,12 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "strum" version = "0.24.1" @@ -6737,9 +7090,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "d2863d96a84c6439701d7a38f9de935ec562c8832cc55d1dde0f513b52fad106" dependencies = [ "proc-macro2", "quote", @@ -6755,7 +7108,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -6778,9 +7131,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.30.8" +version = "0.30.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b1a378e48fb3ce3a5cf04359c456c9c98ff689bcf1c1bc6e6a31f247686f275" +checksum = "732ffa00f53e6b2af46208fba5718d9662a421049204e156328b66791ffa15ae" dependencies = [ "cfg-if", "core-foundation-sys", @@ -6788,7 +7141,7 @@ dependencies = [ "ntapi", "once_cell", "rayon", - "windows 0.52.0", + "windows", ] [[package]] @@ -6826,9 +7179,9 @@ dependencies = [ "light-system-program", "light-test-utils", "light-utils", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", - "reqwest 0.11.26", + "reqwest 0.11.27", "solana-program-test", "solana-sdk", "spl-token 3.5.0", @@ -6851,9 +7204,9 @@ dependencies = [ "light-test-utils", "light-utils", "light-verifier", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", - "reqwest 0.11.26", + "reqwest 0.11.27", "serde_json", "solana-cli-output", "solana-program-test", @@ -6934,9 +7287,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", "fastrand", @@ -6946,9 +7299,9 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] @@ -6977,7 +7330,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -6988,7 +7341,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", "test-case-core", ] @@ -7003,35 +7356,35 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", @@ -7039,12 +7392,14 @@ dependencies = [ [[package]] name = "time" -version = "0.3.29" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", + "num-conv", + "powerfmt", "serde", "time-core", "time-macros", @@ -7058,10 +7413,11 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.15" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ + "num-conv", "time-core", ] @@ -7084,6 +7440,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -7112,7 +7477,7 @@ dependencies = [ "light-system-program", "light-test-utils", "light-verifier", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "num-traits", "reqwest 0.12.4", "solana-program-test", @@ -7123,9 +7488,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.36.0" +version = "1.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" dependencies = [ "backtrace", "bytes", @@ -7135,7 +7500,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2", "tokio-macros", "windows-sys 0.48.0", ] @@ -7148,7 +7513,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -7189,9 +7554,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", @@ -7210,7 +7575,7 @@ dependencies = [ "tokio", "tokio-rustls", "tungstenite", - "webpki-roots 0.25.2", + "webpki-roots 0.25.4", ] [[package]] @@ -7230,16 +7595,15 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.9" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -7251,11 +7615,26 @@ dependencies = [ "serde", ] +[[package]] +name = "toml" +version = "0.8.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.13", +] + [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" @@ -7265,7 +7644,7 @@ checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap 2.2.6", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] @@ -7276,7 +7655,20 @@ checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap 2.2.6", "toml_datetime", - "winnow", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" +dependencies = [ + "indexmap 2.2.6", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.8", ] [[package]] @@ -7309,11 +7701,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "log", "pin-project-lite", "tracing-attributes", @@ -7322,20 +7713,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -7348,7 +7739,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" dependencies = [ "tracing", - "tracing-subscriber 0.3.17", + "tracing-subscriber 0.3.18", ] [[package]] @@ -7361,7 +7752,7 @@ dependencies = [ "opentelemetry", "tracing", "tracing-core", - "tracing-subscriber 0.3.17", + "tracing-subscriber 0.3.18", ] [[package]] @@ -7375,9 +7766,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "sharded-slab", "thread_local", @@ -7386,9 +7777,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" @@ -7399,7 +7790,7 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 0.2.9", + "http 0.2.12", "httparse", "log", "rand 0.8.5", @@ -7417,11 +7808,26 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -7431,24 +7837,24 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" [[package]] name = "unicode-xid" @@ -7477,9 +7883,9 @@ dependencies = [ [[package]] name = "unsafe-libyaml" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" [[package]] name = "untrusted" @@ -7526,6 +7932,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +[[package]] +name = "uuid" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +dependencies = [ + "getrandom 0.2.15", + "serde", +] + [[package]] name = "valuable" version = "0.1.0" @@ -7558,9 +7974,9 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -7608,15 +8024,15 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -7642,7 +8058,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -7655,9 +8071,9 @@ checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -7674,9 +8090,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.25.2" +version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "winapi" @@ -7696,11 +8112,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -7709,15 +8125,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows" version = "0.52.0" @@ -7725,7 +8132,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core", - "windows-targets 0.52.0", + "windows-targets 0.52.5", ] [[package]] @@ -7734,7 +8141,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.5", ] [[package]] @@ -7752,7 +8159,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.5", ] [[package]] @@ -7772,17 +8179,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -7793,9 +8201,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -7805,9 +8213,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -7817,9 +8225,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -7829,9 +8243,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -7841,9 +8255,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -7853,9 +8267,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -7865,15 +8279,24 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "winnow" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] [[package]] name = "winnow" -version = "0.5.16" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711d82167854aff2018dfd193aa0fef5370f456732f0d5a0c59b0f1b4b907" +checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" dependencies = [ "memchr", ] @@ -7918,11 +8341,13 @@ dependencies = [ [[package]] name = "xattr" -version = "1.0.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", + "linux-raw-sys", + "rustix", ] [[package]] @@ -7933,14 +8358,14 @@ dependencies = [ "anyhow", "ark-bn254", "ark-ff", - "clap 4.4.11", + "clap 4.5.4", "groth16-solana", "light-concurrent-merkle-tree", "light-hash-set", "light-hasher", "light-indexed-merkle-tree", "light-utils", - "num-bigint 0.4.4", + "num-bigint 0.4.5", "quote", "rand 0.8.5", "sha2 0.10.8", @@ -7948,6 +8373,15 @@ dependencies = [ "tabled", ] +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + [[package]] name = "yasna" version = "0.5.2" @@ -7959,22 +8393,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -7994,7 +8428,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.65", ] [[package]] @@ -8018,11 +8452,10 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.8+zstd.1.5.5" +version = "2.0.10+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" +checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" dependencies = [ "cc", - "libc", "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index 0669356290..8158e874aa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,8 @@ members = [ "xtask", "examples/token-escrow/programs/*", "test-programs/*", + "forester", + "photon-api" ] [profile.release] @@ -37,3 +39,4 @@ solana-rpc-client = { git = "https://github.com/Lightprotocol/agave", branch = " solana-rpc-client-api = { git = "https://github.com/Lightprotocol/agave", branch = "v1.18.11-enforce-cpi-tracking" } solana-runtime = { git = "https://github.com/Lightprotocol/agave", branch = "v1.18.11-enforce-cpi-tracking" } solana-sdk = { git = "https://github.com/Lightprotocol/agave", branch = "v1.18.11-enforce-cpi-tracking" } +solana-transaction-status = { git = "https://github.com/Lightprotocol/agave", branch = "v1.18.11-enforce-cpi-tracking" } diff --git a/examples/token-escrow/programs/token-escrow/tests/test.rs b/examples/token-escrow/programs/token-escrow/tests/test.rs index 289756b32d..d926b2234a 100644 --- a/examples/token-escrow/programs/token-escrow/tests/test.rs +++ b/examples/token-escrow/programs/token-escrow/tests/test.rs @@ -13,9 +13,9 @@ use light_hasher::Poseidon; use light_system_program::sdk::{compressed_account::MerkleContext, event::PublicTransactionEvent}; use light_test_utils::airdrop_lamports; +use light_test_utils::indexer::{create_mint_helper, TestIndexer}; use light_test_utils::spl::mint_tokens_helper; use light_test_utils::test_env::{setup_test_programs_with_accounts, EnvAccounts}; -use light_test_utils::test_indexer::{create_mint_helper, TestIndexer}; use light_test_utils::rpc::errors::{assert_rpc_error, RpcError}; use light_test_utils::rpc::rpc_connection::RpcConnection; diff --git a/examples/token-escrow/programs/token-escrow/tests/test_compressed_pda.rs b/examples/token-escrow/programs/token-escrow/tests/test_compressed_pda.rs index 3f4181bc88..baca401a9f 100644 --- a/examples/token-escrow/programs/token-escrow/tests/test_compressed_pda.rs +++ b/examples/token-escrow/programs/token-escrow/tests/test_compressed_pda.rs @@ -19,11 +19,11 @@ use light_system_program::sdk::address::derive_address; use light_system_program::sdk::compressed_account::MerkleContext; use light_system_program::sdk::event::PublicTransactionEvent; use light_system_program::NewAddressParams; +use light_test_utils::indexer::{create_mint_helper, TestIndexer}; use light_test_utils::rpc::errors::RpcError; use light_test_utils::rpc::rpc_connection::RpcConnection; use light_test_utils::spl::mint_tokens_helper; use light_test_utils::test_env::{setup_test_programs_with_accounts, EnvAccounts}; -use light_test_utils::test_indexer::{create_mint_helper, TestIndexer}; use light_test_utils::transaction_params::{FeeConfig, TransactionParams}; use solana_sdk::instruction::{Instruction, InstructionError}; use solana_sdk::signature::Keypair; diff --git a/forester/.gitignore b/forester/.gitignore new file mode 100644 index 0000000000..3a8cabc9e9 --- /dev/null +++ b/forester/.gitignore @@ -0,0 +1,2 @@ +/target +.idea diff --git a/forester/Cargo.lock b/forester/Cargo.lock new file mode 100644 index 0000000000..4239240419 --- /dev/null +++ b/forester/Cargo.lock @@ -0,0 +1,5849 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "account-compression" +version = "0.3.1" +dependencies = [ + "aligned-sized", + "anchor-lang", + "ark-ff", + "ark-serialize", + "borsh 0.10.3", + "bytemuck", + "light-bounded-vec", + "light-concurrent-merkle-tree", + "light-hash-set", + "light-hasher", + "light-heap", + "light-indexed-merkle-tree", + "light-macros", + "light-utils", + "num-bigint 0.4.4", + "num-traits", + "solana-sdk", +] + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aead" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" +dependencies = [ + "generic-array", +] + +[[package]] +name = "aes" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", + "opaque-debug", +] + +[[package]] +name = "aes-gcm-siv" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589c637f0e68c877bbd59a4599bbe849cac8e5f3e4b5a3ebae8f528cd218dcdc" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "polyval", + "subtle", + "zeroize", +] + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.14", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom 0.2.14", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned-sized" +version = "0.1.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "anchor-attribute-access-control" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5f619f1d04f53621925ba8a2e633ba5a6081f2ae14758cbb67f38fd823e0a3e" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-account" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f2a3e1df4685f18d12a943a9f2a7456305401af21a07c9fe076ef9ecd6e400" +dependencies = [ + "anchor-syn", + "bs58 0.5.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-constant" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9423945cb55627f0b30903288e78baf6f62c6c8ab28fb344b6b25f1ffee3dca7" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-error" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ed12720033cc3c3bf3cfa293349c2275cd5ab99936e33dd4bf283aaad3e241" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-event" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eef4dc0371eba2d8c8b54794b0b0eb786a234a559b77593d6f80825b6d2c77a2" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-program" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b18c4f191331e078d4a6a080954d1576241c29c56638783322a18d308ab27e4f" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-accounts" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de10d6e9620d3bcea56c56151cad83c5992f50d5960b3a9bebc4a50390ddc3c" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-serde" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e2e5be518ec6053d90a2a7f26843dbee607583c779e6c8395951b9739bdfbe" +dependencies = [ + "anchor-syn", + "borsh-derive-internal 0.10.3", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-space" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ecc31d19fa54840e74b7a979d44bcea49d70459de846088a1d71e87ba53c419" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-lang" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35da4785497388af0553586d55ebdc08054a8b1724720ef2749d313494f2b8ad" +dependencies = [ + "anchor-attribute-access-control", + "anchor-attribute-account", + "anchor-attribute-constant", + "anchor-attribute-error", + "anchor-attribute-event", + "anchor-attribute-program", + "anchor-derive-accounts", + "anchor-derive-serde", + "anchor-derive-space", + "arrayref", + "base64 0.13.1", + "bincode", + "borsh 0.10.3", + "bytemuck", + "getrandom 0.2.14", + "solana-program", + "thiserror", +] + +[[package]] +name = "anchor-syn" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9101b84702fed2ea57bd22992f75065da5648017135b844283a2f6d74f27825" +dependencies = [ + "anyhow", + "bs58 0.5.1", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.8", + "syn 1.0.109", + "thiserror", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anstream" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" + +[[package]] +name = "ark-bn254" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-std", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", + "itertools", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "derivative", + "digest 0.10.7", + "itertools", + "num-bigint 0.4.4", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.4", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive", + "ark-std", + "digest 0.10.7", + "num-bigint 0.4.4", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "asn1-rs" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-compression" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07dbbf24db18d609b1462965249abdf49129ccad073ec257da372adc83259c60" +dependencies = [ + "brotli", + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-mutex" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-trait" +version = "0.1.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" + +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +dependencies = [ + "serde", +] + +[[package]] +name = "bitmaps" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" +dependencies = [ + "typenum", +] + +[[package]] +name = "blake3" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "digest 0.10.7", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-padding" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" + +[[package]] +name = "borsh" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" +dependencies = [ + "borsh-derive 0.9.3", + "hashbrown 0.11.2", +] + +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive 0.10.3", + "hashbrown 0.13.2", +] + +[[package]] +name = "borsh" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0901fc8eb0aca4c83be0106d6f2db17d86a08dfc2c25f0e84464bf381158add6" +dependencies = [ + "borsh-derive 1.4.0", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" +dependencies = [ + "borsh-derive-internal 0.9.3", + "borsh-schema-derive-internal 0.9.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal 0.10.3", + "borsh-schema-derive-internal 0.10.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51670c3aa053938b0ee3bd67c3817e471e626151131b934038e83c5bf8de48f5" +dependencies = [ + "once_cell", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.58", + "syn_derive", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "brotli" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "125740193d7fee5cc63ab9e16c2fdc4e07c74ba755cc53b327d6ea029e9fc569" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65622a320492e09b5e0ac436b14c54ff68199bac392d0e89a6832c4518eea525" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] + +[[package]] +name = "bytemuck" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" + +[[package]] +name = "caps" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" +dependencies = [ + "libc", + "thiserror", +] + +[[package]] +name = "cc" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2678b2e3449475e95b0aa6f9b506a28e61b3dc8996592b983695e8ebb58a8b41" +dependencies = [ + "jobserver", + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "chrono" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.4", +] + +[[package]] +name = "cipher" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array", +] + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap 0.11.0", + "unicode-width", + "vec_map", +] + +[[package]] +name = "clap" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +dependencies = [ + "atty", + "bitflags 1.3.2", + "clap_lex 0.2.4", + "indexmap 1.9.3", + "once_cell", + "strsim 0.10.0", + "termcolor", + "textwrap 0.16.1", +] + +[[package]] +name = "clap" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +dependencies = [ + "anstream", + "anstyle", + "clap_lex 0.7.0", + "strsim 0.11.1", +] + +[[package]] +name = "clap_derive" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "clap_lex" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "concurrent-queue" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "config" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7328b20597b53c2454f0b1919720c25c7339051c02b72b7e05409e00b14132be" +dependencies = [ + "async-trait", + "convert_case", + "json5", + "lazy_static", + "nom", + "pathdiff", + "ron", + "rust-ini", + "serde", + "serde_json", + "toml 0.8.12", + "yaml-rust", +] + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.52.0", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "console_log" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" +dependencies = [ + "log", + "web-sys", +] + +[[package]] +name = "const-oid" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" + +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.14", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crank" +version = "0.1.0" +dependencies = [ + "account-compression", + "anchor-lang", + "chrono", + "clap 4.5.4", + "config", + "function_name", + "futures", + "light-compressed-pda", + "light-hash-set", + "reqwest", + "rstest", + "serde", + "serde_json", + "serial_test", + "solana-client", + "solana-sdk", + "thiserror", + "time", + "tiny-bip39", + "tokio", +] + +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "ctr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "serde", + "subtle", + "zeroize", +] + +[[package]] +name = "darling" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 2.0.58", +] + +[[package]] +name = "darling_macro" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.3", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "data-encoding" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" + +[[package]] +name = "der" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" +dependencies = [ + "const-oid", +] + +[[package]] +name = "der-parser" +version = "8.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint 0.4.4", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivation-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "dialoguer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" +dependencies = [ + "console", + "shell-words", + "tempfile", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "dlopen2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b4f5f101177ff01b8ec4ecc81eead416a8aa42819a2869311b3420fa114ffa" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "dlv-list" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" +dependencies = [ + "const-random", +] + +[[package]] +name = "eager" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek-bip32" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" +dependencies = [ + "derivation-path", + "ed25519-dalek", + "hmac 0.12.1", + "sha2 0.10.8", +] + +[[package]] +name = "either" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-iterator" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03cdc46ec28bd728e67540c528013c6a10eb69a02eb31078a1bda695438cbfb8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fastrand" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" + +[[package]] +name = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "function_name" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1ab577a896d09940b5fe12ec5ae71f9d8211fff62c919c03a3750a9901e98a7" +dependencies = [ + "function_name-proc-macro", +] + +[[package]] +name = "function_name-proc-macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673464e1e314dd67a0fd9544abc99e8eb28d0c7e3b69b033bcff9b2d00b87333" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "serde", + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "goblin" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" +dependencies = [ + "log", + "plain", + "scroll", +] + +[[package]] +name = "groth16-solana" +version = "0.0.2" +source = "git+https://github.com/Lightprotocol/groth16-solana.git?branch=master#d3e474d11d27f6ba2b0c8c1917a9170b200e3b24" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", + "solana-program", + "thiserror", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.11", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "histogram" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669" + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "im" +version = "15.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" +dependencies = [ + "bitmaps", + "rand_core 0.6.4", + "rand_xoshiro", + "rayon", + "serde", + "sized-chunks", + "typenum", + "version_check", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", +] + +[[package]] +name = "indicatif" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +dependencies = [ + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json5" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +dependencies = [ + "pest", + "pest_derive", + "serde", +] + +[[package]] +name = "jsonrpc-core" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" +dependencies = [ + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libsecp256k1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +dependencies = [ + "arrayref", + "base64 0.12.3", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "typenum", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "light-bounded-vec" +version = "0.1.0" +dependencies = [ + "bytemuck", + "solana-program", + "thiserror", +] + +[[package]] +name = "light-compressed-pda" +version = "0.3.0" +dependencies = [ + "account-compression", + "aligned-sized", + "anchor-lang", + "bytemuck", + "groth16-solana", + "light-concurrent-merkle-tree", + "light-hasher", + "light-heap", + "light-macros", + "light-utils", + "solana-sdk", +] + +[[package]] +name = "light-concurrent-merkle-tree" +version = "0.1.0" +dependencies = [ + "borsh 0.10.3", + "bytemuck", + "light-bounded-vec", + "light-hasher", + "memoffset 0.8.0", + "solana-program", + "thiserror", +] + +[[package]] +name = "light-hash-set" +version = "0.1.0" +dependencies = [ + "light-bounded-vec", + "light-utils", + "memoffset 0.9.1", + "num-bigint 0.4.4", + "num-traits", + "solana-program", + "thiserror", +] + +[[package]] +name = "light-hasher" +version = "0.1.0" +dependencies = [ + "ark-bn254", + "light-poseidon", + "sha2 0.10.8", + "sha3 0.10.8", + "solana-program", + "thiserror", +] + +[[package]] +name = "light-heap" +version = "0.1.0" +dependencies = [ + "anchor-lang", +] + +[[package]] +name = "light-indexed-merkle-tree" +version = "0.1.0" +dependencies = [ + "ark-ff", + "borsh 0.10.3", + "light-bounded-vec", + "light-concurrent-merkle-tree", + "light-hasher", + "light-merkle-tree-reference", + "light-utils", + "num-bigint 0.4.4", + "num-traits", + "solana-program", + "thiserror", +] + +[[package]] +name = "light-macros" +version = "0.3.1" +dependencies = [ + "bs58 0.4.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "light-merkle-tree-reference" +version = "0.1.0" +dependencies = [ + "light-bounded-vec", + "light-hasher", + "thiserror", +] + +[[package]] +name = "light-poseidon" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" +dependencies = [ + "ark-bn254", + "ark-ff", + "num-bigint 0.4.4", + "thiserror", +] + +[[package]] +name = "light-utils" +version = "0.1.0" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ff", + "num-bigint 0.4.4", + "solana-program", + "thiserror", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.7.1", + "pin-utils", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" +dependencies = [ + "num-bigint 0.2.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "num-complex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-bigint 0.2.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +dependencies = [ + "num_enum_derive 0.6.1", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive 0.7.2", +] + +[[package]] +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "oid-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +dependencies = [ + "bitflags 2.5.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "ordered-multimap" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ed8acf08e98e744e5384c8bc63ceb0364e68a6854187221c18df61c4797690e" +dependencies = [ + "dlv-list", + "hashbrown 0.13.2", +] + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "pbkdf2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" +dependencies = [ + "crypto-mac", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "percentage" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" +dependencies = [ + "num", +] + +[[package]] +name = "pest" +version = "2.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "311fb059dee1a7b802f036316d790138c613a4e8b180c822e3925a662e9f0c95" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f73541b156d32197eecda1a4014d7f868fd2bcb3c550d5386087cfba442bf69c" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c35eeed0a3fab112f75165fdc026b3913f4183133f19b49be773ac9ea966e8bd" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "pest_meta" +version = "2.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2adbf29bb9776f28caece835398781ab24435585fe0d4dc1374a61db5accedca" +dependencies = [ + "once_cell", + "pest", + "sha2 0.10.8", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" +dependencies = [ + "der", + "spki", + "zeroize", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "polyval" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml 0.5.11", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "qualifier_attr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "quinn" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring 0.16.20", + "rustc-hash", + "rustls", + "rustls-native-certs", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" +dependencies = [ + "bytes", + "libc", + "socket2", + "tracing", + "windows-sys 0.48.0", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.14", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rcgen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" +dependencies = [ + "pem", + "ring 0.16.20", + "time", + "yasna", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "regex" +version = "1.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" + +[[package]] +name = "relative-path" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "async-compression", + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.14", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64 0.21.7", + "bitflags 2.5.0", + "serde", + "serde_derive", +] + +[[package]] +name = "rpassword" +version = "7.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +dependencies = [ + "libc", + "rtoolbox", + "windows-sys 0.48.0", +] + +[[package]] +name = "rstest" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97eeab2f3c0a199bc4be135c36c924b6590b88c377d416494288c14f2db30199" +dependencies = [ + "futures", + "futures-timer", + "rstest_macros", + "rustc_version", +] + +[[package]] +name = "rstest_macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d428f8247852f894ee1be110b375111b586d4fa431f6c46e64ba5a0dcccbe605" +dependencies = [ + "cfg-if", + "glob", + "proc-macro2", + "quote", + "regex", + "relative-path", + "rustc_version", + "syn 2.0.58", + "unicode-ident", +] + +[[package]] +name = "rtoolbox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "rust-ini" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e2a3bcec1f113553ef1c88aae6c020a369d03d55b58de9869a0908930385091" +dependencies = [ + "cfg-if", + "ordered-multimap", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + +[[package]] +name = "rustix" +version = "0.38.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" + +[[package]] +name = "ryu" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scroll" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "security-framework" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" + +[[package]] +name = "serde" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "serde_json" +version = "1.0.115" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "serial_test" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d" +dependencies = [ + "dashmap", + "futures", + "lazy_static", + "log", + "parking_lot", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "keccak", + "opaque-debug", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "sized-chunks" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" +dependencies = [ + "bitmaps", + "typenum", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "solana-account-decoder" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "142161f13c328e7807fe98fb8f6eaaa5045a8eaf4492414aa81254870c4fc8a0" +dependencies = [ + "Inflector", + "base64 0.21.7", + "bincode", + "bs58 0.4.0", + "bv", + "lazy_static", + "serde", + "serde_derive", + "serde_json", + "solana-config-program", + "solana-sdk", + "spl-token", + "spl-token-2022", + "spl-token-group-interface", + "spl-token-metadata-interface", + "thiserror", + "zstd", +] + +[[package]] +name = "solana-clap-utils" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8e9f61034a61db538a41700b6df0b4b9f0392038adaf780150481923ff94356" +dependencies = [ + "chrono", + "clap 2.34.0", + "rpassword", + "solana-remote-wallet", + "solana-sdk", + "thiserror", + "tiny-bip39", + "uriparse", + "url", +] + +[[package]] +name = "solana-client" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13f2bd5a986d7cac1b4ffb4344413b70b6f21fd7ffa92a985911756b4ac7682a" +dependencies = [ + "async-trait", + "bincode", + "dashmap", + "futures", + "futures-util", + "indexmap 2.2.6", + "indicatif", + "log", + "quinn", + "rayon", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-pubsub-client", + "solana-quic-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-rpc-client-nonce-utils", + "solana-sdk", + "solana-streamer", + "solana-thin-client", + "solana-tpu-client", + "solana-udp-client", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-config-program" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "970d28779e92a11e32a89ee453edc7d89394d3a68d8c4b75ef0ffb833944c588" +dependencies = [ + "bincode", + "chrono", + "serde", + "serde_derive", + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-connection-cache" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd7d0022ded19dca32ced5528c6a050596877fc8b9a89322d876960a89466e1b" +dependencies = [ + "async-trait", + "bincode", + "crossbeam-channel", + "futures-util", + "indexmap 2.2.6", + "log", + "rand 0.8.5", + "rayon", + "rcgen", + "solana-measure", + "solana-metrics", + "solana-sdk", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-frozen-abi" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35a0b24cc4d0ebd5fd45d6bd47bed3790f8a75ade67af8ff24a3d719a8bc93bc" +dependencies = [ + "block-buffer 0.10.4", + "bs58 0.4.0", + "bv", + "either", + "generic-array", + "im", + "lazy_static", + "log", + "memmap2", + "rustc_version", + "serde", + "serde_bytes", + "serde_derive", + "sha2 0.10.8", + "solana-frozen-abi-macro", + "subtle", + "thiserror", +] + +[[package]] +name = "solana-frozen-abi-macro" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51600f4066d3663ab2981fd24e77a8c2e65f5d20ea71b550b853ca9ae40eee7f" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.58", +] + +[[package]] +name = "solana-logger" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79ef26804612173c95be8da84df3128d648173cf1f746de8f183ec8dbedd92" +dependencies = [ + "env_logger", + "lazy_static", + "log", +] + +[[package]] +name = "solana-measure" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300f716a5f1c2f4b562fb008a0cc7d7c0d889cff802a7f8177fdf28772ae1ed9" +dependencies = [ + "log", + "solana-sdk", +] + +[[package]] +name = "solana-metrics" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf1705d52e4f123856725e1b3842cd4928b954ff62391a95af142a5adc58ac6" +dependencies = [ + "crossbeam-channel", + "gethostname", + "lazy_static", + "log", + "reqwest", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-net-utils" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f2634fd50743e2ca075e663e07b0bd5c2f94db0ac320ce5bc2022e0002d82d" +dependencies = [ + "bincode", + "clap 3.2.25", + "crossbeam-channel", + "log", + "nix", + "rand 0.8.5", + "serde", + "serde_derive", + "socket2", + "solana-logger", + "solana-sdk", + "solana-version", + "tokio", + "url", +] + +[[package]] +name = "solana-perf" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0264d7093d44c239d9eb41beb6877b7b1eea5ad8809c93c1d9ab0c840ba390" +dependencies = [ + "ahash 0.8.11", + "bincode", + "bv", + "caps", + "curve25519-dalek", + "dlopen2", + "fnv", + "lazy_static", + "libc", + "log", + "nix", + "rand 0.8.5", + "rayon", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-metrics", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-vote-program", +] + +[[package]] +name = "solana-program" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a5513a02d622ba89e76baf4b49d25ae20c2c2c623fced12b0d6dd7b8f23e006" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", + "base64 0.21.7", + "bincode", + "bitflags 2.5.0", + "blake3", + "borsh 0.10.3", + "borsh 0.9.3", + "borsh 1.4.0", + "bs58 0.4.0", + "bv", + "bytemuck", + "cc", + "console_error_panic_hook", + "console_log", + "curve25519-dalek", + "getrandom 0.2.14", + "itertools", + "js-sys", + "lazy_static", + "libc", + "libsecp256k1", + "light-poseidon", + "log", + "memoffset 0.9.1", + "num-bigint 0.4.4", + "num-derive 0.4.2", + "num-traits", + "parking_lot", + "rand 0.8.5", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "sha2 0.10.8", + "sha3 0.10.8", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk-macro", + "thiserror", + "tiny-bip39", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "solana-program-runtime" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64dc9f666a8e4f93166ce58eea9dfbf275e5cad461b2f1bbfa06538718dc3212" +dependencies = [ + "base64 0.21.7", + "bincode", + "eager", + "enum-iterator", + "itertools", + "libc", + "log", + "num-derive 0.4.2", + "num-traits", + "percentage", + "rand 0.8.5", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-measure", + "solana-metrics", + "solana-sdk", + "solana_rbpf", + "thiserror", +] + +[[package]] +name = "solana-pubsub-client" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ffdcbdad685b87475a91909fdb442d2edfabc2870110580c7f0cf7eb7883f97" +dependencies = [ + "crossbeam-channel", + "futures-util", + "log", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-rpc-client-api", + "solana-sdk", + "thiserror", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tungstenite", + "url", +] + +[[package]] +name = "solana-quic-client" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "056e909037b05097d2ff0181cb7e3d26876d8dff6d50701463a61e990cf84afd" +dependencies = [ + "async-mutex", + "async-trait", + "futures", + "itertools", + "lazy_static", + "log", + "quinn", + "quinn-proto", + "rcgen", + "rustls", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-net-utils", + "solana-rpc-client-api", + "solana-sdk", + "solana-streamer", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-rayon-threadlimit" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93a5e1ef891dca2cca907f7196b6a5d3b80af4183f2be0f981906b16711ff5d" +dependencies = [ + "lazy_static", + "num_cpus", +] + +[[package]] +name = "solana-remote-wallet" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52c06eaf47d9a98ba22e890e68868f5d48c91e01268c541a53b5960288b617d6" +dependencies = [ + "console", + "dialoguer", + "log", + "num-derive 0.4.2", + "num-traits", + "parking_lot", + "qstring", + "semver", + "solana-sdk", + "thiserror", + "uriparse", +] + +[[package]] +name = "solana-rpc-client" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed1d4b6f1f4e3dab7509401e85edc1c1ac208c61819de90178e01cf162c9c051" +dependencies = [ + "async-trait", + "base64 0.21.7", + "bincode", + "bs58 0.4.0", + "indicatif", + "log", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction-status", + "solana-version", + "solana-vote-program", + "tokio", +] + +[[package]] +name = "solana-rpc-client-api" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31feddef24d3e0aab189571adea7f109639ef6179fcd3cd34ffc8c73d3409f1" +dependencies = [ + "base64 0.21.7", + "bs58 0.4.0", + "jsonrpc-core", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-sdk", + "solana-transaction-status", + "solana-version", + "spl-token-2022", + "thiserror", +] + +[[package]] +name = "solana-rpc-client-nonce-utils" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1837728262063723c659e4b8c0acf0baa99cd38cb333511456465d2c9e654474" +dependencies = [ + "clap 2.34.0", + "solana-clap-utils", + "solana-rpc-client", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-sdk" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f50cac89269a01235f6b421bc580132191f4df388f4265513e78fd00cf864dd" +dependencies = [ + "assert_matches", + "base64 0.21.7", + "bincode", + "bitflags 2.5.0", + "borsh 1.4.0", + "bs58 0.4.0", + "bytemuck", + "byteorder", + "chrono", + "derivation-path", + "digest 0.10.7", + "ed25519-dalek", + "ed25519-dalek-bip32", + "generic-array", + "hmac 0.12.1", + "itertools", + "js-sys", + "lazy_static", + "libsecp256k1", + "log", + "memmap2", + "num-derive 0.4.2", + "num-traits", + "num_enum 0.7.2", + "pbkdf2 0.11.0", + "qstring", + "qualifier_attr", + "rand 0.7.3", + "rand 0.8.5", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "serde_with", + "sha2 0.10.8", + "sha3 0.10.8", + "siphasher", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-logger", + "solana-program", + "solana-sdk-macro", + "thiserror", + "uriparse", + "wasm-bindgen", +] + +[[package]] +name = "solana-sdk-macro" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cb099b2f9c0a65a6f23ced791325141cd68c27b04d11c04fef838a00f613861" +dependencies = [ + "bs58 0.4.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.58", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" + +[[package]] +name = "solana-streamer" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a20843e8370adb3c04f47caa79ffdc92ae1bf078ad26530be1bca5d7bdd5d2" +dependencies = [ + "async-channel", + "bytes", + "crossbeam-channel", + "futures-util", + "histogram", + "indexmap 2.2.6", + "itertools", + "libc", + "log", + "nix", + "pem", + "percentage", + "pkcs8", + "quinn", + "quinn-proto", + "rand 0.8.5", + "rcgen", + "rustls", + "smallvec", + "solana-metrics", + "solana-perf", + "solana-sdk", + "thiserror", + "tokio", + "x509-parser", +] + +[[package]] +name = "solana-thin-client" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c74da8f36b89b28c47e5ba3bad5279ff3dfea5829154882845d4821fc76ff497" +dependencies = [ + "bincode", + "log", + "rayon", + "solana-connection-cache", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", +] + +[[package]] +name = "solana-tpu-client" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f2fd4b4aeffa14b9c5be9913072ea8e72ca261254a65a999f3d2fd70e7a660" +dependencies = [ + "async-trait", + "bincode", + "futures-util", + "indexmap 2.2.6", + "indicatif", + "log", + "rayon", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-pubsub-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-transaction-status" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3efa0d30f78dbc74e795638b053dd6ec7230739301e7f0e06b586f7731fd25c8" +dependencies = [ + "Inflector", + "base64 0.21.7", + "bincode", + "borsh 0.10.3", + "bs58 0.4.0", + "lazy_static", + "log", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-sdk", + "spl-associated-token-account", + "spl-memo", + "spl-token", + "spl-token-2022", + "thiserror", +] + +[[package]] +name = "solana-udp-client" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32af58cadd37be19d04e0f3877104b8640bccc4be8ca1dbf431549b399b784c2" +dependencies = [ + "async-trait", + "solana-connection-cache", + "solana-net-utils", + "solana-sdk", + "solana-streamer", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-version" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42c7cef8aa9f1c633bf09dd91b8e635b6b30c40236652031b1800b245dc1bd02" +dependencies = [ + "log", + "rustc_version", + "semver", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk", +] + +[[package]] +name = "solana-vote-program" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "725a39044d455c08fe83fca758e94e5ddfaa25f6e2e2cfd5c31d7afdcad8de38" +dependencies = [ + "bincode", + "log", + "num-derive 0.4.2", + "num-traits", + "rustc_version", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-metrics", + "solana-program", + "solana-program-runtime", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-zk-token-sdk" +version = "1.18.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630dc0b5f6250cf6a4c8b2bd3895283738915e83eba5453db20bb02b2527f302" +dependencies = [ + "aes-gcm-siv", + "base64 0.21.7", + "bincode", + "bytemuck", + "byteorder", + "curve25519-dalek", + "getrandom 0.1.16", + "itertools", + "lazy_static", + "merlin", + "num-derive 0.4.2", + "num-traits", + "rand 0.7.3", + "serde", + "serde_json", + "sha3 0.9.1", + "solana-program", + "solana-sdk", + "subtle", + "thiserror", + "zeroize", +] + +[[package]] +name = "solana_rbpf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d457cc2ba742c120492a64b7fa60e22c575e891f6b55039f4d736568fb112a3" +dependencies = [ + "byteorder", + "combine", + "goblin", + "hash32", + "libc", + "log", + "rand 0.8.5", + "rustc-demangle", + "scroll", + "thiserror", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "spl-associated-token-account" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "992d9c64c2564cc8f63a4b508bf3ebcdf2254b0429b13cd1d31adb6162432a5f" +dependencies = [ + "assert_matches", + "borsh 0.10.3", + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-token", + "spl-token-2022", + "thiserror", +] + +[[package]] +name = "spl-discriminator" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator-derive", +] + +[[package]] +name = "spl-discriminator-derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" +dependencies = [ + "quote", + "spl-discriminator-syn", + "syn 2.0.58", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fea7be851bd98d10721782ea958097c03a0c2a07d8d4997041d0ece6319a63" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.58", + "thiserror", +] + +[[package]] +name = "spl-memo" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f180b03318c3dbab3ef4e1e4d46d5211ae3c780940dd0a28695aba4b59a75a" +dependencies = [ + "solana-program", +] + +[[package]] +name = "spl-pod" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079" +dependencies = [ + "borsh 0.10.3", + "bytemuck", + "solana-program", + "solana-zk-token-sdk", + "spl-program-error", +] + +[[package]] +name = "spl-program-error" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c" +dependencies = [ + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-program-error-derive", + "thiserror", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1845dfe71fd68f70382232742e758557afe973ae19e6c06807b2c30f5d5cb474" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.58", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "615d381f48ddd2bb3c57c7f7fb207591a2a05054639b18a62e785117dd7a8683" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-type-length-value", +] + +[[package]] +name = "spl-token" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08459ba1b8f7c1020b4582c4edf0f5c7511a5e099a7a97570c9698d4f2337060" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.3.3", + "num-traits", + "num_enum 0.6.1", + "solana-program", + "thiserror", +] + +[[package]] +name = "spl-token-2022" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d697fac19fd74ff472dfcc13f0b442dd71403178ce1de7b5d16f83a33561c059" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.4.2", + "num-traits", + "num_enum 0.7.2", + "solana-program", + "solana-security-txt", + "solana-zk-token-sdk", + "spl-memo", + "spl-pod", + "spl-token", + "spl-token-group-interface", + "spl-token-metadata-interface", + "spl-transfer-hook-interface", + "spl-type-length-value", + "thiserror", +] + +[[package]] +name = "spl-token-group-interface" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b889509d49fa74a4a033ca5dae6c2307e9e918122d97e58562f5c4ffa795c75d" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f" +dependencies = [ + "borsh 0.10.3", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-type-length-value", +] + +[[package]] +name = "spl-transfer-hook-interface" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aabdb7c471566f6ddcee724beb8618449ea24b399e58d464d6b5bc7db550259" +dependencies = [ + "arrayref", + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-tlv-account-resolution", + "spl-type-length-value", +] + +[[package]] +name = "spl-type-length-value" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a468e6f6371f9c69aae760186ea9f1a01c2908351b06a5e0026d21cfc4d7ecac" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", +] + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" + +[[package]] +name = "thiserror" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "time" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-bip39" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" +dependencies = [ + "anyhow", + "hmac 0.8.1", + "once_cell", + "pbkdf2 0.4.0", + "rand 0.7.3", + "rustc-hash", + "sha2 0.9.9", + "thiserror", + "unicode-normalization", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "rustls", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots 0.25.4", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.12", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" +dependencies = [ + "indexmap 2.2.6", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.7", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.8.5", + "rustls", + "sha1", + "thiserror", + "url", + "utf-8", + "webpki-roots 0.24.0", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "universal-hash" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "uriparse" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" +dependencies = [ + "fnv", + "lazy_static", +] + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.58", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" +dependencies = [ + "rustls-webpki", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b9415ee827af173ebb3f15f9083df5a122eb93572ec28741fb153356ea2578" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "x509-parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +dependencies = [ + "asn1-rs", + "base64 0.13.1", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "yasna" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +dependencies = [ + "time", +] + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "zeroize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.10+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/forester/Cargo.toml b/forester/Cargo.toml new file mode 100644 index 0000000000..58d55a5250 --- /dev/null +++ b/forester/Cargo.toml @@ -0,0 +1,47 @@ +[package] +name = "forester" +version = "0.1.0" +edition = "2021" + +[dependencies] +config = "0.14.0" +anchor-lang = "0.29.0" +clap = {version = "4.0.26", features = ["derive"]} +solana-sdk = "1.18.11" +solana-client = "1.18.11" +solana-transaction-status = "1.18.11" +tiny-bip39 = "0.8.2" +chrono = "0.4.37" +time = "0.3.34" +account-compression = { path = "../programs/account-compression", features = ["cpi"] } +light-system-program = { path = "../programs/system", features = ["cpi"] } +light-hash-set = { path = "../merkle-tree/hash-set", features = ["solana"] } +light-concurrent-merkle-tree = {path = "../merkle-tree/concurrent"} +light-registry = { path = "../programs/registry", features = ["cpi"] } +serde_json = "1.0" +serde = { version = "1.0", features = ["derive"] } +tokio = { version = "1", features = ["full"] } +tokio-util = "0.7" +reqwest = { version = "0.11", features = ["json", "rustls-tls"] } +futures = "0.3.30" +thiserror = "1" +borsh = "0.10.3" +bs58 = "0.4.0" +photon-api = { path = "../photon-api" } +bincode = "1.3" +sysinfo = "0.30" +light-test-utils = { path = "../test-utils" } +log = "0.4" +env_logger = "0.11" + +[dev-dependencies] +function_name = "0.3.0" +serial_test = "2.0.0" +rstest = "0.18.2" +light-circuitlib-rs = {path = "../circuit-lib/circuitlib-rs"} +light-merkle-tree-reference = {path = "../merkle-tree/reference"} +light-hasher = {path = "../merkle-tree/hasher"} +light-bounded-vec = {path = "../merkle-tree/bounded-vec"} +num-bigint = "0.4" +num-traits = "0.2" +rand = "0.8.5" diff --git a/forester/README.md b/forester/README.md new file mode 100644 index 0000000000..d84865756e --- /dev/null +++ b/forester/README.md @@ -0,0 +1,29 @@ +# Light Forester + +## Description + +Forester is a service for nullifying the state merkle trees. +It subscribes to the nullifier queue and nullifies the state merkle tree leaves. + +## Configuration + +Forester requires a configuration file, `forester.toml`, specifying necessary keys: +- `merkle_tree`: Address of the State Merkle tree. +- `nullifier_queue`: Address of the Nullifier queue. +- `payer`: The key pair for the payer. + +## Usage + +1. Run the service: +To subscribe to nullify the state merkle tree, use the following command: +`cargo run -- subscribe` + +2. To manually nullify state merkle tree leaves, use the following command: +`cargo run -- nullify` + + +## TODO + +1. Add indexer URL to the configuration file. +2. Add address merkle tree support. +3. Add multiple merkle trees support. diff --git a/forester/docker-compose.yml b/forester/docker-compose.yml new file mode 100644 index 0000000000..21e2f0c44a --- /dev/null +++ b/forester/docker-compose.yml @@ -0,0 +1,28 @@ +name: photondb + +services: + db: + image: postgres:16-alpine + restart: always + environment: + - POSTGRES_USER=photon + - POSTGRES_DB=photon + - POSTGRES_PASSWORD=photon + ports: + - 5432:5432 + volumes: + - db_data:/var/lib/postgresql/data + pgadmin: + image: dpage/pgadmin4 + restart: always + ports: + - "8888:80" + environment: + - PGADMIN_DEFAULT_EMAIL=photon@lightprotocol.com + - PGADMIN_DEFAULT_PASSWORD=photon + volumes: + - pgadmin-data:/var/lib/pgadmin + +volumes: + db_data: + pgadmin-data: diff --git a/forester/forester.toml b/forester/forester.toml new file mode 100644 index 0000000000..506d077cbc --- /dev/null +++ b/forester/forester.toml @@ -0,0 +1,3 @@ +merkle_tree = "3wBL7d5qoWiYAV2bHMsmjKFr3u8SWa4Aps9mAcanfhRQMdFrtJtASwB5ZSvYeoAgD3SZsiYtnZVrrXpHKDpxkgZ2" +nullifier_queue = "5T2Fg9GVnZjGJetLnt2HF1CpYMM9fAzxodvmqJzh8dgjs96hqkwtcXkYrg7wT2ZCGj6syhAYtg5EEpeDBTQDJGY5" +payer = "LsYPAULcTDhjnECes7qhwAdeEUVYgbpX5ri5zijUceTQXCwkxP94zKdG4pmDQmicF7Zbj1AqB44t8qfGE8RuUk8" diff --git a/forester/package.json b/forester/package.json new file mode 100644 index 0000000000..3f80e36749 --- /dev/null +++ b/forester/package.json @@ -0,0 +1,38 @@ +{ + "name": "@lightprotocol/forester", + "version": "0.3.0", + "license": "GPL-3.0", + "scripts": { + "restart-db": "docker compose down -v && docker compose up -d", + "migrate-db": "../.local/cargo/bin/photon-migration --database-url postgres://photon:photon@localhost:5432/postgres", + "wait-for-db": "./scripts/wait_for_db.sh", + + "start-validator": "../cli/test_bin/run test-validator --indexer-db-url=postgres://photon:photon@localhost:5432/postgres", + "restart-validator": "pnpm restart-db && pnpm wait-for-db && pnpm migrate-db && pnpm start-validator", + + "build": "cargo build", + "test": "RUST_BACKTRACE=1 RUST_MIN_STACK=8388608 cargo test test_indexer -- --nocapture", + + "rebuild-photon": "pkill photon && cd ../../photon && cargo build && cp ./target/debug/photon ./target/debug/photon-migration ../light-protocol/.local/cargo/bin", + "tree-info": "RUST_MIN_STACK=8388608 cargo test tree_info_test -- --nocapture", + "queue-info": "RUST_MIN_STACK=8388608 cargo test queue_info_test -- --nocapture", + "test-10-sync": "pnpm restart-validator && pnpm transfer-sync && pnpm nullify && pnpm transfer-sync && pnpm nullify && pnpm transfer-sync && pnpm nullify", + "test-1000": "pnpm restart-validator && pnpm transfer && pnpm nullify && pnpm transfer && pnpm nullify", + "transfer-100k": "ts-node scripts/generate_100k.ts", + "subscribe": "RUST_MIN_STACK=8388608 cargo run --release -- subscribe", + "nullify": "RUST_MIN_STACK=8388608 cargo run --release -- nullify", + "reindex": "RUST_MIN_STACK=8388608 cargo run --release -- index", + "dump-accounts": "./scripts/dump.sh", + "transfer": "ts-node ./scripts/generate.ts", + "transfer-10": "ts-node ./scripts/generate_10.ts", + "transfer-sync": "ts-node ./scripts/generate_sync.ts", + "get-queue": "ts-node ./scripts/get_queue.ts", + "tnt": "pnpm start-validator && pnpm transfer-sync && pnpm queue-info && pnpm nullify && pnpm queue-info && pnpm transfer-sync" + }, + "devDependencies": { + "@lightprotocol/stateless.js": "workspace:^", + "@solana/web3.js": "^1.91.7", + "borsh": "^2.0.0", + "ts-node": "^10.9.2" + } +} diff --git a/forester/scripts/dump.sh b/forester/scripts/dump.sh new file mode 100755 index 0000000000..cdf4300335 --- /dev/null +++ b/forester/scripts/dump.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +ROOT_DIR=$(git rev-parse --show-toplevel) +ACCOUNTS_DIR=$ROOT_DIR/cli/accounts + +NULLIFIER_QUEUE_JSON=nullifier_queue_44J4oDXpjPAbzHCSc24q7NEiPekss4sAbLd8ka4gd9CZ.json +MERKLE_TREE_JSON=merkle_tree_5bdFnXU47QjzGpzHfXnxcEi5WXyxzEAZzd1vrE39bf1W.json + +rm $ACCOUNTS_DIR/$NULLIFIER_QUEUE_JSON +rm $ACCOUNTS_DIR/$MERKLE_TREE_JSON + +solana account 44J4oDXpjPAbzHCSc24q7NEiPekss4sAbLd8ka4gd9CZ --url http://localhost:8899 --output json > $ACCOUNTS_DIR/$NULLIFIER_QUEUE_JSON +solana account 5bdFnXU47QjzGpzHfXnxcEi5WXyxzEAZzd1vrE39bf1W --url http://localhost:8899 --output json > $ACCOUNTS_DIR/$MERKLE_TREE_JSON \ No newline at end of file diff --git a/forester/scripts/generate.ts b/forester/scripts/generate.ts new file mode 100644 index 0000000000..9ebd389faf --- /dev/null +++ b/forester/scripts/generate.ts @@ -0,0 +1,63 @@ +import {PublicKey, Signer, Keypair} from '@solana/web3.js'; +import {airdropSol, createRpc, compress, transfer, Rpc} from '@lightprotocol/stateless.js'; + +const LAMPORTS = 1e13; +const COMPRESS_AMOUNT = 1e9; +const TOTAL_NUMBER_OF_TRANSFERS = 1e3; +const NUMBER_OF_CONCURRENT_TRANSFERS = 18; +const TRANSFER_AMOUNT = 10; + +const payerKeypairs = generateKeypairs(NUMBER_OF_CONCURRENT_TRANSFERS); +const receiverKeypairs = generateKeypairs(NUMBER_OF_CONCURRENT_TRANSFERS); + +async function transferAsync(i: number, rpc: Rpc, payer: Signer, bobPublicKey: PublicKey): Promise { + const transferSig = await transfer(rpc, payer, TRANSFER_AMOUNT, payer, bobPublicKey); + console.log(`transfer ${i} of ${TOTAL_NUMBER_OF_TRANSFERS}: ${transferSig}`); +} + +async function prefillNullifierQueue() { + const rpc = createRpc(); + + await Promise.all([ + ...payerKeypairs.map(async payer => await airdropSol({ connection: rpc, lamports: LAMPORTS, recipientPublicKey: payer.publicKey })), + ...receiverKeypairs.map(async receiver => await airdropSol({ connection: rpc, lamports: LAMPORTS, recipientPublicKey: receiver.publicKey })) + ]); + + await Promise.all( + payerKeypairs.map(async (payer) => { + const balance = await rpc.getBalance(payer.publicKey); + console.log(`Payer ${payer.publicKey.toBase58()} balance:`, balance); + }) + ); + + await Promise.all( + payerKeypairs.map(async (payer) => { + const compressSig = await compress(rpc, payer, COMPRESS_AMOUNT, payer.publicKey); + console.log(`Compress tx sig for payer ${payer.publicKey.toBase58()}:`, compressSig); + }) + ); + + for (let i = 0; i < TOTAL_NUMBER_OF_TRANSFERS; i += NUMBER_OF_CONCURRENT_TRANSFERS) { + const transferPromises = []; + for (let j = 0; j < NUMBER_OF_CONCURRENT_TRANSFERS; j++) { + transferPromises.push(transferAsync(i + j, rpc, payerKeypairs[j], receiverKeypairs[j].publicKey)); + } + await Promise.all(transferPromises); + } + +} + +function generateKeypairs(count: number): Keypair[] { + const keypairs = []; + for (let i = 0; i < count; i++) { + keypairs.push(Keypair.generate()); + } + return keypairs; +} + + +prefillNullifierQueue().then(() => { + console.log('Transfer completed.'); +}).catch((error) => { + console.error('An error occurred:', error); +}); diff --git a/forester/scripts/generate_10.ts b/forester/scripts/generate_10.ts new file mode 100644 index 0000000000..3e9d4a95b5 --- /dev/null +++ b/forester/scripts/generate_10.ts @@ -0,0 +1,63 @@ +import {PublicKey, Signer, Keypair} from '@solana/web3.js'; +import {airdropSol, createRpc, compress, transfer, Rpc, sleep} from '@lightprotocol/stateless.js'; + +const LAMPORTS = 1e13; +const COMPRESS_AMOUNT = 1e9; +const TOTAL_NUMBER_OF_TRANSFERS = 10; +const NUMBER_OF_CONCURRENT_TRANSFERS = 2; +const TRANSFER_AMOUNT = 10; + +const payerKeypairs = generateKeypairs(NUMBER_OF_CONCURRENT_TRANSFERS); +const receiverKeypairs = generateKeypairs(NUMBER_OF_CONCURRENT_TRANSFERS); + +async function transferAsync(i: number, rpc: Rpc, payer: Signer, bobPublicKey: PublicKey): Promise { + const transferSig = await transfer(rpc, payer, TRANSFER_AMOUNT, payer, bobPublicKey); + console.log(`transfer ${i} of ${TOTAL_NUMBER_OF_TRANSFERS}: ${transferSig}`); +} + +async function prefillNullifierQueue() { + const rpc = createRpc(); + + await Promise.all([ + ...payerKeypairs.map(async payer => await airdropSol({ connection: rpc, lamports: LAMPORTS, recipientPublicKey: payer.publicKey })), + ...receiverKeypairs.map(async receiver => await airdropSol({ connection: rpc, lamports: LAMPORTS, recipientPublicKey: receiver.publicKey })) + ]); + + await Promise.all( + payerKeypairs.map(async (payer) => { + const balance = await rpc.getBalance(payer.publicKey); + console.log(`Payer ${payer.publicKey.toBase58()} balance:`, balance); + }) + ); + + await Promise.all( + payerKeypairs.map(async (payer) => { + const compressSig = await compress(rpc, payer, COMPRESS_AMOUNT, payer.publicKey); + console.log(`Compress tx sig for payer ${payer.publicKey.toBase58()}:`, compressSig); + }) + ); + + for (let i = 0; i < TOTAL_NUMBER_OF_TRANSFERS; i += NUMBER_OF_CONCURRENT_TRANSFERS) { + const transferPromises = []; + for (let j = 0; j < NUMBER_OF_CONCURRENT_TRANSFERS; j++) { + transferPromises.push(transferAsync(i + j, rpc, payerKeypairs[j], receiverKeypairs[j].publicKey)); + } + await Promise.all(transferPromises); + } + +} + +function generateKeypairs(count: number): Keypair[] { + const keypairs = []; + for (let i = 0; i < count; i++) { + keypairs.push(Keypair.generate()); + } + return keypairs; +} + + +prefillNullifierQueue().then(() => { + console.log('Transfer completed.'); +}).catch((error) => { + console.error('An error occurred:', error); +}); diff --git a/forester/scripts/generate_100k.ts b/forester/scripts/generate_100k.ts new file mode 100644 index 0000000000..24338280b8 --- /dev/null +++ b/forester/scripts/generate_100k.ts @@ -0,0 +1,63 @@ +import {PublicKey, Signer, Keypair} from '@solana/web3.js'; +import {airdropSol, createRpc, compress, transfer, Rpc, sleep} from '@lightprotocol/stateless.js'; + +const LAMPORTS = 1e13; +const COMPRESS_AMOUNT = 1e9; +const TOTAL_NUMBER_OF_TRANSFERS = 1e6; +const NUMBER_OF_CONCURRENT_TRANSFERS = 10; +const TRANSFER_AMOUNT = 10; + +const payerKeypairs = generateKeypairs(NUMBER_OF_CONCURRENT_TRANSFERS); +const receiverKeypairs = generateKeypairs(NUMBER_OF_CONCURRENT_TRANSFERS); + +async function transferAsync(i: number, rpc: Rpc, payer: Signer, bobPublicKey: PublicKey): Promise { + const transferSig = await transfer(rpc, payer, TRANSFER_AMOUNT, payer, bobPublicKey); + console.log(`transfer ${i} of ${TOTAL_NUMBER_OF_TRANSFERS}: ${transferSig}`); +} + +async function prefillNullifierQueue() { + const rpc = createRpc(); + + await Promise.all([ + ...payerKeypairs.map(async payer => await airdropSol({ connection: rpc, lamports: LAMPORTS, recipientPublicKey: payer.publicKey })), + ...receiverKeypairs.map(async receiver => await airdropSol({ connection: rpc, lamports: LAMPORTS, recipientPublicKey: receiver.publicKey })) + ]); + + await Promise.all( + payerKeypairs.map(async (payer) => { + const balance = await rpc.getBalance(payer.publicKey); + console.log(`Payer ${payer.publicKey.toBase58()} balance:`, balance); + }) + ); + + await Promise.all( + payerKeypairs.map(async (payer) => { + const compressSig = await compress(rpc, payer, COMPRESS_AMOUNT, payer.publicKey); + console.log(`Compress tx sig for payer ${payer.publicKey.toBase58()}:`, compressSig); + }) + ); + + for (let i = 0; i < TOTAL_NUMBER_OF_TRANSFERS; i += NUMBER_OF_CONCURRENT_TRANSFERS) { + const transferPromises = []; + for (let j = 0; j < NUMBER_OF_CONCURRENT_TRANSFERS; j++) { + transferPromises.push(transferAsync(i + j, rpc, payerKeypairs[j], receiverKeypairs[j].publicKey)); + } + await Promise.all(transferPromises); + } + +} + +function generateKeypairs(count: number): Keypair[] { + const keypairs = []; + for (let i = 0; i < count; i++) { + keypairs.push(Keypair.generate()); + } + return keypairs; +} + + +prefillNullifierQueue().then(() => { + console.log('Transfer completed.'); +}).catch((error) => { + console.error('An error occurred:', error); +}); diff --git a/forester/scripts/generate_sync.ts b/forester/scripts/generate_sync.ts new file mode 100644 index 0000000000..f73dcd7d9d --- /dev/null +++ b/forester/scripts/generate_sync.ts @@ -0,0 +1,68 @@ +import {PublicKey, Signer, Keypair} from '@solana/web3.js'; +import {airdropSol, createRpc, bn, compress, transfer, Rpc} from '@lightprotocol/stateless.js'; + +const payerKeypair = [ + 46, 239, 29, 58, 196, 181, 39, 77, 196, 54, 249, + 108, 80, 144, 32, 168, 245, 161, 146, 92, 180, 79, + 231, 37, 50, 88, 220, 48, 9, 146, 249, 82, 130, + 60, 106, 251, 24, 224, 192, 108, 70, 59, 111, 251, + 186, 50, 23, 103, 106, 233, 113, 148, 57, 190, 158, + 111, 163, 28, 157, 47, 201, 41, 249, 59 +] + +const bobKeypair = [ + 125, 14, 244, 185, 193, 42, 156, 191, 212, 42, 239, + 56, 169, 240, 239, 52, 95, 215, 240, 86, 151, 212, + 245, 230, 198, 148, 12, 230, 83, 57, 56, 244, 191, + 129, 151, 233, 233, 129, 21, 255, 101, 163, 48, 212, + 218, 82, 134, 36, 29, 185, 30, 215, 183, 242, 244, + 222, 8, 10, 158, 214, 99, 237, 126, 9 +] + +const LAMPORTS = 1e11; +const COMPRESS_AMOUNT = 1e9; +const TOTAL_NUMBER_OF_TRANSFERS = 10; +const NUMBER_OF_CONCURRENT_TRANSFERS = 1; +const TRANSFER_AMOUNT = 10; + +async function transferAsync(i: number, rpc: Rpc, payer: Signer, bobPublicKey: PublicKey): Promise { + const transferSig = await transfer(rpc, payer, TRANSFER_AMOUNT, payer, bobPublicKey); + console.log(`transfer ${i} of ${TOTAL_NUMBER_OF_TRANSFERS}: ${transferSig}`); +} + +async function prefillNullifierQueue() { + const rpc = createRpc(); + const payer = Keypair.fromSecretKey(Uint8Array.from(payerKeypair)); + const bob = Keypair.fromSecretKey(Uint8Array.from(bobKeypair)); + + const tx1 = await airdropSol({connection: rpc, lamports: LAMPORTS, recipientPublicKey: payer.publicKey}); + console.log('tx1', tx1); + const tx2 = await airdropSol({connection: rpc, lamports: LAMPORTS, recipientPublicKey: bob.publicKey}); + console.log('tx2', tx2); + + const payerBalance = await rpc.getBalance(payer.publicKey); + console.log('payer balance', payerBalance); + + const bobBalance = await rpc.getBalance(bob.publicKey); + console.log('bob balance', bobBalance); + + const compressSig = await compress(rpc, payer, COMPRESS_AMOUNT, payer.publicKey); + console.log('compress tx sig', compressSig); + + for (let i = 0; i < TOTAL_NUMBER_OF_TRANSFERS; i += NUMBER_OF_CONCURRENT_TRANSFERS) { + const transferPromises = Array.from( + {length: NUMBER_OF_CONCURRENT_TRANSFERS}, + (_, j) => transferAsync(i + j, rpc, payer, bob.publicKey) + ); + await Promise.all(transferPromises); + } +} + +prefillNullifierQueue().then(() => { + console.log('Transfer completed.'); +}).catch((error) => { + console.error('An error occurred:', error); +}); + + + diff --git a/forester/scripts/get_queue.ts b/forester/scripts/get_queue.ts new file mode 100644 index 0000000000..deed6a9d44 --- /dev/null +++ b/forester/scripts/get_queue.ts @@ -0,0 +1,125 @@ +import { Connection, PublicKey, Signer } from '@solana/web3.js'; +import { newAccountWithLamports } from '@lightprotocol/stateless.js'; +import { createRpc, Rpc } from '@lightprotocol/stateless.js'; +import { bn, compress } from '@lightprotocol/stateless.js'; +import { transfer } from '@lightprotocol/stateless.js'; +import { serialize, deserialize } from 'borsh'; +import { Buffer } from 'buffer'; +import { + Keypair, + AccountMeta, + LAMPORTS_PER_SOL, + SystemProgram, + Transaction, + TransactionInstruction, + sendAndConfirmTransaction, +} from '@solana/web3.js'; +const fs = require('fs'); + +async function getNullifierQueue() { + // load nullifier queue account data from file + const data = fs.readFileSync('nullifierQueueAccount.data'); + console.log('Data size: ', data.length); + const hashset = fromBytesCopy(data); + console.log('HashSet', hashset); +} + +async function saveQueueDataToFile() { + let rpc = createRpc(); + const nullifierQueueAccountPubkey = new PublicKey("44J4oDXpjPAbzHCSc24q7NEiPekss4sAbLd8ka4gd9CZ"); + const nullifierQueueAccount = await rpc.getAccountInfo(nullifierQueueAccountPubkey); + if (nullifierQueueAccount === null) { + throw new Error('NullifierQueueAccount not found'); + } + console.log('NullifierQueueAccount', nullifierQueueAccount); + const deserializedNullifierQueueAccount: NullifierQueueAccount = deserializeNullifierQueueAccount(nullifierQueueAccount.data.slice(8)); + console.log('Deserialized NullifierQueueAccount', deserializedNullifierQueueAccount); + + const merkleTreeAccountPubkey = new PublicKey("5bdFnXU47QjzGpzHfXnxcEi5WXyxzEAZzd1vrE39bf1W"); + if (deserializedNullifierQueueAccount.associatedMerkleTree.toBase58() !== merkleTreeAccountPubkey.toBase58()) { + throw new Error('NullifierQueueAccount is not associated with the MerkleTreeAccount'); + } + + fs.writeFileSync('nullifierQueueAccount.data', nullifierQueueAccount.data); + console.log('NullifierQueueAccount.data saved to nullifierQueueAccount.data'); +} + +getNullifierQueue().then(() => { + console.log('NullifierQueue fetched successfully'); +}).catch((error) => { + console.error('An error occurred:', error); +}); + + +interface NullifierQueueAccount { + index: bigint; + owner: PublicKey; + delegate: PublicKey; + associatedMerkleTree: PublicKey; +} +function deserializeNullifierQueueAccount(data: Buffer): NullifierQueueAccount { + return { + index: data.readBigInt64LE(0), + owner: new PublicKey(data.slice(8, 40)), + delegate: new PublicKey(data.slice(40, 72)), + associatedMerkleTree: new PublicKey(data.slice(72, 104)), + }; +} + +interface HashSet { + capacity_indices: number; + capacity_values: number; + sequence_threshold: number; + next_value_index: number; + indices: Array; + values: Array; +} + +interface HashSetCell { + value: Array; + sequence_number: number; +} + +function fromBytesCopy(bytes: Uint8Array): HashSet { + const dv = new DataView(bytes.buffer); + + const capacity_indices = Number(dv.getBigUint64(0, true)); + const capacity_values = Number(dv.getBigUint64(8, true)); + const sequence_threshold = Number(dv.getBigUint64(16, true)); + const next_value_index = Number(dv.getBigUint64(24, true)); + + console.log('capacity_indices', capacity_indices); + console.log('capacity_values', capacity_values); + console.log('sequence_threshold', sequence_threshold); + console.log('next_value_index', next_value_index); + + const indices: Array = Array( + capacity_indices, + ).fill(null); + const values: Array = Array( + capacity_values, + ).fill(null); + + const indicesOffset = 32 + 8; + for (let i = 0; i < capacity_indices; i++) { + indices[i] = dv.getUint32(indicesOffset + i * 4, true); + } + + const valuesOffset = indicesOffset + capacity_indices * 4; + for (let i = 0; i < capacity_values; i++) { + // values[i] = { + // value: dv.getUint32(valuesOffset + i * 8, true), + // sequence_number: dv.getUint32(valuesOffset + i * 8 + 4, true), + // }; + } + + + return { + capacity_indices, + capacity_values, + sequence_threshold, + next_value_index, + indices, + values, + }; +} \ No newline at end of file diff --git a/forester/scripts/wait_for_db.sh b/forester/scripts/wait_for_db.sh new file mode 100755 index 0000000000..1a320672a4 --- /dev/null +++ b/forester/scripts/wait_for_db.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +until docker compose exec db pg_isready -h localhost -p 5432; do + >&2 echo "Postgres is unavailable - sleeping" + sleep 1 +done + +>&2 echo "Postgres is up" \ No newline at end of file diff --git a/forester/src/cli.rs b/forester/src/cli.rs new file mode 100644 index 0000000000..189c6145d6 --- /dev/null +++ b/forester/src/cli.rs @@ -0,0 +1,14 @@ +use clap::{Parser, Subcommand}; + +#[derive(Parser)] +#[clap(author, version, about, long_about=None)] +pub struct Cli { + #[command(subcommand)] + pub command: Option, +} +#[derive(Subcommand)] +pub enum Commands { + Nullify, + Subscribe, + Index, +} diff --git a/forester/src/constants.rs b/forester/src/constants.rs new file mode 100644 index 0000000000..adc5d1a065 --- /dev/null +++ b/forester/src/constants.rs @@ -0,0 +1,4 @@ +pub const SERVER_URL: &str = "http://localhost:8899"; +pub const WS_SERVER_URL: &str = "ws://localhost:8900"; +pub const INDEXER_URL: &str = "http://localhost:8784"; +pub const INDEXER_PROOF_PATH: &str = "/get_compressed_account_proof"; diff --git a/forester/src/errors.rs b/forester/src/errors.rs new file mode 100644 index 0000000000..a774469dd7 --- /dev/null +++ b/forester/src/errors.rs @@ -0,0 +1,42 @@ +use account_compression::initialize_address_merkle_tree::Error as AccountCompressionError; +use light_hash_set::HashSetError; +use photon_api::apis::{default_api::GetCompressedAccountProofPostError, Error as PhotonApiError}; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum ForesterError { + #[error("RPC Error: {0}")] + RpcError(#[from] solana_client::client_error::ClientError), + #[error("failed to deserialize account data")] + DeserializeError(#[from] solana_sdk::program_error::ProgramError), + #[error("failed to copy merkle tree")] + CopyMerkleTreeError(#[from] std::io::Error), + #[error(transparent)] + AccountCompressionError(#[from] AccountCompressionError), + #[error(transparent)] + HashSetError(#[from] HashSetError), + #[error(transparent)] + PhotonApiError(PhotonApiErrorWrapper), + #[error("bincode error")] + BincodeError(#[from] Box), + #[error("Indexer can't find any proofs")] + NoProofsFound, + #[error("error: {0:?}")] + Custom(String), + #[error("unknown error")] + Unknown, +} + +#[derive(Error, Debug)] +pub enum PhotonApiErrorWrapper { + #[error(transparent)] + GetCompressedAccountProofPostError(#[from] PhotonApiError), +} + +impl From> for ForesterError { + fn from(err: PhotonApiError) -> Self { + ForesterError::PhotonApiError(PhotonApiErrorWrapper::GetCompressedAccountProofPostError( + err, + )) + } +} diff --git a/forester/src/indexer/mod.rs b/forester/src/indexer/mod.rs new file mode 100644 index 0000000000..7025e9fff9 --- /dev/null +++ b/forester/src/indexer/mod.rs @@ -0,0 +1,5 @@ +mod photon_indexer; + +pub use photon_indexer::PhotonIndexer; + +// TODO: move indexer trait from test-utils diff --git a/forester/src/indexer/photon_indexer.rs b/forester/src/indexer/photon_indexer.rs new file mode 100644 index 0000000000..a0bba83aa4 --- /dev/null +++ b/forester/src/indexer/photon_indexer.rs @@ -0,0 +1,80 @@ +use crate::utils::decode_hash; +use account_compression::initialize_address_merkle_tree::Pubkey; +use light_test_utils::indexer::{Indexer, IndexerError, MerkleProof}; +use photon_api::apis::configuration::Configuration; + +pub struct PhotonIndexer { + configuration: Configuration, +} + +impl PhotonIndexer { + pub fn new(path: String) -> Self { + let configuration = Configuration { + base_path: path, + ..Default::default() + }; + + PhotonIndexer { configuration } + } +} + +impl Clone for PhotonIndexer { + fn clone(&self) -> Self { + PhotonIndexer { + configuration: self.configuration.clone(), + } + } +} + +impl Indexer for PhotonIndexer { + async fn get_multiple_compressed_account_proofs( + &self, + hashes: Vec, + ) -> Result, IndexerError> { + let request = photon_api::models::GetMultipleCompressedAccountProofsPostRequest { + params: hashes, + ..Default::default() + }; + + let result = photon_api::apis::default_api::get_multiple_compressed_account_proofs_post( + &self.configuration, + request, + ) + .await; + + match result { + Ok(response) => { + match response.result { + Some(result) => { + let proofs = result + .value + .iter() + .map(|x| { + let mut proof_result_value = x.proof.clone(); + proof_result_value.truncate(proof_result_value.len() - 1); // Remove root + proof_result_value.truncate(proof_result_value.len() - 10); // Remove canopy + let proof: Vec<[u8; 32]> = + proof_result_value.iter().map(|x| decode_hash(x)).collect(); + MerkleProof { + hash: x.hash.clone(), + leaf_index: x.leaf_index, + merkle_tree: x.merkle_tree.clone(), + proof, + root_seq: x.root_seq, + } + }) + .collect(); + + Ok(proofs) + } + None => Err(IndexerError::Custom("No result".to_string())), + } + } + Err(e) => Err(IndexerError::Custom(e.to_string())), + } + } + + fn account_nullified(&mut self, _merkle_tree_pubkey: Pubkey, _account_hash: &str) { + unimplemented!("account_nullified") + } +} diff --git a/forester/src/lib.rs b/forester/src/lib.rs new file mode 100644 index 0000000000..e5bfa80e26 --- /dev/null +++ b/forester/src/lib.rs @@ -0,0 +1,7 @@ +pub mod cli; +pub mod constants; +pub mod errors; +pub mod indexer; +pub mod nqmt; +pub mod nullifier; +pub mod utils; diff --git a/forester/src/main.rs b/forester/src/main.rs new file mode 100644 index 0000000000..08541b8a6d --- /dev/null +++ b/forester/src/main.rs @@ -0,0 +1,76 @@ +use clap::Parser; +use config::Config; +use env_logger::Env; +use forester::nqmt::reindex_and_store; +use log::info; +use solana_sdk::signature::{Keypair, Signer}; + +use forester::cli::{Cli, Commands}; +use forester::constants::{INDEXER_URL, SERVER_URL}; +use forester::indexer::PhotonIndexer; +use forester::nullifier::Config as ForesterConfig; +use forester::nullifier::{nullify, subscribe_nullify}; + +fn init_config() -> ForesterConfig { + let settings = Config::builder() + .add_source(config::File::with_name("forester")) + .add_source(config::Environment::with_prefix("FORESTER")) + .build() + .unwrap(); + + let merkle_tree = settings.get_string("merkle_tree").unwrap(); + let nullifier_queue = settings.get_string("nullifier_queue").unwrap(); + let registry = settings.get_string("registry").unwrap(); + let payer = settings.get_string("payer").unwrap(); + + let merkle_tree_keypair = Keypair::from_base58_string(&merkle_tree); + let nullifier_queue_keypair = Keypair::from_base58_string(&nullifier_queue); + let registry_keypair = Keypair::from_base58_string(®istry); + let payer_keypair = Keypair::from_base58_string(&payer); + + ForesterConfig { + server_url: SERVER_URL.to_string(), + nullifier_queue_pubkey: nullifier_queue_keypair.pubkey(), + merkle_tree_pubkey: merkle_tree_keypair.pubkey(), + registry_pubkey: registry_keypair.pubkey(), + payer_keypair: payer_keypair.insecure_clone(), + concurrency_limit: 20, + batch_size: 1000, + max_retries: 5, + } +} +#[tokio::main] +async fn main() { + env_logger::Builder::from_env(Env::default().default_filter_or("info")).init(); + let config = init_config(); + + let cli = Cli::parse(); + match &cli.command { + Some(Commands::Subscribe) => { + info!( + "Subscribe to nullify compressed accounts for indexed array: {} and merkle tree: {}", + config.nullifier_queue_pubkey, config.merkle_tree_pubkey + ); + + subscribe_nullify(&config).await; + } + Some(Commands::Nullify) => { + info!( + "Nullify compressed accounts for nullifier queue: {} and merkle tree: {}", + config.nullifier_queue_pubkey, config.merkle_tree_pubkey + ); + + let indexer = PhotonIndexer::new(INDEXER_URL.to_string()); + let result = nullify(indexer, &config).await; + info!("Nullification result: {:?}", result); + } + Some(Commands::Index) => { + info!("Reindex merkle tree & nullifier queue accounts"); + info!("Initial merkle tree account: {}", config.merkle_tree_pubkey); + let _ = reindex_and_store(&config); + } + None => { + return; + } + } +} diff --git a/forester/src/nqmt/mod.rs b/forester/src/nqmt/mod.rs new file mode 100644 index 0000000000..ad5a10a49e --- /dev/null +++ b/forester/src/nqmt/mod.rs @@ -0,0 +1,3 @@ +mod reindex; + +pub use reindex::reindex_and_store; diff --git a/forester/src/nqmt/reindex.rs b/forester/src/nqmt/reindex.rs new file mode 100644 index 0000000000..2447bf5888 --- /dev/null +++ b/forester/src/nqmt/reindex.rs @@ -0,0 +1,87 @@ +use crate::errors::ForesterError; +use crate::nullifier::Config; +use account_compression::StateMerkleTreeAccount; +use anchor_lang::AccountDeserialize; +use log::{info, warn}; +use solana_client::rpc_client::RpcClient; +use solana_sdk::pubkey::Pubkey; +use std::collections::LinkedList; + +const INVALID_MT_PUBKEY: &str = "11111111111111111111111111111111"; + +pub fn reindex_and_store(config: &Config) -> Result<(), ForesterError> { + match reindex(&config.merkle_tree_pubkey, &config.server_url) { + Ok(list) => { + info!("Indexed {} merkle trees", list.len()); + serialize_indexed_mt(list)?; + } + Err(e) => { + warn!("Error: {}", e); + return Err(e); + } + } + Ok(()) +} + +fn serialize_indexed_mt(list: LinkedList<(Pubkey, Pubkey)>) -> Result<(), ForesterError> { + let serialized = bincode::serialize(&list)?; + std::fs::write("index.bin", serialized)?; + Ok(()) +} + +fn reindex( + merkle_tree_pubkey: &Pubkey, + server_url: &str, +) -> Result, ForesterError> { + let client = RpcClient::new(server_url); + let mut list = LinkedList::new(); + + let mut current_merkle_tree_pubkey = *merkle_tree_pubkey; + loop { + info!("merkle_tree_pubkey: {:?}", current_merkle_tree_pubkey); + let nullifier_queue_pubkey = + get_nullifier_queue_pubkey(¤t_merkle_tree_pubkey, &client)?; + info!("nullifier_queue_pubkey: {:?}", nullifier_queue_pubkey); + list.push_back((current_merkle_tree_pubkey, nullifier_queue_pubkey)); + + match next_merkle_tree_pubkey(¤t_merkle_tree_pubkey, &client) { + Ok(next_merkle_tree_pubkey) => { + if next_merkle_tree_pubkey.to_string() == INVALID_MT_PUBKEY { + break; + } + current_merkle_tree_pubkey = next_merkle_tree_pubkey; + } + Err(_) => { + break; + } + } + } + + Ok(list) +} + +pub fn merkle_tree_account( + merkle_tree_pubkey: &Pubkey, + client: &RpcClient, +) -> Result { + let data: &[u8] = &client.get_account_data(merkle_tree_pubkey)?; + let mut data_ref = data; + Ok(StateMerkleTreeAccount::try_deserialize(&mut data_ref)?) +} + +pub fn next_merkle_tree_pubkey( + merkle_tree_pubkey: &Pubkey, + client: &RpcClient, +) -> Result { + let merkle_tree_account = merkle_tree_account(merkle_tree_pubkey, client)?; + Ok(merkle_tree_account.metadata.next_merkle_tree) +} + +pub fn get_nullifier_queue_pubkey( + merkle_tree_pubkey: &Pubkey, + client: &RpcClient, +) -> Result { + let merkle_tree_account = merkle_tree_account(merkle_tree_pubkey, client)?; + let nullifier_queue_pubkey = merkle_tree_account.metadata.associated_queue; + Ok(nullifier_queue_pubkey) +} diff --git a/forester/src/nullifier/config.rs b/forester/src/nullifier/config.rs new file mode 100644 index 0000000000..dc622831c9 --- /dev/null +++ b/forester/src/nullifier/config.rs @@ -0,0 +1,28 @@ +use solana_sdk::pubkey::Pubkey; +use solana_sdk::signature::Keypair; + +pub struct Config { + pub server_url: String, + pub nullifier_queue_pubkey: Pubkey, + pub merkle_tree_pubkey: Pubkey, + pub registry_pubkey: Pubkey, + pub payer_keypair: Keypair, + pub concurrency_limit: usize, + pub batch_size: usize, + pub max_retries: usize, +} + +impl Clone for Config { + fn clone(&self) -> Self { + Self { + server_url: self.server_url.clone(), + nullifier_queue_pubkey: self.nullifier_queue_pubkey, + merkle_tree_pubkey: self.merkle_tree_pubkey, + registry_pubkey: self.registry_pubkey, + payer_keypair: Keypair::from_bytes(&self.payer_keypair.to_bytes()).unwrap(), + concurrency_limit: self.concurrency_limit, + batch_size: self.batch_size, + max_retries: self.max_retries, + } + } +} diff --git a/forester/src/nullifier/mod.rs b/forester/src/nullifier/mod.rs new file mode 100644 index 0000000000..177bb515c3 --- /dev/null +++ b/forester/src/nullifier/mod.rs @@ -0,0 +1,11 @@ +mod config; +mod nullify; +mod queue_data; +mod subscribe; + +pub use config::Config; +pub use nullify::get_nullifier_queue; +pub use nullify::nullify; +pub use nullify::nullify_compressed_account; +pub use queue_data::QueueData; +pub use subscribe::subscribe_nullify; diff --git a/forester/src/nullifier/nullify.rs b/forester/src/nullifier/nullify.rs new file mode 100644 index 0000000000..e9508a5f94 --- /dev/null +++ b/forester/src/nullifier/nullify.rs @@ -0,0 +1,312 @@ +use crate::errors::ForesterError; +use crate::nullifier::queue_data::Account; +use crate::nullifier::{Config, QueueData}; +use account_compression::{QueueAccount, StateMerkleTreeAccount, ID}; +use anchor_lang::solana_program::instruction::Instruction; +use anchor_lang::{AccountDeserialize, InstructionData, ToAccountMetas}; +use light_hash_set::HashSet; +use light_registry::sdk::get_cpi_authority_pda; +use light_system_program::utils::get_registered_program_pda; +use light_test_utils::indexer::Indexer; +use light_test_utils::test_env::NOOP_PROGRAM_ID; +use log::{info, warn}; +use solana_client::rpc_client::RpcClient; +use solana_client::rpc_config::RpcSendTransactionConfig; +use solana_sdk::pubkey::Pubkey; +use solana_sdk::signature::Signer; +use solana_sdk::transaction::Transaction; +use std::collections::HashMap; +use std::mem; +use std::ops::{Deref, DerefMut}; +use std::sync::Arc; +use tokio::signal; +use tokio::sync::{Mutex, Semaphore}; +use tokio_util::sync::CancellationToken; + +pub async fn nullify(indexer: T, config: &Config) -> Result<(), ForesterError> { + let arc_indexer = Arc::new(Mutex::new(indexer)); + let concurrency_limit = config.concurrency_limit; + let semaphore = Arc::new(Semaphore::new(concurrency_limit)); + let successful_nullifications = Arc::new(Mutex::new(1)); + let cancellation_token = CancellationToken::new(); + let cancellation_token_clone = cancellation_token.clone(); + let _terminate_handle = { + tokio::spawn(async move { + if signal::ctrl_c().await.is_ok() { + cancellation_token_clone.cancel(); + info!("Ctrl-C received, canceling tasks..."); + } + }) + }; + + let mut queue_data = fetch_queue_data(arc_indexer.clone(), config).await?; + loop { + if cancellation_token.is_cancelled() { + info!("Cancellation detected, exiting loop..."); + break; + } + if queue_data.compressed_accounts_to_nullify.is_empty() + || *successful_nullifications.lock().await % config.batch_size == 0 + { + match fetch_queue_data(arc_indexer.clone(), config).await { + Ok(data) => { + queue_data = data; + } + Err(e) => match e { + ForesterError::NoProofsFound => { + warn!("No proofs found. Please check that nullifier queue is empty"); + break; + } + _ => { + warn!("Error fetching queue data: {:?}", e); + continue; + } + }, + } + } + + if queue_data.compressed_accounts_to_nullify.is_empty() { + info!("No more accounts to nullify. Exiting..."); + cancellation_token.cancel(); + break; + } + + let permit = Arc::clone(&semaphore).acquire_owned().await; + let account = queue_data.compressed_accounts_to_nullify.remove(0); + + let max_retries = config.max_retries; + if let Some((proof, leaf_index, _)) = queue_data + .compressed_account_proofs + .remove(&account.hash_string()) + { + let client = RpcClient::new(&config.server_url); + let successful_nullifications = Arc::clone(&successful_nullifications); + let cancellation_token_clone = cancellation_token.clone(); + let arc_indexer_clone = Arc::clone(&arc_indexer); + let config_clone = config.clone(); + let task = tokio::spawn(async move { + let _permit = permit; + let mut retries = 0; + loop { + if cancellation_token_clone.is_cancelled() { + info!("Task cancelled for account {}", account.hash_string()); + break; + } + let proof_clone = proof.clone(); + match nullify_compressed_account( + account, + queue_data.change_log_index, + proof_clone, + leaf_index, + &config_clone, + &client, + arc_indexer_clone.clone(), + ) + .await + { + Ok(_) => { + let mut successful_nullifications = + successful_nullifications.lock().await; + *successful_nullifications += 1; + break; + } + Err(e) => { + if retries >= max_retries { + warn!( + "Max retries reached for account {}: {:?}", + account.hash_string(), + e + ); + break; + } + retries += 1; + warn!( + "Retrying account {} due to error: {:?}", + account.hash_string(), + e + ); + tokio::time::sleep(tokio::time::Duration::from_secs(2)).await; + } + } + } + }); + if let Err(e) = task.await { + warn!("Task failed with error: {:?}", e); + continue; + } + } else { + tokio::time::sleep(tokio::time::Duration::from_secs(1)).await; + queue_data = fetch_queue_data(Arc::clone(&arc_indexer), config).await?; + continue; + } + } + + // TODO: should we use terminate_handle.await.unwrap() here? + let successful_nullifications = successful_nullifications.lock().await; + info!("Successful nullifications: {}", *successful_nullifications); + + Ok(()) +} + +async fn fetch_queue_data( + indexer: Arc>, + config: &Config, +) -> Result { + let (change_log_index, sequence_number) = { + let temporary_client = RpcClient::new(&config.server_url); + get_changelog_index(&config.merkle_tree_pubkey, &temporary_client)? + }; + let compressed_accounts_to_nullify = { + let temporary_client = RpcClient::new(&config.server_url); + let queue = get_nullifier_queue(&config.nullifier_queue_pubkey, &temporary_client)?; + info!( + "Queue length: {}. Trimming to batch size of {}...", + queue.len(), + config.batch_size + ); + queue + .into_iter() + .take(config.batch_size) + .collect::>() + }; + + let compressed_account_list = compressed_accounts_to_nullify + .iter() + .map(|account| account.hash_string()) + .collect::>(); + + let indexer_guard = indexer.lock().await; + let indexer = indexer_guard.deref(); + let proofs = indexer + .get_multiple_compressed_account_proofs(compressed_account_list.clone()) + .await + .map_err(|e| { + warn!("Cannot get multiple proofs: {:#?}", e); + ForesterError::NoProofsFound + })?; + let compressed_account_proofs: HashMap, u64, i64)> = proofs + .into_iter() + .map(|proof| { + ( + proof.hash.clone(), + (proof.proof.clone(), proof.leaf_index as u64, proof.root_seq), + ) + }) + .collect(); + Ok(QueueData { + change_log_index, + sequence_number, + compressed_accounts_to_nullify, + compressed_account_proofs, + }) +} + +#[allow(clippy::too_many_arguments)] +pub async fn nullify_compressed_account( + account: Account, + change_log_index: usize, + proof: Vec<[u8; 32]>, + leaf_index: u64, + config: &Config, + client: &RpcClient, + indexer: Arc>, +) -> Result<(), ForesterError> { + let register_program_pda = get_registered_program_pda(&config.registry_pubkey); + let (cpi_authority, bump) = get_cpi_authority_pda(); + let instruction_data = light_registry::instruction::Nullify { + bump, + change_log_indices: vec![change_log_index as u64], + leaves_queue_indices: vec![account.index as u16], + indices: vec![leaf_index], + proofs: vec![proof], + }; + + let accounts = light_registry::accounts::NullifyLeaves { + authority: config.payer_keypair.pubkey(), + registered_program_pda: register_program_pda, + nullifier_queue: config.nullifier_queue_pubkey, + merkle_tree: config.merkle_tree_pubkey, + log_wrapper: NOOP_PROGRAM_ID, + cpi_authority, + account_compression_program: ID, + }; + + let ix = Instruction { + program_id: config.registry_pubkey, + accounts: accounts.to_account_metas(Some(true)), + data: instruction_data.data(), + }; + + let instructions = [ + solana_sdk::compute_budget::ComputeBudgetInstruction::set_compute_unit_limit(1_000_000), + ix, + ]; + + let latest_blockhash = client.get_latest_blockhash()?; + let transaction = Transaction::new_signed_with_payer( + &instructions, + Some(&config.payer_keypair.pubkey()), + &[&config.payer_keypair], + latest_blockhash, + ); + + let tx_config = RpcSendTransactionConfig { + skip_preflight: true, + ..RpcSendTransactionConfig::default() + }; + let signature = client.send_transaction_with_config(&transaction, tx_config)?; + info!("Transaction: {:?}", signature); + loop { + let confirmed = client.confirm_transaction(&signature).unwrap(); + if confirmed { + break; + } + } + + let mut guard = indexer.lock().await; + let indexer = guard.deref_mut(); + indexer.account_nullified(config.merkle_tree_pubkey, &account.hash_string()); + Ok(()) +} + +pub fn get_nullifier_queue( + nullifier_queue_pubkey: &Pubkey, + client: &RpcClient, +) -> Result, ForesterError> { + let mut nullifier_queue_account = client.get_account(nullifier_queue_pubkey)?; + let nullifier_queue: HashSet = unsafe { + HashSet::from_bytes_copy( + &mut nullifier_queue_account.data[8 + mem::size_of::()..], + )? + }; + + let mut compressed_accounts_to_nullify = Vec::new(); + for i in 0..nullifier_queue.capacity { + let bucket = nullifier_queue.get_bucket(i).unwrap(); + if let Some(bucket) = bucket { + if bucket.sequence_number.is_none() { + compressed_accounts_to_nullify.push(Account { + hash: bucket.value_bytes(), + index: i, + }); + } + } + } + + Ok(compressed_accounts_to_nullify) +} + +pub fn get_changelog_index( + merkle_tree_pubkey: &Pubkey, + client: &RpcClient, +) -> Result<(usize, usize), ForesterError> { + let data: &[u8] = &client.get_account_data(merkle_tree_pubkey)?; + let mut data_ref = data; + let merkle_tree_account: StateMerkleTreeAccount = + StateMerkleTreeAccount::try_deserialize(&mut data_ref)?; + let merkle_tree = merkle_tree_account.copy_merkle_tree()?; + Ok(( + merkle_tree.current_changelog_index, + merkle_tree.sequence_number, + )) +} diff --git a/forester/src/nullifier/queue_data.rs b/forester/src/nullifier/queue_data.rs new file mode 100644 index 0000000000..86b32dc4a4 --- /dev/null +++ b/forester/src/nullifier/queue_data.rs @@ -0,0 +1,21 @@ +use std::collections::HashMap; + +#[derive(Debug)] +pub struct QueueData { + pub change_log_index: usize, + pub sequence_number: usize, + pub compressed_accounts_to_nullify: Vec, + pub compressed_account_proofs: HashMap, u64, i64)>, +} + +#[derive(Clone, Copy, Debug)] +pub struct Account { + pub hash: [u8; 32], + pub index: usize, +} + +impl Account { + pub fn hash_string(&self) -> String { + bs58::encode(&self.hash).into_string() + } +} diff --git a/forester/src/nullifier/subscribe.rs b/forester/src/nullifier/subscribe.rs new file mode 100644 index 0000000000..31eb77003d --- /dev/null +++ b/forester/src/nullifier/subscribe.rs @@ -0,0 +1,55 @@ +use crate::constants::{INDEXER_URL, WS_SERVER_URL}; +use crate::indexer::PhotonIndexer; +use log::{info, warn}; +use solana_client::pubsub_client::PubsubClient; +use solana_client::rpc_config::RpcAccountInfoConfig; +use solana_sdk::commitment_config::CommitmentConfig; +use tokio::time::{sleep, Duration}; + +use super::{nullify, Config}; + +pub async fn subscribe_nullify(config: &Config) { + let indexer = PhotonIndexer::new(INDEXER_URL.to_string()); + loop { + let (_account_subscription_client, account_subscription_receiver) = + match PubsubClient::account_subscribe( + WS_SERVER_URL, + &config.nullifier_queue_pubkey, + Some(RpcAccountInfoConfig { + encoding: None, + data_slice: None, + commitment: Some(CommitmentConfig::confirmed()), + min_context_slot: None, + }), + ) { + Ok((client, receiver)) => (client, receiver), + Err(e) => { + info!("account subscription error: {:?}", e); + info!("retrying in 10 seconds..."); + sleep(Duration::from_secs(10)).await; + continue; + } + }; + loop { + match account_subscription_receiver.recv() { + Ok(_) => { + info!("nullify request received"); + let time = std::time::Instant::now(); + match nullify(indexer.clone(), config).await { + Ok(_) => { + info!("Nullify completed"); + info!("Time elapsed: {:?}", time.elapsed()); + } + Err(e) => { + warn!("Error: {:?}", e); + } + } + } + Err(e) => { + warn!("account subscription error: {:?}", e); + break; + } + } + } + } +} diff --git a/forester/src/utils.rs b/forester/src/utils.rs new file mode 100644 index 0000000000..d0600b1057 --- /dev/null +++ b/forester/src/utils.rs @@ -0,0 +1,47 @@ +use log::info; +use std::process::Command; +use sysinfo::{Signal, System}; + +pub fn u8_arr_to_hex_string(arr: &[u8]) -> String { + arr.iter() + .map(|b| format!("{:02x}", b)) + .collect::>() + .join("") +} + +pub async fn restart_photon() { + kill_photon(); + Command::new("photon") + .spawn() + .expect("Failed to start server process"); +} + +pub fn kill_photon() { + let mut system = System::new_all(); + system.refresh_all(); + + for process in system.processes().values() { + if process.name() == "photon" { + process.kill_with(Signal::Term); + } + } +} + +pub async fn spawn_test_validator() { + info!("Starting validator..."); + let path = "../cli/test_bin/run test-validator --skip-indexer --skip-prover"; + Command::new("sh") + .arg("-c") + .arg(path) + .spawn() + .expect("Failed to start server process"); + tokio::time::sleep(tokio::time::Duration::from_secs(10)).await; + info!("Validator started successfully"); +} + +pub fn decode_hash(account: &str) -> [u8; 32] { + let bytes = bs58::decode(account).into_vec().unwrap(); + let mut arr = [0u8; 32]; + arr.copy_from_slice(&bytes); + arr +} diff --git a/forester/tests/nullifier_test.rs b/forester/tests/nullifier_test.rs new file mode 100644 index 0000000000..d77253492b --- /dev/null +++ b/forester/tests/nullifier_test.rs @@ -0,0 +1,113 @@ +use account_compression::StateMerkleTreeAccount; +use anchor_lang::AccountDeserialize; +use forester::constants::{INDEXER_URL, SERVER_URL}; +use forester::indexer::PhotonIndexer; +use forester::nullifier::{get_nullifier_queue, nullify, subscribe_nullify, Config}; +use forester::utils::u8_arr_to_hex_string; +use light_test_utils::test_env::{get_test_env_accounts, REGISTRY_ID_TEST_KEYPAIR}; +use log::{info, warn}; +use solana_client::rpc_client::RpcClient; +use solana_sdk::native_token::LAMPORTS_PER_SOL; +use solana_sdk::signature::Keypair; +use solana_sdk::signer::Signer; + +fn test_config() -> Config { + let registry_keypair = Keypair::from_bytes(®ISTRY_ID_TEST_KEYPAIR).unwrap(); + + let env_accounts = get_test_env_accounts(); + Config { + server_url: SERVER_URL.to_string(), + nullifier_queue_pubkey: env_accounts.nullifier_queue_pubkey, + merkle_tree_pubkey: env_accounts.merkle_tree_pubkey, + registry_pubkey: registry_keypair.pubkey(), + payer_keypair: env_accounts.governance_authority.insecure_clone(), + concurrency_limit: 20, + batch_size: 1000, + max_retries: 5, + } +} +#[tokio::test(flavor = "multi_thread", worker_threads = 4)] +#[ignore] +async fn queue_info_test() { + let config = test_config(); + let client = RpcClient::new(config.server_url); + let queue = get_nullifier_queue(&config.nullifier_queue_pubkey, &client).unwrap(); + info!("Nullifier queue length: {}", queue.len()); +} + +#[tokio::test(flavor = "multi_thread", worker_threads = 4)] +#[ignore] +async fn tree_info_test() { + let merkle_tree = + "3wBL7d5qoWiYAV2bHMsmjKFr3u8SWa4Aps9mAcanfhRQMdFrtJtASwB5ZSvYeoAgD3SZsiYtnZVrrXpHKDpxkgZ2"; + let nullifier_queue = + "5T2Fg9GVnZjGJetLnt2HF1CpYMM9fAzxodvmqJzh8dgjs96hqkwtcXkYrg7wT2ZCGj6syhAYtg5EEpeDBTQDJGY5"; + let payer = + "LsYPAULcTDhjnECes7qhwAdeEUVYgbpX5ri5zijUceTQXCwkxP94zKdG4pmDQmicF7Zbj1AqB44t8qfGE8RuUk8"; + + let nullifier_queue_pubkey = Keypair::from_base58_string(nullifier_queue); + let nullifier_queue_pubkey = nullifier_queue_pubkey.pubkey(); + + let merkle_tree_keypair = Keypair::from_base58_string(merkle_tree); + let merkle_tree_pubkey = merkle_tree_keypair.pubkey(); + + let payer_keypair = Keypair::from_base58_string(payer); + let payer_pubkey = payer_keypair.pubkey(); + + info!("Payer pubkey: {:?}", payer_pubkey); + info!( + "Nullify compressed accounts for nullifier queue: {} and merkle tree: {}", + nullifier_queue_pubkey, merkle_tree_pubkey + ); + + let client = RpcClient::new(SERVER_URL); + client + .request_airdrop(&payer_pubkey, LAMPORTS_PER_SOL * 1000) + .unwrap(); + + let data: &[u8] = &client.get_account_data(&merkle_tree_pubkey).unwrap(); + let mut data_ref = data; + let merkle_tree_account: StateMerkleTreeAccount = + StateMerkleTreeAccount::try_deserialize(&mut data_ref).unwrap(); + let merkle_tree = merkle_tree_account.copy_merkle_tree().unwrap(); + + let root = merkle_tree.root(); + info!("Merkle tree root: {:?}", u8_arr_to_hex_string(&root)); + info!( + "Merkle tree rightmost leaf: {:?}", + u8_arr_to_hex_string(&merkle_tree.rightmost_leaf) + ); +} + +#[tokio::test(flavor = "multi_thread", worker_threads = 4)] +#[ignore] +async fn test_nullify_leaves() { + let indexer = PhotonIndexer::new(INDEXER_URL.to_string()); + let config = test_config(); + let client = RpcClient::new(SERVER_URL); + client + .request_airdrop(&config.payer_keypair.pubkey(), LAMPORTS_PER_SOL * 1000) + .unwrap(); + + let time = std::time::Instant::now(); + match nullify(indexer, &config).await { + Ok(_) => { + info!("Nullify completed"); + info!("Total time elapsed: {:?}", time.elapsed()); + } + Err(e) => { + warn!("Error: {:?}", e); + } + } +} + +#[tokio::test(flavor = "multi_thread", worker_threads = 4)] +#[ignore] +async fn test_subscribe_nullify() { + let config = test_config(); + let client = RpcClient::new(SERVER_URL); + client + .request_airdrop(&config.payer_keypair.pubkey(), LAMPORTS_PER_SOL * 1000) + .unwrap(); + subscribe_nullify(&config).await; +} diff --git a/forester/tests/test_indexer.rs b/forester/tests/test_indexer.rs new file mode 100644 index 0000000000..62ae7ed572 --- /dev/null +++ b/forester/tests/test_indexer.rs @@ -0,0 +1,69 @@ +use anchor_lang::solana_program::native_token::LAMPORTS_PER_SOL; +use env_logger::Env; +use forester::constants::SERVER_URL; +use forester::nullifier::{get_nullifier_queue, nullify, Config}; +use forester::utils::spawn_test_validator; +use light_test_utils::e2e_test_env::{E2ETestEnv, GeneralActionConfig, KeypairActionConfig}; +use light_test_utils::rpc::SolanaRpcConnection; +use light_test_utils::test_env::{get_test_env_accounts, REGISTRY_ID_TEST_KEYPAIR}; +use log::info; +use solana_client::rpc_client::RpcClient; +use solana_sdk::signature::{Keypair, Signer}; + +#[tokio::test(flavor = "multi_thread", worker_threads = 4)] +async fn test_indexer() { + env_logger::Builder::from_env(Env::default().default_filter_or("info")).init(); + spawn_test_validator().await; + let env_accounts = get_test_env_accounts(); + let registry_keypair = Keypair::from_bytes(®ISTRY_ID_TEST_KEYPAIR).unwrap(); + + let config = Config { + server_url: SERVER_URL.to_string(), + nullifier_queue_pubkey: env_accounts.nullifier_queue_pubkey, + merkle_tree_pubkey: env_accounts.merkle_tree_pubkey, + registry_pubkey: registry_keypair.pubkey(), + payer_keypair: env_accounts.governance_authority.insecure_clone(), + concurrency_limit: 1, + batch_size: 1, + max_retries: 5, + }; + + let client = RpcClient::new(SERVER_URL); + let signature = client + .request_airdrop(&config.payer_keypair.pubkey(), LAMPORTS_PER_SOL * 1000) + .unwrap(); + loop { + let confirmed = client.confirm_transaction(&signature).unwrap(); + if confirmed { + break; + } + } + + let rpc = SolanaRpcConnection::new().await; + let mut env = E2ETestEnv::<500, SolanaRpcConnection>::new( + rpc, + &env_accounts, + KeypairActionConfig::test_forester_default(), + GeneralActionConfig::test_forester_default(), + 10, + None, + "../circuit-lib/circuitlib-rs/scripts/prover.sh", + ) + .await; + env.execute_rounds().await; + let indexer = env.indexer; + + assert_ne!(get_queue_length(&config), 0); + info!( + "Nullifying queue of {} accounts...", + get_queue_length(&config) + ); + let _ = nullify(indexer, &config).await; + assert_eq!(get_queue_length(&config), 0); +} + +fn get_queue_length(config: &Config) -> usize { + let client = RpcClient::new(SERVER_URL); + let queue = get_nullifier_queue(&config.nullifier_queue_pubkey, &client).unwrap(); + queue.len() +} diff --git a/merkle-tree/reference/src/lib.rs b/merkle-tree/reference/src/lib.rs index 7897dab0c9..5f2cf793cf 100644 --- a/merkle-tree/reference/src/lib.rs +++ b/merkle-tree/reference/src/lib.rs @@ -16,7 +16,7 @@ pub enum ReferenceMerkleTreeError { InvalidProofLength(usize, usize), } -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct MerkleTree where H: Hasher, diff --git a/photon-api/.gitignore b/photon-api/.gitignore new file mode 100644 index 0000000000..6aa106405a --- /dev/null +++ b/photon-api/.gitignore @@ -0,0 +1,3 @@ +/target/ +**/*.rs.bk +Cargo.lock diff --git a/photon-api/.openapi-generator-ignore b/photon-api/.openapi-generator-ignore new file mode 100644 index 0000000000..7484ee590a --- /dev/null +++ b/photon-api/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/photon-api/.openapi-generator/FILES b/photon-api/.openapi-generator/FILES new file mode 100644 index 0000000000..1cc22041be --- /dev/null +++ b/photon-api/.openapi-generator/FILES @@ -0,0 +1,178 @@ +.gitignore +.openapi-generator-ignore +.travis.yml +Cargo.toml +README.md +docs/Account.md +docs/AccountData.md +docs/AccountList.md +docs/AccountState.md +docs/AccountWithOptionalTokenData.md +docs/CompressedProof.md +docs/CompressedProofWithContext.md +docs/Context.md +docs/DefaultApi.md +docs/GetCompressedAccountPost200Response.md +docs/GetCompressedAccountPost200ResponseError.md +docs/GetCompressedAccountPost200ResponseResult.md +docs/GetCompressedAccountPost429Response.md +docs/GetCompressedAccountPostRequest.md +docs/GetCompressedAccountPostRequestParams.md +docs/GetCompressedAccountProofPost200Response.md +docs/GetCompressedAccountProofPost200ResponseResult.md +docs/GetCompressedAccountProofPostRequest.md +docs/GetCompressedAccountProofPostRequestParams.md +docs/GetCompressedAccountsByOwnerPost200Response.md +docs/GetCompressedAccountsByOwnerPost200ResponseResult.md +docs/GetCompressedAccountsByOwnerPostRequest.md +docs/GetCompressedAccountsByOwnerPostRequestParams.md +docs/GetCompressedBalanceByOwnerPostRequest.md +docs/GetCompressedBalanceByOwnerPostRequestParams.md +docs/GetCompressedBalancePost200Response.md +docs/GetCompressedBalancePost200ResponseResult.md +docs/GetCompressedBalancePostRequest.md +docs/GetCompressedTokenAccountBalancePost200Response.md +docs/GetCompressedTokenAccountBalancePost200ResponseResult.md +docs/GetCompressedTokenAccountBalancePostRequest.md +docs/GetCompressedTokenAccountsByDelegatePost200Response.md +docs/GetCompressedTokenAccountsByDelegatePost200ResponseResult.md +docs/GetCompressedTokenAccountsByDelegatePostRequest.md +docs/GetCompressedTokenAccountsByDelegatePostRequestParams.md +docs/GetCompressedTokenAccountsByOwnerPostRequest.md +docs/GetCompressedTokenAccountsByOwnerPostRequestParams.md +docs/GetCompressedTokenBalancesByOwnerPost200Response.md +docs/GetCompressedTokenBalancesByOwnerPost200ResponseResult.md +docs/GetCompressedTokenBalancesByOwnerPostRequest.md +docs/GetCompressedTokenBalancesByOwnerPostRequestParams.md +docs/GetCompressionSignaturesForAccountPost200Response.md +docs/GetCompressionSignaturesForAccountPost200ResponseResult.md +docs/GetCompressionSignaturesForAccountPostRequest.md +docs/GetCompressionSignaturesForAddressPost200Response.md +docs/GetCompressionSignaturesForAddressPost200ResponseResult.md +docs/GetCompressionSignaturesForAddressPostRequest.md +docs/GetCompressionSignaturesForAddressPostRequestParams.md +docs/GetCompressionSignaturesForOwnerPostRequest.md +docs/GetCompressionSignaturesForOwnerPostRequestParams.md +docs/GetCompressionSignaturesForTokenOwnerPostRequest.md +docs/GetIndexerHealthPost200Response.md +docs/GetIndexerHealthPostRequest.md +docs/GetIndexerSlotPost200Response.md +docs/GetIndexerSlotPostRequest.md +docs/GetLatestCompressionSignaturesPostRequest.md +docs/GetLatestCompressionSignaturesPostRequestParams.md +docs/GetLatestNonVotingSignaturesPostRequest.md +docs/GetMultipleCompressedAccountProofsPost200Response.md +docs/GetMultipleCompressedAccountProofsPost200ResponseResult.md +docs/GetMultipleCompressedAccountProofsPostRequest.md +docs/GetMultipleCompressedAccountsPost200Response.md +docs/GetMultipleCompressedAccountsPost200ResponseResult.md +docs/GetMultipleCompressedAccountsPostRequest.md +docs/GetMultipleCompressedAccountsPostRequestParams.md +docs/GetTransactionWithCompressionInfoPost200Response.md +docs/GetTransactionWithCompressionInfoPost200ResponseResult.md +docs/GetTransactionWithCompressionInfoPost200ResponseResultCompressionInfo.md +docs/GetTransactionWithCompressionInfoPostRequest.md +docs/GetTransactionWithCompressionInfoPostRequestParams.md +docs/GetValidityProofPost200Response.md +docs/GetValidityProofPost200ResponseResult.md +docs/GetValidityProofPostRequest.md +docs/MerkleProofWithContext.md +docs/PaginatedAccountList.md +docs/PaginatedSignatureInfoList.md +docs/SignatureInfo.md +docs/SignatureInfoList.md +docs/TokenAcccount.md +docs/TokenAccountBalance.md +docs/TokenAccountList.md +docs/TokenBalance.md +docs/TokenBalanceList.md +docs/TokenData.md +git_push.sh +src/apis/configuration.rs +src/apis/default_api.rs +src/apis/mod.rs +src/lib.rs +src/models/_get_compressed_account_post_200_response.rs +src/models/_get_compressed_account_post_200_response_error.rs +src/models/_get_compressed_account_post_200_response_result.rs +src/models/_get_compressed_account_post_429_response.rs +src/models/_get_compressed_account_post_request.rs +src/models/_get_compressed_account_post_request_params.rs +src/models/_get_compressed_account_proof_post_200_response.rs +src/models/_get_compressed_account_proof_post_200_response_result.rs +src/models/_get_compressed_account_proof_post_request.rs +src/models/_get_compressed_account_proof_post_request_params.rs +src/models/_get_compressed_accounts_by_owner_post_200_response.rs +src/models/_get_compressed_accounts_by_owner_post_200_response_result.rs +src/models/_get_compressed_accounts_by_owner_post_request.rs +src/models/_get_compressed_accounts_by_owner_post_request_params.rs +src/models/_get_compressed_balance_by_owner_post_request.rs +src/models/_get_compressed_balance_by_owner_post_request_params.rs +src/models/_get_compressed_balance_post_200_response.rs +src/models/_get_compressed_balance_post_200_response_result.rs +src/models/_get_compressed_balance_post_request.rs +src/models/_get_compressed_token_account_balance_post_200_response.rs +src/models/_get_compressed_token_account_balance_post_200_response_result.rs +src/models/_get_compressed_token_account_balance_post_request.rs +src/models/_get_compressed_token_accounts_by_delegate_post_200_response.rs +src/models/_get_compressed_token_accounts_by_delegate_post_200_response_result.rs +src/models/_get_compressed_token_accounts_by_delegate_post_request.rs +src/models/_get_compressed_token_accounts_by_delegate_post_request_params.rs +src/models/_get_compressed_token_accounts_by_owner_post_request.rs +src/models/_get_compressed_token_accounts_by_owner_post_request_params.rs +src/models/_get_compressed_token_balances_by_owner_post_200_response.rs +src/models/_get_compressed_token_balances_by_owner_post_200_response_result.rs +src/models/_get_compressed_token_balances_by_owner_post_request.rs +src/models/_get_compressed_token_balances_by_owner_post_request_params.rs +src/models/_get_compression_signatures_for_account_post_200_response.rs +src/models/_get_compression_signatures_for_account_post_200_response_result.rs +src/models/_get_compression_signatures_for_account_post_request.rs +src/models/_get_compression_signatures_for_address_post_200_response.rs +src/models/_get_compression_signatures_for_address_post_200_response_result.rs +src/models/_get_compression_signatures_for_address_post_request.rs +src/models/_get_compression_signatures_for_address_post_request_params.rs +src/models/_get_compression_signatures_for_owner_post_request.rs +src/models/_get_compression_signatures_for_owner_post_request_params.rs +src/models/_get_compression_signatures_for_token_owner_post_request.rs +src/models/_get_indexer_health_post_200_response.rs +src/models/_get_indexer_health_post_request.rs +src/models/_get_indexer_slot_post_200_response.rs +src/models/_get_indexer_slot_post_request.rs +src/models/_get_latest_compression_signatures_post_request.rs +src/models/_get_latest_compression_signatures_post_request_params.rs +src/models/_get_latest_non_voting_signatures_post_request.rs +src/models/_get_multiple_compressed_account_proofs_post_200_response.rs +src/models/_get_multiple_compressed_account_proofs_post_200_response_result.rs +src/models/_get_multiple_compressed_account_proofs_post_request.rs +src/models/_get_multiple_compressed_accounts_post_200_response.rs +src/models/_get_multiple_compressed_accounts_post_200_response_result.rs +src/models/_get_multiple_compressed_accounts_post_request.rs +src/models/_get_multiple_compressed_accounts_post_request_params.rs +src/models/_get_transaction_with_compression_info_post_200_response.rs +src/models/_get_transaction_with_compression_info_post_200_response_result.rs +src/models/_get_transaction_with_compression_info_post_200_response_result_compression_info.rs +src/models/_get_transaction_with_compression_info_post_request.rs +src/models/_get_transaction_with_compression_info_post_request_params.rs +src/models/_get_validity_proof_post_200_response.rs +src/models/_get_validity_proof_post_200_response_result.rs +src/models/_get_validity_proof_post_request.rs +src/models/account.rs +src/models/account_data.rs +src/models/account_list.rs +src/models/account_state.rs +src/models/account_with_optional_token_data.rs +src/models/compressed_proof.rs +src/models/compressed_proof_with_context.rs +src/models/context.rs +src/models/merkle_proof_with_context.rs +src/models/mod.rs +src/models/paginated_account_list.rs +src/models/paginated_signature_info_list.rs +src/models/signature_info.rs +src/models/signature_info_list.rs +src/models/token_acccount.rs +src/models/token_account_balance.rs +src/models/token_account_list.rs +src/models/token_balance.rs +src/models/token_balance_list.rs +src/models/token_data.rs diff --git a/photon-api/.openapi-generator/VERSION b/photon-api/.openapi-generator/VERSION new file mode 100644 index 0000000000..18bb4182dd --- /dev/null +++ b/photon-api/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.5.0 diff --git a/photon-api/.travis.yml b/photon-api/.travis.yml new file mode 100644 index 0000000000..22761ba7ee --- /dev/null +++ b/photon-api/.travis.yml @@ -0,0 +1 @@ +language: rust diff --git a/photon-api/Cargo.toml b/photon-api/Cargo.toml new file mode 100644 index 0000000000..b764b57fb9 --- /dev/null +++ b/photon-api/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "photon-api" +version = "0.19.0" +authors = ["OpenAPI Generator team and contributors"] +description = "Solana indexer for general compression" +license = "Apache-2.0" +edition = "2018" + +[dependencies] +serde = "^1.0" +serde_derive = "^1.0" +serde_with = "^2.0" +serde_json = "^1.0" +url = "^2.2" +uuid = { version = "^1.0", features = ["serde", "v4"] } +[dependencies.reqwest] +version = "^0.11" +features = ["json", "multipart"] diff --git a/photon-api/README.md b/photon-api/README.md new file mode 100644 index 0000000000..144a2235ef --- /dev/null +++ b/photon-api/README.md @@ -0,0 +1,148 @@ +# Rust API client for photon-api + +Solana indexer for general compression + + +## Overview + +This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. + +- API version: 0.19.0 +- Package version: 0.19.0 +- Generator version: 7.5.0 +- Build package: `org.openapitools.codegen.languages.RustClientCodegen` + +## Installation + +Put the package under your project folder in a directory named `photon-api` and add the following to `Cargo.toml` under `[dependencies]`: + +``` +photon-api = { path = "./photon-api" } +``` + +## Documentation for API Endpoints + +All URIs are relative to *http://127.0.0.1* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*DefaultApi* | [**get_compressed_account_post**](docs/DefaultApi.md#get_compressed_account_post) | **POST** /getCompressedAccount | +*DefaultApi* | [**get_compressed_account_proof_post**](docs/DefaultApi.md#get_compressed_account_proof_post) | **POST** /getCompressedAccountProof | +*DefaultApi* | [**get_compressed_accounts_by_owner_post**](docs/DefaultApi.md#get_compressed_accounts_by_owner_post) | **POST** /getCompressedAccountsByOwner | +*DefaultApi* | [**get_compressed_balance_by_owner_post**](docs/DefaultApi.md#get_compressed_balance_by_owner_post) | **POST** /getCompressedBalanceByOwner | +*DefaultApi* | [**get_compressed_balance_post**](docs/DefaultApi.md#get_compressed_balance_post) | **POST** /getCompressedBalance | +*DefaultApi* | [**get_compressed_token_account_balance_post**](docs/DefaultApi.md#get_compressed_token_account_balance_post) | **POST** /getCompressedTokenAccountBalance | +*DefaultApi* | [**get_compressed_token_accounts_by_delegate_post**](docs/DefaultApi.md#get_compressed_token_accounts_by_delegate_post) | **POST** /getCompressedTokenAccountsByDelegate | +*DefaultApi* | [**get_compressed_token_accounts_by_owner_post**](docs/DefaultApi.md#get_compressed_token_accounts_by_owner_post) | **POST** /getCompressedTokenAccountsByOwner | +*DefaultApi* | [**get_compressed_token_balances_by_owner_post**](docs/DefaultApi.md#get_compressed_token_balances_by_owner_post) | **POST** /getCompressedTokenBalancesByOwner | +*DefaultApi* | [**get_compression_signatures_for_account_post**](docs/DefaultApi.md#get_compression_signatures_for_account_post) | **POST** /getCompressionSignaturesForAccount | +*DefaultApi* | [**get_compression_signatures_for_address_post**](docs/DefaultApi.md#get_compression_signatures_for_address_post) | **POST** /getCompressionSignaturesForAddress | +*DefaultApi* | [**get_compression_signatures_for_owner_post**](docs/DefaultApi.md#get_compression_signatures_for_owner_post) | **POST** /getCompressionSignaturesForOwner | +*DefaultApi* | [**get_compression_signatures_for_token_owner_post**](docs/DefaultApi.md#get_compression_signatures_for_token_owner_post) | **POST** /getCompressionSignaturesForTokenOwner | +*DefaultApi* | [**get_indexer_health_post**](docs/DefaultApi.md#get_indexer_health_post) | **POST** /getIndexerHealth | +*DefaultApi* | [**get_indexer_slot_post**](docs/DefaultApi.md#get_indexer_slot_post) | **POST** /getIndexerSlot | +*DefaultApi* | [**get_latest_compression_signatures_post**](docs/DefaultApi.md#get_latest_compression_signatures_post) | **POST** /getLatestCompressionSignatures | +*DefaultApi* | [**get_latest_non_voting_signatures_post**](docs/DefaultApi.md#get_latest_non_voting_signatures_post) | **POST** /getLatestNonVotingSignatures | +*DefaultApi* | [**get_multiple_compressed_account_proofs_post**](docs/DefaultApi.md#get_multiple_compressed_account_proofs_post) | **POST** /getMultipleCompressedAccountProofs | +*DefaultApi* | [**get_multiple_compressed_accounts_post**](docs/DefaultApi.md#get_multiple_compressed_accounts_post) | **POST** /getMultipleCompressedAccounts | +*DefaultApi* | [**get_transaction_with_compression_info_post**](docs/DefaultApi.md#get_transaction_with_compression_info_post) | **POST** /getTransactionWithCompressionInfo | +*DefaultApi* | [**get_validity_proof_post**](docs/DefaultApi.md#get_validity_proof_post) | **POST** /getValidityProof | + + +## Documentation For Models + + - [Account](docs/Account.md) + - [AccountData](docs/AccountData.md) + - [AccountList](docs/AccountList.md) + - [AccountState](docs/AccountState.md) + - [AccountWithOptionalTokenData](docs/AccountWithOptionalTokenData.md) + - [CompressedProof](docs/CompressedProof.md) + - [CompressedProofWithContext](docs/CompressedProofWithContext.md) + - [Context](docs/Context.md) + - [GetCompressedAccountPost200Response](docs/GetCompressedAccountPost200Response.md) + - [GetCompressedAccountPost200ResponseError](docs/GetCompressedAccountPost200ResponseError.md) + - [GetCompressedAccountPost200ResponseResult](docs/GetCompressedAccountPost200ResponseResult.md) + - [GetCompressedAccountPost429Response](docs/GetCompressedAccountPost429Response.md) + - [GetCompressedAccountPostRequest](docs/GetCompressedAccountPostRequest.md) + - [GetCompressedAccountPostRequestParams](docs/GetCompressedAccountPostRequestParams.md) + - [GetCompressedAccountProofPost200Response](docs/GetCompressedAccountProofPost200Response.md) + - [GetCompressedAccountProofPost200ResponseResult](docs/GetCompressedAccountProofPost200ResponseResult.md) + - [GetCompressedAccountProofPostRequest](docs/GetCompressedAccountProofPostRequest.md) + - [GetCompressedAccountProofPostRequestParams](docs/GetCompressedAccountProofPostRequestParams.md) + - [GetCompressedAccountsByOwnerPost200Response](docs/GetCompressedAccountsByOwnerPost200Response.md) + - [GetCompressedAccountsByOwnerPost200ResponseResult](docs/GetCompressedAccountsByOwnerPost200ResponseResult.md) + - [GetCompressedAccountsByOwnerPostRequest](docs/GetCompressedAccountsByOwnerPostRequest.md) + - [GetCompressedAccountsByOwnerPostRequestParams](docs/GetCompressedAccountsByOwnerPostRequestParams.md) + - [GetCompressedBalanceByOwnerPostRequest](docs/GetCompressedBalanceByOwnerPostRequest.md) + - [GetCompressedBalanceByOwnerPostRequestParams](docs/GetCompressedBalanceByOwnerPostRequestParams.md) + - [GetCompressedBalancePost200Response](docs/GetCompressedBalancePost200Response.md) + - [GetCompressedBalancePost200ResponseResult](docs/GetCompressedBalancePost200ResponseResult.md) + - [GetCompressedBalancePostRequest](docs/GetCompressedBalancePostRequest.md) + - [GetCompressedTokenAccountBalancePost200Response](docs/GetCompressedTokenAccountBalancePost200Response.md) + - [GetCompressedTokenAccountBalancePost200ResponseResult](docs/GetCompressedTokenAccountBalancePost200ResponseResult.md) + - [GetCompressedTokenAccountBalancePostRequest](docs/GetCompressedTokenAccountBalancePostRequest.md) + - [GetCompressedTokenAccountsByDelegatePost200Response](docs/GetCompressedTokenAccountsByDelegatePost200Response.md) + - [GetCompressedTokenAccountsByDelegatePost200ResponseResult](docs/GetCompressedTokenAccountsByDelegatePost200ResponseResult.md) + - [GetCompressedTokenAccountsByDelegatePostRequest](docs/GetCompressedTokenAccountsByDelegatePostRequest.md) + - [GetCompressedTokenAccountsByDelegatePostRequestParams](docs/GetCompressedTokenAccountsByDelegatePostRequestParams.md) + - [GetCompressedTokenAccountsByOwnerPostRequest](docs/GetCompressedTokenAccountsByOwnerPostRequest.md) + - [GetCompressedTokenAccountsByOwnerPostRequestParams](docs/GetCompressedTokenAccountsByOwnerPostRequestParams.md) + - [GetCompressedTokenBalancesByOwnerPost200Response](docs/GetCompressedTokenBalancesByOwnerPost200Response.md) + - [GetCompressedTokenBalancesByOwnerPost200ResponseResult](docs/GetCompressedTokenBalancesByOwnerPost200ResponseResult.md) + - [GetCompressedTokenBalancesByOwnerPostRequest](docs/GetCompressedTokenBalancesByOwnerPostRequest.md) + - [GetCompressedTokenBalancesByOwnerPostRequestParams](docs/GetCompressedTokenBalancesByOwnerPostRequestParams.md) + - [GetCompressionSignaturesForAccountPost200Response](docs/GetCompressionSignaturesForAccountPost200Response.md) + - [GetCompressionSignaturesForAccountPost200ResponseResult](docs/GetCompressionSignaturesForAccountPost200ResponseResult.md) + - [GetCompressionSignaturesForAccountPostRequest](docs/GetCompressionSignaturesForAccountPostRequest.md) + - [GetCompressionSignaturesForAddressPost200Response](docs/GetCompressionSignaturesForAddressPost200Response.md) + - [GetCompressionSignaturesForAddressPost200ResponseResult](docs/GetCompressionSignaturesForAddressPost200ResponseResult.md) + - [GetCompressionSignaturesForAddressPostRequest](docs/GetCompressionSignaturesForAddressPostRequest.md) + - [GetCompressionSignaturesForAddressPostRequestParams](docs/GetCompressionSignaturesForAddressPostRequestParams.md) + - [GetCompressionSignaturesForOwnerPostRequest](docs/GetCompressionSignaturesForOwnerPostRequest.md) + - [GetCompressionSignaturesForOwnerPostRequestParams](docs/GetCompressionSignaturesForOwnerPostRequestParams.md) + - [GetCompressionSignaturesForTokenOwnerPostRequest](docs/GetCompressionSignaturesForTokenOwnerPostRequest.md) + - [GetIndexerHealthPost200Response](docs/GetIndexerHealthPost200Response.md) + - [GetIndexerHealthPostRequest](docs/GetIndexerHealthPostRequest.md) + - [GetIndexerSlotPost200Response](docs/GetIndexerSlotPost200Response.md) + - [GetIndexerSlotPostRequest](docs/GetIndexerSlotPostRequest.md) + - [GetLatestCompressionSignaturesPostRequest](docs/GetLatestCompressionSignaturesPostRequest.md) + - [GetLatestCompressionSignaturesPostRequestParams](docs/GetLatestCompressionSignaturesPostRequestParams.md) + - [GetLatestNonVotingSignaturesPostRequest](docs/GetLatestNonVotingSignaturesPostRequest.md) + - [GetMultipleCompressedAccountProofsPost200Response](docs/GetMultipleCompressedAccountProofsPost200Response.md) + - [GetMultipleCompressedAccountProofsPost200ResponseResult](docs/GetMultipleCompressedAccountProofsPost200ResponseResult.md) + - [GetMultipleCompressedAccountProofsPostRequest](docs/GetMultipleCompressedAccountProofsPostRequest.md) + - [GetMultipleCompressedAccountsPost200Response](docs/GetMultipleCompressedAccountsPost200Response.md) + - [GetMultipleCompressedAccountsPost200ResponseResult](docs/GetMultipleCompressedAccountsPost200ResponseResult.md) + - [GetMultipleCompressedAccountsPostRequest](docs/GetMultipleCompressedAccountsPostRequest.md) + - [GetMultipleCompressedAccountsPostRequestParams](docs/GetMultipleCompressedAccountsPostRequestParams.md) + - [GetTransactionWithCompressionInfoPost200Response](docs/GetTransactionWithCompressionInfoPost200Response.md) + - [GetTransactionWithCompressionInfoPost200ResponseResult](docs/GetTransactionWithCompressionInfoPost200ResponseResult.md) + - [GetTransactionWithCompressionInfoPost200ResponseResultCompressionInfo](docs/GetTransactionWithCompressionInfoPost200ResponseResultCompressionInfo.md) + - [GetTransactionWithCompressionInfoPostRequest](docs/GetTransactionWithCompressionInfoPostRequest.md) + - [GetTransactionWithCompressionInfoPostRequestParams](docs/GetTransactionWithCompressionInfoPostRequestParams.md) + - [GetValidityProofPost200Response](docs/GetValidityProofPost200Response.md) + - [GetValidityProofPost200ResponseResult](docs/GetValidityProofPost200ResponseResult.md) + - [GetValidityProofPostRequest](docs/GetValidityProofPostRequest.md) + - [MerkleProofWithContext](docs/MerkleProofWithContext.md) + - [PaginatedAccountList](docs/PaginatedAccountList.md) + - [PaginatedSignatureInfoList](docs/PaginatedSignatureInfoList.md) + - [SignatureInfo](docs/SignatureInfo.md) + - [SignatureInfoList](docs/SignatureInfoList.md) + - [TokenAcccount](docs/TokenAcccount.md) + - [TokenAccountBalance](docs/TokenAccountBalance.md) + - [TokenAccountList](docs/TokenAccountList.md) + - [TokenBalance](docs/TokenBalance.md) + - [TokenBalanceList](docs/TokenBalanceList.md) + - [TokenData](docs/TokenData.md) + + +To get access to the crate's generated documentation, use: + +``` +cargo doc --open +``` + +## Author + + + diff --git a/photon-api/docs/Account.md b/photon-api/docs/Account.md new file mode 100644 index 0000000000..47f543fcfa --- /dev/null +++ b/photon-api/docs/Account.md @@ -0,0 +1,19 @@ +# Account + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**address** | Option<**String**> | A Solana public key represented as a base58 string. | [optional][default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] +**data** | Option<[**models::AccountData**](AccountData.md)> | | [optional] +**hash** | **String** | A 32-byte hash represented as a base58 string. | +**lamports** | **i32** | | [default to 100] +**leaf_index** | **i32** | | [default to 100] +**owner** | **String** | A Solana public key represented as a base58 string. | [default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] +**seq** | Option<**i32**> | | [optional][default to 100] +**slot_created** | **i32** | | [default to 100] +**tree** | **String** | A Solana public key represented as a base58 string. | [default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/AccountData.md b/photon-api/docs/AccountData.md new file mode 100644 index 0000000000..627206a84b --- /dev/null +++ b/photon-api/docs/AccountData.md @@ -0,0 +1,13 @@ +# AccountData + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | **String** | A base 64 encoded string. | [default to SGVsbG8sIFdvcmxkIQ==] +**data_hash** | **String** | A 32-byte hash represented as a base58 string. | +**discriminator** | **i32** | | [default to 100] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/AccountList.md b/photon-api/docs/AccountList.md new file mode 100644 index 0000000000..d109bb869f --- /dev/null +++ b/photon-api/docs/AccountList.md @@ -0,0 +1,11 @@ +# AccountList + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**items** | [**Vec**](Account.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/AccountState.md b/photon-api/docs/AccountState.md new file mode 100644 index 0000000000..d678e865ef --- /dev/null +++ b/photon-api/docs/AccountState.md @@ -0,0 +1,13 @@ +# AccountState + +## Enum Variants + +| Name | Value | +|---- | -----| +| Initialized | initialized | +| Frozen | frozen | + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/AccountWithOptionalTokenData.md b/photon-api/docs/AccountWithOptionalTokenData.md new file mode 100644 index 0000000000..15b462030b --- /dev/null +++ b/photon-api/docs/AccountWithOptionalTokenData.md @@ -0,0 +1,12 @@ +# AccountWithOptionalTokenData + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**account** | [**models::Account**](Account.md) | | +**optional_token_data** | Option<[**models::TokenData**](TokenData.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/CompressedProof.md b/photon-api/docs/CompressedProof.md new file mode 100644 index 0000000000..a5c5a1c810 --- /dev/null +++ b/photon-api/docs/CompressedProof.md @@ -0,0 +1,13 @@ +# CompressedProof + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**a** | [**std::path::PathBuf**](std::path::PathBuf.md) | | +**b** | [**std::path::PathBuf**](std::path::PathBuf.md) | | +**c** | [**std::path::PathBuf**](std::path::PathBuf.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/CompressedProofWithContext.md b/photon-api/docs/CompressedProofWithContext.md new file mode 100644 index 0000000000..f04b7f77d5 --- /dev/null +++ b/photon-api/docs/CompressedProofWithContext.md @@ -0,0 +1,16 @@ +# CompressedProofWithContext + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**compressed_proof** | [**models::CompressedProof**](CompressedProof.md) | | +**leaf_indices** | **Vec** | | +**leaves** | **Vec** | | +**merkle_trees** | **Vec** | | +**root_indices** | **Vec** | | +**roots** | **Vec** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/Context.md b/photon-api/docs/Context.md new file mode 100644 index 0000000000..cba933ca87 --- /dev/null +++ b/photon-api/docs/Context.md @@ -0,0 +1,11 @@ +# Context + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**slot** | **i32** | | [default to 100] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/DefaultApi.md b/photon-api/docs/DefaultApi.md new file mode 100644 index 0000000000..504133ccf3 --- /dev/null +++ b/photon-api/docs/DefaultApi.md @@ -0,0 +1,617 @@ +# \DefaultApi + +All URIs are relative to *http://127.0.0.1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_compressed_account_post**](DefaultApi.md#get_compressed_account_post) | **POST** /getCompressedAccount | +[**get_compressed_account_proof_post**](DefaultApi.md#get_compressed_account_proof_post) | **POST** /getCompressedAccountProof | +[**get_compressed_accounts_by_owner_post**](DefaultApi.md#get_compressed_accounts_by_owner_post) | **POST** /getCompressedAccountsByOwner | +[**get_compressed_balance_by_owner_post**](DefaultApi.md#get_compressed_balance_by_owner_post) | **POST** /getCompressedBalanceByOwner | +[**get_compressed_balance_post**](DefaultApi.md#get_compressed_balance_post) | **POST** /getCompressedBalance | +[**get_compressed_token_account_balance_post**](DefaultApi.md#get_compressed_token_account_balance_post) | **POST** /getCompressedTokenAccountBalance | +[**get_compressed_token_accounts_by_delegate_post**](DefaultApi.md#get_compressed_token_accounts_by_delegate_post) | **POST** /getCompressedTokenAccountsByDelegate | +[**get_compressed_token_accounts_by_owner_post**](DefaultApi.md#get_compressed_token_accounts_by_owner_post) | **POST** /getCompressedTokenAccountsByOwner | +[**get_compressed_token_balances_by_owner_post**](DefaultApi.md#get_compressed_token_balances_by_owner_post) | **POST** /getCompressedTokenBalancesByOwner | +[**get_compression_signatures_for_account_post**](DefaultApi.md#get_compression_signatures_for_account_post) | **POST** /getCompressionSignaturesForAccount | +[**get_compression_signatures_for_address_post**](DefaultApi.md#get_compression_signatures_for_address_post) | **POST** /getCompressionSignaturesForAddress | +[**get_compression_signatures_for_owner_post**](DefaultApi.md#get_compression_signatures_for_owner_post) | **POST** /getCompressionSignaturesForOwner | +[**get_compression_signatures_for_token_owner_post**](DefaultApi.md#get_compression_signatures_for_token_owner_post) | **POST** /getCompressionSignaturesForTokenOwner | +[**get_indexer_health_post**](DefaultApi.md#get_indexer_health_post) | **POST** /getIndexerHealth | +[**get_indexer_slot_post**](DefaultApi.md#get_indexer_slot_post) | **POST** /getIndexerSlot | +[**get_latest_compression_signatures_post**](DefaultApi.md#get_latest_compression_signatures_post) | **POST** /getLatestCompressionSignatures | +[**get_latest_non_voting_signatures_post**](DefaultApi.md#get_latest_non_voting_signatures_post) | **POST** /getLatestNonVotingSignatures | +[**get_multiple_compressed_account_proofs_post**](DefaultApi.md#get_multiple_compressed_account_proofs_post) | **POST** /getMultipleCompressedAccountProofs | +[**get_multiple_compressed_accounts_post**](DefaultApi.md#get_multiple_compressed_accounts_post) | **POST** /getMultipleCompressedAccounts | +[**get_transaction_with_compression_info_post**](DefaultApi.md#get_transaction_with_compression_info_post) | **POST** /getTransactionWithCompressionInfo | +[**get_validity_proof_post**](DefaultApi.md#get_validity_proof_post) | **POST** /getValidityProof | + + + +## get_compressed_account_post + +> models::GetCompressedAccountPost200Response get_compressed_account_post(get_compressed_account_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_compressed_account_post_request** | [**GetCompressedAccountPostRequest**](GetCompressedAccountPostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressedAccountPost200Response**](_getCompressedAccount_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_compressed_account_proof_post + +> models::GetCompressedAccountProofPost200Response get_compressed_account_proof_post(get_compressed_account_proof_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_compressed_account_proof_post_request** | [**GetCompressedAccountProofPostRequest**](GetCompressedAccountProofPostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressedAccountProofPost200Response**](_getCompressedAccountProof_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_compressed_accounts_by_owner_post + +> models::GetCompressedAccountsByOwnerPost200Response get_compressed_accounts_by_owner_post(get_compressed_accounts_by_owner_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_compressed_accounts_by_owner_post_request** | [**GetCompressedAccountsByOwnerPostRequest**](GetCompressedAccountsByOwnerPostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressedAccountsByOwnerPost200Response**](_getCompressedAccountsByOwner_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_compressed_balance_by_owner_post + +> models::GetCompressedBalancePost200Response get_compressed_balance_by_owner_post(get_compressed_balance_by_owner_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_compressed_balance_by_owner_post_request** | [**GetCompressedBalanceByOwnerPostRequest**](GetCompressedBalanceByOwnerPostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressedBalancePost200Response**](_getCompressedBalance_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_compressed_balance_post + +> models::GetCompressedBalancePost200Response get_compressed_balance_post(get_compressed_balance_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_compressed_balance_post_request** | [**GetCompressedBalancePostRequest**](GetCompressedBalancePostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressedBalancePost200Response**](_getCompressedBalance_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_compressed_token_account_balance_post + +> models::GetCompressedTokenAccountBalancePost200Response get_compressed_token_account_balance_post(get_compressed_token_account_balance_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_compressed_token_account_balance_post_request** | [**GetCompressedTokenAccountBalancePostRequest**](GetCompressedTokenAccountBalancePostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressedTokenAccountBalancePost200Response**](_getCompressedTokenAccountBalance_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_compressed_token_accounts_by_delegate_post + +> models::GetCompressedTokenAccountsByDelegatePost200Response get_compressed_token_accounts_by_delegate_post(get_compressed_token_accounts_by_delegate_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_compressed_token_accounts_by_delegate_post_request** | [**GetCompressedTokenAccountsByDelegatePostRequest**](GetCompressedTokenAccountsByDelegatePostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressedTokenAccountsByDelegatePost200Response**](_getCompressedTokenAccountsByDelegate_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_compressed_token_accounts_by_owner_post + +> models::GetCompressedTokenAccountsByDelegatePost200Response get_compressed_token_accounts_by_owner_post(get_compressed_token_accounts_by_owner_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_compressed_token_accounts_by_owner_post_request** | [**GetCompressedTokenAccountsByOwnerPostRequest**](GetCompressedTokenAccountsByOwnerPostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressedTokenAccountsByDelegatePost200Response**](_getCompressedTokenAccountsByDelegate_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_compressed_token_balances_by_owner_post + +> models::GetCompressedTokenBalancesByOwnerPost200Response get_compressed_token_balances_by_owner_post(get_compressed_token_balances_by_owner_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_compressed_token_balances_by_owner_post_request** | [**GetCompressedTokenBalancesByOwnerPostRequest**](GetCompressedTokenBalancesByOwnerPostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressedTokenBalancesByOwnerPost200Response**](_getCompressedTokenBalancesByOwner_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_compression_signatures_for_account_post + +> models::GetCompressionSignaturesForAccountPost200Response get_compression_signatures_for_account_post(get_compression_signatures_for_account_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_compression_signatures_for_account_post_request** | [**GetCompressionSignaturesForAccountPostRequest**](GetCompressionSignaturesForAccountPostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressionSignaturesForAccountPost200Response**](_getCompressionSignaturesForAccount_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_compression_signatures_for_address_post + +> models::GetCompressionSignaturesForAddressPost200Response get_compression_signatures_for_address_post(get_compression_signatures_for_address_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_compression_signatures_for_address_post_request** | [**GetCompressionSignaturesForAddressPostRequest**](GetCompressionSignaturesForAddressPostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressionSignaturesForAddressPost200Response**](_getCompressionSignaturesForAddress_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_compression_signatures_for_owner_post + +> models::GetCompressionSignaturesForAddressPost200Response get_compression_signatures_for_owner_post(get_compression_signatures_for_owner_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_compression_signatures_for_owner_post_request** | [**GetCompressionSignaturesForOwnerPostRequest**](GetCompressionSignaturesForOwnerPostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressionSignaturesForAddressPost200Response**](_getCompressionSignaturesForAddress_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_compression_signatures_for_token_owner_post + +> models::GetCompressionSignaturesForAddressPost200Response get_compression_signatures_for_token_owner_post(get_compression_signatures_for_token_owner_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_compression_signatures_for_token_owner_post_request** | [**GetCompressionSignaturesForTokenOwnerPostRequest**](GetCompressionSignaturesForTokenOwnerPostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressionSignaturesForAddressPost200Response**](_getCompressionSignaturesForAddress_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_indexer_health_post + +> models::GetIndexerHealthPost200Response get_indexer_health_post(get_indexer_health_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_indexer_health_post_request** | [**GetIndexerHealthPostRequest**](GetIndexerHealthPostRequest.md) | | [required] | + +### Return type + +[**models::GetIndexerHealthPost200Response**](_getIndexerHealth_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_indexer_slot_post + +> models::GetIndexerSlotPost200Response get_indexer_slot_post(get_indexer_slot_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_indexer_slot_post_request** | [**GetIndexerSlotPostRequest**](GetIndexerSlotPostRequest.md) | | [required] | + +### Return type + +[**models::GetIndexerSlotPost200Response**](_getIndexerSlot_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_latest_compression_signatures_post + +> models::GetCompressionSignaturesForAddressPost200Response get_latest_compression_signatures_post(get_latest_compression_signatures_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_latest_compression_signatures_post_request** | [**GetLatestCompressionSignaturesPostRequest**](GetLatestCompressionSignaturesPostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressionSignaturesForAddressPost200Response**](_getCompressionSignaturesForAddress_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_latest_non_voting_signatures_post + +> models::GetCompressionSignaturesForAccountPost200Response get_latest_non_voting_signatures_post(get_latest_non_voting_signatures_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_latest_non_voting_signatures_post_request** | [**GetLatestNonVotingSignaturesPostRequest**](GetLatestNonVotingSignaturesPostRequest.md) | | [required] | + +### Return type + +[**models::GetCompressionSignaturesForAccountPost200Response**](_getCompressionSignaturesForAccount_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_multiple_compressed_account_proofs_post + +> models::GetMultipleCompressedAccountProofsPost200Response get_multiple_compressed_account_proofs_post(get_multiple_compressed_account_proofs_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_multiple_compressed_account_proofs_post_request** | [**GetMultipleCompressedAccountProofsPostRequest**](GetMultipleCompressedAccountProofsPostRequest.md) | | [required] | + +### Return type + +[**models::GetMultipleCompressedAccountProofsPost200Response**](_getMultipleCompressedAccountProofs_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_multiple_compressed_accounts_post + +> models::GetMultipleCompressedAccountsPost200Response get_multiple_compressed_accounts_post(get_multiple_compressed_accounts_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_multiple_compressed_accounts_post_request** | [**GetMultipleCompressedAccountsPostRequest**](GetMultipleCompressedAccountsPostRequest.md) | | [required] | + +### Return type + +[**models::GetMultipleCompressedAccountsPost200Response**](_getMultipleCompressedAccounts_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_transaction_with_compression_info_post + +> models::GetTransactionWithCompressionInfoPost200Response get_transaction_with_compression_info_post(get_transaction_with_compression_info_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_transaction_with_compression_info_post_request** | [**GetTransactionWithCompressionInfoPostRequest**](GetTransactionWithCompressionInfoPostRequest.md) | | [required] | + +### Return type + +[**models::GetTransactionWithCompressionInfoPost200Response**](_getTransactionWithCompressionInfo_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## get_validity_proof_post + +> models::GetValidityProofPost200Response get_validity_proof_post(get_validity_proof_post_request) + + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**get_validity_proof_post_request** | [**GetValidityProofPostRequest**](GetValidityProofPostRequest.md) | | [required] | + +### Return type + +[**models::GetValidityProofPost200Response**](_getValidityProof_post_200_response.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/photon-api/docs/GetCompressedAccountPost200Response.md b/photon-api/docs/GetCompressedAccountPost200Response.md new file mode 100644 index 0000000000..6300a264af --- /dev/null +++ b/photon-api/docs/GetCompressedAccountPost200Response.md @@ -0,0 +1,14 @@ +# GetCompressedAccountPost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<[**models::GetCompressedAccountPost200ResponseResult**](_getCompressedAccount_post_200_response_result.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedAccountPost200ResponseError.md b/photon-api/docs/GetCompressedAccountPost200ResponseError.md new file mode 100644 index 0000000000..5042ab9a0e --- /dev/null +++ b/photon-api/docs/GetCompressedAccountPost200ResponseError.md @@ -0,0 +1,12 @@ +# GetCompressedAccountPost200ResponseError + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**code** | Option<**i32**> | | [optional] +**message** | Option<**String**> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedAccountPost200ResponseResult.md b/photon-api/docs/GetCompressedAccountPost200ResponseResult.md new file mode 100644 index 0000000000..d2cc82343e --- /dev/null +++ b/photon-api/docs/GetCompressedAccountPost200ResponseResult.md @@ -0,0 +1,12 @@ +# GetCompressedAccountPost200ResponseResult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context** | [**models::Context**](Context.md) | | +**value** | [**models::Account**](Account.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedAccountPost429Response.md b/photon-api/docs/GetCompressedAccountPost429Response.md new file mode 100644 index 0000000000..f965f7023b --- /dev/null +++ b/photon-api/docs/GetCompressedAccountPost429Response.md @@ -0,0 +1,13 @@ +# GetCompressedAccountPost429Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | Option<**String**> | | [optional] +**jsonrpc** | Option<**String**> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedAccountPostRequest.md b/photon-api/docs/GetCompressedAccountPostRequest.md new file mode 100644 index 0000000000..a494d555ef --- /dev/null +++ b/photon-api/docs/GetCompressedAccountPostRequest.md @@ -0,0 +1,14 @@ +# GetCompressedAccountPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetCompressedAccountPostRequestParams**](_getCompressedAccount_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedAccountPostRequestParams.md b/photon-api/docs/GetCompressedAccountPostRequestParams.md new file mode 100644 index 0000000000..1389523feb --- /dev/null +++ b/photon-api/docs/GetCompressedAccountPostRequestParams.md @@ -0,0 +1,12 @@ +# GetCompressedAccountPostRequestParams + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**address** | Option<**String**> | A Solana public key represented as a base58 string. | [optional] +**hash** | Option<**String**> | A 32-byte hash represented as a base58 string. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedAccountProofPost200Response.md b/photon-api/docs/GetCompressedAccountProofPost200Response.md new file mode 100644 index 0000000000..4886b82071 --- /dev/null +++ b/photon-api/docs/GetCompressedAccountProofPost200Response.md @@ -0,0 +1,14 @@ +# GetCompressedAccountProofPost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<[**models::GetCompressedAccountProofPost200ResponseResult**](_getCompressedAccountProof_post_200_response_result.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedAccountProofPost200ResponseResult.md b/photon-api/docs/GetCompressedAccountProofPost200ResponseResult.md new file mode 100644 index 0000000000..e1b9c40548 --- /dev/null +++ b/photon-api/docs/GetCompressedAccountProofPost200ResponseResult.md @@ -0,0 +1,12 @@ +# GetCompressedAccountProofPost200ResponseResult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context** | [**models::Context**](Context.md) | | +**value** | [**models::MerkleProofWithContext**](MerkleProofWithContext.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedAccountProofPostRequest.md b/photon-api/docs/GetCompressedAccountProofPostRequest.md new file mode 100644 index 0000000000..d644c85e3a --- /dev/null +++ b/photon-api/docs/GetCompressedAccountProofPostRequest.md @@ -0,0 +1,14 @@ +# GetCompressedAccountProofPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetCompressedAccountProofPostRequestParams**](_getCompressedAccountProof_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedAccountProofPostRequestParams.md b/photon-api/docs/GetCompressedAccountProofPostRequestParams.md new file mode 100644 index 0000000000..373cd706ea --- /dev/null +++ b/photon-api/docs/GetCompressedAccountProofPostRequestParams.md @@ -0,0 +1,11 @@ +# GetCompressedAccountProofPostRequestParams + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**hash** | **String** | A 32-byte hash represented as a base58 string. | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedAccountsByOwnerPost200Response.md b/photon-api/docs/GetCompressedAccountsByOwnerPost200Response.md new file mode 100644 index 0000000000..6e3d2e77b5 --- /dev/null +++ b/photon-api/docs/GetCompressedAccountsByOwnerPost200Response.md @@ -0,0 +1,14 @@ +# GetCompressedAccountsByOwnerPost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<[**models::GetCompressedAccountsByOwnerPost200ResponseResult**](_getCompressedAccountsByOwner_post_200_response_result.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedAccountsByOwnerPost200ResponseResult.md b/photon-api/docs/GetCompressedAccountsByOwnerPost200ResponseResult.md new file mode 100644 index 0000000000..94ddeda3c6 --- /dev/null +++ b/photon-api/docs/GetCompressedAccountsByOwnerPost200ResponseResult.md @@ -0,0 +1,12 @@ +# GetCompressedAccountsByOwnerPost200ResponseResult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context** | [**models::Context**](Context.md) | | +**value** | [**models::PaginatedAccountList**](PaginatedAccountList.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedAccountsByOwnerPostRequest.md b/photon-api/docs/GetCompressedAccountsByOwnerPostRequest.md new file mode 100644 index 0000000000..c71cd517b4 --- /dev/null +++ b/photon-api/docs/GetCompressedAccountsByOwnerPostRequest.md @@ -0,0 +1,14 @@ +# GetCompressedAccountsByOwnerPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetCompressedAccountsByOwnerPostRequestParams**](_getCompressedAccountsByOwner_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedAccountsByOwnerPostRequestParams.md b/photon-api/docs/GetCompressedAccountsByOwnerPostRequestParams.md new file mode 100644 index 0000000000..7131b76790 --- /dev/null +++ b/photon-api/docs/GetCompressedAccountsByOwnerPostRequestParams.md @@ -0,0 +1,13 @@ +# GetCompressedAccountsByOwnerPostRequestParams + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cursor** | Option<**String**> | A 32-byte hash represented as a base58 string. | [optional] +**limit** | Option<**i32**> | | [optional] +**owner** | **String** | A Solana public key represented as a base58 string. | [default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedBalanceByOwnerPostRequest.md b/photon-api/docs/GetCompressedBalanceByOwnerPostRequest.md new file mode 100644 index 0000000000..e6d0e16464 --- /dev/null +++ b/photon-api/docs/GetCompressedBalanceByOwnerPostRequest.md @@ -0,0 +1,14 @@ +# GetCompressedBalanceByOwnerPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetCompressedBalanceByOwnerPostRequestParams**](_getCompressedBalanceByOwner_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedBalanceByOwnerPostRequestParams.md b/photon-api/docs/GetCompressedBalanceByOwnerPostRequestParams.md new file mode 100644 index 0000000000..776d621cbb --- /dev/null +++ b/photon-api/docs/GetCompressedBalanceByOwnerPostRequestParams.md @@ -0,0 +1,11 @@ +# GetCompressedBalanceByOwnerPostRequestParams + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**owner** | **String** | A Solana public key represented as a base58 string. | [default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedBalancePost200Response.md b/photon-api/docs/GetCompressedBalancePost200Response.md new file mode 100644 index 0000000000..a622bf8782 --- /dev/null +++ b/photon-api/docs/GetCompressedBalancePost200Response.md @@ -0,0 +1,14 @@ +# GetCompressedBalancePost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<[**models::GetCompressedBalancePost200ResponseResult**](_getCompressedBalance_post_200_response_result.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedBalancePost200ResponseResult.md b/photon-api/docs/GetCompressedBalancePost200ResponseResult.md new file mode 100644 index 0000000000..26187ab8aa --- /dev/null +++ b/photon-api/docs/GetCompressedBalancePost200ResponseResult.md @@ -0,0 +1,12 @@ +# GetCompressedBalancePost200ResponseResult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context** | [**models::Context**](Context.md) | | +**value** | **i32** | | [default to 100] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedBalancePostRequest.md b/photon-api/docs/GetCompressedBalancePostRequest.md new file mode 100644 index 0000000000..099e772318 --- /dev/null +++ b/photon-api/docs/GetCompressedBalancePostRequest.md @@ -0,0 +1,14 @@ +# GetCompressedBalancePostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetCompressedAccountPostRequestParams**](_getCompressedAccount_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedTokenAccountBalancePost200Response.md b/photon-api/docs/GetCompressedTokenAccountBalancePost200Response.md new file mode 100644 index 0000000000..985d665bbb --- /dev/null +++ b/photon-api/docs/GetCompressedTokenAccountBalancePost200Response.md @@ -0,0 +1,14 @@ +# GetCompressedTokenAccountBalancePost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<[**models::GetCompressedTokenAccountBalancePost200ResponseResult**](_getCompressedTokenAccountBalance_post_200_response_result.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedTokenAccountBalancePost200ResponseResult.md b/photon-api/docs/GetCompressedTokenAccountBalancePost200ResponseResult.md new file mode 100644 index 0000000000..1f576d0411 --- /dev/null +++ b/photon-api/docs/GetCompressedTokenAccountBalancePost200ResponseResult.md @@ -0,0 +1,12 @@ +# GetCompressedTokenAccountBalancePost200ResponseResult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context** | [**models::Context**](Context.md) | | +**value** | [**models::TokenAccountBalance**](TokenAccountBalance.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedTokenAccountBalancePostRequest.md b/photon-api/docs/GetCompressedTokenAccountBalancePostRequest.md new file mode 100644 index 0000000000..2330b1dd74 --- /dev/null +++ b/photon-api/docs/GetCompressedTokenAccountBalancePostRequest.md @@ -0,0 +1,14 @@ +# GetCompressedTokenAccountBalancePostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetCompressedAccountPostRequestParams**](_getCompressedAccount_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedTokenAccountsByDelegatePost200Response.md b/photon-api/docs/GetCompressedTokenAccountsByDelegatePost200Response.md new file mode 100644 index 0000000000..aace91d72f --- /dev/null +++ b/photon-api/docs/GetCompressedTokenAccountsByDelegatePost200Response.md @@ -0,0 +1,14 @@ +# GetCompressedTokenAccountsByDelegatePost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<[**models::GetCompressedTokenAccountsByDelegatePost200ResponseResult**](_getCompressedTokenAccountsByDelegate_post_200_response_result.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedTokenAccountsByDelegatePost200ResponseResult.md b/photon-api/docs/GetCompressedTokenAccountsByDelegatePost200ResponseResult.md new file mode 100644 index 0000000000..753fad62b1 --- /dev/null +++ b/photon-api/docs/GetCompressedTokenAccountsByDelegatePost200ResponseResult.md @@ -0,0 +1,12 @@ +# GetCompressedTokenAccountsByDelegatePost200ResponseResult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context** | [**models::Context**](Context.md) | | +**value** | [**models::TokenAccountList**](TokenAccountList.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedTokenAccountsByDelegatePostRequest.md b/photon-api/docs/GetCompressedTokenAccountsByDelegatePostRequest.md new file mode 100644 index 0000000000..c6ac52cabf --- /dev/null +++ b/photon-api/docs/GetCompressedTokenAccountsByDelegatePostRequest.md @@ -0,0 +1,14 @@ +# GetCompressedTokenAccountsByDelegatePostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetCompressedTokenAccountsByDelegatePostRequestParams**](_getCompressedTokenAccountsByDelegate_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedTokenAccountsByDelegatePostRequestParams.md b/photon-api/docs/GetCompressedTokenAccountsByDelegatePostRequestParams.md new file mode 100644 index 0000000000..d343fc4968 --- /dev/null +++ b/photon-api/docs/GetCompressedTokenAccountsByDelegatePostRequestParams.md @@ -0,0 +1,14 @@ +# GetCompressedTokenAccountsByDelegatePostRequestParams + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cursor** | Option<**String**> | A base 58 encoded string. | [optional] +**delegate** | **String** | A Solana public key represented as a base58 string. | [default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] +**limit** | Option<**i32**> | | [optional] +**mint** | Option<**String**> | A Solana public key represented as a base58 string. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedTokenAccountsByOwnerPostRequest.md b/photon-api/docs/GetCompressedTokenAccountsByOwnerPostRequest.md new file mode 100644 index 0000000000..050463b1d7 --- /dev/null +++ b/photon-api/docs/GetCompressedTokenAccountsByOwnerPostRequest.md @@ -0,0 +1,14 @@ +# GetCompressedTokenAccountsByOwnerPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetCompressedTokenAccountsByOwnerPostRequestParams**](_getCompressedTokenAccountsByOwner_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedTokenAccountsByOwnerPostRequestParams.md b/photon-api/docs/GetCompressedTokenAccountsByOwnerPostRequestParams.md new file mode 100644 index 0000000000..3405b56fe1 --- /dev/null +++ b/photon-api/docs/GetCompressedTokenAccountsByOwnerPostRequestParams.md @@ -0,0 +1,14 @@ +# GetCompressedTokenAccountsByOwnerPostRequestParams + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cursor** | Option<**String**> | A base 58 encoded string. | [optional] +**limit** | Option<**i32**> | | [optional] +**mint** | Option<**String**> | A Solana public key represented as a base58 string. | [optional] +**owner** | **String** | A Solana public key represented as a base58 string. | [default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedTokenBalancesByOwnerPost200Response.md b/photon-api/docs/GetCompressedTokenBalancesByOwnerPost200Response.md new file mode 100644 index 0000000000..cf2688b2d3 --- /dev/null +++ b/photon-api/docs/GetCompressedTokenBalancesByOwnerPost200Response.md @@ -0,0 +1,14 @@ +# GetCompressedTokenBalancesByOwnerPost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<[**models::GetCompressedTokenBalancesByOwnerPost200ResponseResult**](_getCompressedTokenBalancesByOwner_post_200_response_result.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedTokenBalancesByOwnerPost200ResponseResult.md b/photon-api/docs/GetCompressedTokenBalancesByOwnerPost200ResponseResult.md new file mode 100644 index 0000000000..6ff06b3af1 --- /dev/null +++ b/photon-api/docs/GetCompressedTokenBalancesByOwnerPost200ResponseResult.md @@ -0,0 +1,12 @@ +# GetCompressedTokenBalancesByOwnerPost200ResponseResult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context** | [**models::Context**](Context.md) | | +**value** | [**models::TokenBalanceList**](TokenBalanceList.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedTokenBalancesByOwnerPostRequest.md b/photon-api/docs/GetCompressedTokenBalancesByOwnerPostRequest.md new file mode 100644 index 0000000000..392779b2f3 --- /dev/null +++ b/photon-api/docs/GetCompressedTokenBalancesByOwnerPostRequest.md @@ -0,0 +1,14 @@ +# GetCompressedTokenBalancesByOwnerPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetCompressedTokenBalancesByOwnerPostRequestParams**](_getCompressedTokenBalancesByOwner_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressedTokenBalancesByOwnerPostRequestParams.md b/photon-api/docs/GetCompressedTokenBalancesByOwnerPostRequestParams.md new file mode 100644 index 0000000000..1dc1a3bab9 --- /dev/null +++ b/photon-api/docs/GetCompressedTokenBalancesByOwnerPostRequestParams.md @@ -0,0 +1,14 @@ +# GetCompressedTokenBalancesByOwnerPostRequestParams + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cursor** | Option<**String**> | A base 58 encoded string. | [optional] +**limit** | Option<**i32**> | | [optional] +**mint** | Option<**String**> | A Solana public key represented as a base58 string. | [optional] +**owner** | **String** | A Solana public key represented as a base58 string. | [default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressionSignaturesForAccountPost200Response.md b/photon-api/docs/GetCompressionSignaturesForAccountPost200Response.md new file mode 100644 index 0000000000..582f617887 --- /dev/null +++ b/photon-api/docs/GetCompressionSignaturesForAccountPost200Response.md @@ -0,0 +1,14 @@ +# GetCompressionSignaturesForAccountPost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<[**models::GetCompressionSignaturesForAccountPost200ResponseResult**](_getCompressionSignaturesForAccount_post_200_response_result.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressionSignaturesForAccountPost200ResponseResult.md b/photon-api/docs/GetCompressionSignaturesForAccountPost200ResponseResult.md new file mode 100644 index 0000000000..d911143495 --- /dev/null +++ b/photon-api/docs/GetCompressionSignaturesForAccountPost200ResponseResult.md @@ -0,0 +1,12 @@ +# GetCompressionSignaturesForAccountPost200ResponseResult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context** | [**models::Context**](Context.md) | | +**value** | [**models::SignatureInfoList**](SignatureInfoList.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressionSignaturesForAccountPostRequest.md b/photon-api/docs/GetCompressionSignaturesForAccountPostRequest.md new file mode 100644 index 0000000000..2622b6b87e --- /dev/null +++ b/photon-api/docs/GetCompressionSignaturesForAccountPostRequest.md @@ -0,0 +1,14 @@ +# GetCompressionSignaturesForAccountPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetCompressedAccountProofPostRequestParams**](_getCompressedAccountProof_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressionSignaturesForAddressPost200Response.md b/photon-api/docs/GetCompressionSignaturesForAddressPost200Response.md new file mode 100644 index 0000000000..bbd23a47cc --- /dev/null +++ b/photon-api/docs/GetCompressionSignaturesForAddressPost200Response.md @@ -0,0 +1,14 @@ +# GetCompressionSignaturesForAddressPost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<[**models::GetCompressionSignaturesForAddressPost200ResponseResult**](_getCompressionSignaturesForAddress_post_200_response_result.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressionSignaturesForAddressPost200ResponseResult.md b/photon-api/docs/GetCompressionSignaturesForAddressPost200ResponseResult.md new file mode 100644 index 0000000000..dfee2078f1 --- /dev/null +++ b/photon-api/docs/GetCompressionSignaturesForAddressPost200ResponseResult.md @@ -0,0 +1,12 @@ +# GetCompressionSignaturesForAddressPost200ResponseResult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context** | [**models::Context**](Context.md) | | +**value** | [**models::PaginatedSignatureInfoList**](PaginatedSignatureInfoList.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressionSignaturesForAddressPostRequest.md b/photon-api/docs/GetCompressionSignaturesForAddressPostRequest.md new file mode 100644 index 0000000000..9191f93ffb --- /dev/null +++ b/photon-api/docs/GetCompressionSignaturesForAddressPostRequest.md @@ -0,0 +1,14 @@ +# GetCompressionSignaturesForAddressPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetCompressionSignaturesForAddressPostRequestParams**](_getCompressionSignaturesForAddress_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressionSignaturesForAddressPostRequestParams.md b/photon-api/docs/GetCompressionSignaturesForAddressPostRequestParams.md new file mode 100644 index 0000000000..dd2555552a --- /dev/null +++ b/photon-api/docs/GetCompressionSignaturesForAddressPostRequestParams.md @@ -0,0 +1,13 @@ +# GetCompressionSignaturesForAddressPostRequestParams + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**address** | **String** | A Solana public key represented as a base58 string. | [default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] +**cursor** | Option<**String**> | | [optional] +**limit** | Option<**i32**> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressionSignaturesForOwnerPostRequest.md b/photon-api/docs/GetCompressionSignaturesForOwnerPostRequest.md new file mode 100644 index 0000000000..735f283ee6 --- /dev/null +++ b/photon-api/docs/GetCompressionSignaturesForOwnerPostRequest.md @@ -0,0 +1,14 @@ +# GetCompressionSignaturesForOwnerPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetCompressionSignaturesForOwnerPostRequestParams**](_getCompressionSignaturesForOwner_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressionSignaturesForOwnerPostRequestParams.md b/photon-api/docs/GetCompressionSignaturesForOwnerPostRequestParams.md new file mode 100644 index 0000000000..72a10f9a32 --- /dev/null +++ b/photon-api/docs/GetCompressionSignaturesForOwnerPostRequestParams.md @@ -0,0 +1,13 @@ +# GetCompressionSignaturesForOwnerPostRequestParams + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cursor** | Option<**String**> | | [optional] +**limit** | Option<**i32**> | | [optional] +**owner** | **String** | A Solana public key represented as a base58 string. | [default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetCompressionSignaturesForTokenOwnerPostRequest.md b/photon-api/docs/GetCompressionSignaturesForTokenOwnerPostRequest.md new file mode 100644 index 0000000000..041252d30f --- /dev/null +++ b/photon-api/docs/GetCompressionSignaturesForTokenOwnerPostRequest.md @@ -0,0 +1,14 @@ +# GetCompressionSignaturesForTokenOwnerPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetCompressionSignaturesForOwnerPostRequestParams**](_getCompressionSignaturesForOwner_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetIndexerHealthPost200Response.md b/photon-api/docs/GetIndexerHealthPost200Response.md new file mode 100644 index 0000000000..1e4672fc22 --- /dev/null +++ b/photon-api/docs/GetIndexerHealthPost200Response.md @@ -0,0 +1,14 @@ +# GetIndexerHealthPost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<**String**> | ok if healthy | [optional][default to Ok] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetIndexerHealthPostRequest.md b/photon-api/docs/GetIndexerHealthPostRequest.md new file mode 100644 index 0000000000..e132892839 --- /dev/null +++ b/photon-api/docs/GetIndexerHealthPostRequest.md @@ -0,0 +1,13 @@ +# GetIndexerHealthPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetIndexerSlotPost200Response.md b/photon-api/docs/GetIndexerSlotPost200Response.md new file mode 100644 index 0000000000..0a23025194 --- /dev/null +++ b/photon-api/docs/GetIndexerSlotPost200Response.md @@ -0,0 +1,14 @@ +# GetIndexerSlotPost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<**i32**> | | [optional][default to 100] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetIndexerSlotPostRequest.md b/photon-api/docs/GetIndexerSlotPostRequest.md new file mode 100644 index 0000000000..3f76ccd0e1 --- /dev/null +++ b/photon-api/docs/GetIndexerSlotPostRequest.md @@ -0,0 +1,13 @@ +# GetIndexerSlotPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetLatestCompressionSignaturesPostRequest.md b/photon-api/docs/GetLatestCompressionSignaturesPostRequest.md new file mode 100644 index 0000000000..eb86540db8 --- /dev/null +++ b/photon-api/docs/GetLatestCompressionSignaturesPostRequest.md @@ -0,0 +1,14 @@ +# GetLatestCompressionSignaturesPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetLatestCompressionSignaturesPostRequestParams**](_getLatestCompressionSignatures_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetLatestCompressionSignaturesPostRequestParams.md b/photon-api/docs/GetLatestCompressionSignaturesPostRequestParams.md new file mode 100644 index 0000000000..37b999db7e --- /dev/null +++ b/photon-api/docs/GetLatestCompressionSignaturesPostRequestParams.md @@ -0,0 +1,12 @@ +# GetLatestCompressionSignaturesPostRequestParams + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cursor** | Option<**String**> | | [optional] +**limit** | Option<**i32**> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetLatestNonVotingSignaturesPostRequest.md b/photon-api/docs/GetLatestNonVotingSignaturesPostRequest.md new file mode 100644 index 0000000000..28cd722650 --- /dev/null +++ b/photon-api/docs/GetLatestNonVotingSignaturesPostRequest.md @@ -0,0 +1,14 @@ +# GetLatestNonVotingSignaturesPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetLatestCompressionSignaturesPostRequestParams**](_getLatestCompressionSignatures_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetMultipleCompressedAccountProofsPost200Response.md b/photon-api/docs/GetMultipleCompressedAccountProofsPost200Response.md new file mode 100644 index 0000000000..71d1eed928 --- /dev/null +++ b/photon-api/docs/GetMultipleCompressedAccountProofsPost200Response.md @@ -0,0 +1,14 @@ +# GetMultipleCompressedAccountProofsPost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<[**models::GetMultipleCompressedAccountProofsPost200ResponseResult**](_getMultipleCompressedAccountProofs_post_200_response_result.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetMultipleCompressedAccountProofsPost200ResponseResult.md b/photon-api/docs/GetMultipleCompressedAccountProofsPost200ResponseResult.md new file mode 100644 index 0000000000..fc9a5cbc5f --- /dev/null +++ b/photon-api/docs/GetMultipleCompressedAccountProofsPost200ResponseResult.md @@ -0,0 +1,12 @@ +# GetMultipleCompressedAccountProofsPost200ResponseResult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context** | [**models::Context**](Context.md) | | +**value** | [**Vec**](MerkleProofWithContext.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetMultipleCompressedAccountProofsPostRequest.md b/photon-api/docs/GetMultipleCompressedAccountProofsPostRequest.md new file mode 100644 index 0000000000..8abbead8b5 --- /dev/null +++ b/photon-api/docs/GetMultipleCompressedAccountProofsPostRequest.md @@ -0,0 +1,14 @@ +# GetMultipleCompressedAccountProofsPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | **Vec** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetMultipleCompressedAccountsPost200Response.md b/photon-api/docs/GetMultipleCompressedAccountsPost200Response.md new file mode 100644 index 0000000000..1deb664cd6 --- /dev/null +++ b/photon-api/docs/GetMultipleCompressedAccountsPost200Response.md @@ -0,0 +1,14 @@ +# GetMultipleCompressedAccountsPost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<[**models::GetMultipleCompressedAccountsPost200ResponseResult**](_getMultipleCompressedAccounts_post_200_response_result.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetMultipleCompressedAccountsPost200ResponseResult.md b/photon-api/docs/GetMultipleCompressedAccountsPost200ResponseResult.md new file mode 100644 index 0000000000..5f2958fabb --- /dev/null +++ b/photon-api/docs/GetMultipleCompressedAccountsPost200ResponseResult.md @@ -0,0 +1,12 @@ +# GetMultipleCompressedAccountsPost200ResponseResult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context** | [**models::Context**](Context.md) | | +**value** | [**models::AccountList**](AccountList.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetMultipleCompressedAccountsPostRequest.md b/photon-api/docs/GetMultipleCompressedAccountsPostRequest.md new file mode 100644 index 0000000000..a1c706fdf9 --- /dev/null +++ b/photon-api/docs/GetMultipleCompressedAccountsPostRequest.md @@ -0,0 +1,14 @@ +# GetMultipleCompressedAccountsPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetMultipleCompressedAccountsPostRequestParams**](_getMultipleCompressedAccounts_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetMultipleCompressedAccountsPostRequestParams.md b/photon-api/docs/GetMultipleCompressedAccountsPostRequestParams.md new file mode 100644 index 0000000000..390917a7e6 --- /dev/null +++ b/photon-api/docs/GetMultipleCompressedAccountsPostRequestParams.md @@ -0,0 +1,12 @@ +# GetMultipleCompressedAccountsPostRequestParams + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**addresses** | Option<**Vec**> | | [optional] +**hashes** | Option<**Vec**> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetTransactionWithCompressionInfoPost200Response.md b/photon-api/docs/GetTransactionWithCompressionInfoPost200Response.md new file mode 100644 index 0000000000..2a2d27f956 --- /dev/null +++ b/photon-api/docs/GetTransactionWithCompressionInfoPost200Response.md @@ -0,0 +1,14 @@ +# GetTransactionWithCompressionInfoPost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<[**models::GetTransactionWithCompressionInfoPost200ResponseResult**](_getTransactionWithCompressionInfo_post_200_response_result.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetTransactionWithCompressionInfoPost200ResponseResult.md b/photon-api/docs/GetTransactionWithCompressionInfoPost200ResponseResult.md new file mode 100644 index 0000000000..c53464b187 --- /dev/null +++ b/photon-api/docs/GetTransactionWithCompressionInfoPost200ResponseResult.md @@ -0,0 +1,12 @@ +# GetTransactionWithCompressionInfoPost200ResponseResult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**compression_info** | Option<[**models::GetTransactionWithCompressionInfoPost200ResponseResultCompressionInfo**](_getTransactionWithCompressionInfo_post_200_response_result_compression_info.md)> | | [optional] +**transaction** | Option<[**serde_json::Value**](.md)> | An encoded confirmed transaction with status meta | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetTransactionWithCompressionInfoPost200ResponseResultCompressionInfo.md b/photon-api/docs/GetTransactionWithCompressionInfoPost200ResponseResultCompressionInfo.md new file mode 100644 index 0000000000..f345bebb0e --- /dev/null +++ b/photon-api/docs/GetTransactionWithCompressionInfoPost200ResponseResultCompressionInfo.md @@ -0,0 +1,12 @@ +# GetTransactionWithCompressionInfoPost200ResponseResultCompressionInfo + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**closed_accounts** | [**Vec**](AccountWithOptionalTokenData.md) | | +**opened_accounts** | [**Vec**](AccountWithOptionalTokenData.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetTransactionWithCompressionInfoPostRequest.md b/photon-api/docs/GetTransactionWithCompressionInfoPostRequest.md new file mode 100644 index 0000000000..401e813764 --- /dev/null +++ b/photon-api/docs/GetTransactionWithCompressionInfoPostRequest.md @@ -0,0 +1,14 @@ +# GetTransactionWithCompressionInfoPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | [**models::GetTransactionWithCompressionInfoPostRequestParams**](_getTransactionWithCompressionInfo_post_request_params.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetTransactionWithCompressionInfoPostRequestParams.md b/photon-api/docs/GetTransactionWithCompressionInfoPostRequestParams.md new file mode 100644 index 0000000000..3d590ec8b4 --- /dev/null +++ b/photon-api/docs/GetTransactionWithCompressionInfoPostRequestParams.md @@ -0,0 +1,11 @@ +# GetTransactionWithCompressionInfoPostRequestParams + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**signature** | **String** | A Solana transaction signature. | [default to 5J8H5sTvEhnGcB4R8K1n7mfoiWUD9RzPVGES7e3WxC7c] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetValidityProofPost200Response.md b/photon-api/docs/GetValidityProofPost200Response.md new file mode 100644 index 0000000000..80805970f4 --- /dev/null +++ b/photon-api/docs/GetValidityProofPost200Response.md @@ -0,0 +1,14 @@ +# GetValidityProofPost200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | Option<[**models::GetCompressedAccountPost200ResponseError**](_getCompressedAccount_post_200_response_error.md)> | | [optional] +**id** | **String** | An ID to identify the response. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**result** | Option<[**models::GetValidityProofPost200ResponseResult**](_getValidityProof_post_200_response_result.md)> | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetValidityProofPost200ResponseResult.md b/photon-api/docs/GetValidityProofPost200ResponseResult.md new file mode 100644 index 0000000000..baf2592588 --- /dev/null +++ b/photon-api/docs/GetValidityProofPost200ResponseResult.md @@ -0,0 +1,16 @@ +# GetValidityProofPost200ResponseResult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**compressed_proof** | [**models::CompressedProof**](CompressedProof.md) | | +**leaf_indices** | **Vec** | | +**leaves** | **Vec** | | +**merkle_trees** | **Vec** | | +**root_indices** | **Vec** | | +**roots** | **Vec** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/GetValidityProofPostRequest.md b/photon-api/docs/GetValidityProofPostRequest.md new file mode 100644 index 0000000000..c81449d96b --- /dev/null +++ b/photon-api/docs/GetValidityProofPostRequest.md @@ -0,0 +1,14 @@ +# GetValidityProofPostRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | An ID to identify the request. | +**jsonrpc** | **String** | The version of the JSON-RPC protocol. | +**method** | **String** | The name of the method to invoke. | +**params** | **Vec** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/MerkleProofWithContext.md b/photon-api/docs/MerkleProofWithContext.md new file mode 100644 index 0000000000..870155306f --- /dev/null +++ b/photon-api/docs/MerkleProofWithContext.md @@ -0,0 +1,16 @@ +# MerkleProofWithContext + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**hash** | **String** | A 32-byte hash represented as a base58 string. | +**leaf_index** | **i32** | | +**merkle_tree** | **String** | A Solana public key represented as a base58 string. | [default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] +**proof** | **Vec** | | +**root** | **String** | A 32-byte hash represented as a base58 string. | +**root_seq** | **i32** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/PaginatedAccountList.md b/photon-api/docs/PaginatedAccountList.md new file mode 100644 index 0000000000..0c24bae6e1 --- /dev/null +++ b/photon-api/docs/PaginatedAccountList.md @@ -0,0 +1,12 @@ +# PaginatedAccountList + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cursor** | Option<**String**> | A 32-byte hash represented as a base58 string. | [optional] +**items** | [**Vec**](Account.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/PaginatedSignatureInfoList.md b/photon-api/docs/PaginatedSignatureInfoList.md new file mode 100644 index 0000000000..51cd66bd34 --- /dev/null +++ b/photon-api/docs/PaginatedSignatureInfoList.md @@ -0,0 +1,12 @@ +# PaginatedSignatureInfoList + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cursor** | Option<**String**> | | [optional] +**items** | [**Vec**](SignatureInfo.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/SignatureInfo.md b/photon-api/docs/SignatureInfo.md new file mode 100644 index 0000000000..56a5ee3ed3 --- /dev/null +++ b/photon-api/docs/SignatureInfo.md @@ -0,0 +1,13 @@ +# SignatureInfo + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**block_time** | **i32** | An Unix timestamp (seconds) | [default to 1714081554] +**signature** | **String** | A Solana transaction signature. | [default to 5J8H5sTvEhnGcB4R8K1n7mfoiWUD9RzPVGES7e3WxC7c] +**slot** | **i32** | | [default to 100] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/SignatureInfoList.md b/photon-api/docs/SignatureInfoList.md new file mode 100644 index 0000000000..f1b06ac576 --- /dev/null +++ b/photon-api/docs/SignatureInfoList.md @@ -0,0 +1,11 @@ +# SignatureInfoList + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**items** | [**Vec**](SignatureInfo.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/TokenAcccount.md b/photon-api/docs/TokenAcccount.md new file mode 100644 index 0000000000..f5d3166358 --- /dev/null +++ b/photon-api/docs/TokenAcccount.md @@ -0,0 +1,12 @@ +# TokenAcccount + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**account** | [**models::Account**](Account.md) | | +**token_data** | [**models::TokenData**](TokenData.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/TokenAccountBalance.md b/photon-api/docs/TokenAccountBalance.md new file mode 100644 index 0000000000..f2c5d05bf0 --- /dev/null +++ b/photon-api/docs/TokenAccountBalance.md @@ -0,0 +1,11 @@ +# TokenAccountBalance + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**amount** | **i32** | | [default to 100] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/TokenAccountList.md b/photon-api/docs/TokenAccountList.md new file mode 100644 index 0000000000..1179abe3ab --- /dev/null +++ b/photon-api/docs/TokenAccountList.md @@ -0,0 +1,12 @@ +# TokenAccountList + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cursor** | Option<**String**> | A base 58 encoded string. | [optional][default to 3J98t1WpEZ73CNm] +**items** | [**Vec**](TokenAcccount.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/TokenBalance.md b/photon-api/docs/TokenBalance.md new file mode 100644 index 0000000000..98c7fc5b79 --- /dev/null +++ b/photon-api/docs/TokenBalance.md @@ -0,0 +1,12 @@ +# TokenBalance + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**balance** | **i32** | | [default to 100] +**mint** | **String** | A Solana public key represented as a base58 string. | [default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/TokenBalanceList.md b/photon-api/docs/TokenBalanceList.md new file mode 100644 index 0000000000..3f63522ef9 --- /dev/null +++ b/photon-api/docs/TokenBalanceList.md @@ -0,0 +1,12 @@ +# TokenBalanceList + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cursor** | Option<**String**> | | [optional] +**token_balances** | [**Vec**](TokenBalance.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/docs/TokenData.md b/photon-api/docs/TokenData.md new file mode 100644 index 0000000000..00de235b99 --- /dev/null +++ b/photon-api/docs/TokenData.md @@ -0,0 +1,17 @@ +# TokenData + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**amount** | **i32** | | [default to 100] +**delegate** | Option<**String**> | A Solana public key represented as a base58 string. | [optional][default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] +**delegated_amount** | **i32** | | [default to 100] +**is_native** | Option<**i32**> | | [optional][default to 100] +**mint** | **String** | A Solana public key represented as a base58 string. | [default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] +**owner** | **String** | A Solana public key represented as a base58 string. | [default to 11111112D1oxKts8YPdTJRG5FzxTNpMtWmq8hkVx3] +**state** | [**models::AccountState**](AccountState.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/photon-api/git_push.sh b/photon-api/git_push.sh new file mode 100644 index 0000000000..f53a75d4fa --- /dev/null +++ b/photon-api/git_push.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=$(git remote) +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' diff --git a/photon-api/src/apis/configuration.rs b/photon-api/src/apis/configuration.rs new file mode 100644 index 0000000000..fcf570b05b --- /dev/null +++ b/photon-api/src/apis/configuration.rs @@ -0,0 +1,49 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +#[derive(Debug, Clone)] +pub struct Configuration { + pub base_path: String, + pub user_agent: Option, + pub client: reqwest::Client, + pub basic_auth: Option, + pub oauth_access_token: Option, + pub bearer_access_token: Option, + pub api_key: Option, + // TODO: take an oauth2 token source, similar to the go one +} + +pub type BasicAuth = (String, Option); + +#[derive(Debug, Clone)] +pub struct ApiKey { + pub prefix: Option, + pub key: String, +} + +impl Configuration { + pub fn new() -> Configuration { + Configuration::default() + } +} + +impl Default for Configuration { + fn default() -> Self { + Configuration { + base_path: "http://127.0.0.1".to_owned(), + user_agent: Some("OpenAPI-Generator/0.19.0/rust".to_owned()), + client: reqwest::Client::new(), + basic_auth: None, + oauth_access_token: None, + bearer_access_token: None, + api_key: None, + } + } +} diff --git a/photon-api/src/apis/default_api.rs b/photon-api/src/apis/default_api.rs new file mode 100644 index 0000000000..3a54dcdece --- /dev/null +++ b/photon-api/src/apis/default_api.rs @@ -0,0 +1,1110 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use reqwest; + +use super::{configuration, Error}; +use crate::{apis::ResponseContent, models}; + +/// struct for typed errors of method [`get_compressed_account_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetCompressedAccountPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_compressed_account_proof_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetCompressedAccountProofPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_compressed_accounts_by_owner_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetCompressedAccountsByOwnerPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_compressed_balance_by_owner_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetCompressedBalanceByOwnerPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_compressed_balance_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetCompressedBalancePostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_compressed_token_account_balance_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetCompressedTokenAccountBalancePostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_compressed_token_accounts_by_delegate_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetCompressedTokenAccountsByDelegatePostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_compressed_token_accounts_by_owner_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetCompressedTokenAccountsByOwnerPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_compressed_token_balances_by_owner_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetCompressedTokenBalancesByOwnerPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_compression_signatures_for_account_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetCompressionSignaturesForAccountPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_compression_signatures_for_address_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetCompressionSignaturesForAddressPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_compression_signatures_for_owner_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetCompressionSignaturesForOwnerPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_compression_signatures_for_token_owner_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetCompressionSignaturesForTokenOwnerPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_indexer_health_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetIndexerHealthPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_indexer_slot_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetIndexerSlotPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_latest_compression_signatures_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetLatestCompressionSignaturesPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_latest_non_voting_signatures_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetLatestNonVotingSignaturesPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_multiple_compressed_account_proofs_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetMultipleCompressedAccountProofsPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_multiple_compressed_accounts_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetMultipleCompressedAccountsPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_transaction_with_compression_info_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetTransactionWithCompressionInfoPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`get_validity_proof_post`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetValidityProofPostError { + Status429(models::GetCompressedAccountPost429Response), + Status500(models::GetCompressedAccountPost429Response), + UnknownValue(serde_json::Value), +} + +pub async fn get_compressed_account_post( + configuration: &configuration::Configuration, + get_compressed_account_post_request: models::GetCompressedAccountPostRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/getCompressedAccount", local_var_configuration.base_path); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = local_var_req_builder.json(&get_compressed_account_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_compressed_account_proof_post( + configuration: &configuration::Configuration, + get_compressed_account_proof_post_request: models::GetCompressedAccountProofPostRequest, +) -> Result< + models::GetCompressedAccountProofPost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getCompressedAccountProof", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = local_var_req_builder.json(&get_compressed_account_proof_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_compressed_accounts_by_owner_post( + configuration: &configuration::Configuration, + get_compressed_accounts_by_owner_post_request: models::GetCompressedAccountsByOwnerPostRequest, +) -> Result< + models::GetCompressedAccountsByOwnerPost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getCompressedAccountsByOwner", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_compressed_accounts_by_owner_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_compressed_balance_by_owner_post( + configuration: &configuration::Configuration, + get_compressed_balance_by_owner_post_request: models::GetCompressedBalanceByOwnerPostRequest, +) -> Result> +{ + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getCompressedBalanceByOwner", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_compressed_balance_by_owner_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_compressed_balance_post( + configuration: &configuration::Configuration, + get_compressed_balance_post_request: models::GetCompressedBalancePostRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/getCompressedBalance", local_var_configuration.base_path); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = local_var_req_builder.json(&get_compressed_balance_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_compressed_token_account_balance_post( + configuration: &configuration::Configuration, + get_compressed_token_account_balance_post_request: models::GetCompressedTokenAccountBalancePostRequest, +) -> Result< + models::GetCompressedTokenAccountBalancePost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getCompressedTokenAccountBalance", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_compressed_token_account_balance_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_compressed_token_accounts_by_delegate_post( + configuration: &configuration::Configuration, + get_compressed_token_accounts_by_delegate_post_request: models::GetCompressedTokenAccountsByDelegatePostRequest, +) -> Result< + models::GetCompressedTokenAccountsByDelegatePost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getCompressedTokenAccountsByDelegate", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_compressed_token_accounts_by_delegate_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_compressed_token_accounts_by_owner_post( + configuration: &configuration::Configuration, + get_compressed_token_accounts_by_owner_post_request: models::GetCompressedTokenAccountsByOwnerPostRequest, +) -> Result< + models::GetCompressedTokenAccountsByDelegatePost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getCompressedTokenAccountsByOwner", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_compressed_token_accounts_by_owner_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_compressed_token_balances_by_owner_post( + configuration: &configuration::Configuration, + get_compressed_token_balances_by_owner_post_request: models::GetCompressedTokenBalancesByOwnerPostRequest, +) -> Result< + models::GetCompressedTokenBalancesByOwnerPost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getCompressedTokenBalancesByOwner", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_compressed_token_balances_by_owner_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_compression_signatures_for_account_post( + configuration: &configuration::Configuration, + get_compression_signatures_for_account_post_request: models::GetCompressionSignaturesForAccountPostRequest, +) -> Result< + models::GetCompressionSignaturesForAccountPost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getCompressionSignaturesForAccount", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_compression_signatures_for_account_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_compression_signatures_for_address_post( + configuration: &configuration::Configuration, + get_compression_signatures_for_address_post_request: models::GetCompressionSignaturesForAddressPostRequest, +) -> Result< + models::GetCompressionSignaturesForAddressPost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getCompressionSignaturesForAddress", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_compression_signatures_for_address_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_compression_signatures_for_owner_post( + configuration: &configuration::Configuration, + get_compression_signatures_for_owner_post_request: models::GetCompressionSignaturesForOwnerPostRequest, +) -> Result< + models::GetCompressionSignaturesForAddressPost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getCompressionSignaturesForOwner", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_compression_signatures_for_owner_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_compression_signatures_for_token_owner_post( + configuration: &configuration::Configuration, + get_compression_signatures_for_token_owner_post_request: models::GetCompressionSignaturesForTokenOwnerPostRequest, +) -> Result< + models::GetCompressionSignaturesForAddressPost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getCompressionSignaturesForTokenOwner", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_compression_signatures_for_token_owner_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_indexer_health_post( + configuration: &configuration::Configuration, + get_indexer_health_post_request: models::GetIndexerHealthPostRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/getIndexerHealth", local_var_configuration.base_path); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = local_var_req_builder.json(&get_indexer_health_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_indexer_slot_post( + configuration: &configuration::Configuration, + get_indexer_slot_post_request: models::GetIndexerSlotPostRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/getIndexerSlot", local_var_configuration.base_path); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = local_var_req_builder.json(&get_indexer_slot_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_latest_compression_signatures_post( + configuration: &configuration::Configuration, + get_latest_compression_signatures_post_request: models::GetLatestCompressionSignaturesPostRequest, +) -> Result< + models::GetCompressionSignaturesForAddressPost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getLatestCompressionSignatures", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_latest_compression_signatures_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_latest_non_voting_signatures_post( + configuration: &configuration::Configuration, + get_latest_non_voting_signatures_post_request: models::GetLatestNonVotingSignaturesPostRequest, +) -> Result< + models::GetCompressionSignaturesForAccountPost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getLatestNonVotingSignatures", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_latest_non_voting_signatures_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_multiple_compressed_account_proofs_post( + configuration: &configuration::Configuration, + get_multiple_compressed_account_proofs_post_request: models::GetMultipleCompressedAccountProofsPostRequest, +) -> Result< + models::GetMultipleCompressedAccountProofsPost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getMultipleCompressedAccountProofs", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_multiple_compressed_account_proofs_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_multiple_compressed_accounts_post( + configuration: &configuration::Configuration, + get_multiple_compressed_accounts_post_request: models::GetMultipleCompressedAccountsPostRequest, +) -> Result< + models::GetMultipleCompressedAccountsPost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getMultipleCompressedAccounts", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_multiple_compressed_accounts_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_transaction_with_compression_info_post( + configuration: &configuration::Configuration, + get_transaction_with_compression_info_post_request: models::GetTransactionWithCompressionInfoPostRequest, +) -> Result< + models::GetTransactionWithCompressionInfoPost200Response, + Error, +> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/getTransactionWithCompressionInfo", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = + local_var_req_builder.json(&get_transaction_with_compression_info_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} + +pub async fn get_validity_proof_post( + configuration: &configuration::Configuration, + get_validity_proof_post_request: models::GetValidityProofPostRequest, +) -> Result> { + let local_var_configuration = configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!("{}/getValidityProof", local_var_configuration.base_path); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + local_var_req_builder = local_var_req_builder.json(&get_validity_proof_post_request); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } +} diff --git a/photon-api/src/apis/mod.rs b/photon-api/src/apis/mod.rs new file mode 100644 index 0000000000..3abf5ce9a4 --- /dev/null +++ b/photon-api/src/apis/mod.rs @@ -0,0 +1,97 @@ +use std::error; +use std::fmt; + +#[derive(Debug, Clone)] +pub struct ResponseContent { + pub status: reqwest::StatusCode, + pub content: String, + pub entity: Option, +} + +#[derive(Debug)] +pub enum Error { + Reqwest(reqwest::Error), + Serde(serde_json::Error), + Io(std::io::Error), + ResponseError(ResponseContent), +} + +impl fmt::Display for Error { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let (module, e) = match self { + Error::Reqwest(e) => ("reqwest", e.to_string()), + Error::Serde(e) => ("serde", e.to_string()), + Error::Io(e) => ("IO", e.to_string()), + Error::ResponseError(e) => ("response", format!("status code {}", e.status)), + }; + write!(f, "error in {}: {}", module, e) + } +} + +impl error::Error for Error { + fn source(&self) -> Option<&(dyn error::Error + 'static)> { + Some(match self { + Error::Reqwest(e) => e, + Error::Serde(e) => e, + Error::Io(e) => e, + Error::ResponseError(_) => return None, + }) + } +} + +impl From for Error { + fn from(e: reqwest::Error) -> Self { + Error::Reqwest(e) + } +} + +impl From for Error { + fn from(e: serde_json::Error) -> Self { + Error::Serde(e) + } +} + +impl From for Error { + fn from(e: std::io::Error) -> Self { + Error::Io(e) + } +} + +pub fn urlencode>(s: T) -> String { + ::url::form_urlencoded::byte_serialize(s.as_ref().as_bytes()).collect() +} + +pub fn parse_deep_object(prefix: &str, value: &serde_json::Value) -> Vec<(String, String)> { + if let serde_json::Value::Object(object) = value { + let mut params = vec![]; + + for (key, value) in object { + match value { + serde_json::Value::Object(_) => params.append(&mut parse_deep_object( + &format!("{}[{}]", prefix, key), + value, + )), + serde_json::Value::Array(array) => { + for (i, value) in array.iter().enumerate() { + params.append(&mut parse_deep_object( + &format!("{}[{}][{}]", prefix, key, i), + value, + )); + } + } + serde_json::Value::String(s) => { + params.push((format!("{}[{}]", prefix, key), s.clone())) + } + _ => params.push((format!("{}[{}]", prefix, key), value.to_string())), + } + } + + return params; + } + + unimplemented!("Only objects are supported with style=deepObject") +} + +pub mod default_api; + +pub mod configuration; diff --git a/photon-api/src/lib.rs b/photon-api/src/lib.rs new file mode 100644 index 0000000000..92760eb50e --- /dev/null +++ b/photon-api/src/lib.rs @@ -0,0 +1,12 @@ +#![allow(unused_imports)] + +#[macro_use] +extern crate serde_derive; + +extern crate reqwest; +extern crate serde; +extern crate serde_json; +extern crate url; + +pub mod apis; +pub mod models; diff --git a/photon-api/src/models/_get_compressed_account_post_200_response.rs b/photon-api/src/models/_get_compressed_account_post_200_response.rs new file mode 100644 index 0000000000..0331edc90c --- /dev/null +++ b/photon-api/src/models/_get_compressed_account_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountPost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option>, +} + +impl GetCompressedAccountPost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetCompressedAccountPost200Response { + GetCompressedAccountPost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_compressed_account_post_200_response_error.rs b/photon-api/src/models/_get_compressed_account_post_200_response_error.rs new file mode 100644 index 0000000000..6f6d004f75 --- /dev/null +++ b/photon-api/src/models/_get_compressed_account_post_200_response_error.rs @@ -0,0 +1,28 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountPost200ResponseError { + #[serde(rename = "code", skip_serializing_if = "Option::is_none")] + pub code: Option, + #[serde(rename = "message", skip_serializing_if = "Option::is_none")] + pub message: Option, +} + +impl GetCompressedAccountPost200ResponseError { + pub fn new() -> GetCompressedAccountPost200ResponseError { + GetCompressedAccountPost200ResponseError { + code: None, + message: None, + } + } +} diff --git a/photon-api/src/models/_get_compressed_account_post_200_response_result.rs b/photon-api/src/models/_get_compressed_account_post_200_response_result.rs new file mode 100644 index 0000000000..a8ac3c96ca --- /dev/null +++ b/photon-api/src/models/_get_compressed_account_post_200_response_result.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountPost200ResponseResult { + #[serde(rename = "context")] + pub context: Box, + #[serde(rename = "value")] + pub value: Box, +} + +impl GetCompressedAccountPost200ResponseResult { + pub fn new( + context: models::Context, + value: models::Account, + ) -> GetCompressedAccountPost200ResponseResult { + GetCompressedAccountPost200ResponseResult { + context: Box::new(context), + value: Box::new(value), + } + } +} diff --git a/photon-api/src/models/_get_compressed_account_post_429_response.rs b/photon-api/src/models/_get_compressed_account_post_429_response.rs new file mode 100644 index 0000000000..57fbe410f5 --- /dev/null +++ b/photon-api/src/models/_get_compressed_account_post_429_response.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountPost429Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + #[serde(rename = "id", skip_serializing_if = "Option::is_none")] + pub id: Option, + #[serde(rename = "jsonrpc", skip_serializing_if = "Option::is_none")] + pub jsonrpc: Option, +} + +impl GetCompressedAccountPost429Response { + pub fn new() -> GetCompressedAccountPost429Response { + GetCompressedAccountPost429Response { + error: None, + id: None, + jsonrpc: None, + } + } +} diff --git a/photon-api/src/models/_get_compressed_account_post_request.rs b/photon-api/src/models/_get_compressed_account_post_request.rs new file mode 100644 index 0000000000..3ba6112bde --- /dev/null +++ b/photon-api/src/models/_get_compressed_account_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetCompressedAccountPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetCompressedAccountPostRequestParams, + ) -> GetCompressedAccountPostRequest { + GetCompressedAccountPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getCompressedAccount")] + GetCompressedAccount, +} + +impl Default for Method { + fn default() -> Method { + Self::GetCompressedAccount + } +} diff --git a/photon-api/src/models/_get_compressed_account_post_request_params.rs b/photon-api/src/models/_get_compressed_account_post_request_params.rs new file mode 100644 index 0000000000..235e7475af --- /dev/null +++ b/photon-api/src/models/_get_compressed_account_post_request_params.rs @@ -0,0 +1,42 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +/// GetCompressedAccountPostRequestParams : Request for compressed account data +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountPostRequestParams { + /// A Solana public key represented as a base58 string. + #[serde( + rename = "address", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub address: Option>, + /// A 32-byte hash represented as a base58 string. + #[serde( + rename = "hash", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub hash: Option>, +} + +impl GetCompressedAccountPostRequestParams { + /// Request for compressed account data + pub fn new() -> GetCompressedAccountPostRequestParams { + GetCompressedAccountPostRequestParams { + address: None, + hash: None, + } + } +} diff --git a/photon-api/src/models/_get_compressed_account_proof_post_200_response.rs b/photon-api/src/models/_get_compressed_account_proof_post_200_response.rs new file mode 100644 index 0000000000..3087b5cf31 --- /dev/null +++ b/photon-api/src/models/_get_compressed_account_proof_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountProofPost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option>, +} + +impl GetCompressedAccountProofPost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetCompressedAccountProofPost200Response { + GetCompressedAccountProofPost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_compressed_account_proof_post_200_response_result.rs b/photon-api/src/models/_get_compressed_account_proof_post_200_response_result.rs new file mode 100644 index 0000000000..82deb5640e --- /dev/null +++ b/photon-api/src/models/_get_compressed_account_proof_post_200_response_result.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountProofPost200ResponseResult { + #[serde(rename = "context")] + pub context: Box, + #[serde(rename = "value")] + pub value: Box, +} + +impl GetCompressedAccountProofPost200ResponseResult { + pub fn new( + context: models::Context, + value: models::MerkleProofWithContext, + ) -> GetCompressedAccountProofPost200ResponseResult { + GetCompressedAccountProofPost200ResponseResult { + context: Box::new(context), + value: Box::new(value), + } + } +} diff --git a/photon-api/src/models/_get_compressed_account_proof_post_request.rs b/photon-api/src/models/_get_compressed_account_proof_post_request.rs new file mode 100644 index 0000000000..69dde65fc1 --- /dev/null +++ b/photon-api/src/models/_get_compressed_account_proof_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountProofPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetCompressedAccountProofPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetCompressedAccountProofPostRequestParams, + ) -> GetCompressedAccountProofPostRequest { + GetCompressedAccountProofPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getCompressedAccountProof")] + GetCompressedAccountProof, +} + +impl Default for Method { + fn default() -> Method { + Self::GetCompressedAccountProof + } +} diff --git a/photon-api/src/models/_get_compressed_account_proof_post_request_params.rs b/photon-api/src/models/_get_compressed_account_proof_post_request_params.rs new file mode 100644 index 0000000000..8f11e9e058 --- /dev/null +++ b/photon-api/src/models/_get_compressed_account_proof_post_request_params.rs @@ -0,0 +1,24 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountProofPostRequestParams { + /// A 32-byte hash represented as a base58 string. + #[serde(rename = "hash")] + pub hash: String, +} + +impl GetCompressedAccountProofPostRequestParams { + pub fn new(hash: String) -> GetCompressedAccountProofPostRequestParams { + GetCompressedAccountProofPostRequestParams { hash } + } +} diff --git a/photon-api/src/models/_get_compressed_accounts_by_owner_post_200_response.rs b/photon-api/src/models/_get_compressed_accounts_by_owner_post_200_response.rs new file mode 100644 index 0000000000..e9938858a4 --- /dev/null +++ b/photon-api/src/models/_get_compressed_accounts_by_owner_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountsByOwnerPost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option>, +} + +impl GetCompressedAccountsByOwnerPost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetCompressedAccountsByOwnerPost200Response { + GetCompressedAccountsByOwnerPost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_compressed_accounts_by_owner_post_200_response_result.rs b/photon-api/src/models/_get_compressed_accounts_by_owner_post_200_response_result.rs new file mode 100644 index 0000000000..a3964c1fa8 --- /dev/null +++ b/photon-api/src/models/_get_compressed_accounts_by_owner_post_200_response_result.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountsByOwnerPost200ResponseResult { + #[serde(rename = "context")] + pub context: Box, + #[serde(rename = "value")] + pub value: Box, +} + +impl GetCompressedAccountsByOwnerPost200ResponseResult { + pub fn new( + context: models::Context, + value: models::PaginatedAccountList, + ) -> GetCompressedAccountsByOwnerPost200ResponseResult { + GetCompressedAccountsByOwnerPost200ResponseResult { + context: Box::new(context), + value: Box::new(value), + } + } +} diff --git a/photon-api/src/models/_get_compressed_accounts_by_owner_post_request.rs b/photon-api/src/models/_get_compressed_accounts_by_owner_post_request.rs new file mode 100644 index 0000000000..68bb0ccd1f --- /dev/null +++ b/photon-api/src/models/_get_compressed_accounts_by_owner_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountsByOwnerPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetCompressedAccountsByOwnerPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetCompressedAccountsByOwnerPostRequestParams, + ) -> GetCompressedAccountsByOwnerPostRequest { + GetCompressedAccountsByOwnerPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getCompressedAccountsByOwner")] + GetCompressedAccountsByOwner, +} + +impl Default for Method { + fn default() -> Method { + Self::GetCompressedAccountsByOwner + } +} diff --git a/photon-api/src/models/_get_compressed_accounts_by_owner_post_request_params.rs b/photon-api/src/models/_get_compressed_accounts_by_owner_post_request_params.rs new file mode 100644 index 0000000000..dff80549ea --- /dev/null +++ b/photon-api/src/models/_get_compressed_accounts_by_owner_post_request_params.rs @@ -0,0 +1,43 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedAccountsByOwnerPostRequestParams { + /// A 32-byte hash represented as a base58 string. + #[serde( + rename = "cursor", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub cursor: Option>, + #[serde( + rename = "limit", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub limit: Option>, + /// A Solana public key represented as a base58 string. + #[serde(rename = "owner")] + pub owner: String, +} + +impl GetCompressedAccountsByOwnerPostRequestParams { + pub fn new(owner: String) -> GetCompressedAccountsByOwnerPostRequestParams { + GetCompressedAccountsByOwnerPostRequestParams { + cursor: None, + limit: None, + owner, + } + } +} diff --git a/photon-api/src/models/_get_compressed_balance_by_owner_post_request.rs b/photon-api/src/models/_get_compressed_balance_by_owner_post_request.rs new file mode 100644 index 0000000000..2dafcf6d22 --- /dev/null +++ b/photon-api/src/models/_get_compressed_balance_by_owner_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedBalanceByOwnerPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetCompressedBalanceByOwnerPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetCompressedBalanceByOwnerPostRequestParams, + ) -> GetCompressedBalanceByOwnerPostRequest { + GetCompressedBalanceByOwnerPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getCompressedBalanceByOwner")] + GetCompressedBalanceByOwner, +} + +impl Default for Method { + fn default() -> Method { + Self::GetCompressedBalanceByOwner + } +} diff --git a/photon-api/src/models/_get_compressed_balance_by_owner_post_request_params.rs b/photon-api/src/models/_get_compressed_balance_by_owner_post_request_params.rs new file mode 100644 index 0000000000..be67c18903 --- /dev/null +++ b/photon-api/src/models/_get_compressed_balance_by_owner_post_request_params.rs @@ -0,0 +1,24 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedBalanceByOwnerPostRequestParams { + /// A Solana public key represented as a base58 string. + #[serde(rename = "owner")] + pub owner: String, +} + +impl GetCompressedBalanceByOwnerPostRequestParams { + pub fn new(owner: String) -> GetCompressedBalanceByOwnerPostRequestParams { + GetCompressedBalanceByOwnerPostRequestParams { owner } + } +} diff --git a/photon-api/src/models/_get_compressed_balance_post_200_response.rs b/photon-api/src/models/_get_compressed_balance_post_200_response.rs new file mode 100644 index 0000000000..561d65a00e --- /dev/null +++ b/photon-api/src/models/_get_compressed_balance_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedBalancePost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option>, +} + +impl GetCompressedBalancePost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetCompressedBalancePost200Response { + GetCompressedBalancePost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_compressed_balance_post_200_response_result.rs b/photon-api/src/models/_get_compressed_balance_post_200_response_result.rs new file mode 100644 index 0000000000..df960264c7 --- /dev/null +++ b/photon-api/src/models/_get_compressed_balance_post_200_response_result.rs @@ -0,0 +1,28 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedBalancePost200ResponseResult { + #[serde(rename = "context")] + pub context: Box, + #[serde(rename = "value")] + pub value: i32, +} + +impl GetCompressedBalancePost200ResponseResult { + pub fn new(context: models::Context, value: i32) -> GetCompressedBalancePost200ResponseResult { + GetCompressedBalancePost200ResponseResult { + context: Box::new(context), + value, + } + } +} diff --git a/photon-api/src/models/_get_compressed_balance_post_request.rs b/photon-api/src/models/_get_compressed_balance_post_request.rs new file mode 100644 index 0000000000..b81d10bbb2 --- /dev/null +++ b/photon-api/src/models/_get_compressed_balance_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedBalancePostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetCompressedBalancePostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetCompressedAccountPostRequestParams, + ) -> GetCompressedBalancePostRequest { + GetCompressedBalancePostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getCompressedBalance")] + GetCompressedBalance, +} + +impl Default for Method { + fn default() -> Method { + Self::GetCompressedBalance + } +} diff --git a/photon-api/src/models/_get_compressed_token_account_balance_post_200_response.rs b/photon-api/src/models/_get_compressed_token_account_balance_post_200_response.rs new file mode 100644 index 0000000000..90a3f61d67 --- /dev/null +++ b/photon-api/src/models/_get_compressed_token_account_balance_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedTokenAccountBalancePost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option>, +} + +impl GetCompressedTokenAccountBalancePost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetCompressedTokenAccountBalancePost200Response { + GetCompressedTokenAccountBalancePost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_compressed_token_account_balance_post_200_response_result.rs b/photon-api/src/models/_get_compressed_token_account_balance_post_200_response_result.rs new file mode 100644 index 0000000000..19464807df --- /dev/null +++ b/photon-api/src/models/_get_compressed_token_account_balance_post_200_response_result.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedTokenAccountBalancePost200ResponseResult { + #[serde(rename = "context")] + pub context: Box, + #[serde(rename = "value")] + pub value: Box, +} + +impl GetCompressedTokenAccountBalancePost200ResponseResult { + pub fn new( + context: models::Context, + value: models::TokenAccountBalance, + ) -> GetCompressedTokenAccountBalancePost200ResponseResult { + GetCompressedTokenAccountBalancePost200ResponseResult { + context: Box::new(context), + value: Box::new(value), + } + } +} diff --git a/photon-api/src/models/_get_compressed_token_account_balance_post_request.rs b/photon-api/src/models/_get_compressed_token_account_balance_post_request.rs new file mode 100644 index 0000000000..25c1514cfb --- /dev/null +++ b/photon-api/src/models/_get_compressed_token_account_balance_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedTokenAccountBalancePostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetCompressedTokenAccountBalancePostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetCompressedAccountPostRequestParams, + ) -> GetCompressedTokenAccountBalancePostRequest { + GetCompressedTokenAccountBalancePostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getCompressedTokenAccountBalance")] + GetCompressedTokenAccountBalance, +} + +impl Default for Method { + fn default() -> Method { + Self::GetCompressedTokenAccountBalance + } +} diff --git a/photon-api/src/models/_get_compressed_token_accounts_by_delegate_post_200_response.rs b/photon-api/src/models/_get_compressed_token_accounts_by_delegate_post_200_response.rs new file mode 100644 index 0000000000..08a550a2df --- /dev/null +++ b/photon-api/src/models/_get_compressed_token_accounts_by_delegate_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedTokenAccountsByDelegatePost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option>, +} + +impl GetCompressedTokenAccountsByDelegatePost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetCompressedTokenAccountsByDelegatePost200Response { + GetCompressedTokenAccountsByDelegatePost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_compressed_token_accounts_by_delegate_post_200_response_result.rs b/photon-api/src/models/_get_compressed_token_accounts_by_delegate_post_200_response_result.rs new file mode 100644 index 0000000000..11d6e6b4a8 --- /dev/null +++ b/photon-api/src/models/_get_compressed_token_accounts_by_delegate_post_200_response_result.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedTokenAccountsByDelegatePost200ResponseResult { + #[serde(rename = "context")] + pub context: Box, + #[serde(rename = "value")] + pub value: Box, +} + +impl GetCompressedTokenAccountsByDelegatePost200ResponseResult { + pub fn new( + context: models::Context, + value: models::TokenAccountList, + ) -> GetCompressedTokenAccountsByDelegatePost200ResponseResult { + GetCompressedTokenAccountsByDelegatePost200ResponseResult { + context: Box::new(context), + value: Box::new(value), + } + } +} diff --git a/photon-api/src/models/_get_compressed_token_accounts_by_delegate_post_request.rs b/photon-api/src/models/_get_compressed_token_accounts_by_delegate_post_request.rs new file mode 100644 index 0000000000..678a29f637 --- /dev/null +++ b/photon-api/src/models/_get_compressed_token_accounts_by_delegate_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedTokenAccountsByDelegatePostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetCompressedTokenAccountsByDelegatePostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetCompressedTokenAccountsByDelegatePostRequestParams, + ) -> GetCompressedTokenAccountsByDelegatePostRequest { + GetCompressedTokenAccountsByDelegatePostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getCompressedTokenAccountsByDelegate")] + GetCompressedTokenAccountsByDelegate, +} + +impl Default for Method { + fn default() -> Method { + Self::GetCompressedTokenAccountsByDelegate + } +} diff --git a/photon-api/src/models/_get_compressed_token_accounts_by_delegate_post_request_params.rs b/photon-api/src/models/_get_compressed_token_accounts_by_delegate_post_request_params.rs new file mode 100644 index 0000000000..f4b47f167c --- /dev/null +++ b/photon-api/src/models/_get_compressed_token_accounts_by_delegate_post_request_params.rs @@ -0,0 +1,52 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedTokenAccountsByDelegatePostRequestParams { + /// A base 58 encoded string. + #[serde( + rename = "cursor", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub cursor: Option>, + /// A Solana public key represented as a base58 string. + #[serde(rename = "delegate")] + pub delegate: String, + #[serde( + rename = "limit", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub limit: Option>, + /// A Solana public key represented as a base58 string. + #[serde( + rename = "mint", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub mint: Option>, +} + +impl GetCompressedTokenAccountsByDelegatePostRequestParams { + pub fn new(delegate: String) -> GetCompressedTokenAccountsByDelegatePostRequestParams { + GetCompressedTokenAccountsByDelegatePostRequestParams { + cursor: None, + delegate, + limit: None, + mint: None, + } + } +} diff --git a/photon-api/src/models/_get_compressed_token_accounts_by_owner_post_request.rs b/photon-api/src/models/_get_compressed_token_accounts_by_owner_post_request.rs new file mode 100644 index 0000000000..5f89c3b87d --- /dev/null +++ b/photon-api/src/models/_get_compressed_token_accounts_by_owner_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedTokenAccountsByOwnerPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetCompressedTokenAccountsByOwnerPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetCompressedTokenAccountsByOwnerPostRequestParams, + ) -> GetCompressedTokenAccountsByOwnerPostRequest { + GetCompressedTokenAccountsByOwnerPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getCompressedTokenAccountsByOwner")] + GetCompressedTokenAccountsByOwner, +} + +impl Default for Method { + fn default() -> Method { + Self::GetCompressedTokenAccountsByOwner + } +} diff --git a/photon-api/src/models/_get_compressed_token_accounts_by_owner_post_request_params.rs b/photon-api/src/models/_get_compressed_token_accounts_by_owner_post_request_params.rs new file mode 100644 index 0000000000..0541ea8767 --- /dev/null +++ b/photon-api/src/models/_get_compressed_token_accounts_by_owner_post_request_params.rs @@ -0,0 +1,52 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedTokenAccountsByOwnerPostRequestParams { + /// A base 58 encoded string. + #[serde( + rename = "cursor", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub cursor: Option>, + #[serde( + rename = "limit", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub limit: Option>, + /// A Solana public key represented as a base58 string. + #[serde( + rename = "mint", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub mint: Option>, + /// A Solana public key represented as a base58 string. + #[serde(rename = "owner")] + pub owner: String, +} + +impl GetCompressedTokenAccountsByOwnerPostRequestParams { + pub fn new(owner: String) -> GetCompressedTokenAccountsByOwnerPostRequestParams { + GetCompressedTokenAccountsByOwnerPostRequestParams { + cursor: None, + limit: None, + mint: None, + owner, + } + } +} diff --git a/photon-api/src/models/_get_compressed_token_balances_by_owner_post_200_response.rs b/photon-api/src/models/_get_compressed_token_balances_by_owner_post_200_response.rs new file mode 100644 index 0000000000..d7fc9277a2 --- /dev/null +++ b/photon-api/src/models/_get_compressed_token_balances_by_owner_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedTokenBalancesByOwnerPost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option>, +} + +impl GetCompressedTokenBalancesByOwnerPost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetCompressedTokenBalancesByOwnerPost200Response { + GetCompressedTokenBalancesByOwnerPost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_compressed_token_balances_by_owner_post_200_response_result.rs b/photon-api/src/models/_get_compressed_token_balances_by_owner_post_200_response_result.rs new file mode 100644 index 0000000000..ba8fadf759 --- /dev/null +++ b/photon-api/src/models/_get_compressed_token_balances_by_owner_post_200_response_result.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedTokenBalancesByOwnerPost200ResponseResult { + #[serde(rename = "context")] + pub context: Box, + #[serde(rename = "value")] + pub value: Box, +} + +impl GetCompressedTokenBalancesByOwnerPost200ResponseResult { + pub fn new( + context: models::Context, + value: models::TokenBalanceList, + ) -> GetCompressedTokenBalancesByOwnerPost200ResponseResult { + GetCompressedTokenBalancesByOwnerPost200ResponseResult { + context: Box::new(context), + value: Box::new(value), + } + } +} diff --git a/photon-api/src/models/_get_compressed_token_balances_by_owner_post_request.rs b/photon-api/src/models/_get_compressed_token_balances_by_owner_post_request.rs new file mode 100644 index 0000000000..8e5baaba9c --- /dev/null +++ b/photon-api/src/models/_get_compressed_token_balances_by_owner_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedTokenBalancesByOwnerPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetCompressedTokenBalancesByOwnerPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetCompressedTokenBalancesByOwnerPostRequestParams, + ) -> GetCompressedTokenBalancesByOwnerPostRequest { + GetCompressedTokenBalancesByOwnerPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getCompressedTokenBalancesByOwner")] + GetCompressedTokenBalancesByOwner, +} + +impl Default for Method { + fn default() -> Method { + Self::GetCompressedTokenBalancesByOwner + } +} diff --git a/photon-api/src/models/_get_compressed_token_balances_by_owner_post_request_params.rs b/photon-api/src/models/_get_compressed_token_balances_by_owner_post_request_params.rs new file mode 100644 index 0000000000..ac441533f0 --- /dev/null +++ b/photon-api/src/models/_get_compressed_token_balances_by_owner_post_request_params.rs @@ -0,0 +1,52 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressedTokenBalancesByOwnerPostRequestParams { + /// A base 58 encoded string. + #[serde( + rename = "cursor", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub cursor: Option>, + #[serde( + rename = "limit", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub limit: Option>, + /// A Solana public key represented as a base58 string. + #[serde( + rename = "mint", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub mint: Option>, + /// A Solana public key represented as a base58 string. + #[serde(rename = "owner")] + pub owner: String, +} + +impl GetCompressedTokenBalancesByOwnerPostRequestParams { + pub fn new(owner: String) -> GetCompressedTokenBalancesByOwnerPostRequestParams { + GetCompressedTokenBalancesByOwnerPostRequestParams { + cursor: None, + limit: None, + mint: None, + owner, + } + } +} diff --git a/photon-api/src/models/_get_compression_signatures_for_account_post_200_response.rs b/photon-api/src/models/_get_compression_signatures_for_account_post_200_response.rs new file mode 100644 index 0000000000..ac90da4179 --- /dev/null +++ b/photon-api/src/models/_get_compression_signatures_for_account_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressionSignaturesForAccountPost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option>, +} + +impl GetCompressionSignaturesForAccountPost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetCompressionSignaturesForAccountPost200Response { + GetCompressionSignaturesForAccountPost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_compression_signatures_for_account_post_200_response_result.rs b/photon-api/src/models/_get_compression_signatures_for_account_post_200_response_result.rs new file mode 100644 index 0000000000..1fea4aefc8 --- /dev/null +++ b/photon-api/src/models/_get_compression_signatures_for_account_post_200_response_result.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressionSignaturesForAccountPost200ResponseResult { + #[serde(rename = "context")] + pub context: Box, + #[serde(rename = "value")] + pub value: Box, +} + +impl GetCompressionSignaturesForAccountPost200ResponseResult { + pub fn new( + context: models::Context, + value: models::SignatureInfoList, + ) -> GetCompressionSignaturesForAccountPost200ResponseResult { + GetCompressionSignaturesForAccountPost200ResponseResult { + context: Box::new(context), + value: Box::new(value), + } + } +} diff --git a/photon-api/src/models/_get_compression_signatures_for_account_post_request.rs b/photon-api/src/models/_get_compression_signatures_for_account_post_request.rs new file mode 100644 index 0000000000..1ff6242196 --- /dev/null +++ b/photon-api/src/models/_get_compression_signatures_for_account_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressionSignaturesForAccountPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetCompressionSignaturesForAccountPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetCompressedAccountProofPostRequestParams, + ) -> GetCompressionSignaturesForAccountPostRequest { + GetCompressionSignaturesForAccountPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getCompressionSignaturesForAccount")] + GetCompressionSignaturesForAccount, +} + +impl Default for Method { + fn default() -> Method { + Self::GetCompressionSignaturesForAccount + } +} diff --git a/photon-api/src/models/_get_compression_signatures_for_address_post_200_response.rs b/photon-api/src/models/_get_compression_signatures_for_address_post_200_response.rs new file mode 100644 index 0000000000..3a07a73fe5 --- /dev/null +++ b/photon-api/src/models/_get_compression_signatures_for_address_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressionSignaturesForAddressPost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option>, +} + +impl GetCompressionSignaturesForAddressPost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetCompressionSignaturesForAddressPost200Response { + GetCompressionSignaturesForAddressPost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_compression_signatures_for_address_post_200_response_result.rs b/photon-api/src/models/_get_compression_signatures_for_address_post_200_response_result.rs new file mode 100644 index 0000000000..e521ae6dad --- /dev/null +++ b/photon-api/src/models/_get_compression_signatures_for_address_post_200_response_result.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressionSignaturesForAddressPost200ResponseResult { + #[serde(rename = "context")] + pub context: Box, + #[serde(rename = "value")] + pub value: Box, +} + +impl GetCompressionSignaturesForAddressPost200ResponseResult { + pub fn new( + context: models::Context, + value: models::PaginatedSignatureInfoList, + ) -> GetCompressionSignaturesForAddressPost200ResponseResult { + GetCompressionSignaturesForAddressPost200ResponseResult { + context: Box::new(context), + value: Box::new(value), + } + } +} diff --git a/photon-api/src/models/_get_compression_signatures_for_address_post_request.rs b/photon-api/src/models/_get_compression_signatures_for_address_post_request.rs new file mode 100644 index 0000000000..bbf28378fe --- /dev/null +++ b/photon-api/src/models/_get_compression_signatures_for_address_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressionSignaturesForAddressPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetCompressionSignaturesForAddressPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetCompressionSignaturesForAddressPostRequestParams, + ) -> GetCompressionSignaturesForAddressPostRequest { + GetCompressionSignaturesForAddressPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getCompressionSignaturesForAddress")] + GetCompressionSignaturesForAddress, +} + +impl Default for Method { + fn default() -> Method { + Self::GetCompressionSignaturesForAddress + } +} diff --git a/photon-api/src/models/_get_compression_signatures_for_address_post_request_params.rs b/photon-api/src/models/_get_compression_signatures_for_address_post_request_params.rs new file mode 100644 index 0000000000..a564e1f45a --- /dev/null +++ b/photon-api/src/models/_get_compression_signatures_for_address_post_request_params.rs @@ -0,0 +1,42 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressionSignaturesForAddressPostRequestParams { + /// A Solana public key represented as a base58 string. + #[serde(rename = "address")] + pub address: String, + #[serde( + rename = "cursor", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub cursor: Option>, + #[serde( + rename = "limit", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub limit: Option>, +} + +impl GetCompressionSignaturesForAddressPostRequestParams { + pub fn new(address: String) -> GetCompressionSignaturesForAddressPostRequestParams { + GetCompressionSignaturesForAddressPostRequestParams { + address, + cursor: None, + limit: None, + } + } +} diff --git a/photon-api/src/models/_get_compression_signatures_for_owner_post_request.rs b/photon-api/src/models/_get_compression_signatures_for_owner_post_request.rs new file mode 100644 index 0000000000..4a8e4a890b --- /dev/null +++ b/photon-api/src/models/_get_compression_signatures_for_owner_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressionSignaturesForOwnerPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetCompressionSignaturesForOwnerPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetCompressionSignaturesForOwnerPostRequestParams, + ) -> GetCompressionSignaturesForOwnerPostRequest { + GetCompressionSignaturesForOwnerPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getCompressionSignaturesForOwner")] + GetCompressionSignaturesForOwner, +} + +impl Default for Method { + fn default() -> Method { + Self::GetCompressionSignaturesForOwner + } +} diff --git a/photon-api/src/models/_get_compression_signatures_for_owner_post_request_params.rs b/photon-api/src/models/_get_compression_signatures_for_owner_post_request_params.rs new file mode 100644 index 0000000000..ebb9299fd8 --- /dev/null +++ b/photon-api/src/models/_get_compression_signatures_for_owner_post_request_params.rs @@ -0,0 +1,42 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressionSignaturesForOwnerPostRequestParams { + #[serde( + rename = "cursor", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub cursor: Option>, + #[serde( + rename = "limit", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub limit: Option>, + /// A Solana public key represented as a base58 string. + #[serde(rename = "owner")] + pub owner: String, +} + +impl GetCompressionSignaturesForOwnerPostRequestParams { + pub fn new(owner: String) -> GetCompressionSignaturesForOwnerPostRequestParams { + GetCompressionSignaturesForOwnerPostRequestParams { + cursor: None, + limit: None, + owner, + } + } +} diff --git a/photon-api/src/models/_get_compression_signatures_for_token_owner_post_request.rs b/photon-api/src/models/_get_compression_signatures_for_token_owner_post_request.rs new file mode 100644 index 0000000000..e41a299087 --- /dev/null +++ b/photon-api/src/models/_get_compression_signatures_for_token_owner_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetCompressionSignaturesForTokenOwnerPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetCompressionSignaturesForTokenOwnerPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetCompressionSignaturesForOwnerPostRequestParams, + ) -> GetCompressionSignaturesForTokenOwnerPostRequest { + GetCompressionSignaturesForTokenOwnerPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getCompressionSignaturesForTokenOwner")] + GetCompressionSignaturesForTokenOwner, +} + +impl Default for Method { + fn default() -> Method { + Self::GetCompressionSignaturesForTokenOwner + } +} diff --git a/photon-api/src/models/_get_indexer_health_post_200_response.rs b/photon-api/src/models/_get_indexer_health_post_200_response.rs new file mode 100644 index 0000000000..6faa375de4 --- /dev/null +++ b/photon-api/src/models/_get_indexer_health_post_200_response.rs @@ -0,0 +1,73 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetIndexerHealthPost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// ok if healthy + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option, +} + +impl GetIndexerHealthPost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetIndexerHealthPost200Response { + GetIndexerHealthPost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// ok if healthy +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Result { + #[serde(rename = "ok")] + Ok, +} + +impl Default for Result { + fn default() -> Result { + Self::Ok + } +} diff --git a/photon-api/src/models/_get_indexer_health_post_request.rs b/photon-api/src/models/_get_indexer_health_post_request.rs new file mode 100644 index 0000000000..3ff77622d3 --- /dev/null +++ b/photon-api/src/models/_get_indexer_health_post_request.rs @@ -0,0 +1,70 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetIndexerHealthPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, +} + +impl GetIndexerHealthPostRequest { + pub fn new(id: Id, jsonrpc: Jsonrpc, method: Method) -> GetIndexerHealthPostRequest { + GetIndexerHealthPostRequest { + id, + jsonrpc, + method, + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getIndexerHealth")] + GetIndexerHealth, +} + +impl Default for Method { + fn default() -> Method { + Self::GetIndexerHealth + } +} diff --git a/photon-api/src/models/_get_indexer_slot_post_200_response.rs b/photon-api/src/models/_get_indexer_slot_post_200_response.rs new file mode 100644 index 0000000000..e08aaeb584 --- /dev/null +++ b/photon-api/src/models/_get_indexer_slot_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetIndexerSlotPost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option, +} + +impl GetIndexerSlotPost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetIndexerSlotPost200Response { + GetIndexerSlotPost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_indexer_slot_post_request.rs b/photon-api/src/models/_get_indexer_slot_post_request.rs new file mode 100644 index 0000000000..ee705e6fc3 --- /dev/null +++ b/photon-api/src/models/_get_indexer_slot_post_request.rs @@ -0,0 +1,70 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetIndexerSlotPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, +} + +impl GetIndexerSlotPostRequest { + pub fn new(id: Id, jsonrpc: Jsonrpc, method: Method) -> GetIndexerSlotPostRequest { + GetIndexerSlotPostRequest { + id, + jsonrpc, + method, + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getIndexerSlot")] + GetIndexerSlot, +} + +impl Default for Method { + fn default() -> Method { + Self::GetIndexerSlot + } +} diff --git a/photon-api/src/models/_get_latest_compression_signatures_post_request.rs b/photon-api/src/models/_get_latest_compression_signatures_post_request.rs new file mode 100644 index 0000000000..d5d06d98ea --- /dev/null +++ b/photon-api/src/models/_get_latest_compression_signatures_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetLatestCompressionSignaturesPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetLatestCompressionSignaturesPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetLatestCompressionSignaturesPostRequestParams, + ) -> GetLatestCompressionSignaturesPostRequest { + GetLatestCompressionSignaturesPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getLatestCompressionSignatures")] + GetLatestCompressionSignatures, +} + +impl Default for Method { + fn default() -> Method { + Self::GetLatestCompressionSignatures + } +} diff --git a/photon-api/src/models/_get_latest_compression_signatures_post_request_params.rs b/photon-api/src/models/_get_latest_compression_signatures_post_request_params.rs new file mode 100644 index 0000000000..9e9ffb5437 --- /dev/null +++ b/photon-api/src/models/_get_latest_compression_signatures_post_request_params.rs @@ -0,0 +1,38 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetLatestCompressionSignaturesPostRequestParams { + #[serde( + rename = "cursor", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub cursor: Option>, + #[serde( + rename = "limit", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub limit: Option>, +} + +impl GetLatestCompressionSignaturesPostRequestParams { + pub fn new() -> GetLatestCompressionSignaturesPostRequestParams { + GetLatestCompressionSignaturesPostRequestParams { + cursor: None, + limit: None, + } + } +} diff --git a/photon-api/src/models/_get_latest_non_voting_signatures_post_request.rs b/photon-api/src/models/_get_latest_non_voting_signatures_post_request.rs new file mode 100644 index 0000000000..5bc14fa2f4 --- /dev/null +++ b/photon-api/src/models/_get_latest_non_voting_signatures_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetLatestNonVotingSignaturesPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetLatestNonVotingSignaturesPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetLatestCompressionSignaturesPostRequestParams, + ) -> GetLatestNonVotingSignaturesPostRequest { + GetLatestNonVotingSignaturesPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getLatestNonVotingSignatures")] + GetLatestNonVotingSignatures, +} + +impl Default for Method { + fn default() -> Method { + Self::GetLatestNonVotingSignatures + } +} diff --git a/photon-api/src/models/_get_multiple_compressed_account_proofs_post_200_response.rs b/photon-api/src/models/_get_multiple_compressed_account_proofs_post_200_response.rs new file mode 100644 index 0000000000..d7c5765c0b --- /dev/null +++ b/photon-api/src/models/_get_multiple_compressed_account_proofs_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetMultipleCompressedAccountProofsPost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option>, +} + +impl GetMultipleCompressedAccountProofsPost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetMultipleCompressedAccountProofsPost200Response { + GetMultipleCompressedAccountProofsPost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_multiple_compressed_account_proofs_post_200_response_result.rs b/photon-api/src/models/_get_multiple_compressed_account_proofs_post_200_response_result.rs new file mode 100644 index 0000000000..d28e0d830d --- /dev/null +++ b/photon-api/src/models/_get_multiple_compressed_account_proofs_post_200_response_result.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetMultipleCompressedAccountProofsPost200ResponseResult { + #[serde(rename = "context")] + pub context: Box, + #[serde(rename = "value")] + pub value: Vec, +} + +impl GetMultipleCompressedAccountProofsPost200ResponseResult { + pub fn new( + context: models::Context, + value: Vec, + ) -> GetMultipleCompressedAccountProofsPost200ResponseResult { + GetMultipleCompressedAccountProofsPost200ResponseResult { + context: Box::new(context), + value, + } + } +} diff --git a/photon-api/src/models/_get_multiple_compressed_account_proofs_post_request.rs b/photon-api/src/models/_get_multiple_compressed_account_proofs_post_request.rs new file mode 100644 index 0000000000..f2e974dbd9 --- /dev/null +++ b/photon-api/src/models/_get_multiple_compressed_account_proofs_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetMultipleCompressedAccountProofsPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Vec, +} + +impl GetMultipleCompressedAccountProofsPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: Vec, + ) -> GetMultipleCompressedAccountProofsPostRequest { + GetMultipleCompressedAccountProofsPostRequest { + id, + jsonrpc, + method, + params, + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getMultipleCompressedAccountProofs")] + GetMultipleCompressedAccountProofs, +} + +impl Default for Method { + fn default() -> Method { + Self::GetMultipleCompressedAccountProofs + } +} diff --git a/photon-api/src/models/_get_multiple_compressed_accounts_post_200_response.rs b/photon-api/src/models/_get_multiple_compressed_accounts_post_200_response.rs new file mode 100644 index 0000000000..670463e90e --- /dev/null +++ b/photon-api/src/models/_get_multiple_compressed_accounts_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetMultipleCompressedAccountsPost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option>, +} + +impl GetMultipleCompressedAccountsPost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetMultipleCompressedAccountsPost200Response { + GetMultipleCompressedAccountsPost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_multiple_compressed_accounts_post_200_response_result.rs b/photon-api/src/models/_get_multiple_compressed_accounts_post_200_response_result.rs new file mode 100644 index 0000000000..25c394db98 --- /dev/null +++ b/photon-api/src/models/_get_multiple_compressed_accounts_post_200_response_result.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetMultipleCompressedAccountsPost200ResponseResult { + #[serde(rename = "context")] + pub context: Box, + #[serde(rename = "value")] + pub value: Box, +} + +impl GetMultipleCompressedAccountsPost200ResponseResult { + pub fn new( + context: models::Context, + value: models::AccountList, + ) -> GetMultipleCompressedAccountsPost200ResponseResult { + GetMultipleCompressedAccountsPost200ResponseResult { + context: Box::new(context), + value: Box::new(value), + } + } +} diff --git a/photon-api/src/models/_get_multiple_compressed_accounts_post_request.rs b/photon-api/src/models/_get_multiple_compressed_accounts_post_request.rs new file mode 100644 index 0000000000..e0423f0350 --- /dev/null +++ b/photon-api/src/models/_get_multiple_compressed_accounts_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetMultipleCompressedAccountsPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetMultipleCompressedAccountsPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetMultipleCompressedAccountsPostRequestParams, + ) -> GetMultipleCompressedAccountsPostRequest { + GetMultipleCompressedAccountsPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getMultipleCompressedAccounts")] + GetMultipleCompressedAccounts, +} + +impl Default for Method { + fn default() -> Method { + Self::GetMultipleCompressedAccounts + } +} diff --git a/photon-api/src/models/_get_multiple_compressed_accounts_post_request_params.rs b/photon-api/src/models/_get_multiple_compressed_accounts_post_request_params.rs new file mode 100644 index 0000000000..231275f6b4 --- /dev/null +++ b/photon-api/src/models/_get_multiple_compressed_accounts_post_request_params.rs @@ -0,0 +1,40 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +/// GetMultipleCompressedAccountsPostRequestParams : Request for compressed account data +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetMultipleCompressedAccountsPostRequestParams { + #[serde( + rename = "addresses", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub addresses: Option>>, + #[serde( + rename = "hashes", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub hashes: Option>>, +} + +impl GetMultipleCompressedAccountsPostRequestParams { + /// Request for compressed account data + pub fn new() -> GetMultipleCompressedAccountsPostRequestParams { + GetMultipleCompressedAccountsPostRequestParams { + addresses: None, + hashes: None, + } + } +} diff --git a/photon-api/src/models/_get_transaction_with_compression_info_post_200_response.rs b/photon-api/src/models/_get_transaction_with_compression_info_post_200_response.rs new file mode 100644 index 0000000000..5cd477f0da --- /dev/null +++ b/photon-api/src/models/_get_transaction_with_compression_info_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetTransactionWithCompressionInfoPost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option>, +} + +impl GetTransactionWithCompressionInfoPost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetTransactionWithCompressionInfoPost200Response { + GetTransactionWithCompressionInfoPost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_transaction_with_compression_info_post_200_response_result.rs b/photon-api/src/models/_get_transaction_with_compression_info_post_200_response_result.rs new file mode 100644 index 0000000000..b0061b1116 --- /dev/null +++ b/photon-api/src/models/_get_transaction_with_compression_info_post_200_response_result.rs @@ -0,0 +1,32 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +/// GetTransactionWithCompressionInfoPost200ResponseResult : A Solana transaction with additional compression information +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetTransactionWithCompressionInfoPost200ResponseResult { + #[serde(rename = "compression_info", skip_serializing_if = "Option::is_none")] + pub compression_info: + Option>, + /// An encoded confirmed transaction with status meta + #[serde(rename = "transaction", skip_serializing_if = "Option::is_none")] + pub transaction: Option, +} + +impl GetTransactionWithCompressionInfoPost200ResponseResult { + /// A Solana transaction with additional compression information + pub fn new() -> GetTransactionWithCompressionInfoPost200ResponseResult { + GetTransactionWithCompressionInfoPost200ResponseResult { + compression_info: None, + transaction: None, + } + } +} diff --git a/photon-api/src/models/_get_transaction_with_compression_info_post_200_response_result_compression_info.rs b/photon-api/src/models/_get_transaction_with_compression_info_post_200_response_result_compression_info.rs new file mode 100644 index 0000000000..b76ea59c8b --- /dev/null +++ b/photon-api/src/models/_get_transaction_with_compression_info_post_200_response_result_compression_info.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetTransactionWithCompressionInfoPost200ResponseResultCompressionInfo { + #[serde(rename = "closed_accounts")] + pub closed_accounts: Vec, + #[serde(rename = "opened_accounts")] + pub opened_accounts: Vec, +} + +impl GetTransactionWithCompressionInfoPost200ResponseResultCompressionInfo { + pub fn new( + closed_accounts: Vec, + opened_accounts: Vec, + ) -> GetTransactionWithCompressionInfoPost200ResponseResultCompressionInfo { + GetTransactionWithCompressionInfoPost200ResponseResultCompressionInfo { + closed_accounts, + opened_accounts, + } + } +} diff --git a/photon-api/src/models/_get_transaction_with_compression_info_post_request.rs b/photon-api/src/models/_get_transaction_with_compression_info_post_request.rs new file mode 100644 index 0000000000..76fbeb0046 --- /dev/null +++ b/photon-api/src/models/_get_transaction_with_compression_info_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetTransactionWithCompressionInfoPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Box, +} + +impl GetTransactionWithCompressionInfoPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: models::GetTransactionWithCompressionInfoPostRequestParams, + ) -> GetTransactionWithCompressionInfoPostRequest { + GetTransactionWithCompressionInfoPostRequest { + id, + jsonrpc, + method, + params: Box::new(params), + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getTransactionWithCompressionInfo")] + GetTransactionWithCompressionInfo, +} + +impl Default for Method { + fn default() -> Method { + Self::GetTransactionWithCompressionInfo + } +} diff --git a/photon-api/src/models/_get_transaction_with_compression_info_post_request_params.rs b/photon-api/src/models/_get_transaction_with_compression_info_post_request_params.rs new file mode 100644 index 0000000000..5e880547c4 --- /dev/null +++ b/photon-api/src/models/_get_transaction_with_compression_info_post_request_params.rs @@ -0,0 +1,24 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetTransactionWithCompressionInfoPostRequestParams { + /// A Solana transaction signature. + #[serde(rename = "signature")] + pub signature: String, +} + +impl GetTransactionWithCompressionInfoPostRequestParams { + pub fn new(signature: String) -> GetTransactionWithCompressionInfoPostRequestParams { + GetTransactionWithCompressionInfoPostRequestParams { signature } + } +} diff --git a/photon-api/src/models/_get_validity_proof_post_200_response.rs b/photon-api/src/models/_get_validity_proof_post_200_response.rs new file mode 100644 index 0000000000..ac04cc418a --- /dev/null +++ b/photon-api/src/models/_get_validity_proof_post_200_response.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetValidityProofPost200Response { + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option>, + /// An ID to identify the response. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + #[serde(rename = "result", skip_serializing_if = "Option::is_none")] + pub result: Option>, +} + +impl GetValidityProofPost200Response { + pub fn new(id: Id, jsonrpc: Jsonrpc) -> GetValidityProofPost200Response { + GetValidityProofPost200Response { + error: None, + id, + jsonrpc, + result: None, + } + } +} +/// An ID to identify the response. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} diff --git a/photon-api/src/models/_get_validity_proof_post_200_response_result.rs b/photon-api/src/models/_get_validity_proof_post_200_response_result.rs new file mode 100644 index 0000000000..7cc3529f32 --- /dev/null +++ b/photon-api/src/models/_get_validity_proof_post_200_response_result.rs @@ -0,0 +1,47 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetValidityProofPost200ResponseResult { + #[serde(rename = "compressedProof")] + pub compressed_proof: Box, + #[serde(rename = "leafIndices")] + pub leaf_indices: Vec, + #[serde(rename = "leaves")] + pub leaves: Vec, + #[serde(rename = "merkleTrees")] + pub merkle_trees: Vec, + #[serde(rename = "rootIndices")] + pub root_indices: Vec, + #[serde(rename = "roots")] + pub roots: Vec, +} + +impl GetValidityProofPost200ResponseResult { + pub fn new( + compressed_proof: models::CompressedProof, + leaf_indices: Vec, + leaves: Vec, + merkle_trees: Vec, + root_indices: Vec, + roots: Vec, + ) -> GetValidityProofPost200ResponseResult { + GetValidityProofPost200ResponseResult { + compressed_proof: Box::new(compressed_proof), + leaf_indices, + leaves, + merkle_trees, + root_indices, + roots, + } + } +} diff --git a/photon-api/src/models/_get_validity_proof_post_request.rs b/photon-api/src/models/_get_validity_proof_post_request.rs new file mode 100644 index 0000000000..3553a89911 --- /dev/null +++ b/photon-api/src/models/_get_validity_proof_post_request.rs @@ -0,0 +1,78 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GetValidityProofPostRequest { + /// An ID to identify the request. + #[serde(rename = "id")] + pub id: Id, + /// The version of the JSON-RPC protocol. + #[serde(rename = "jsonrpc")] + pub jsonrpc: Jsonrpc, + /// The name of the method to invoke. + #[serde(rename = "method")] + pub method: Method, + #[serde(rename = "params")] + pub params: Vec, +} + +impl GetValidityProofPostRequest { + pub fn new( + id: Id, + jsonrpc: Jsonrpc, + method: Method, + params: Vec, + ) -> GetValidityProofPostRequest { + GetValidityProofPostRequest { + id, + jsonrpc, + method, + params, + } + } +} +/// An ID to identify the request. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Id { + #[serde(rename = "test-account")] + TestAccount, +} + +impl Default for Id { + fn default() -> Id { + Self::TestAccount + } +} +/// The version of the JSON-RPC protocol. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Jsonrpc { + #[serde(rename = "2.0")] + Variant2Period0, +} + +impl Default for Jsonrpc { + fn default() -> Jsonrpc { + Self::Variant2Period0 + } +} +/// The name of the method to invoke. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum Method { + #[serde(rename = "getValidityProof")] + GetValidityProof, +} + +impl Default for Method { + fn default() -> Method { + Self::GetValidityProof + } +} diff --git a/photon-api/src/models/account.rs b/photon-api/src/models/account.rs new file mode 100644 index 0000000000..2cdf9e7d84 --- /dev/null +++ b/photon-api/src/models/account.rs @@ -0,0 +1,60 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct Account { + /// A Solana public key represented as a base58 string. + #[serde(rename = "address", skip_serializing_if = "Option::is_none")] + pub address: Option, + #[serde(rename = "data", skip_serializing_if = "Option::is_none")] + pub data: Option>, + /// A 32-byte hash represented as a base58 string. + #[serde(rename = "hash")] + pub hash: String, + #[serde(rename = "lamports")] + pub lamports: i32, + #[serde(rename = "leafIndex")] + pub leaf_index: i32, + /// A Solana public key represented as a base58 string. + #[serde(rename = "owner")] + pub owner: String, + #[serde(rename = "seq", skip_serializing_if = "Option::is_none")] + pub seq: Option, + #[serde(rename = "slotCreated")] + pub slot_created: i32, + /// A Solana public key represented as a base58 string. + #[serde(rename = "tree")] + pub tree: String, +} + +impl Account { + pub fn new( + hash: String, + lamports: i32, + leaf_index: i32, + owner: String, + slot_created: i32, + tree: String, + ) -> Account { + Account { + address: None, + data: None, + hash, + lamports, + leaf_index, + owner, + seq: None, + slot_created, + tree, + } + } +} diff --git a/photon-api/src/models/account_data.rs b/photon-api/src/models/account_data.rs new file mode 100644 index 0000000000..61a0cc44ce --- /dev/null +++ b/photon-api/src/models/account_data.rs @@ -0,0 +1,33 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AccountData { + /// A base 64 encoded string. + #[serde(rename = "data")] + pub data: String, + /// A 32-byte hash represented as a base58 string. + #[serde(rename = "dataHash")] + pub data_hash: String, + #[serde(rename = "discriminator")] + pub discriminator: i64, +} + +impl AccountData { + pub fn new(data: String, data_hash: String, discriminator: i64) -> AccountData { + AccountData { + data, + data_hash, + discriminator, + } + } +} diff --git a/photon-api/src/models/account_list.rs b/photon-api/src/models/account_list.rs new file mode 100644 index 0000000000..adb6f7d430 --- /dev/null +++ b/photon-api/src/models/account_list.rs @@ -0,0 +1,23 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AccountList { + #[serde(rename = "items")] + pub items: Vec, +} + +impl AccountList { + pub fn new(items: Vec) -> AccountList { + AccountList { items } + } +} diff --git a/photon-api/src/models/account_state.rs b/photon-api/src/models/account_state.rs new file mode 100644 index 0000000000..ae15a4f9f9 --- /dev/null +++ b/photon-api/src/models/account_state.rs @@ -0,0 +1,35 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum AccountState { + #[serde(rename = "initialized")] + Initialized, + #[serde(rename = "frozen")] + Frozen, +} + +impl ToString for AccountState { + fn to_string(&self) -> String { + match self { + Self::Initialized => String::from("initialized"), + Self::Frozen => String::from("frozen"), + } + } +} + +impl Default for AccountState { + fn default() -> AccountState { + Self::Initialized + } +} diff --git a/photon-api/src/models/account_with_optional_token_data.rs b/photon-api/src/models/account_with_optional_token_data.rs new file mode 100644 index 0000000000..e1e793f797 --- /dev/null +++ b/photon-api/src/models/account_with_optional_token_data.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AccountWithOptionalTokenData { + #[serde(rename = "account")] + pub account: Box, + #[serde( + rename = "optional_token_data", + skip_serializing_if = "Option::is_none" + )] + pub optional_token_data: Option>, +} + +impl AccountWithOptionalTokenData { + pub fn new(account: models::Account) -> AccountWithOptionalTokenData { + AccountWithOptionalTokenData { + account: Box::new(account), + optional_token_data: None, + } + } +} diff --git a/photon-api/src/models/compressed_proof.rs b/photon-api/src/models/compressed_proof.rs new file mode 100644 index 0000000000..50a9c5f5ee --- /dev/null +++ b/photon-api/src/models/compressed_proof.rs @@ -0,0 +1,31 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct CompressedProof { + #[serde(rename = "a")] + pub a: std::path::PathBuf, + #[serde(rename = "b")] + pub b: std::path::PathBuf, + #[serde(rename = "c")] + pub c: std::path::PathBuf, +} + +impl CompressedProof { + pub fn new( + a: std::path::PathBuf, + b: std::path::PathBuf, + c: std::path::PathBuf, + ) -> CompressedProof { + CompressedProof { a, b, c } + } +} diff --git a/photon-api/src/models/compressed_proof_with_context.rs b/photon-api/src/models/compressed_proof_with_context.rs new file mode 100644 index 0000000000..9aab80553e --- /dev/null +++ b/photon-api/src/models/compressed_proof_with_context.rs @@ -0,0 +1,47 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct CompressedProofWithContext { + #[serde(rename = "compressedProof")] + pub compressed_proof: Box, + #[serde(rename = "leafIndices")] + pub leaf_indices: Vec, + #[serde(rename = "leaves")] + pub leaves: Vec, + #[serde(rename = "merkleTrees")] + pub merkle_trees: Vec, + #[serde(rename = "rootIndices")] + pub root_indices: Vec, + #[serde(rename = "roots")] + pub roots: Vec, +} + +impl CompressedProofWithContext { + pub fn new( + compressed_proof: models::CompressedProof, + leaf_indices: Vec, + leaves: Vec, + merkle_trees: Vec, + root_indices: Vec, + roots: Vec, + ) -> CompressedProofWithContext { + CompressedProofWithContext { + compressed_proof: Box::new(compressed_proof), + leaf_indices, + leaves, + merkle_trees, + root_indices, + roots, + } + } +} diff --git a/photon-api/src/models/context.rs b/photon-api/src/models/context.rs new file mode 100644 index 0000000000..102491e599 --- /dev/null +++ b/photon-api/src/models/context.rs @@ -0,0 +1,23 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct Context { + #[serde(rename = "slot")] + pub slot: i64, +} + +impl Context { + pub fn new(slot: i64) -> Context { + Context { slot } + } +} diff --git a/photon-api/src/models/merkle_proof_with_context.rs b/photon-api/src/models/merkle_proof_with_context.rs new file mode 100644 index 0000000000..348a53a9b2 --- /dev/null +++ b/photon-api/src/models/merkle_proof_with_context.rs @@ -0,0 +1,50 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct MerkleProofWithContext { + /// A 32-byte hash represented as a base58 string. + #[serde(rename = "hash")] + pub hash: String, + #[serde(rename = "leafIndex")] + pub leaf_index: u32, + /// A Solana public key represented as a base58 string. + #[serde(rename = "merkleTree")] + pub merkle_tree: String, + #[serde(rename = "proof")] + pub proof: Vec, + /// A 32-byte hash represented as a base58 string. + #[serde(rename = "root")] + pub root: String, + #[serde(rename = "rootSeq")] + pub root_seq: i64, +} + +impl MerkleProofWithContext { + pub fn new( + hash: String, + leaf_index: u32, + merkle_tree: String, + proof: Vec, + root: String, + root_seq: i64, + ) -> MerkleProofWithContext { + MerkleProofWithContext { + hash, + leaf_index, + merkle_tree, + proof, + root, + root_seq, + } + } +} diff --git a/photon-api/src/models/mod.rs b/photon-api/src/models/mod.rs new file mode 100644 index 0000000000..b674f1ebb5 --- /dev/null +++ b/photon-api/src/models/mod.rs @@ -0,0 +1,166 @@ +pub mod account; +pub use self::account::Account; +pub mod account_data; +pub use self::account_data::AccountData; +pub mod account_list; +pub use self::account_list::AccountList; +pub mod account_state; +pub use self::account_state::AccountState; +pub mod account_with_optional_token_data; +pub use self::account_with_optional_token_data::AccountWithOptionalTokenData; +pub mod compressed_proof; +pub use self::compressed_proof::CompressedProof; +pub mod compressed_proof_with_context; +pub use self::compressed_proof_with_context::CompressedProofWithContext; +pub mod context; +pub use self::context::Context; +pub mod _get_compressed_account_post_200_response; +pub use self::_get_compressed_account_post_200_response::GetCompressedAccountPost200Response; +pub mod _get_compressed_account_post_200_response_error; +pub use self::_get_compressed_account_post_200_response_error::GetCompressedAccountPost200ResponseError; +pub mod _get_compressed_account_post_200_response_result; +pub use self::_get_compressed_account_post_200_response_result::GetCompressedAccountPost200ResponseResult; +pub mod _get_compressed_account_post_429_response; +pub use self::_get_compressed_account_post_429_response::GetCompressedAccountPost429Response; +pub mod _get_compressed_account_post_request; +pub use self::_get_compressed_account_post_request::GetCompressedAccountPostRequest; +pub mod _get_compressed_account_post_request_params; +pub use self::_get_compressed_account_post_request_params::GetCompressedAccountPostRequestParams; +pub mod _get_compressed_account_proof_post_200_response; +pub use self::_get_compressed_account_proof_post_200_response::GetCompressedAccountProofPost200Response; +pub mod _get_compressed_account_proof_post_200_response_result; +pub use self::_get_compressed_account_proof_post_200_response_result::GetCompressedAccountProofPost200ResponseResult; +pub mod _get_compressed_account_proof_post_request; +pub use self::_get_compressed_account_proof_post_request::GetCompressedAccountProofPostRequest; +pub mod _get_compressed_account_proof_post_request_params; +pub use self::_get_compressed_account_proof_post_request_params::GetCompressedAccountProofPostRequestParams; +pub mod _get_compressed_accounts_by_owner_post_200_response; +pub use self::_get_compressed_accounts_by_owner_post_200_response::GetCompressedAccountsByOwnerPost200Response; +pub mod _get_compressed_accounts_by_owner_post_200_response_result; +pub use self::_get_compressed_accounts_by_owner_post_200_response_result::GetCompressedAccountsByOwnerPost200ResponseResult; +pub mod _get_compressed_accounts_by_owner_post_request; +pub use self::_get_compressed_accounts_by_owner_post_request::GetCompressedAccountsByOwnerPostRequest; +pub mod _get_compressed_accounts_by_owner_post_request_params; +pub use self::_get_compressed_accounts_by_owner_post_request_params::GetCompressedAccountsByOwnerPostRequestParams; +pub mod _get_compressed_balance_by_owner_post_request; +pub use self::_get_compressed_balance_by_owner_post_request::GetCompressedBalanceByOwnerPostRequest; +pub mod _get_compressed_balance_by_owner_post_request_params; +pub use self::_get_compressed_balance_by_owner_post_request_params::GetCompressedBalanceByOwnerPostRequestParams; +pub mod _get_compressed_balance_post_200_response; +pub use self::_get_compressed_balance_post_200_response::GetCompressedBalancePost200Response; +pub mod _get_compressed_balance_post_200_response_result; +pub use self::_get_compressed_balance_post_200_response_result::GetCompressedBalancePost200ResponseResult; +pub mod _get_compressed_balance_post_request; +pub use self::_get_compressed_balance_post_request::GetCompressedBalancePostRequest; +pub mod _get_compressed_token_account_balance_post_200_response; +pub use self::_get_compressed_token_account_balance_post_200_response::GetCompressedTokenAccountBalancePost200Response; +pub mod _get_compressed_token_account_balance_post_200_response_result; +pub use self::_get_compressed_token_account_balance_post_200_response_result::GetCompressedTokenAccountBalancePost200ResponseResult; +pub mod _get_compressed_token_account_balance_post_request; +pub use self::_get_compressed_token_account_balance_post_request::GetCompressedTokenAccountBalancePostRequest; +pub mod _get_compressed_token_accounts_by_delegate_post_200_response; +pub use self::_get_compressed_token_accounts_by_delegate_post_200_response::GetCompressedTokenAccountsByDelegatePost200Response; +pub mod _get_compressed_token_accounts_by_delegate_post_200_response_result; +pub use self::_get_compressed_token_accounts_by_delegate_post_200_response_result::GetCompressedTokenAccountsByDelegatePost200ResponseResult; +pub mod _get_compressed_token_accounts_by_delegate_post_request; +pub use self::_get_compressed_token_accounts_by_delegate_post_request::GetCompressedTokenAccountsByDelegatePostRequest; +pub mod _get_compressed_token_accounts_by_delegate_post_request_params; +pub use self::_get_compressed_token_accounts_by_delegate_post_request_params::GetCompressedTokenAccountsByDelegatePostRequestParams; +pub mod _get_compressed_token_accounts_by_owner_post_request; +pub use self::_get_compressed_token_accounts_by_owner_post_request::GetCompressedTokenAccountsByOwnerPostRequest; +pub mod _get_compressed_token_accounts_by_owner_post_request_params; +pub use self::_get_compressed_token_accounts_by_owner_post_request_params::GetCompressedTokenAccountsByOwnerPostRequestParams; +pub mod _get_compressed_token_balances_by_owner_post_200_response; +pub use self::_get_compressed_token_balances_by_owner_post_200_response::GetCompressedTokenBalancesByOwnerPost200Response; +pub mod _get_compressed_token_balances_by_owner_post_200_response_result; +pub use self::_get_compressed_token_balances_by_owner_post_200_response_result::GetCompressedTokenBalancesByOwnerPost200ResponseResult; +pub mod _get_compressed_token_balances_by_owner_post_request; +pub use self::_get_compressed_token_balances_by_owner_post_request::GetCompressedTokenBalancesByOwnerPostRequest; +pub mod _get_compressed_token_balances_by_owner_post_request_params; +pub use self::_get_compressed_token_balances_by_owner_post_request_params::GetCompressedTokenBalancesByOwnerPostRequestParams; +pub mod _get_compression_signatures_for_account_post_200_response; +pub use self::_get_compression_signatures_for_account_post_200_response::GetCompressionSignaturesForAccountPost200Response; +pub mod _get_compression_signatures_for_account_post_200_response_result; +pub use self::_get_compression_signatures_for_account_post_200_response_result::GetCompressionSignaturesForAccountPost200ResponseResult; +pub mod _get_compression_signatures_for_account_post_request; +pub use self::_get_compression_signatures_for_account_post_request::GetCompressionSignaturesForAccountPostRequest; +pub mod _get_compression_signatures_for_address_post_200_response; +pub use self::_get_compression_signatures_for_address_post_200_response::GetCompressionSignaturesForAddressPost200Response; +pub mod _get_compression_signatures_for_address_post_200_response_result; +pub use self::_get_compression_signatures_for_address_post_200_response_result::GetCompressionSignaturesForAddressPost200ResponseResult; +pub mod _get_compression_signatures_for_address_post_request; +pub use self::_get_compression_signatures_for_address_post_request::GetCompressionSignaturesForAddressPostRequest; +pub mod _get_compression_signatures_for_address_post_request_params; +pub use self::_get_compression_signatures_for_address_post_request_params::GetCompressionSignaturesForAddressPostRequestParams; +pub mod _get_compression_signatures_for_owner_post_request; +pub use self::_get_compression_signatures_for_owner_post_request::GetCompressionSignaturesForOwnerPostRequest; +pub mod _get_compression_signatures_for_owner_post_request_params; +pub use self::_get_compression_signatures_for_owner_post_request_params::GetCompressionSignaturesForOwnerPostRequestParams; +pub mod _get_compression_signatures_for_token_owner_post_request; +pub use self::_get_compression_signatures_for_token_owner_post_request::GetCompressionSignaturesForTokenOwnerPostRequest; +pub mod _get_indexer_health_post_200_response; +pub use self::_get_indexer_health_post_200_response::GetIndexerHealthPost200Response; +pub mod _get_indexer_health_post_request; +pub use self::_get_indexer_health_post_request::GetIndexerHealthPostRequest; +pub mod _get_indexer_slot_post_200_response; +pub use self::_get_indexer_slot_post_200_response::GetIndexerSlotPost200Response; +pub mod _get_indexer_slot_post_request; +pub use self::_get_indexer_slot_post_request::GetIndexerSlotPostRequest; +pub mod _get_latest_compression_signatures_post_request; +pub use self::_get_latest_compression_signatures_post_request::GetLatestCompressionSignaturesPostRequest; +pub mod _get_latest_compression_signatures_post_request_params; +pub use self::_get_latest_compression_signatures_post_request_params::GetLatestCompressionSignaturesPostRequestParams; +pub mod _get_latest_non_voting_signatures_post_request; +pub use self::_get_latest_non_voting_signatures_post_request::GetLatestNonVotingSignaturesPostRequest; +pub mod _get_multiple_compressed_account_proofs_post_200_response; +pub use self::_get_multiple_compressed_account_proofs_post_200_response::GetMultipleCompressedAccountProofsPost200Response; +pub mod _get_multiple_compressed_account_proofs_post_200_response_result; +pub use self::_get_multiple_compressed_account_proofs_post_200_response_result::GetMultipleCompressedAccountProofsPost200ResponseResult; +pub mod _get_multiple_compressed_account_proofs_post_request; +pub use self::_get_multiple_compressed_account_proofs_post_request::GetMultipleCompressedAccountProofsPostRequest; +pub mod _get_multiple_compressed_accounts_post_200_response; +pub use self::_get_multiple_compressed_accounts_post_200_response::GetMultipleCompressedAccountsPost200Response; +pub mod _get_multiple_compressed_accounts_post_200_response_result; +pub use self::_get_multiple_compressed_accounts_post_200_response_result::GetMultipleCompressedAccountsPost200ResponseResult; +pub mod _get_multiple_compressed_accounts_post_request; +pub use self::_get_multiple_compressed_accounts_post_request::GetMultipleCompressedAccountsPostRequest; +pub mod _get_multiple_compressed_accounts_post_request_params; +pub use self::_get_multiple_compressed_accounts_post_request_params::GetMultipleCompressedAccountsPostRequestParams; +pub mod _get_transaction_with_compression_info_post_200_response; +pub use self::_get_transaction_with_compression_info_post_200_response::GetTransactionWithCompressionInfoPost200Response; +pub mod _get_transaction_with_compression_info_post_200_response_result; +pub use self::_get_transaction_with_compression_info_post_200_response_result::GetTransactionWithCompressionInfoPost200ResponseResult; +pub mod _get_transaction_with_compression_info_post_200_response_result_compression_info; +pub use self::_get_transaction_with_compression_info_post_200_response_result_compression_info::GetTransactionWithCompressionInfoPost200ResponseResultCompressionInfo; +pub mod _get_transaction_with_compression_info_post_request; +pub use self::_get_transaction_with_compression_info_post_request::GetTransactionWithCompressionInfoPostRequest; +pub mod _get_transaction_with_compression_info_post_request_params; +pub use self::_get_transaction_with_compression_info_post_request_params::GetTransactionWithCompressionInfoPostRequestParams; +pub mod _get_validity_proof_post_200_response; +pub use self::_get_validity_proof_post_200_response::GetValidityProofPost200Response; +pub mod _get_validity_proof_post_200_response_result; +pub use self::_get_validity_proof_post_200_response_result::GetValidityProofPost200ResponseResult; +pub mod _get_validity_proof_post_request; +pub use self::_get_validity_proof_post_request::GetValidityProofPostRequest; +pub mod merkle_proof_with_context; +pub use self::merkle_proof_with_context::MerkleProofWithContext; +pub mod paginated_account_list; +pub use self::paginated_account_list::PaginatedAccountList; +pub mod paginated_signature_info_list; +pub use self::paginated_signature_info_list::PaginatedSignatureInfoList; +pub mod signature_info; +pub use self::signature_info::SignatureInfo; +pub mod signature_info_list; +pub use self::signature_info_list::SignatureInfoList; +pub mod token_acccount; +pub use self::token_acccount::TokenAcccount; +pub mod token_account_balance; +pub use self::token_account_balance::TokenAccountBalance; +pub mod token_account_list; +pub use self::token_account_list::TokenAccountList; +pub mod token_balance; +pub use self::token_balance::TokenBalance; +pub mod token_balance_list; +pub use self::token_balance_list::TokenBalanceList; +pub mod token_data; +pub use self::token_data::TokenData; diff --git a/photon-api/src/models/paginated_account_list.rs b/photon-api/src/models/paginated_account_list.rs new file mode 100644 index 0000000000..2d247fbbff --- /dev/null +++ b/photon-api/src/models/paginated_account_list.rs @@ -0,0 +1,29 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PaginatedAccountList { + /// A 32-byte hash represented as a base58 string. + #[serde(rename = "cursor", skip_serializing_if = "Option::is_none")] + pub cursor: Option, + #[serde(rename = "items")] + pub items: Vec, +} + +impl PaginatedAccountList { + pub fn new(items: Vec) -> PaginatedAccountList { + PaginatedAccountList { + cursor: None, + items, + } + } +} diff --git a/photon-api/src/models/paginated_signature_info_list.rs b/photon-api/src/models/paginated_signature_info_list.rs new file mode 100644 index 0000000000..e66c6bf4eb --- /dev/null +++ b/photon-api/src/models/paginated_signature_info_list.rs @@ -0,0 +1,33 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PaginatedSignatureInfoList { + #[serde( + rename = "cursor", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub cursor: Option>, + #[serde(rename = "items")] + pub items: Vec, +} + +impl PaginatedSignatureInfoList { + pub fn new(items: Vec) -> PaginatedSignatureInfoList { + PaginatedSignatureInfoList { + cursor: None, + items, + } + } +} diff --git a/photon-api/src/models/signature_info.rs b/photon-api/src/models/signature_info.rs new file mode 100644 index 0000000000..236b9f6c27 --- /dev/null +++ b/photon-api/src/models/signature_info.rs @@ -0,0 +1,33 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct SignatureInfo { + /// An Unix timestamp (seconds) + #[serde(rename = "blockTime")] + pub block_time: i32, + /// A Solana transaction signature. + #[serde(rename = "signature")] + pub signature: String, + #[serde(rename = "slot")] + pub slot: i32, +} + +impl SignatureInfo { + pub fn new(block_time: i32, signature: String, slot: i32) -> SignatureInfo { + SignatureInfo { + block_time, + signature, + slot, + } + } +} diff --git a/photon-api/src/models/signature_info_list.rs b/photon-api/src/models/signature_info_list.rs new file mode 100644 index 0000000000..9422a6bbe1 --- /dev/null +++ b/photon-api/src/models/signature_info_list.rs @@ -0,0 +1,23 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct SignatureInfoList { + #[serde(rename = "items")] + pub items: Vec, +} + +impl SignatureInfoList { + pub fn new(items: Vec) -> SignatureInfoList { + SignatureInfoList { items } + } +} diff --git a/photon-api/src/models/token_acccount.rs b/photon-api/src/models/token_acccount.rs new file mode 100644 index 0000000000..fce112419a --- /dev/null +++ b/photon-api/src/models/token_acccount.rs @@ -0,0 +1,28 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TokenAcccount { + #[serde(rename = "account")] + pub account: Box, + #[serde(rename = "tokenData")] + pub token_data: Box, +} + +impl TokenAcccount { + pub fn new(account: models::Account, token_data: models::TokenData) -> TokenAcccount { + TokenAcccount { + account: Box::new(account), + token_data: Box::new(token_data), + } + } +} diff --git a/photon-api/src/models/token_account_balance.rs b/photon-api/src/models/token_account_balance.rs new file mode 100644 index 0000000000..77d413c7d6 --- /dev/null +++ b/photon-api/src/models/token_account_balance.rs @@ -0,0 +1,23 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TokenAccountBalance { + #[serde(rename = "amount")] + pub amount: i32, +} + +impl TokenAccountBalance { + pub fn new(amount: i32) -> TokenAccountBalance { + TokenAccountBalance { amount } + } +} diff --git a/photon-api/src/models/token_account_list.rs b/photon-api/src/models/token_account_list.rs new file mode 100644 index 0000000000..3cc61f04bf --- /dev/null +++ b/photon-api/src/models/token_account_list.rs @@ -0,0 +1,29 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TokenAccountList { + /// A base 58 encoded string. + #[serde(rename = "cursor", skip_serializing_if = "Option::is_none")] + pub cursor: Option, + #[serde(rename = "items")] + pub items: Vec, +} + +impl TokenAccountList { + pub fn new(items: Vec) -> TokenAccountList { + TokenAccountList { + cursor: None, + items, + } + } +} diff --git a/photon-api/src/models/token_balance.rs b/photon-api/src/models/token_balance.rs new file mode 100644 index 0000000000..bd09c07f61 --- /dev/null +++ b/photon-api/src/models/token_balance.rs @@ -0,0 +1,26 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TokenBalance { + #[serde(rename = "balance")] + pub balance: i32, + /// A Solana public key represented as a base58 string. + #[serde(rename = "mint")] + pub mint: String, +} + +impl TokenBalance { + pub fn new(balance: i32, mint: String) -> TokenBalance { + TokenBalance { balance, mint } + } +} diff --git a/photon-api/src/models/token_balance_list.rs b/photon-api/src/models/token_balance_list.rs new file mode 100644 index 0000000000..a26d65aeef --- /dev/null +++ b/photon-api/src/models/token_balance_list.rs @@ -0,0 +1,33 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TokenBalanceList { + #[serde( + rename = "cursor", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub cursor: Option>, + #[serde(rename = "token_balances")] + pub token_balances: Vec, +} + +impl TokenBalanceList { + pub fn new(token_balances: Vec) -> TokenBalanceList { + TokenBalanceList { + cursor: None, + token_balances, + } + } +} diff --git a/photon-api/src/models/token_data.rs b/photon-api/src/models/token_data.rs new file mode 100644 index 0000000000..39f7f4cbc3 --- /dev/null +++ b/photon-api/src/models/token_data.rs @@ -0,0 +1,52 @@ +/* + * photon-indexer + * + * Solana indexer for general compression + * + * The version of the OpenAPI document: 0.19.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TokenData { + #[serde(rename = "amount")] + pub amount: i64, + /// A Solana public key represented as a base58 string. + #[serde(rename = "delegate", skip_serializing_if = "Option::is_none")] + pub delegate: Option, + #[serde(rename = "delegatedAmount")] + pub delegated_amount: i64, + #[serde(rename = "isNative", skip_serializing_if = "Option::is_none")] + pub is_native: Option, + /// A Solana public key represented as a base58 string. + #[serde(rename = "mint")] + pub mint: String, + /// A Solana public key represented as a base58 string. + #[serde(rename = "owner")] + pub owner: String, + #[serde(rename = "state")] + pub state: models::AccountState, +} + +impl TokenData { + pub fn new( + amount: i64, + delegated_amount: i64, + mint: String, + owner: String, + state: models::AccountState, + ) -> TokenData { + TokenData { + amount, + delegate: None, + delegated_amount, + is_native: None, + mint, + owner, + state, + } + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e895097578..ced6c562f9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -416,6 +416,21 @@ importers: specifier: ^4.3.5 version: 4.9.5 + forester: + devDependencies: + '@lightprotocol/stateless.js': + specifier: workspace:^ + version: link:../js/stateless.js + '@solana/web3.js': + specifier: ^1.91.7 + version: 1.91.8 + borsh: + specifier: ^2.0.0 + version: 2.0.0 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@20.12.11)(typescript@5.4.5) + hasher.rs: devDependencies: '@coral-xyz/anchor': @@ -7488,6 +7503,10 @@ packages: bs58: 4.0.1 text-encoding-utf-8: 1.0.2 + /borsh@2.0.0: + resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==} + dev: true + /bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} dev: true @@ -13321,6 +13340,7 @@ packages: /rimraf@2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true dependencies: glob: 7.2.3 @@ -14392,6 +14412,37 @@ packages: yn: 3.1.1 dev: true + /ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.12.11 + acorn: 8.11.3 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.4.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.2): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a144541862..0f540b026d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,3 +9,4 @@ packages: - "js/stateless.js/**" - "js/compressed-token/**" - "examples/**" + - "forester/**" \ No newline at end of file diff --git a/programs/package.json b/programs/package.json index c7a9f80e28..ef391aa3d6 100644 --- a/programs/package.json +++ b/programs/package.json @@ -14,6 +14,6 @@ "test-registry": "cargo-test-sbf -p registry-test -- --test-threads=1", "token-escrow": "cargo-test-sbf -p token-escrow -- --test-threads=1", "program-owned-account-test": "cargo-test-sbf -p program-owned-account-test -- --test-threads=1", - "random-e2e-test": "RUST_MIN_STACK=8388608 cargo-test-sbf -p e2e-test -- --nocapture" + "random-e2e-test": "RUST_MIN_STACK=8388608 cargo-test-sbf -p e2e-test -- --nocapture --test-threads=1" } } diff --git a/scripts/format.sh b/scripts/format.sh index b11d252e95..8787ce3261 100755 --- a/scripts/format.sh +++ b/scripts/format.sh @@ -8,5 +8,8 @@ npx nx run-many --target=lint:fix --all cargo fmt --all cargo clippy \ --workspace \ - --exclude macro-circom \ - --all -- -A clippy::result_large_err -D warnings \ No newline at end of file + --exclude photon-api \ + -- -A clippy::result_large_err \ + -A clippy::empty-docs \ + -A clippy::to-string-trait-impl \ + -D warnings diff --git a/scripts/install.sh b/scripts/install.sh index 7b54c4a620..96fdf14e3c 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -118,6 +118,7 @@ CIRCOM_VERSION=$(latest_release Lightprotocol circom) MACRO_CIRCOM_VERSION=$(latest_release Lightprotocol macro-circom) LIGHT_PROTOCOL_VERSION=$(latest_release Lightprotocol light-protocol) PHOTON_VERSION="0.18.0" +PHOTON_BRANCH="nullify" case "${OS}" in "Darwin") @@ -206,7 +207,14 @@ rustup component add clippy rustup component add rustfmt cargo install cargo-expand wasm-pack -cargo install photon-indexer --version ${PHOTON_VERSION} + +# check if variable PHOTON_BRANCH is not empty, then install photon-indexer from the branch, otherwise install the version +if [ -n "$PHOTON_BRANCH" ]; then + cargo install --git https://github.com/Lightprotocol/photon/ --branch $PHOTON_BRANCH +else + cargo install photon-indexer --version ${PHOTON_VERSION} +fi + echo "📥 Downloading Node.js" download_and_extract \ "node-v${NODE_VERSION}-${ARCH_SUFFIX_NODE}.tar.gz" \ diff --git a/scripts/lint.sh b/scripts/lint.sh index d79119bbc6..10a00479a6 100755 --- a/scripts/lint.sh +++ b/scripts/lint.sh @@ -7,5 +7,8 @@ npx nx run-many --target=lint --all cargo fmt --all -- --check cargo clippy \ --workspace \ - --exclude macro-circom \ - --all -- -A clippy::result_large_err -D warnings \ No newline at end of file + --exclude photon-api \ + -- -A clippy::result_large_err \ + -A clippy::empty-docs \ + -A clippy::to-string-trait-impl \ + -D warnings \ No newline at end of file diff --git a/test-programs/account-compression-test/tests/address_merkle_tree_tests.rs b/test-programs/account-compression-test/tests/address_merkle_tree_tests.rs index 5aa91bf6a2..5a77b89be6 100644 --- a/test-programs/account-compression-test/tests/address_merkle_tree_tests.rs +++ b/test-programs/account-compression-test/tests/address_merkle_tree_tests.rs @@ -21,9 +21,9 @@ use light_test_utils::{ assert_rolled_over_address_merkle_tree_and_queue, set_address_merkle_tree_next_index, }, get_hash_set, + indexer::{AddressMerkleTreeAccounts, AddressMerkleTreeBundle}, test_env::create_address_merkle_tree_and_queue_account, test_forester::{empty_address_queue_test, insert_addresses}, - test_indexer::{AddressMerkleTreeAccounts, AddressMerkleTreeBundle}, }; use light_test_utils::{rpc::errors::assert_rpc_error, AccountZeroCopy}; use light_utils::bigint::bigint_to_be_bytes_array; diff --git a/test-programs/compressed-token-test/tests/test.rs b/test-programs/compressed-token-test/tests/test.rs index a66287f3f1..cb4c3d4586 100644 --- a/test-programs/compressed-token-test/tests/test.rs +++ b/test-programs/compressed-token-test/tests/test.rs @@ -1,17 +1,19 @@ #![cfg(feature = "test-sbf")] + use anchor_lang::AnchorDeserialize; use anchor_lang::AnchorSerialize; +use solana_sdk::{pubkey::Pubkey, signature::Keypair, signer::Signer, transaction::Transaction}; + use light_circuitlib_rs::gnark::helpers::kill_gnark_server; use light_compressed_token::get_cpi_authority_pda; use light_compressed_token::get_token_pool_pda; use light_compressed_token::transfer_sdk::create_transfer_instruction; -use light_compressed_token::{ - token_data::TokenData, transfer_sdk, ErrorCode, TokenTransferOutputData, -}; +use light_compressed_token::{token_data::TokenData, ErrorCode, TokenTransferOutputData}; use light_system_program::{ invoke::processor::CompressedProof, sdk::compressed_account::{CompressedAccountWithMerkleContext, MerkleContext}, }; +use light_test_utils::indexer::TokenDataWithContext; use light_test_utils::rpc::errors::RpcError; use light_test_utils::rpc::rpc_connection::RpcConnection; use light_test_utils::rpc::test_rpc::ProgramTestRpcConnection; @@ -19,13 +21,11 @@ use light_test_utils::spl::{ compress_test, compressed_transfer_test, create_mint_helper, create_token_account, decompress_test, mint_tokens_helper, }; -use light_test_utils::test_indexer::TokenDataWithContext; use light_test_utils::{ - airdrop_lamports, assert_custom_error_or_program_error, - test_env::setup_test_programs_with_accounts, test_indexer::TestIndexer, + airdrop_lamports, assert_custom_error_or_program_error, indexer::TestIndexer, + test_env::setup_test_programs_with_accounts, }; use light_verifier::VerifierError; -use solana_sdk::{pubkey::Pubkey, signature::Keypair, signer::Signer, transaction::Transaction}; #[tokio::test] async fn test_create_mint() { @@ -1050,7 +1050,7 @@ async fn perform_transfer_failing_test( } else { input_compressed_account_token_data[0].mint }; - let instruction = transfer_sdk::create_transfer_instruction( + let instruction = create_transfer_instruction( &payer.pubkey(), &payer.pubkey(), &input_compressed_accounts diff --git a/test-programs/e2e-test/tests/test.rs b/test-programs/e2e-test/tests/test.rs index 487e16d1fc..d1ffc01e7b 100644 --- a/test-programs/e2e-test/tests/test.rs +++ b/test-programs/e2e-test/tests/test.rs @@ -1,10 +1,8 @@ #![cfg(feature = "test-sbf")] use light_test_utils::e2e_test_env::{E2ETestEnv, GeneralActionConfig, KeypairActionConfig}; -use light_test_utils::rpc::solana_rpc::SERVER_URL; use light_test_utils::rpc::{ProgramTestRpcConnection, SolanaRpcConnection}; use light_test_utils::test_env::{get_test_env_accounts, setup_test_programs_with_accounts}; -use solana_client::rpc_client::RpcClient; use std::process::Command; async fn spawn_test_validator() { @@ -20,17 +18,23 @@ async fn spawn_test_validator() { } #[tokio::test(flavor = "multi_thread", worker_threads = 4)] -async fn test_5_validator_all() { +async fn test_50_validator_all() { spawn_test_validator().await; let env_accounts = get_test_env_accounts(); - let client = RpcClient::new(SERVER_URL); - let rpc = SolanaRpcConnection::new(client).await; + let rpc = SolanaRpcConnection::new().await; let mut env = E2ETestEnv::<500, SolanaRpcConnection>::new( rpc, - env_accounts, - KeypairActionConfig::all_default(), - GeneralActionConfig::default(), - 5, + &env_accounts, + KeypairActionConfig { + max_output_accounts: Some(3), + ..KeypairActionConfig::all_default() + }, + GeneralActionConfig { + nullify_compressed_accounts: Some(0.8), + ..GeneralActionConfig::default() + }, + // GeneralActionConfig::default(), + 50, None, "../../circuit-lib/circuitlib-rs/scripts/prover.sh", ) @@ -43,7 +47,7 @@ async fn test_10_all() { let (rpc, env_accounts) = setup_test_programs_with_accounts(None).await; let mut env = E2ETestEnv::<500, ProgramTestRpcConnection>::new( rpc, - env_accounts, + &env_accounts, KeypairActionConfig::all_default(), GeneralActionConfig::default(), 10, @@ -63,7 +67,7 @@ async fn test_10000_all() { let (rpc, env_accounts) = setup_test_programs_with_accounts(None).await; let mut env = E2ETestEnv::<500, ProgramTestRpcConnection>::new( rpc, - env_accounts, + &env_accounts, KeypairActionConfig::all_default(), GeneralActionConfig::default(), 10000, diff --git a/test-programs/system-cpi-test/tests/test.rs b/test-programs/system-cpi-test/tests/test.rs index 7bcea97fda..02ee3d30ac 100644 --- a/test-programs/system-cpi-test/tests/test.rs +++ b/test-programs/system-cpi-test/tests/test.rs @@ -11,11 +11,11 @@ use light_system_program::sdk::compressed_account::{ use light_system_program::sdk::CompressedCpiContext; use light_system_program::NewAddressParams; +use light_test_utils::indexer::{create_mint_helper, TestIndexer, TokenDataWithContext}; use light_test_utils::rpc::errors::{assert_rpc_error, RpcError}; use light_test_utils::rpc::rpc_connection::RpcConnection; use light_test_utils::spl::mint_tokens_helper; use light_test_utils::test_env::{setup_test_programs_with_accounts, EnvAccounts}; -use light_test_utils::test_indexer::{create_mint_helper, TestIndexer, TokenDataWithContext}; use light_utils::hash_to_bn254_field_size_be; use solana_sdk::signature::Keypair; use solana_sdk::{pubkey::Pubkey, signer::Signer, transaction::Transaction}; diff --git a/test-programs/system-cpi-test/tests/test_program_owned_trees.rs b/test-programs/system-cpi-test/tests/test_program_owned_trees.rs index 64dd89f7a3..e7e1d6674b 100644 --- a/test-programs/system-cpi-test/tests/test_program_owned_trees.rs +++ b/test-programs/system-cpi-test/tests/test_program_owned_trees.rs @@ -19,8 +19,8 @@ use light_test_utils::test_env::{ use light_test_utils::transaction_params::{FeeConfig, TransactionParams}; use light_test_utils::{ assert_custom_error_or_program_error, + indexer::{create_mint_helper, TestIndexer}, test_env::setup_test_programs_with_accounts, - test_indexer::{create_mint_helper, TestIndexer}, AccountZeroCopy, }; use solana_sdk::instruction::Instruction; diff --git a/test-programs/system-test/tests/test.rs b/test-programs/system-test/tests/test.rs index 8300540b9d..f0a477f80f 100644 --- a/test-programs/system-test/tests/test.rs +++ b/test-programs/system-test/tests/test.rs @@ -20,11 +20,11 @@ use light_test_utils::transaction_params::{FeeConfig, TransactionParams}; use light_test_utils::{ assert_compressed_tx::assert_created_compressed_accounts, assert_custom_error_or_program_error, + indexer::TestIndexer, system_program::{ compress_sol_test, create_addresses_test, decompress_sol_test, transfer_compressed_sol_test, }, test_env::setup_test_programs_with_accounts, - test_indexer::TestIndexer, }; use light_test_utils::{rpc::errors::RpcError, test_env::EnvAccounts}; use light_utils::hash_to_bn254_field_size_be; diff --git a/test-utils/Cargo.toml b/test-utils/Cargo.toml index 6261e271ec..bca0707a05 100644 --- a/test-utils/Cargo.toml +++ b/test-utils/Cargo.toml @@ -39,6 +39,7 @@ light-verifier = { path = "../circuit-lib/verifier", version = "0.1.4" } light-utils = { path = "../utils", version = "0.1.4" } memoffset = "0.9.1" rand = "0.8" +photon-api = { path = "../photon-api" } [dev-dependencies] rand = "0.8" diff --git a/test-utils/src/assert_compressed_tx.rs b/test-utils/src/assert_compressed_tx.rs index 76dd615f7b..6eb0814661 100644 --- a/test-utils/src/assert_compressed_tx.rs +++ b/test-utils/src/assert_compressed_tx.rs @@ -1,7 +1,7 @@ use crate::rpc::rpc_connection::RpcConnection; use crate::{ get_hash_set, - test_indexer::{StateMerkleTreeAccounts, TestIndexer}, + indexer::{StateMerkleTreeAccounts, TestIndexer}, AccountZeroCopy, }; use account_compression::{state::QueueAccount, StateMerkleTreeAccount}; @@ -38,7 +38,7 @@ pub struct AssertCompressedTransactionInputs<'a, const INDEXED_ARRAY_SIZE: usize } /// General tx assert: -/// 1. ouputs created +/// 1. outputs created /// 2. inputs nullified /// 3. addressed inserted into address queue /// 4. Public Transaction event emitted correctly diff --git a/test-utils/src/assert_token_tx.rs b/test-utils/src/assert_token_tx.rs index ccb868ae4f..d8b9f9af4d 100644 --- a/test-utils/src/assert_token_tx.rs +++ b/test-utils/src/assert_token_tx.rs @@ -3,7 +3,7 @@ use crate::{ assert_merkle_tree_after_tx, assert_nullifiers_exist_in_hash_sets, assert_public_transaction_event, MerkleTreeTestSnapShot, }, - test_indexer::{TestIndexer, TokenDataWithContext}, + indexer::{TestIndexer, TokenDataWithContext}, }; use light_compressed_token::{get_cpi_authority_pda, get_token_pool_pda, TokenTransferOutputData}; use light_system_program::sdk::{ diff --git a/test-utils/src/e2e_test_env.rs b/test-utils/src/e2e_test_env.rs index d9d425e227..4f486d6678 100644 --- a/test-utils/src/e2e_test_env.rs +++ b/test-utils/src/e2e_test_env.rs @@ -1,7 +1,7 @@ // Flow: // init indexer // init first keypair -// init crank +// init forester // vec of public Merkle tree NF queue pairs // vec of public address Mt and queue pairs // for i in rounds @@ -69,6 +69,10 @@ // refactor all tests to work with that so that we can run all tests with a test validator and concurrency use crate::airdrop_lamports; +use crate::indexer::{ + create_mint_helper, AddressMerkleTreeAccounts, AddressMerkleTreeBundle, + StateMerkleTreeAccounts, StateMerkleTreeBundle, TestIndexer, TokenDataWithContext, +}; use crate::rpc::rpc_connection::RpcConnection; use crate::spl::{ compress_test, compressed_transfer_test, create_token_account, decompress_test, @@ -83,11 +87,6 @@ use crate::test_env::{ init_cpi_context_account, EnvAccounts, }; use crate::test_forester::{empty_address_queue_test, nullify_compressed_accounts}; -use crate::test_indexer::TestIndexer; -use crate::test_indexer::{ - create_mint_helper, AddressMerkleTreeAccounts, AddressMerkleTreeBundle, - StateMerkleTreeAccounts, StateMerkleTreeBundle, TokenDataWithContext, -}; use crate::transaction_params::{FeeConfig, TransactionParams}; use account_compression::utils::constants::{ STATE_MERKLE_TREE_CANOPY_DEPTH, STATE_MERKLE_TREE_HEIGHT, @@ -166,7 +165,7 @@ where { pub async fn new( mut rpc: R, - env_accounts: EnvAccounts, + env_accounts: &EnvAccounts, keypair_action_config: KeypairActionConfig, general_action_config: GeneralActionConfig, rounds: u64, @@ -232,7 +231,7 @@ where /// Creates a new user with a random keypair and 100 sol pub async fn create_user(rng: &mut StdRng, rpc: &mut R) -> User { let keypair: Keypair = Keypair::from_seed(&[rng.gen_range(0..255); 32]).unwrap(); - airdrop_lamports(rpc, &keypair.pubkey(), 100_000_000_000) + airdrop_lamports(rpc, &keypair.pubkey(), 10_000_000_000) .await .unwrap(); User { @@ -606,7 +605,7 @@ where pub async fn compress_sol(&mut self, user_index: usize, balance: u64) { println!("\n --------------------------------------------------\n\t\t Compress Sol\n --------------------------------------------------"); - // Limit max compress amount to 1 sol so that context.payer doesn't get depleted by aidrops. + // Limit max compress amount to 1 sol so that context.payer doesn't get depleted by airdrops. let max_amount = std::cmp::min(balance, 1_000_000_000); let amount = Self::safe_gen_range(&mut self.rng, 1000..max_amount, max_amount / 2); let input_compressed_accounts = self.get_random_compressed_sol_accounts(user_index); @@ -867,8 +866,14 @@ where pub fn get_merkle_tree_pubkeys(&mut self, num: u64) -> Vec { let mut pubkeys = vec![]; for _ in 0..num { - let index = - Self::safe_gen_range(&mut self.rng, 0..self.indexer.state_merkle_trees.len(), 0); + let range_max: usize = std::cmp::min( + self.keypair_action_config + .max_output_accounts + .unwrap_or(self.indexer.state_merkle_trees.len() as u64), + self.indexer.state_merkle_trees.len() as u64, + ) as usize; + + let index = Self::safe_gen_range(&mut self.rng, 0..range_max, 0); pubkeys.push(self.indexer.state_merkle_trees[index].accounts.merkle_tree); } pubkeys.sort(); @@ -1027,6 +1032,20 @@ impl KeypairActionConfig { max_output_accounts: Some(10), } } + + pub fn test_forester_default() -> Self { + Self { + compress_sol: Some(1.0), + decompress_sol: Some(0.5), + transfer_sol: Some(1.0), + create_address: None, + compress_spl: None, + decompress_spl: None, + mint_spl: None, + transfer_spl: None, + max_output_accounts: Some(3), + } + } } // Configures probabilities for general actions @@ -1048,3 +1067,15 @@ impl Default for GeneralActionConfig { } } } + +impl GeneralActionConfig { + pub fn test_forester_default() -> Self { + Self { + add_keypair: Some(1.0), + create_state_mt: Some(1.0), + create_address_mt: Some(0.0), + nullify_compressed_accounts: Some(0.0), + empty_address_queue: Some(0.0), + } + } +} diff --git a/test-utils/src/indexer/mod.rs b/test-utils/src/indexer/mod.rs new file mode 100644 index 0000000000..0eebacfc34 --- /dev/null +++ b/test-utils/src/indexer/mod.rs @@ -0,0 +1,68 @@ +pub mod test_indexer; + +pub use test_indexer::create_mint_helper; +pub use test_indexer::AddressMerkleTreeAccounts; +pub use test_indexer::AddressMerkleTreeBundle; +pub use test_indexer::StateMerkleTreeAccounts; +pub use test_indexer::StateMerkleTreeBundle; +pub use test_indexer::TestIndexer; +pub use test_indexer::TokenDataWithContext; + +use account_compression::initialize_address_merkle_tree::{ + Error as AccountCompressionError, Pubkey, +}; +use light_hash_set::HashSetError; +use photon_api::apis::{default_api::GetCompressedAccountProofPostError, Error as PhotonApiError}; +use thiserror::Error; + +pub trait Indexer: Sync + Send + 'static { + fn get_multiple_compressed_account_proofs( + &self, + hashes: Vec, + ) -> impl std::future::Future, IndexerError>> + Send + Sync; + + fn account_nullified(&mut self, merkle_tree_pubkey: Pubkey, account_hash: &str); +} + +#[derive(Debug)] +pub struct MerkleProof { + pub hash: String, + pub leaf_index: u32, + pub merkle_tree: String, + pub proof: Vec<[u8; 32]>, + pub root_seq: i64, +} + +#[derive(Error, Debug)] +pub enum IndexerError { + #[error("RPC Error: {0}")] + RpcError(#[from] solana_client::client_error::ClientError), + #[error("failed to deserialize account data")] + DeserializeError(#[from] solana_sdk::program_error::ProgramError), + #[error("failed to copy merkle tree")] + CopyMerkleTreeError(#[from] std::io::Error), + #[error(transparent)] + AccountCompressionError(#[from] AccountCompressionError), + #[error(transparent)] + HashSetError(#[from] HashSetError), + #[error(transparent)] + PhotonApiError(PhotonApiErrorWrapper), + #[error("error: {0:?}")] + Custom(String), + #[error("unknown error")] + Unknown, +} + +#[derive(Error, Debug)] +pub enum PhotonApiErrorWrapper { + #[error(transparent)] + GetCompressedAccountProofPostError(#[from] PhotonApiError), +} + +impl From> for IndexerError { + fn from(err: PhotonApiError) -> Self { + IndexerError::PhotonApiError(PhotonApiErrorWrapper::GetCompressedAccountProofPostError( + err, + )) + } +} diff --git a/test-utils/src/test_indexer.rs b/test-utils/src/indexer/test_indexer.rs similarity index 88% rename from test-utils/src/test_indexer.rs rename to test-utils/src/indexer/test_indexer.rs index daf948e98c..dcff62d418 100644 --- a/test-utils/src/test_indexer.rs +++ b/test-utils/src/indexer/test_indexer.rs @@ -1,4 +1,7 @@ use std::marker::PhantomData; +use std::sync::{Arc, Mutex}; + +use solana_sdk::bs58; use { crate::{ @@ -48,9 +51,10 @@ use { reqwest::Client, solana_sdk::{instruction::Instruction, pubkey::Pubkey, signature::Keypair, signer::Signer}, spl_token::instruction::initialize_mint, - std::{thread, time::Duration}, + std::time::Duration, }; +use crate::indexer::{Indexer, IndexerError, MerkleProof}; use crate::{ rpc::rpc_connection::RpcConnection, test_env::create_address_merkle_tree_and_queue_account, }; @@ -96,7 +100,7 @@ pub struct TestIndexer { pub payer: Keypair, pub group_pda: Pubkey, pub compressed_accounts: Vec, - pub nullified_compressed_accounts: Vec, + pub nullified_compressed_accounts: Arc>>, pub token_compressed_accounts: Vec, pub token_nullified_compressed_accounts: Vec, pub events: Vec, @@ -110,7 +114,99 @@ pub struct TokenDataWithContext { pub token_data: TokenData, pub compressed_account: CompressedAccountWithMerkleContext, } + +impl Indexer + for TestIndexer +{ + async fn get_multiple_compressed_account_proofs( + &self, + hashes: Vec, + ) -> Result, IndexerError> { + let mut proofs: Vec = Vec::new(); + let matching_hashes_count = self.count_matching_hashes(&hashes); + if matching_hashes_count == 0 { + return Err(IndexerError::Custom("No matching hashes found".to_string())); + } + for account in self.nullified_compressed_accounts.lock().unwrap().iter() { + let hash = account + .compressed_account + .hash::( + &account.merkle_context.merkle_tree_pubkey, + &account.merkle_context.leaf_index, + ) + .unwrap(); + let bs58_hash = bs58::encode(hash).into_string(); + if hashes.contains(&bs58_hash) { + let state_tree_bundle = self + .state_merkle_trees + .iter() + .find(|x| x.accounts.merkle_tree == account.merkle_context.merkle_tree_pubkey) + .unwrap(); + if let Some(leaf_index) = state_tree_bundle.merkle_tree.get_leaf_index(&hash) { + let proof = state_tree_bundle + .merkle_tree + .get_proof_of_leaf(leaf_index, false) + .unwrap(); + proofs.push(MerkleProof { + hash: bs58_hash, + leaf_index: account.merkle_context.leaf_index, + merkle_tree: account.merkle_context.merkle_tree_pubkey.to_string(), + proof: proof.to_vec(), + root_seq: self.events.len() as i64, + }); + } else { + // println!("get_multiple_compressed_account_proofs: hash {} not found in merkle tree", bs58_hash); + } + } + } + + Ok(proofs) + } + + fn account_nullified(&mut self, merkle_tree_pubkey: Pubkey, account_hash: &str) { + let decoded_hash: [u8; 32] = bs58::decode(account_hash) + .into_vec() + .unwrap() + .as_slice() + .try_into() + .unwrap(); + if let Some(state_tree_bundle) = self + .state_merkle_trees + .iter_mut() + .find(|x| x.accounts.merkle_tree == merkle_tree_pubkey) + { + if let Some(leaf_index) = state_tree_bundle.merkle_tree.get_leaf_index(&decoded_hash) { + state_tree_bundle + .merkle_tree + .update(&[0u8; 32], leaf_index) + .unwrap(); + } + } + } +} impl TestIndexer { + fn count_matching_hashes(&self, query_hashes: &[String]) -> usize { + self.nullified_compressed_accounts + .lock() + .unwrap() + .iter() + .map(|account| self.compute_hash(account)) + .filter(|bs58_hash| query_hashes.contains(bs58_hash)) + .count() + } + + fn compute_hash(&self, account: &CompressedAccountWithMerkleContext) -> String { + // replace AccountType with actual type + let hash = account + .compressed_account + .hash::( + &account.merkle_context.merkle_tree_pubkey, + &account.merkle_context.leaf_index, + ) + .unwrap(); + bs58::encode(hash).into_string() + } + pub fn get_state_merkle_tree_accounts( &self, pubkeys: &[Pubkey], @@ -192,12 +288,14 @@ impl TestIndexer TestIndexer 0 { if retries < 3 { spawn_gnark_server(self.path.as_str(), true, self.proof_types.as_slice()).await; - thread::sleep(Duration::from_secs(5)); + tokio::time::sleep(Duration::from_secs(5)).await; } let response_result = client .post(&format!("{}{}", SERVER_ADDRESS, PROVE_PATH)) @@ -453,7 +551,7 @@ impl TestIndexer TestIndexer impl std::future::Future> + Send; fn airdrop_lamports( &mut self, - destination_pubkey: &Pubkey, + to: &Pubkey, lamports: u64, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; // TODO: return Result fn get_anchor_account( diff --git a/test-utils/src/rpc/solana_rpc.rs b/test-utils/src/rpc/solana_rpc.rs index 85d507384c..8731dbfa4f 100644 --- a/test-utils/src/rpc/solana_rpc.rs +++ b/test-utils/src/rpc/solana_rpc.rs @@ -29,36 +29,11 @@ pub struct SolanaRpcConnection { } impl SolanaRpcConnection { - pub async fn request_airdrop(payer_pubkey: &Pubkey, lamports: u64) -> Result<(), RpcError> { - let client = RpcClient::new(SERVER_URL); - let commitment_config = CommitmentConfig::finalized(); - let balance = client - .get_balance_with_commitment(payer_pubkey, commitment_config) - .map_err(RpcError::from)? - .value; - println!("Old balance: {}", balance); - if balance < lamports { - let latest_blockhash = client.get_latest_blockhash().unwrap(); - client - .request_airdrop_with_blockhash(payer_pubkey, lamports, &latest_blockhash) - .map_err(RpcError::from)?; - let mut new_balance = balance; - while new_balance < lamports { - tokio::time::sleep(std::time::Duration::from_secs(10)).await; - new_balance = client - .get_balance_with_commitment(payer_pubkey, commitment_config) - .map_err(RpcError::from)? - .value; - } - println!("New balance: {}", balance); - } - Ok(()) - } - - pub async fn new(client: RpcClient) -> Self { + pub async fn new() -> Self { let payer = Keypair::from_bytes(&PAYER_KEYPAIR).unwrap(); - Self::request_airdrop(&payer.pubkey(), LAMPORTS_PER_SOL * 1000) - .await + let client = RpcClient::new_with_commitment(SERVER_URL, CommitmentConfig::confirmed()); + client + .request_airdrop(&payer.pubkey(), LAMPORTS_PER_SOL * 1000) .unwrap(); Self { client, payer } } @@ -69,6 +44,7 @@ impl SolanaRpcConnection { ) -> Result { let rpc_transaction_config = RpcTransactionConfig { encoding: Some(UiTransactionEncoding::Base64), + commitment: Some(CommitmentConfig::confirmed()), ..Default::default() }; let transaction = self @@ -234,7 +210,7 @@ impl RpcConnection for SolanaRpcConnection { } async fn get_account(&mut self, address: Pubkey) -> Result, RpcError> { - let commitment_config = CommitmentConfig::finalized(); + let commitment_config = CommitmentConfig::confirmed(); let result = self .client .get_account_with_commitment(&address, commitment_config); @@ -273,10 +249,12 @@ impl RpcConnection for SolanaRpcConnection { async fn airdrop_lamports( &mut self, - _destination_pubkey: &Pubkey, - _lamports: u64, - ) -> Result<(), RpcError> { - todo!() + to: &Pubkey, + lamports: u64, + ) -> Result { + self.client + .request_airdrop(to, lamports) + .map_err(RpcError::from) } async fn get_anchor_account(&mut self, _pubkey: &Pubkey) -> T { diff --git a/test-utils/src/rpc/test_rpc.rs b/test-utils/src/rpc/test_rpc.rs index 12f9e91c24..a0a74570df 100644 --- a/test-utils/src/rpc/test_rpc.rs +++ b/test-utils/src/rpc/test_rpc.rs @@ -207,15 +207,12 @@ impl RpcConnection for ProgramTestRpcConnection { async fn airdrop_lamports( &mut self, - destination_pubkey: &Pubkey, + to: &Pubkey, lamports: u64, - ) -> Result<(), RpcError> { + ) -> Result { // Create a transfer instruction - let transfer_instruction = system_instruction::transfer( - &self.context.payer.pubkey(), - destination_pubkey, - lamports, - ); + let transfer_instruction = + system_instruction::transfer(&self.context.payer.pubkey(), to, lamports); let latest_blockhash = self.get_latest_blockhash().await.unwrap(); // Create and sign a transaction let transaction = Transaction::new_signed_with_payer( @@ -224,6 +221,7 @@ impl RpcConnection for ProgramTestRpcConnection { &vec![&self.get_payer()], latest_blockhash, ); + let sig = *transaction.signatures.first().unwrap(); // Send the transaction self.context @@ -231,7 +229,7 @@ impl RpcConnection for ProgramTestRpcConnection { .process_transaction(transaction) .await?; - Ok(()) + Ok(sig) } async fn get_anchor_account(&mut self, pubkey: &Pubkey) -> T { diff --git a/test-utils/src/spl.rs b/test-utils/src/spl.rs index e7b4719a43..ffeefc8658 100644 --- a/test-utils/src/spl.rs +++ b/test-utils/src/spl.rs @@ -2,9 +2,9 @@ use crate::{ assert_compressed_tx::get_merkle_tree_snapshots, assert_token_tx::{assert_create_mint, assert_mint_to, assert_transfer}, create_account_instruction, - test_indexer::{TestIndexer, TokenDataWithContext}, }; +use crate::indexer::{TestIndexer, TokenDataWithContext}; use crate::rpc::rpc_connection::RpcConnection; use crate::transaction_params::TransactionParams; use light_compressed_token::{ @@ -69,6 +69,7 @@ pub async fn mint_tokens_helper( tree_config.clone(), queue_config.clone(), ); + let c_ix = + solana_sdk::compute_budget::ComputeBudgetInstruction::set_compute_unit_limit(10_000_000); let transaction = Transaction::new_signed_with_payer( - &[account_create_ix, mt_account_create_ix, instruction], + &[c_ix, account_create_ix, mt_account_create_ix, instruction], Some(&payer.pubkey()), &vec![&payer, &address_queue_keypair, &address_merkle_tree_keypair], context.get_latest_blockhash().await.unwrap(), diff --git a/test-utils/src/test_forester.rs b/test-utils/src/test_forester.rs index ab4f0203d5..61af93eada 100644 --- a/test-utils/src/test_forester.rs +++ b/test-utils/src/test_forester.rs @@ -1,8 +1,8 @@ +use crate::indexer::test_indexer::{AddressMerkleTreeBundle, StateMerkleTreeBundle}; use crate::rpc::errors::RpcError; use crate::rpc::rpc_connection::RpcConnection; use crate::test_env::NOOP_PROGRAM_ID; -use crate::test_indexer::AddressMerkleTreeBundle; -use crate::{get_hash_set, test_indexer::StateMerkleTreeBundle, AccountZeroCopy}; +use crate::{get_hash_set, AccountZeroCopy}; use account_compression::instruction::UpdateAddressMerkleTree; use account_compression::state::QueueAccount; use account_compression::utils::constants::ADDRESS_MERKLE_TREE_ROOTS;