diff --git a/.solitarc.js b/.solitarc.js index cdf07c9..04cdde3 100644 --- a/.solitarc.js +++ b/.solitarc.js @@ -1,13 +1,13 @@ const path = require("path"); const programDir = path.join(__dirname, "programs/fragmentor"); const idlDir = path.join(__dirname, "target", "idl"); -const sdkDir = path.join(__dirname, "js", "src", "generated"); +const sdkDir = path.join(__dirname, "fragmentor-sdk", "src", "generated"); const binaryInstallDir = path.join(__dirname, ".crates"); module.exports = { idlGenerator: "anchor", programName: "fragmentor", - programId: "FRAGFu59MRwy5KeEMnbzsUPa2JkwLVsaP7WbhF2r2Yh", + programId: "9SPvLNP6TAW4ZCtST8pmCCrKYt2gctRedmq1eWAu2Cwz", idlDir, sdkDir, binaryInstallDir, diff --git a/Anchor.toml b/Anchor.toml index 531af38..c7aa7f2 100644 --- a/Anchor.toml +++ b/Anchor.toml @@ -1,7 +1,7 @@ [features] seeds = false [programs.localnet] -fragmentor = "FRAGFu59MRwy5KeEMnbzsUPa2JkwLVsaP7WbhF2r2Yh" +fragmentor = "9SPvLNP6TAW4ZCtST8pmCCrKYt2gctRedmq1eWAu2Cwz" [programs.devnet] fragmentor = "FRAGFu59MRwy5KeEMnbzsUPa2JkwLVsaP7WbhF2r2Yh" @@ -14,4 +14,4 @@ cluster = "localnet" wallet = "wallet.json" [scripts] -test = "pnpm ts-mocha -p ./tsconfig.json -t 1000000 js/tests/**/*.test.ts" +test = "pnpm vitest" diff --git a/Cargo.lock b/Cargo.lock index e3f6633..e3ff73a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,42 @@ # It is not intended for manual editing. version = 3 +[[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.6" @@ -13,6 +49,19 @@ dependencies = [ "version_check", ] +[[package]] +name = "ahash" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +dependencies = [ + "cfg-if", + "getrandom 0.2.7", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "0.7.19" @@ -24,174 +73,162 @@ dependencies = [ [[package]] name = "anchor-attribute-access-control" -version = "0.25.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f6ee9518f50ff4d434471ccf569186022bdd5ef65a21d14da3ea5231af944f" +checksum = "e5f619f1d04f53621925ba8a2e633ba5a6081f2ae14758cbb67f38fd823e0a3e" dependencies = [ "anchor-syn", - "anyhow", "proc-macro2", "quote", - "regex", - "syn", + "syn 1.0.102", ] [[package]] name = "anchor-attribute-account" -version = "0.25.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c92bcf5388b52676d990f85bbfd838a8f5672393135063a50dc79b2b837c79" +checksum = "e7f2a3e1df4685f18d12a943a9f2a7456305401af21a07c9fe076ef9ecd6e400" dependencies = [ "anchor-syn", - "anyhow", - "bs58 0.4.0", + "bs58 0.5.0", "proc-macro2", "quote", - "rustversion", - "syn", + "syn 1.0.102", ] [[package]] name = "anchor-attribute-constant" -version = "0.25.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0844974ac35e8ced62056b0d63777ebcdc5807438b8b189c881e2b647450b70a" +checksum = "9423945cb55627f0b30903288e78baf6f62c6c8ab28fb344b6b25f1ffee3dca7" dependencies = [ "anchor-syn", - "proc-macro2", - "syn", + "quote", + "syn 1.0.102", ] [[package]] name = "anchor-attribute-error" -version = "0.25.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f7467345e67a6f1d4b862b9763a4160ad89d18c247b8c902807768f7b6e23df" +checksum = "93ed12720033cc3c3bf3cfa293349c2275cd5ab99936e33dd4bf283aaad3e241" dependencies = [ "anchor-syn", - "proc-macro2", "quote", - "syn", + "syn 1.0.102", ] [[package]] name = "anchor-attribute-event" -version = "0.25.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8774e4c1ac71f71a5aea7e4932fb69c30e3b8155c4fa59fd69401195434528a9" +checksum = "eef4dc0371eba2d8c8b54794b0b0eb786a234a559b77593d6f80825b6d2c77a2" dependencies = [ "anchor-syn", - "anyhow", "proc-macro2", "quote", - "syn", + "syn 1.0.102", ] [[package]] -name = "anchor-attribute-interface" -version = "0.25.0" +name = "anchor-attribute-program" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90eeb6e1c80f9f94fcef93a52813f6472186200e275e83cb3fac92b801de92f7" +checksum = "b18c4f191331e078d4a6a080954d1576241c29c56638783322a18d308ab27e4f" dependencies = [ "anchor-syn", - "anyhow", - "heck", - "proc-macro2", "quote", - "syn", + "syn 1.0.102", ] [[package]] -name = "anchor-attribute-program" -version = "0.25.0" +name = "anchor-derive-accounts" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac515a7a5a4fea7fc768b1cec40ddb948e148ea657637c75f94f283212326cb9" +checksum = "5de10d6e9620d3bcea56c56151cad83c5992f50d5960b3a9bebc4a50390ddc3c" dependencies = [ "anchor-syn", - "anyhow", - "proc-macro2", "quote", - "syn", + "syn 1.0.102", ] [[package]] -name = "anchor-attribute-state" -version = "0.25.0" +name = "anchor-derive-serde" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43dc667b62ff71450f19dcfcc37b0c408fd4ddd89e8650368c2b0984b110603f" +checksum = "f4e2e5be518ec6053d90a2a7f26843dbee607583c779e6c8395951b9739bdfbe" dependencies = [ "anchor-syn", - "anyhow", + "borsh-derive-internal 0.10.3", "proc-macro2", "quote", - "syn", + "syn 1.0.102", ] [[package]] -name = "anchor-derive-accounts" -version = "0.25.0" +name = "anchor-derive-space" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7354d583a06701d24800a8ec4c2b0491f62581a331af349205e23421e0b56643" +checksum = "1ecc31d19fa54840e74b7a979d44bcea49d70459de846088a1d71e87ba53c419" dependencies = [ - "anchor-syn", - "anyhow", "proc-macro2", "quote", - "syn", + "syn 1.0.102", ] [[package]] name = "anchor-lang" -version = "0.25.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff5f57ec5e12fa6874b27f3d5c1f6f44302d3ad86c1266197ff7611bf6f5d251" +checksum = "35da4785497388af0553586d55ebdc08054a8b1724720ef2749d313494f2b8ad" dependencies = [ "anchor-attribute-access-control", "anchor-attribute-account", "anchor-attribute-constant", "anchor-attribute-error", "anchor-attribute-event", - "anchor-attribute-interface", "anchor-attribute-program", - "anchor-attribute-state", "anchor-derive-accounts", + "anchor-derive-serde", + "anchor-derive-space", "arrayref", "base64 0.13.0", "bincode", - "borsh", + "borsh 0.10.3", "bytemuck", + "getrandom 0.2.7", "solana-program", "thiserror", ] [[package]] name = "anchor-spl" -version = "0.25.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65904c3106851f6d1bb87d504044764819d69c51d2b4346d59d399d8afa7d18" +checksum = "6c4fd6e43b2ca6220d2ef1641539e678bfc31b6cc393cf892b373b5997b6a39a" dependencies = [ "anchor-lang", "solana-program", "spl-associated-token-account", "spl-token", + "spl-token-2022", ] [[package]] name = "anchor-syn" -version = "0.25.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55aa1e680d9471342122ed5b6bc13bf5da473b0f7e4677d41a6954e5cc8ad155" +checksum = "d9101b84702fed2ea57bd22992f75065da5648017135b844283a2f6d74f27825" dependencies = [ "anyhow", - "bs58 0.3.1", + "bs58 0.5.0", "heck", "proc-macro2", - "proc-macro2-diagnostics", "quote", "serde", "serde_json", - "sha2 0.9.9", - "syn", + "sha2 0.10.6", + "syn 1.0.102", "thiserror", ] @@ -201,17 +238,157 @@ version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" +[[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", + "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.102", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.102", +] + +[[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", +] + +[[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.102", +] + +[[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 = "array-bytes" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ad284aeb45c13f2fb4f084de4a420ebf447423bdf9386c0540ce33cb3ef4b8c" + [[package]] name = "arrayref" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "assert_matches" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] [[package]] name = "autocfg" @@ -231,6 +408,12 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "base64" +version = "0.21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" + [[package]] name = "bincode" version = "1.3.3" @@ -257,16 +440,16 @@ dependencies = [ [[package]] name = "blake3" -version = "1.3.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" +checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" dependencies = [ "arrayref", "arrayvec", "cc", "cfg-if", "constant_time_eq", - "digest 0.10.5", + "digest 0.10.7", ] [[package]] @@ -275,26 +458,43 @@ 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.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +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", - "hashbrown", + "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]] @@ -303,11 +503,24 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", + "borsh-derive-internal 0.9.3", + "borsh-schema-derive-internal 0.9.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.102", +] + +[[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", + "syn 1.0.102", ] [[package]] @@ -318,7 +531,18 @@ checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.102", +] + +[[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.102", ] [[package]] @@ -329,14 +553,19 @@ checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.102", ] [[package]] -name = "bs58" -version = "0.3.1" +name = "borsh-schema-derive-internal" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.102", +] [[package]] name = "bs58" @@ -344,6 +573,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" +[[package]] +name = "bs58" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +dependencies = [ + "tinyvec", +] + [[package]] name = "bumpalo" version = "3.11.0" @@ -362,22 +600,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.12.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f5715e491b5a1598fc2bef5a606847b5dc1d48ea625bd3c02c00de8285591da" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.2.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9e1f5fa78f69496407a27ae9ed989e3c3b072310286f5ef385525e4cbc24a9" +checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.39", ] [[package]] @@ -388,9 +626,13 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "jobserver", + "libc", +] [[package]] name = "cfg-if" @@ -398,6 +640,24 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "num-traits", +] + +[[package]] +name = "cipher" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array", +] + [[package]] name = "console_error_panic_hook" version = "0.1.7" @@ -410,9 +670,9 @@ dependencies = [ [[package]] name = "console_log" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501a375961cef1a0d44767200e66e4a559283097e91d0730b1d75dfb2f8a1494" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" dependencies = [ "log", "web-sys", @@ -420,9 +680,9 @@ dependencies = [ [[package]] name = "constant_time_eq" -version = "0.1.5" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "cpufeatures" @@ -463,7 +723,7 @@ dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset", + "memoffset 0.6.5", "scopeguard", ] @@ -502,6 +762,15 @@ dependencies = [ "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" @@ -511,84 +780,193 @@ dependencies = [ "byteorder", "digest 0.9.0", "rand_core 0.5.1", + "serde", "subtle", "zeroize", ] [[package]] -name = "digest" -version = "0.9.0" +name = "darling" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" dependencies = [ - "generic-array", + "darling_core", + "darling_macro", ] [[package]] -name = "digest" -version = "0.10.5" +name = "darling_core" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ - "block-buffer 0.10.3", - "crypto-common", - "subtle", + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.39", ] [[package]] -name = "either" -version = "1.8.0" +name = "darling_macro" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.39", +] [[package]] -name = "feature-probe" -version = "0.1.1" +name = "derivation-path" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" [[package]] -name = "fragmentor" -version = "0.1.0" +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "anchor-lang", - "anchor-spl", - "mpl-token-metadata", + "proc-macro2", + "quote", + "syn 1.0.102", ] [[package]] -name = "generic-array" -version = "0.14.6" +name = "digest" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "serde", - "typenum", - "version_check", + "generic-array", ] [[package]] -name = "getrandom" -version = "0.1.16" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", - "wasm-bindgen", + "block-buffer 0.10.4", + "crypto-common", + "subtle", ] [[package]] -name = "getrandom" -version = "0.2.7" +name = "ed25519" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +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.6", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[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 = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "fragmentor" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "anchor-spl", + "mpl-token-metadata", +] + +[[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 = "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.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -597,7 +975,16 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "ahash", + "ahash 0.7.6", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.6", ] [[package]] @@ -628,6 +1015,15 @@ dependencies = [ "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" @@ -636,9 +1032,21 @@ checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ "digest 0.9.0", "generic-array", - "hmac", + "hmac 0.8.1", ] +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "im" version = "15.1.0" @@ -670,11 +1078,20 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" +[[package]] +name = "jobserver" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +dependencies = [ + "libc", +] + [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" dependencies = [ "wasm-bindgen", ] @@ -693,9 +1110,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.135" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" [[package]] name = "libsecp256k1" @@ -710,7 +1127,7 @@ dependencies = [ "libsecp256k1-core", "libsecp256k1-gen-ecmult", "libsecp256k1-gen-genmult", - "rand", + "rand 0.7.3", "serde", "sha2 0.9.9", "typenum", @@ -772,9 +1189,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95af15f345b17af2efc8ead6080fb8bc376f8cec1b35277b935637595fe77498" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ "libc", ] @@ -788,36 +1205,49 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +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 = "mpl-token-metadata" -version = "1.4.3" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e719d7e0b5a9d97c7fd4d6f52ebfc32f1e3942e068173e47355f8c275656488a" +checksum = "2f026911d295dae5bee7186ca0d94e96ea56a3a7d802d0c038560c2c7b18418f" dependencies = [ - "arrayref", - "borsh", - "mpl-token-vault", - "num-derive", + "borsh 0.10.3", + "num-derive 0.3.3", "num-traits", - "shank", "solana-program", - "spl-associated-token-account", - "spl-token", "thiserror", ] [[package]] -name = "mpl-token-vault" -version = "0.1.0" +name = "num-bigint" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ade4ef15bc06a6033076c4ff28cba9b42521df5ec61211d6f419415ace2746a" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ - "borsh", - "num-derive", + "autocfg", + "num-integer", "num-traits", - "solana-program", - "spl-token", - "thiserror", ] [[package]] @@ -828,14 +1258,35 @@ checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.102", +] + +[[package]] +name = "num-derive" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", ] [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] @@ -852,23 +1303,44 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.7" +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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683751d591e6d81200c39fb0d1032608b77724f34114db54f571ff1317b337c0" +dependencies = [ + "num_enum_derive 0.7.1", +] + +[[package]] +name = "num_enum_derive" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" dependencies = [ - "num_enum_derive", + "proc-macro-crate 1.2.1", + "proc-macro2", + "quote", + "syn 2.0.39", ] [[package]] name = "num_enum_derive" -version = "0.5.7" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +checksum = "6c11e44798ad209ccdd91fc192f0526a369a01234f7373e1b141c96d7cee4f0e" dependencies = [ "proc-macro-crate 1.2.1", "proc-macro2", "quote", - "syn", + "syn 2.0.39", ] [[package]] @@ -906,6 +1378,48 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[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 = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[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 = "ppv-lite86" version = "0.2.16" @@ -934,31 +1448,27 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.46" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] -name = "proc-macro2-diagnostics" -version = "0.9.1" +name = "qstring" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" dependencies = [ - "proc-macro2", - "quote", - "syn", - "version_check", - "yansi", + "percent-encoding", ] [[package]] name = "quote" -version = "1.0.21" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -971,11 +1481,21 @@ checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ "getrandom 0.1.16", "libc", - "rand_chacha", + "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 = [ + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -986,6 +1506,16 @@ dependencies = [ "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" @@ -1000,6 +1530,9 @@ name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.7", +] [[package]] name = "rand_hc" @@ -1069,6 +1602,12 @@ version = "0.6.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" +[[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" @@ -1080,9 +1619,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.9" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" @@ -1104,44 +1643,66 @@ checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" [[package]] name = "serde" -version = "1.0.145" +version = "1.0.192" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" +checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" dependencies = [ "serde_derive", ] [[package]] name = "serde_bytes" -version = "0.11.7" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfc50e8183eeeb6178dcb167ae34a8051d63535023ae38b5d8d12beae193d37b" +checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.145" +version = "1.0.192" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" +checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.39", ] [[package]] name = "serde_json" -version = "1.0.86" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41feea4228a6f1cd09ec7a3593a682276702cd67b5273544757dae23c096f074" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "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.39", +] + [[package]] name = "sha2" version = "0.9.9" @@ -1163,52 +1724,36 @@ checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.5", + "digest 0.10.7", ] [[package]] name = "sha3" -version = "0.10.5" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2904bea16a1ae962b483322a1c7b81d976029203aea1f461e51cd7705db7ba9" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" dependencies = [ - "digest 0.10.5", + "block-buffer 0.9.0", + "digest 0.9.0", "keccak", + "opaque-debug", ] [[package]] -name = "shank" -version = "0.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b54c657cbe18aaff6d5042a4d48f643fdd2a826dfc7161de98ee28e5bd7e85e0" -dependencies = [ - "shank_macro", -] - -[[package]] -name = "shank_macro" -version = "0.0.9" +name = "sha3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b43a02ae007b64b177f4dbb21d322f276458e4860f9fefbd8b9b791c21644ab" +checksum = "e2904bea16a1ae962b483322a1c7b81d976029203aea1f461e51cd7705db7ba9" dependencies = [ - "proc-macro2", - "quote", - "shank_macro_impl", - "syn", + "digest 0.10.7", + "keccak", ] [[package]] -name = "shank_macro_impl" -version = "0.0.9" +name = "signature" +version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d36cdf68202db080a13ef0300c369fc691695265e3d0ab0fa08d4734b0cfb66" -dependencies = [ - "anyhow", - "proc-macro2", - "quote", - "serde", - "syn", -] +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" [[package]] name = "sized-chunks" @@ -1228,118 +1773,408 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "solana-frozen-abi" -version = "1.10.41" +version = "1.16.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d343b3838e95561548a2a651787d17aebf0a3f490f193746ee58f174f65bd7c3" +checksum = "7e77bfd59ad4e64c0f06fbcbe16d58f3a40bdbcc050fb78fc7134a55a5c290b9" dependencies = [ + "ahash 0.8.6", + "blake3", + "block-buffer 0.10.4", "bs58 0.4.0", "bv", - "generic-array", + "byteorder", + "cc", + "either", + "generic-array", + "getrandom 0.1.16", "im", "lazy_static", "log", "memmap2", + "once_cell", + "rand_core 0.6.4", "rustc_version", "serde", "serde_bytes", "serde_derive", + "serde_json", "sha2 0.10.6", "solana-frozen-abi-macro", + "subtle", "thiserror", ] [[package]] name = "solana-frozen-abi-macro" -version = "1.10.41" +version = "1.16.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a37211ec8dff16b08fcb422807fa7f046bbc6417bc43e00a2f2effd8fafec6bc" +checksum = "992b866b9f0510fd3c290afe6a37109ae8d15b74fa24e3fb6d164be2971ee94f" dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn", + "syn 2.0.39", +] + +[[package]] +name = "solana-logger" +version = "1.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0278658cd4fb5405932452bf20f7df496ce8b9e9cf66a7d1c621bbe3b01fe297" +dependencies = [ + "env_logger", + "lazy_static", + "log", ] [[package]] name = "solana-program" -version = "1.10.41" +version = "1.16.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9622af117fe254208f1fe99a533ea523624d64745d6cffecd986da6753662ef" +checksum = "aa5ac2110c5b927d6114b2d4f32af7f749fde0e6fd8f34777407ce89d66630be" dependencies = [ - "base64 0.13.0", + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", + "array-bytes", + "base64 0.21.5", "bincode", "bitflags", "blake3", - "borsh", - "borsh-derive", + "borsh 0.10.3", + "borsh 0.9.3", "bs58 0.4.0", "bv", "bytemuck", + "cc", "console_error_panic_hook", "console_log", "curve25519-dalek", - "getrandom 0.1.16", + "getrandom 0.2.7", "itertools", "js-sys", "lazy_static", + "libc", "libsecp256k1", "log", - "num-derive", + "memoffset 0.9.0", + "num-bigint", + "num-derive 0.3.3", "num-traits", "parking_lot", - "rand", + "rand 0.7.3", + "rand_chacha 0.2.2", "rustc_version", "rustversion", "serde", "serde_bytes", "serde_derive", + "serde_json", "sha2 0.10.6", - "sha3", + "sha3 0.10.5", "solana-frozen-abi", "solana-frozen-abi-macro", "solana-sdk-macro", "thiserror", + "tiny-bip39", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "solana-sdk" +version = "1.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbe17a1ce6082979e7beffb7cadd7051e29d873594622a11a7d0a4c2dd4b7934" +dependencies = [ + "assert_matches", + "base64 0.21.5", + "bincode", + "bitflags", + "borsh 0.10.3", + "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.3.3", + "num-traits", + "num_enum 0.6.1", + "pbkdf2 0.11.0", + "qstring", + "rand 0.7.3", + "rand_chacha 0.2.2", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "serde_with", + "sha2 0.10.6", + "sha3 0.10.5", + "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.10.41" +version = "1.16.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d036e3a52e5570114ec9ab56a1d0a6659e1ebd1c948605318b4e35eafca4515" +checksum = "9fe4363d2503a75325ec94aa18b063574edb3454d38840e01c5af477b3b0689d" dependencies = [ "bs58 0.4.0", "proc-macro2", "quote", "rustversion", - "syn", + "syn 2.0.39", +] + +[[package]] +name = "solana-zk-token-sdk" +version = "1.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0c83eec033c30c95938905374292fb8a3559dd3dfb36d715624e5f8f41b078e" +dependencies = [ + "aes-gcm-siv", + "base64 0.21.5", + "bincode", + "bytemuck", + "byteorder", + "curve25519-dalek", + "getrandom 0.1.16", + "itertools", + "lazy_static", + "merlin", + "num-derive 0.3.3", + "num-traits", + "rand 0.7.3", + "serde", + "serde_json", + "sha3 0.9.1", + "solana-program", + "solana-sdk", + "subtle", + "thiserror", + "zeroize", ] [[package]] name = "spl-associated-token-account" -version = "1.0.5" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b013067447a1396303ddfc294f36e3d260a32f8a16c501c295bcdc7de39b490" +checksum = "385e31c29981488f2820b2022d8e731aae3b02e6e18e2fd854e4c9a94dc44fc3" dependencies = [ - "borsh", + "assert_matches", + "borsh 0.10.3", + "num-derive 0.4.1", + "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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fadbefec4f3c678215ca72bd71862697bb06b41fd77c0088902dd3203354387b" +dependencies = [ + "quote", + "spl-discriminator-syn", + "syn 2.0.39", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e5f2044ca42c8938d54d1255ce599c79a1ffd86b677dfab695caa20f9ffc3f2" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.6", + "syn 2.0.39", + "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.1", + "num-traits", + "solana-program", + "spl-program-error-derive", + "thiserror", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5269c8e868da17b6552ef35a51355a017bd8e0eae269c201fef830d35fa52c" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.6", + "syn 2.0.39", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "062e148d3eab7b165582757453632ffeef490c02c86a48bfdb4988f63eefb3b9" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-type-length-value", ] [[package]] name = "spl-token" -version = "3.3.0" +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 = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc67166ef99d10c18cb5e9c208901e6d8255c6513bb1f877977eba48e6cc4fb" +checksum = "e4abf34a65ba420584a0c35f3903f8d727d1f13ababbdc3f714c6b065a686e86" dependencies = [ "arrayref", - "num-derive", + "bytemuck", + "num-derive 0.4.1", "num-traits", - "num_enum", + "num_enum 0.7.1", "solana-program", + "solana-zk-token-sdk", + "spl-memo", + "spl-pod", + "spl-token", + "spl-token-metadata-interface", + "spl-transfer-hook-interface", + "spl-type-length-value", "thiserror", ] +[[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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051d31803f873cabe71aec3c1b849f35248beae5d19a347d93a5c9cccc5d5a9b" +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.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "subtle" version = "2.4.1" @@ -1357,26 +2192,80 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "2.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "termcolor" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +dependencies = [ + "winapi-util", +] + [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.39", ] +[[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 = "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 = "toml" version = "0.5.9" @@ -1398,12 +2287,41 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + [[package]] name = "unicode-segmentation" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" +[[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 = "uriparse" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" +dependencies = [ + "fnv", + "lazy_static", +] + [[package]] name = "version_check" version = "0.9.4" @@ -1424,9 +2342,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1434,24 +2352,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn", + "syn 2.0.39", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1459,22 +2377,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.39", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" [[package]] name = "web-sys" @@ -1486,6 +2404,37 @@ dependencies = [ "wasm-bindgen", ] +[[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-sys" version = "0.36.1" @@ -1530,13 +2479,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" [[package]] -name = "yansi" -version = "0.5.1" +name = "zerocopy" +version = "0.7.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] [[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.39", +] diff --git a/fragmentor-app/.env.example b/fragmentor-app/.env.example new file mode 100644 index 0000000..3bcdfab --- /dev/null +++ b/fragmentor-app/.env.example @@ -0,0 +1 @@ +NEXT_PUBLIC_RPC=http://localhost:8899 \ No newline at end of file diff --git a/fragmentor-app/.gitignore b/fragmentor-app/.gitignore index c87c9b3..925ce47 100644 --- a/fragmentor-app/.gitignore +++ b/fragmentor-app/.gitignore @@ -4,6 +4,7 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz # testing /coverage @@ -23,7 +24,6 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -.pnpm-debug.log* # local env files .env*.local @@ -34,3 +34,5 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +.env diff --git a/fragmentor-app/README.md b/fragmentor-app/README.md index c87e042..c403366 100644 --- a/fragmentor-app/README.md +++ b/fragmentor-app/README.md @@ -8,15 +8,17 @@ First, run the development server: npm run dev # or yarn dev +# or +pnpm dev +# or +bun dev ``` Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. -You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file. - -[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`. +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. -The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. +This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. ## Learn More diff --git a/fragmentor-app/components/Fragment.tsx b/fragmentor-app/components/Fragment.tsx deleted file mode 100644 index eb1fcda..0000000 --- a/fragmentor-app/components/Fragment.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import type { FC } from 'react'; -import type { FragmentData } from 'fragmentor'; - -import { PublicKey } from '@metaplex-foundation/js'; - -type FragmentProps = { - fragment: { originalNft: string; fragments: FragmentData[] }; - unfragmentNft: (originalNft: PublicKey, fragments: FragmentData[]) => void; - claimNft: (originalNft: PublicKey) => void; -}; - -const Fragment: FC = ({ fragment, unfragmentNft, claimNft }) => { - function handleUnfragmentNft() { - unfragmentNft(new PublicKey(fragment.originalNft), fragment.fragments); - } - - function handleClaimNft() { - claimNft(new PublicKey(fragment.originalNft)); - } - - return ( -
-

- Original NFT: {fragment.originalNft} -

- - {fragment.fragments.map((f, index) => { - return ( -
- Fragment {index + 1}: {f.mint.toBase58()} - {f.isBurned ? '🔥️' : '❌️'} -
- ); - })} - -
- ); -}; - -export default Fragment; diff --git a/fragmentor-app/components/Navbar.tsx b/fragmentor-app/components/Navbar.tsx deleted file mode 100644 index da61b03..0000000 --- a/fragmentor-app/components/Navbar.tsx +++ /dev/null @@ -1,63 +0,0 @@ -/* eslint-disable @next/next/no-img-element */ -import { type FC, useEffect, useMemo, useState, lazy, Suspense } from 'react'; - -import { WalletMultiButton } from '@solana/wallet-adapter-react-ui'; -import useFetchNfts from '../hooks/useFetchNfts'; -import { MetaplexClient } from '../lib/metaplex'; -import { useConnection, useWallet } from '@solana/wallet-adapter-react'; -import Link from 'next/link'; -import Image from 'next/image'; -import { useQueryClient } from 'react-query'; - -const MyNftsPopup = lazy(() => import('./MyNftsPopup')); - -const Navbar: FC = () => { - const [popupOpen, setPopupOpen] = useState(false); - const { connection } = useConnection(); - const { publicKey } = useWallet(); - const queryClient = useQueryClient(); - const fetchNftsQuery = useFetchNfts(); - const metaplexClient = useMemo(() => new MetaplexClient(connection), [connection]); - - const nfts = useMemo(() => fetchNftsQuery.data ?? [], [fetchNftsQuery.data]); - - useEffect(() => { - if (!publicKey || !metaplexClient) { - return; - } - queryClient.refetchQueries('fetchNfts'); - }, [connection, metaplexClient, publicKey, queryClient]); - - return ( - - ); -}; - -export default Navbar; diff --git a/fragmentor-app/components/NftFigure.tsx b/fragmentor-app/components/NftFigure.tsx deleted file mode 100644 index 8fb7c4d..0000000 --- a/fragmentor-app/components/NftFigure.tsx +++ /dev/null @@ -1,31 +0,0 @@ -/* eslint-disable @next/next/no-img-element */ -import type { Nft } from '@metaplex-foundation/js'; -import type { FC } from 'react'; - -import { trimAddress } from 'lib/utils'; - -type NftFigureProps = { - nft: Nft; - handleClickOnNft?: (nft: Nft) => void; -}; - -const NftFigure: FC = ({ handleClickOnNft, nft }) => { - function internalHandleClickOnNfts(nft: Nft) { - if (handleClickOnNft) { - handleClickOnNft(nft); - } - } - - return ( -
internalHandleClickOnNfts(nft)} - className="p-4 object-cover" - > - {nft.mint.address.toBase58()} -
{trimAddress(nft.mint.address.toBase58())}
-
- ); -}; - -export default NftFigure; diff --git a/fragmentor-app/components/Popup.tsx b/fragmentor-app/components/Popup.tsx deleted file mode 100644 index 858c588..0000000 --- a/fragmentor-app/components/Popup.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import type { FC, PropsWithChildren, MouseEvent } from 'react'; - -import { useRef, useEffect } from 'react'; - -type PopupProps = { - title?: string; - show: boolean; - onClose: () => void; -}; - -const overflow = { - hidden: 'hidden', - unset: 'unset', -} as const; - -const Popup: FC> = ({ title, show, onClose, children }) => { - const backgroundRef = useRef(null); - - function onBackgroundClick({ target }: MouseEvent) { - target == backgroundRef.current && onClose(); - } - - useEffect(() => { - document.body.style.overflow = show ? overflow.hidden : overflow.unset; - }, [show]); - - if (!show) { - return null; - } - - return ( -
-
- - {title ?

{title}

: null} - -
- {children} -
-
- ); -}; - -export default Popup; diff --git a/fragmentor-app/components/Vault.tsx b/fragmentor-app/components/Vault.tsx deleted file mode 100644 index 3f1c2c6..0000000 --- a/fragmentor-app/components/Vault.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { PublicKey } from '@solana/web3.js'; -import { IVault } from 'fragmentor'; -import { FC } from 'react'; - -type VaultProps = { - vault: IVault & { address: PublicKey }; - setSelectedVault: (address: PublicKey) => void; -}; - -const Vault: FC = ({ vault, setSelectedVault }) => { - return ( -
setSelectedVault(vault.address)} - > -

- Vault: {vault.address.toBase58()} -

-

- Owner: {vault.owner.toBase58()} -

-

- Boxes: {vault.boxes} -

-
- ); -}; - -export default Vault; diff --git a/fragmentor-app/hooks/useFragments.ts b/fragmentor-app/hooks/useFragments.ts deleted file mode 100644 index 55e826f..0000000 --- a/fragmentor-app/hooks/useFragments.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { getAssociatedTokenAddressSync } from '@solana/spl-token' -import { useConnection, useWallet } from '@solana/wallet-adapter-react' -import { PublicKey } from '@solana/web3.js' -import { FragmentorClient } from 'fragmentor' -import { toastProgramErrorMessage } from 'lib/utils' -import { useState } from 'react' -import toast from 'react-hot-toast' -import useMintNft from './useMint' -import useTransaction from './useTransaction' - -export default function useFragments(vault: string | string[] | undefined) { - const { connection } = useConnection() - const [selectedNft, setSelectedNft] = useState(null) - const { publicKey, signTransaction } = useWallet() - const [fragmentParts, setFragmentParts] = useState(4) - const [fragments, setFragments] = useState([]) - const sendAndConfirmTx = useTransaction() - const mintNft = useMintNft() - - async function createFragments(mintToFragment: PublicKey) { - let lastToast: string | null = null - try { - if (!publicKey || !connection || !signTransaction || !vault || fragmentParts <= 0) { - return - } - const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash() - const ata = getAssociatedTokenAddressSync(mintToFragment, publicKey) - const fragments: PublicKey[] = [] - - for (let i = 0; i < fragmentParts; i++) { - const fragmentPubkey = await mintNft() - - if (fragmentPubkey) { - fragments.push(fragmentPubkey) - } else { - return - } - - const toastId = toast.success(`Minting fragment ${i + 1} of ${fragmentParts}...`, { - duration: Infinity, - }) - - if (lastToast) { - toast.dismiss(lastToast) - } - lastToast = toastId - - setFragments((prev) => [...prev, fragmentPubkey.toBase58()]) - } - - if (lastToast) { - setTimeout(() => toast.dismiss(lastToast!), 2000) - } - - const ix = FragmentorClient.buildInitFragmentIx( - publicKey, - new PublicKey(vault), - mintToFragment, - ata, - fragments, - ) - - await sendAndConfirmTx({ - blockhash, - lastValidBlockHeight, - ixs: [ix], - signers: [], - }) - - setSelectedNft(null) - toast.success('Fragments created') - } catch (err) { - toastProgramErrorMessage(err) - console.error(err) - if (lastToast) { - toast.dismiss(lastToast) - } - } - } - - return { - selectedNft, - setSelectedNft, - fragmentParts, - setFragmentParts, - createFragments, - fragments, - setFragments, - } -} diff --git a/fragmentor-app/hooks/useMint.ts b/fragmentor-app/hooks/useMint.ts deleted file mode 100644 index a362412..0000000 --- a/fragmentor-app/hooks/useMint.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { useConnection, useWallet } from '@solana/wallet-adapter-react' -import { PublicKey, Keypair } from '@solana/web3.js' -import { buildMintNftIxs } from 'fragmentor' -import useTransaction from './useTransaction' - -const URI = 'https://arweave.net/0m6rZv0Nim4277-wLTPtSTP2NIB_0zvrtTFoHcSeqTo' - -const NFT_PARAMS = { - title: 'Test NFT', - symbol: 'TEST', - uri: URI, -} - -export default function useMintNft() { - const { connection } = useConnection() - const { publicKey } = useWallet() - const sendAndConfirmTx = useTransaction() - - // @TODO - mint multiple nft in 1 tx - return async function mintNft(): Promise { - if (!publicKey || !connection) { - return - } - const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash() - const nftKp = Keypair.generate() - const ixs = await buildMintNftIxs( - connection, - publicKey, - nftKp.publicKey, - NFT_PARAMS.title, - NFT_PARAMS.uri, - NFT_PARAMS.symbol, - ) - - await sendAndConfirmTx({ - blockhash, - lastValidBlockHeight, - ixs, - signers: [nftKp], - }) - return nftKp.publicKey - } -} diff --git a/fragmentor-app/hooks/useTransaction.ts b/fragmentor-app/hooks/useTransaction.ts deleted file mode 100644 index 6f44f6c..0000000 --- a/fragmentor-app/hooks/useTransaction.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { useConnection, useWallet } from '@solana/wallet-adapter-react' -import { Keypair, Transaction, TransactionInstruction } from '@solana/web3.js' -import toast from 'react-hot-toast' - -type SendAndConfirmParams = { - blockhash: string - lastValidBlockHeight: number - ixs: TransactionInstruction[] - signers: Keypair[] -} - -const MAX_RETRIES = 3 - -export default function useTransaction() { - const { connection } = useConnection() - const { publicKey, sendTransaction } = useWallet() - - async function sendAndConfirmTx({ - blockhash, - lastValidBlockHeight, - ixs, - signers, - }: SendAndConfirmParams) { - try { - const tx = new Transaction({ - feePayer: publicKey, - blockhash, - lastValidBlockHeight, - }).add(...ixs) - if (signers.length > 0) { - tx.sign(...signers) - } - const sig = await sendTransaction(tx, connection, { - maxRetries: MAX_RETRIES, - }) - - await connection.confirmTransaction({ - signature: sig, - blockhash, - lastValidBlockHeight, - }) - } catch (e: any) { - toast.error(e.message) - return Promise.reject(e) - } - } - - return sendAndConfirmTx -} diff --git a/fragmentor-app/hooks/useVaults.ts b/fragmentor-app/hooks/useVaults.ts deleted file mode 100644 index 6f8375d..0000000 --- a/fragmentor-app/hooks/useVaults.ts +++ /dev/null @@ -1,188 +0,0 @@ -import { getAssociatedTokenAddressSync } from '@solana/spl-token' -import { useConnection, useWallet } from '@solana/wallet-adapter-react' -import { PublicKey, Keypair } from '@solana/web3.js' -import { IVault, FragmentorClient, FragmentData } from 'fragmentor' -import { toastProgramErrorMessage } from 'lib/utils' -import { useState, useMemo } from 'react' -import toast from 'react-hot-toast' -import useTransaction from './useTransaction' -import { useQueryClient } from 'react-query' - -type Fragments = { originalNft: string; fragments: FragmentData[] } - -export default function useVaults() { - const { connection } = useConnection() - const { publicKey, signTransaction } = useWallet() - const [vaults, setVaults] = useState<(IVault & { address: PublicKey })[]>([]) - const [selectedVault, setSelectedVault] = useState(null) - const [fragments, setFragments] = useState([]) - const sendAndConfirmTx = useTransaction() - - const queryClient = useQueryClient() - - const fragmentorClient = useMemo(() => new FragmentorClient(connection), [connection]) - - async function createVault() { - try { - if (!publicKey || !connection) { - return - } - const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash() - const vaultKp = Keypair.generate() - const ix = FragmentorClient.buildInitVaultIx(publicKey, vaultKp.publicKey) - - await sendAndConfirmTx({ - blockhash, - lastValidBlockHeight, - ixs: [ix], - signers: [vaultKp], - }) - toast.success('Vault created successfully') - await fetchVaults() - } catch (err) { - toastProgramErrorMessage(err) - console.error(err) - } - } - - async function fetchVaults() { - if (!publicKey || !connection) { - return - } - const ownerVaults = await fragmentorClient.fetchVaultsByOwner(publicKey) - setVaults( - ownerVaults.map((ownerVault) => { - const [vault] = FragmentorClient.deserializeVault(ownerVault.account) - return { ...vault, address: ownerVault.pubkey } - }), - ) - } - - async function fetchFragments() { - if (!selectedVault) { - return - } - - setFragments([]) - const wholeNfts = await fragmentorClient.fetchWholeNftsByVault(selectedVault) - for (let wholeNft of wholeNfts) { - const [wholeNftData] = FragmentorClient.deserializeWholeNft(wholeNft.account) - let frags = wholeNftData.fragments.map(({ isBurned, mint }) => { - return { mint, isBurned } - }) - setFragments((prev) => [ - ...prev, - { originalNft: wholeNftData.originalMint.toBase58(), fragments: frags }, - ]) - } - } - - async function unfragmentNft(unfragmentMint: PublicKey, fragments: FragmentData[]) { - let lastToast: string | null = null - try { - if (!publicKey || !connection || !signTransaction || !selectedVault) { - return - } - - // only those that are not already burned - const fragmentChunks = FragmentorClient.splitArrayIntoChunks( - fragments.reduce((acc, fragment) => { - if (fragment.isBurned) { - return acc - } - return [...acc, fragment.mint] - }, [] as PublicKey[]), - 4, - ) - - if (fragmentChunks.length === 0) { - return toast.error('All fragments have been already burned') - } - - for (let i = 0; i < fragmentChunks.length; ++i) { - const fragmentChunk = fragmentChunks[i] - const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash() - - const fragmentSources = fragmentChunk.map((mint) => { - return getAssociatedTokenAddressSync(mint, publicKey) - }) - - const ix = FragmentorClient.buildInitUnfragmentIx( - publicKey, - selectedVault, - unfragmentMint, - fragmentChunk, - fragmentSources, - ) - - await sendAndConfirmTx({ - blockhash, - lastValidBlockHeight, - ixs: [ix], - signers: [], - }) - - const toastId = toast.success( - `NFT unfragmented instruction (${i + 1}/${fragmentChunks.length})`, - { - duration: Infinity, - }, - ) - if (lastToast) { - toast.dismiss(lastToast) - } - lastToast = toastId - } - if (lastToast) { - setTimeout(() => toast.dismiss(lastToast!), 2000) - } - - toast.success('NFT unfragmented successfully') - await fetchFragments() - } catch (err) { - toastProgramErrorMessage(err) - if (lastToast) { - toast.dismiss(lastToast) - } - } - } - - async function claimNft(mint: PublicKey) { - try { - if (!publicKey || !connection || !signTransaction || !selectedVault) { - return - } - - const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash() - const mintDestAcc = getAssociatedTokenAddressSync(mint, publicKey) - const ix = FragmentorClient.buildInitClaimIx(publicKey, selectedVault, mint, mintDestAcc) - await sendAndConfirmTx({ - blockhash, - lastValidBlockHeight, - ixs: [ix], - signers: [], - }) - toast.success('NFT claimed') - - await fetchFragments() - await queryClient.refetchQueries('fetchNfts') - } catch (err) { - toastProgramErrorMessage(err) - console.error(err) - } - } - - return { - vaults, - selectedVault, - setSelectedVault, - createVault, - fetchVaults, - fragments, - fetchFragments, - unfragmentNft, - claimNft, - setFragments, - setVaults, - } -} diff --git a/fragmentor-app/next.config.js b/fragmentor-app/next.config.js index ae88795..5786109 100644 --- a/fragmentor-app/next.config.js +++ b/fragmentor-app/next.config.js @@ -1,7 +1,6 @@ /** @type {import('next').NextConfig} */ const nextConfig = { - reactStrictMode: true, - swcMinify: true, + reactStrictMode: true, } module.exports = nextConfig diff --git a/fragmentor-app/package.json b/fragmentor-app/package.json index f430776..da6f17b 100644 --- a/fragmentor-app/package.json +++ b/fragmentor-app/package.json @@ -10,28 +10,30 @@ "vercel:build": "cd .. && pnpm compile && cd ./fragmentor-app && next build" }, "dependencies": { - "@metaplex-foundation/js": "^0.17.2", - "@solana/wallet-adapter-base": "^0.9.18", - "@solana/wallet-adapter-react": "^0.15.20", - "@solana/wallet-adapter-react-ui": "^0.9.18", - "@solana/wallet-adapter-wallets": "^0.19.3", - "@solana/web3.js": "^1.66.1", - "fragmentor": "workspace:*", - "next": "12.3.1", + "@metaplex-foundation/js": "0.20.1", + "@solana/spl-token": "0.3.9", + "@solana/wallet-adapter-base": "0.9.23", + "@solana/wallet-adapter-react": "0.15.35", + "@solana/wallet-adapter-react-ui": "0.9.34", + "@solana/wallet-adapter-wallets": "0.19.23", + "@solana/web3.js": "1.87.6", + "fragmentor-sdk": "workspace:*", + "next": "14.0.3", "react": "18.2.0", "react-dom": "18.2.0", - "react-hot-toast": "^2.4.0", - "react-query": "^3.39.2" + "react-hot-toast": "2.4.1", + "react-query": "3.39.3", + "sharp": "0.33.0" }, "devDependencies": { - "@types/node": "18.11.3", - "@types/react": "18.0.21", - "@types/react-dom": "18.0.6", - "autoprefixer": "^10.4.13", - "eslint": "8.25.0", - "eslint-config-next": "12.3.1", - "postcss": "^8.4.18", - "tailwindcss": "^3.2.1", - "typescript": "4.8.4" + "@types/node": "20.10.2", + "@types/react": "18.2.41", + "@types/react-dom": "18.2.17", + "autoprefixer": "10.4.16", + "eslint": "8.55.0", + "eslint-config-next": "14.0.3", + "postcss": "8.4.32", + "tailwindcss": "3.3.5", + "typescript": "5.3.2" } } diff --git a/fragmentor-app/pages/_app.tsx b/fragmentor-app/pages/_app.tsx deleted file mode 100644 index 1128c39..0000000 --- a/fragmentor-app/pages/_app.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import type { AppProps } from 'next/app'; - -import { useMemo } from 'react'; -import 'styles/globals.css'; -import { ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react'; -import { PhantomWalletAdapter } from '@solana/wallet-adapter-wallets'; -import { WalletModalProvider } from '@solana/wallet-adapter-react-ui'; -import Navbar from 'components/Navbar'; -import { Toaster } from 'react-hot-toast'; -import Head from 'next/head'; -import { clusterApiUrl } from '@solana/web3.js'; -import Footer from 'components/Footer'; -import { QueryClient, QueryClientProvider } from 'react-query'; - -require('@solana/wallet-adapter-react-ui/styles.css'); - -function MyApp({ Component, pageProps }: AppProps) { - const endpoint = process.env.NEXT_PUBLIC_RPC || clusterApiUrl('devnet'); - - const wallets = useMemo(() => [new PhantomWalletAdapter()], []); - - const queryClient = new QueryClient({ - defaultOptions: { - queries: { - refetchInterval: false, - refetchOnWindowFocus: false, - refetchOnMount: false, - refetchOnReconnect: false, - retry: false, - }, - }, - }); - - return ( - - - - - - - - Fragmentor App - - - -
- -
-